@prisma/studio-core 0.0.0-dev.202505110245 → 0.0.0-dev.202505110933
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 +171 -123
- package/dist/ui/index.css +23 -0
- package/dist/ui/index.js +55 -7
- package/package.json +2 -1
package/dist/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import"../chunk-IAKOOX7B.js";import{D as je}from"../chunk-OGMDOPWW.js";import{B as gt,aa as xt,c as ae,q as ct,r as pt,t as mt}from"../chunk-RFCV76TR.js";import{a as ps,b as he}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as bn,motion as fs}from"motion/react";import{clsx as Xs}from"clsx";var ht="-",ms=e=>{let a=xs(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let u=s.split(ht);return u[0]===""&&u.length!==1&&u.shift(),mo(u,a)||gs(s)},getConflictingClassGroupIds:(s,u)=>{let d=t[s]||[];return u&&o[s]?[...d,...o[s]]:d}}},mo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?mo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(ht);return a.validators.find(({validator:s})=>s(l))?.classGroupId},io=/^\[(.+)\]$/,gs=e=>{if(io.test(e)){let a=io.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},xs=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return Cs(Object.entries(e.classGroups),t).forEach(([l,s])=>{Ct(s,o,l,a)}),o},Ct=(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(Ls(r)){Ct(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{Ct(s,fo(a,l),t,o)})})},fo=(e,a)=>{let t=e;return a.split(ht).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},Ls=e=>e.isThemeGetter,Cs=(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,hs=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)}}},go="!",Is=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,g;for(let L=0;L<u.length;L++){let C=u[L];if(n===0){if(C===r&&(o||u.slice(L,L+l)===a)){d.push(u.slice(f,L)),f=L+l;continue}if(C==="/"){g=L;continue}}C==="["?n++:C==="]"&&n--}let m=d.length===0?u:u.substring(f),x=m.startsWith(go),S=x?m.substring(1):m,c=g&&g>f?g-f:void 0;return{modifiers:d,hasImportantModifier:x,baseClassName:S,maybePostfixModifierPosition:c}};return t?u=>t({className:u,parseClassName:s}):s},Ss=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},bs=e=>({cache:hs(e.cacheSize),parseClassName:Is(e),...ms(e)}),ws=/\s+/,ys=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(ws),u="";for(let d=s.length-1;d>=0;d-=1){let n=s[d],{modifiers:f,hasImportantModifier:g,baseClassName:m,maybePostfixModifierPosition:x}=t(n),S=!!x,c=o(S?m.substring(0,x):m);if(!c){if(!S){u=n+(u.length>0?" "+u:u);continue}if(c=o(m),!c){u=n+(u.length>0?" "+u:u);continue}S=!1}let L=Ss(f).join(":"),C=g?L+go:L,w=C+c;if(l.includes(w))continue;l.push(w);let E=r(c,S);for(let U=0;U<E.length;++U){let oe=E[U];l.push(C+oe)}u=n+(u.length>0?" "+u:u)}return u};function vs(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=xo(a))&&(o&&(o+=" "),o+=t);return o}var xo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=xo(e[o]))&&(t&&(t+=" "),t+=a);return t};function co(e,...a){let t,o,r,l=s;function s(d){let n=a.reduce((f,g)=>g(f),e());return t=bs(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=ys(d,t);return r(d,f),f}return function(){return l(vs.apply(null,arguments))}}var F=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},Lo=/^\[(?:([a-z-]+):)?(.+)\]$/i,Ps=/^\d+\/\d+$/,ks=new Set(["px","full","screen"]),Rs=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ms=/\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$/,Ts=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Ds=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,As=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Ie=e=>Ye(e)||ks.has(e)||Ps.test(e),Te=e=>ea(e,"length",Hs),Ye=e=>!!e&&!Number.isNaN(Number(e)),Lt=e=>ea(e,"number",Ye),sa=e=>!!e&&Number.isInteger(Number(e)),Fs=e=>e.endsWith("%")&&Ye(e.slice(0,-1)),y=e=>Lo.test(e),De=e=>Rs.test(e),Bs=new Set(["length","size","percentage"]),Ns=e=>ea(e,Bs,Co),Os=e=>ea(e,"position",Co),qs=new Set(["image","url"]),Es=e=>ea(e,qs,Gs),Us=e=>ea(e,"",zs),la=()=>!0,ea=(e,a,t)=>{let o=Lo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Hs=e=>Ms.test(e)&&!Ts.test(e),Co=()=>!1,zs=e=>Ds.test(e),Gs=e=>As.test(e);var po=()=>{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"),g=F("invert"),m=F("gap"),x=F("gradientColorStops"),S=F("gradientColorStopPositions"),c=F("inset"),L=F("margin"),C=F("opacity"),w=F("padding"),E=F("saturate"),U=F("scale"),oe=F("sepia"),H=F("skew"),Q=F("space"),z=F("translate"),B=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],Z=()=>["auto",y,a],M=()=>[y,a],Le=()=>["",Ie,Te],Je=()=>["auto",Ye,y],Ga=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],$e=()=>["solid","dashed","dotted","double","none"],Va=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ra=()=>["start","end","center","between","around","evenly","stretch"],Ge=()=>["","0",y],Wa=()=>["auto","avoid","all","avoid-page","page","left","right","column"],re=()=>[Ye,y];return{cacheSize:500,separator:":",theme:{colors:[la],spacing:[Ie,Te],blur:["none","",De,y],brightness:re(),borderColor:[e],borderRadius:["none","","full",De,y],borderSpacing:M(),borderWidth:Le(),contrast:re(),grayscale:Ge(),hueRotate:re(),invert:Ge(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[Fs,Te],inset:Z(),margin:Z(),opacity:re(),padding:M(),saturate:re(),scale:re(),sepia:Ge(),skew:re(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",y]}],container:["container"],columns:[{columns:[De]}],"break-after":[{"break-after":Wa()}],"break-before":[{"break-before":Wa()}],"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:[...Ga(),y]}],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",sa,y]}],basis:[{basis:Z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",y]}],grow:[{grow:Ge()}],shrink:[{shrink:Ge()}],order:[{order:["first","last","none",sa,y]}],"grid-cols":[{"grid-cols":[la]}],"col-start-end":[{col:["auto",{span:["full",sa,y]},y]}],"col-start":[{"col-start":Je()}],"col-end":[{"col-end":Je()}],"grid-rows":[{"grid-rows":[la]}],"row-start-end":[{row:["auto",{span:[sa,y]},y]}],"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",y]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",y]}],gap:[{gap:[m]}],"gap-x":[{"gap-x":[m]}],"gap-y":[{"gap-y":[m]}],"justify-content":[{justify:["normal",...ra()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...ra(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...ra(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[L]}],mx:[{mx:[L]}],my:[{my:[L]}],ms:[{ms:[L]}],me:[{me:[L]}],mt:[{mt:[L]}],mr:[{mr:[L]}],mb:[{mb:[L]}],ml:[{ml:[L]}],"space-x":[{"space-x":[Q]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[Q]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",y,a]}],"min-w":[{"min-w":[y,a,"min","max","fit"]}],"max-w":[{"max-w":[y,a,"none","full","min","max","fit","prose",{screen:[De]},De]}],h:[{h:[y,a,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[y,a,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[y,a,"auto","min","max","fit"]}],"font-size":[{text:["base",De,Te]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Lt]}],"font-family":[{font:[la]}],"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",y]}],"line-clamp":[{"line-clamp":["none",Ye,Lt]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Ie,y]}],"list-image":[{"list-image":["none",y]}],"list-style-type":[{list:["none","disc","decimal",y]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[C]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[C]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...$e(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Ie,Te]}],"underline-offset":[{"underline-offset":["auto",Ie,y]}],"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",y]}],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",y]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[C]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Ga(),Os]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",Ns]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Es]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"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:[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":[C]}],"border-style":[{border:[...$e(),"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":[C]}],"divide-style":[{divide:$e()}],"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:["",...$e()]}],"outline-offset":[{"outline-offset":[Ie,y]}],"outline-w":[{outline:[Ie,Te]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Le()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[C]}],"ring-offset-w":[{"ring-offset":[Ie,Te]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",De,Us]}],"shadow-color":[{shadow:[la]}],opacity:[{opacity:[C]}],"mix-blend":[{"mix-blend":[...Va(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Va()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",De,y]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[g]}],saturate:[{saturate:[E]}],sepia:[{sepia:[oe]}],"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":[g]}],"backdrop-opacity":[{"backdrop-opacity":[C]}],"backdrop-saturate":[{"backdrop-saturate":[E]}],"backdrop-sepia":[{"backdrop-sepia":[oe]}],"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",y]}],duration:[{duration:re()}],ease:[{ease:["linear","in","out","in-out",y]}],delay:[{delay:re()}],animate:[{animate:["none","spin","ping","pulse","bounce",y]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[U]}],"scale-x":[{"scale-x":[U]}],"scale-y":[{"scale-y":[U]}],rotate:[{rotate:[sa,y]}],"translate-x":[{"translate-x":[z]}],"translate-y":[{"translate-y":[z]}],"skew-x":[{"skew-x":[H]}],"skew-y":[{"skew-y":[H]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",y]}],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",y]}],"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",y]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[Ie,Te,Lt]}],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"]}}},Vs=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{ua(e,"cacheSize",a),ua(e,"prefix",t),ua(e,"separator",o),ua(e,"experimentalParseClassName",r);for(let u in s)Ws(e[u],s[u]);for(let u in l)Ks(e[u],l[u]);return e},ua=(e,a,t)=>{t!==void 0&&(e[a]=t)},Ws=(e,a)=>{if(a)for(let t in a)ua(e,t,a[t])},Ks=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},ho=(e,...a)=>typeof e=="function"?co(po,e,...a):co(()=>Vs(po(),e),...a);var _s=ho({prefix:"ps-"});function p(...e){return _s(Xs(e))}import{useIsMutating as dn}from"@tanstack/react-query";import{forwardRef as Zs,createElement as Js}from"react";var Io=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Ka=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as Qs,createElement as bo}from"react";var So={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 wo=Qs(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...u},d)=>bo("svg",{ref:d,...So,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:Ka("lucide",r),...u},[...s.map(([n,f])=>bo(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=Zs(({className:o,...r},l)=>Js(wo,{ref:l,iconNode:a,className:Ka(`lucide-${Io(e)}`,o),...r}));return t.displayName=`${e}`,t};var Ae=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 da=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 se=b("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var ce=b("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);var na=b("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);var le=b("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var ia=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var fa=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var ca=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Fe=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 Ve=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var pa=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 ma=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 ga=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var xa=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 La=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 Ca=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 ha=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 Ia=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Sa=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var Be=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 Ne=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 ba=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 wa=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 ya=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 va=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 Oe=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as nn}from"motion-plus/react";import{useEffect as fn,useState as cn}from"react";import{toast as pn}from"sonner";import{cva as $s}from"class-variance-authority";import{jsx as js}from"react/jsx-runtime";var It=$s("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 Xa({className:e,variant:a,...t}){return js("div",{className:p(It({variant:a}),e),...t})}import{Slot as Ys}from"@radix-ui/react-slot";import{cva as el}from"class-variance-authority";import*as yo from"react";import{jsx as tl}from"react/jsx-runtime";var al=el("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=yo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>tl(o?Ys:"button",{className:p(al({variant:a,size:t,className:e})),ref:l,...r}));D.displayName="Button";import*as pe from"@radix-ui/react-popover";import*as Po from"react";import{jsx as vo}from"react/jsx-runtime";var ko=pe.Root,Ro=pe.Trigger;var St=Po.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>vo(pe.Portal,{children:vo(pe.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})}));St.displayName=pe.Content.displayName;import{useMutation as Pl,useQueryClient as kl}from"@tanstack/react-query";import{QueryClient as Ll,QueryClientProvider as Cl}from"@tanstack/react-query";import*as ue from"react";import{onlineManager as ol,useQueryClient as rl}from"@tanstack/react-query";var Mo=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=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(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=gt(()=>{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=mt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#u=d),xt(this.#c,this.#t),ct(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}},To=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:g}=e;this.#a=ae(a),this.#i=t,this.#f=o,this.#n=r,this.#c=n,this.#t=f,this.#o=ae(l),this.#r=ae(s),this.#s=ae(u),this.#l=ae(d),this.#u=ae(g)}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=gt(()=>{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=mt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#d=n),xt(this.#c,this.#t),ct(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 sl}from"react/jsx-runtime";function Do(e){let a=rl(e.client),t=ue.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}=e,[n]=ue.useState(new Mo({client:a,queryFlavor:"React Query",version:"5",onlineManager:ol,buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:u,shadowDOMTarget:d}));return ue.useEffect(()=>{n.setClient(a)},[a,n]),ue.useEffect(()=>{o&&n.setButtonPosition(o)},[o,n]),ue.useEffect(()=>{r&&n.setPosition(r)},[r,n]),ue.useEffect(()=>{n.setInitialIsOpen(l||!1)},[l,n]),ue.useEffect(()=>{n.setErrorTypes(s||[])},[s,n]),ue.useEffect(()=>(t.current&&n.mount(t.current),()=>{n.unmount()}),[n]),sl("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as Se from"react";import{onlineManager as ul,useQueryClient as dl}from"@tanstack/react-query";import{jsx as nl}from"react/jsx-runtime";function Ao(e){let a=dl(e.client),t=Se.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=Se.useState(new To({client:a,queryFlavor:"React Query",version:"5",onlineManager:ul,buttonPosition:"bottom-left",position:"bottom",initialIsOpen:!0,errorTypes:o,styleNonce:r,shadowDOMTarget:l,onClose:e.onClose}));return Se.useEffect(()=>{s.setClient(a)},[a,s]),Se.useEffect(()=>{s.setOnClose(e.onClose??(()=>{}))},[e.onClose,s]),Se.useEffect(()=>{s.setErrorTypes(o||[])},[o,s]),Se.useEffect(()=>(t.current&&s.mount(t.current),()=>{s.unmount()}),[s]),nl("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var Fo=process.env.NODE_ENV!=="development"?function(){return null}:Do,wc=process.env.NODE_ENV!=="development"?function(){return null}:Ao;import{createContext as hl,useContext as Il,useMemo as Sl,useState as bt}from"react";import{toast as bl}from"sonner";import{Toaster as fl}from"sonner";import{jsx as cl}from"react/jsx-runtime";var Bo=({...e})=>cl(fl,{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 pl}from"nuqs/adapters/custom";import{useEffect as ml,useState as gl}from"react";function xl(){let e=window.location.hash.slice(1),[a,t]=gl(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 ml(()=>{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 No=pl(xl);import{jsx as _a,jsxs as yl}from"react/jsx-runtime";var wl=new Ll,Oo=hl(void 0);function qo(e){let{children:a,...t}=e,[o,r]=bt(null),[l,s]=bt(!1),[u,d]=bt(!0),n=e.onError;n??=x=>bl.error(x.message);let f=Sl(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),g=()=>s(x=>!x),m=()=>d(x=>!x);return yl(Cl,{client:wl,children:[_a(Fo,{}),_a(Bo,{}),_a(No,{children:_a(Oo.Provider,{value:{...t,activeTable:o,isFullscreen:l,setActiveTable:r,onError:n,emitTelemetryEvent:f,toggleFullscreen:g,isNavigationOpen:u,toggleNavigation:m},children:a})})]})}function G(){let e=Il(Oo);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}function vl(e,a){let t={filter:je(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Eo(e,a){return{...e,__ps_rowid:vl(e,a)}}function Qa(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Eo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Eo(r,a))}:e}function Uo(){let{activeTable:e,adapter:a}=G(),t=kl(),{schema:o=null,name:r=null}=e??{};return Pl({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,u]=await a.insert({rows:l,table:e},{});if(s)throw s;return Qa(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 Rl}from"@tanstack/react-query";function Ho(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=G();return Rl({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 Qa(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 Ml,useQueryClient as Tl}from"@tanstack/react-query";function zo(){let{activeTable:e,adapter:a,onError:t}=G(),o=Tl(),r=["schema",e?.schema??null,"table",e?.name??null];return Ml({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),wt({getFinderFn(){let n={...d,...u},f=je(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},queryClient:o,table:e,updaterFn:function(f){return{...f,...Object.keys(u).reduce((g,m)=>({...g,[m]:d[m]}),{})}}})},onMutate(l){let{details:s}=l;wt({getFinderFn(){let{row:u}=s,d=je(u,e.columns);return n=>d.every(([f,g])=>n[f]===g)},queryClient:o,table:e,updaterFn:function(d){return{...d,...s.changes}}})},onSuccess(l,s){wt({getFinderFn(){let{changes:u,row:d}=s.details,n={...d,...u},f=je(n,e.columns);return g=>f.every(([m,x])=>g[m]===x)},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 wt(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 Bl,useMemo as Go,useState as Nl}from"react";import Ol from"short-uuid";var V={};ps(V,{keyMap:()=>yt,urlKeys:()=>Fl,useQueryState:()=>qe,useQueryStates:()=>Pa});he(V,mp);import{useQueryState as Dl,useQueryStates as Al}from"nuqs";import*as mp from"nuqs";function yt(e){return e}function Fl(e){return e}var cp=Symbol("BRAND_SYMBOL");function qe(e,a){return Dl(e,a)}function Pa(e,a){return Al(e,a)}var ql={kind:"FilterGroup",filters:[],after:"and",id:Ol.generate()},Vo=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=Vo(t));return a};function Wo(){let[e,a]=qe("filter",{defaultValue:JSON.stringify(ql)}),t=Go(()=>JSON.parse(e),[e]),o=u=>void a(JSON.stringify(u)),[r,l]=Nl(t);Bl(()=>{l(t)},[t]);let s=Go(()=>Vo(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as El}from"@tanstack/react-query";function Za(){return El({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as Ul}from"react";var Hl=25,zl={pageIndex:V.parseAsIndex.withDefault(0),pageSize:V.parseAsInteger.withDefault(Hl)};function Ja(){let[{pageIndex:e,pageSize:a},t]=Pa(zl),o=Ul(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 Wl,useState as Kl}from"react";import{useMutation as Gl,useQueryClient as Vl}from"@tanstack/react-query";function Ko(){let{activeTable:e,adapter:a}=G(),t=Vl(),{schema:o=null,name:r=null}=e??{};return Gl({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 Xo(e){let{activeTable:a,onError:t}=G(),{paginationState:o}=Ja(),[r,l]=Kl({}),s=Object.keys(r).length!==0,{mutate:u}=Ko();Wl(()=>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 Xl,useState as _l}from"react";function _o(){let[e,a]=qe("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]=_l(()=>t(e));return Xl(()=>{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 hu}from"remeda";import{forwardRef as ru}from"react";import*as we from"react";import{jsx as be}from"react/jsx-runtime";var vt=we.forwardRef(({className:e,...a},t)=>be("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:be("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));vt.displayName="Table";var Pt=we.forwardRef(({className:e,...a},t)=>be("thead",{ref:t,className:p(e),...a}));Pt.displayName="TableHeader";var kt=we.forwardRef(({className:e,...a},t)=>be("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));kt.displayName="TableBody";var Ql=we.forwardRef(({className:e,...a},t)=>be("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));Ql.displayName="TableFooter";var We=we.forwardRef(({className:e,...a},t)=>be("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));We.displayName="TableRow";var Ke=we.forwardRef(({className:e,...a},t)=>be("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}));Ke.displayName="TableHead";var Ee=we.forwardRef(({className:e,...a},t)=>be("td",{ref:t,className:p("ps-align-middle",e),...a}));Ee.displayName="TableCell";var Zl=we.forwardRef(({className:e,...a},t)=>be("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));Zl.displayName="TableCaption";import{isValidElement as ou}from"react";import*as P from"@radix-ui/react-context-menu";import*as ye from"react";import{jsx as J,jsxs as Tt}from"react/jsx-runtime";var Qo=P.Root,Zo=P.Trigger;var Jl=ye.forwardRef(({className:e,inset:a,children:t,...o},r)=>Tt(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,J(le,{className:"ps-ml-auto ps-h-4 ps-w-4"})]}));Jl.displayName=P.SubTrigger.displayName;var $l=ye.forwardRef(({className:e,...a},t)=>J(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}));$l.displayName=P.SubContent.displayName;var Rt=ye.forwardRef(({className:e,...a},t)=>J(P.Portal,{children:J(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})}));Rt.displayName=P.Content.displayName;var Mt=ye.forwardRef(({className:e,inset:a,...t},o)=>J(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}));Mt.displayName=P.Item.displayName;var jl=ye.forwardRef(({className:e,children:a,checked:t,...o},r)=>Tt(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:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(P.ItemIndicator,{children:J(se,{className:"ps-h-4 ps-w-4"})})}),a]}));jl.displayName=P.CheckboxItem.displayName;var Yl=ye.forwardRef(({className:e,children:a,...t},o)=>Tt(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:[J("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:J(P.ItemIndicator,{children:J(Ve,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));Yl.displayName=P.RadioItem.displayName;var eu=ye.forwardRef(({className:e,inset:a,...t},o)=>J(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}));eu.displayName=P.Label.displayName;var au=ye.forwardRef(({className:e,...a},t)=>J(P.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-border",e),...a}));au.displayName=P.Separator.displayName;var tu=({className:e,...a})=>J("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});tu.displayName="ContextMenuShortcut";import{jsx as Dt,jsxs as Jo}from"react/jsx-runtime";function $o(e){let{children:a}=e;return Jo(Qo,{children:[Dt(Zo,{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}),Dt(Rt,{children:Jo(Mt,{onClick:()=>{let t=At(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:[Dt(pa,{size:12}),"Copy"]})})]})}function At(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(ou(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?At(a.children):""}return Array.isArray(e)?e.map(At).join(""):""}import{jsx as jo}from"react/jsx-runtime";function W(e){let{children:a,className:t,ref:o,style:r,...l}=e;return jo(Ee,{...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:jo($o,{children:a})})}import{jsx as Yo}from"react/jsx-runtime";var Ft=ru((e,a)=>{let{containerProps:t,value:o,...r}=e;return Yo(W,{...r,...t,ref:a,children:Yo("div",{"data-cell-type":"boolean",children:String(!!o)})})});Ft.displayName="BooleanCell";import{forwardRef as su}from"react";import{jsx as lu}from"react/jsx-runtime";var Bt=su((e,a)=>{let{containerProps:t,value:o,...r}=e;return lu(W,{...r,...t,ref:a,children:String(o)})});Bt.displayName="DateCell";import{forwardRef as uu}from"react";import{jsx as du}from"react/jsx-runtime";var ka=uu((e,a)=>{let{containerProps:t,...o}=e;return du(W,{...o,...t,ref:a})});ka.displayName="EmptyCell";import{forwardRef as nu}from"react";import{jsx as iu}from"react/jsx-runtime";var Nt=nu((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return iu(W,{...l,...t,ref:a,children:String(o)})});Nt.displayName="EnumCell";import{forwardRef as fu}from"react";import{jsx as cu}from"react/jsx-runtime";var $a=fu((e,a)=>{let{containerProps:t,value:o,...r}=e;return cu(W,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});$a.displayName="JSONCell";import{forwardRef as pu}from"react";import{jsx as er}from"react/jsx-runtime";var Ot=pu((e,a)=>{let{containerProps:t,...o}=e;return er(W,{...o,...t,ref:a,children:er("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Ot.displayName="NullCell";import{forwardRef as mu}from"react";import{jsx as ar}from"react/jsx-runtime";var qt=mu((e,a)=>{let{containerProps:t,value:o,...r}=e;return ar(W,{...r,...t,ref:a,children:ar("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});qt.displayName="NumericCell";import{forwardRef as gu}from"react";import{jsx as xu}from"react/jsx-runtime";var ja=gu((e,a)=>{let{containerProps:t,value:o,...r}=e;return xu(W,{...r,...t,ref:a,children:String(o)})});ja.displayName="RawCell";import{forwardRef as Lu}from"react";import{jsx as Cu}from"react/jsx-runtime";var Et=Lu((e,a)=>{let{containerProps:t,value:o,...r}=e;return Cu(W,{...r,...t,ref:a,children:String(o)})});Et.displayName="TimeCell";import{jsx as de}from"react/jsx-runtime";function Ya({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return de(ka,{containerProps:t});if(o===null)return de(Ot,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return de($a,{containerProps:t,value:o});if(r==="string")return de(ja,{containerProps:t,value:o});if(r==="enum")return de(Nt,{containerProps:t,value:o,options:l});if(r==="boolean")return de(Ft,{containerProps:t,value:o});if(r==="datetime")return de(Bt,{containerProps:t,value:o});if(r==="time")return de(Et,{containerProps:t,value:o});if(r==="numeric")return de(qt,{containerProps:t,value:o});if(r==="raw")return hu(o)?de($a,{containerProps:t,value:o}):de(ja,{containerProps:t,value:o});throw new Error(`Datatype group "${r}" was not handled in '/cell/get-cell.tsx'`)}import{forwardRef as Iu}from"react";import*as Ra from"@radix-ui/react-checkbox";import*as tr from"react";import{jsx as Ut}from"react/jsx-runtime";var Ma=tr.forwardRef(({className:e,...a},t)=>Ut(Ra.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:Ut(Ra.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:Ut(se,{className:"ps-h-4 ps-w-4"})})}));Ma.displayName=Ra.Root.displayName;import{jsx as Ht}from"react/jsx-runtime";var zt=Iu((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Ht("div",{ref:a,className:r,style:l,...s,children:Ht("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Ht(Ma,{checked:t.getIsAllRowsSelected(),onCheckedChange:u=>t.toggleAllRowsSelected(!!u),disabled:o})})})});zt.displayName="SelectHeaderCell";import{forwardRef as bu}from"react";import{Fragment as Su,jsx as Gt}from"react/jsx-runtime";function or(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 Gt(Su,{children:l?Gt(Ke,{...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}):Gt(Ee,{...s,className:p(u,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as rr}from"react/jsx-runtime";var Vt=bu((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return rr(or,{ref:a,className:r,style:l,...s,children:rr(Ma,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});Vt.displayName="SelectRowCell";import*as ve from"@radix-ui/react-popover";import*as X from"react";import{jsx as Ta}from"react/jsx-runtime";var sr=X.createContext(null),Wt=({children:e,...a})=>{let[t,o]=X.useState(!1);return Ta(sr.Provider,{value:{open:t,setOpen:o},children:Ta(ve.Root,{open:t,onOpenChange:o,...a,children:e})})};Wt.displayName="PopoverCell";var Kt=X.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=X.useRef(null);return Ta(ve.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})});Kt.displayName="PopoverCellTrigger";var Xt=X.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ta(ve.Portal,{children:Ta(ve.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})}));Xt.displayName=ve.Content.displayName;function $(e){let a=X.useContext(sr),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 lr,jsxs as wu}from"react/jsx-runtime";function et(e){let{cellComponent:a,inputComponent:t}=e;return wu(Wt,{children:[lr(Kt,{asChild:!0,children:a}),lr(Xt,{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 Bu,DndContext as Nu,DragOverlay as Ou,KeyboardSensor as qu,PointerSensor as Eu,useSensor as cr,useSensors as Uu}from"@dnd-kit/core";import{arrayMove as Hu,SortableContext as zu,sortableKeyboardCoordinates as Gu,useSortable as Vu,verticalListSortingStrategy as Wu}from"@dnd-kit/sortable";import{CSS as Ku}from"@dnd-kit/utilities";import{motion as Zt}from"motion/react";import{AnimateNumber as Xu}from"motion-plus/react";import{useMemo as _u,useState as Jt}from"react";import{Fragment as Qu}from"react/jsx-runtime";import{createPortal as Zu}from"react-dom";import pr from"short-uuid";function ur(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 dr(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 Pe from"react";import{jsx as j,jsxs as _t}from"react/jsx-runtime";var at=k.Root,tt=k.Trigger;var yu=Pe.forwardRef(({className:e,inset:a,children:t,...o},r)=>_t(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,j(le,{className:"ps-ml-auto"})]}));yu.displayName=k.SubTrigger.displayName;var vu=Pe.forwardRef(({className:e,...a},t)=>j(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}));vu.displayName=k.SubContent.displayName;var Da=Pe.forwardRef(({className:e,sideOffset:a=4,...t},o)=>j(k.Portal,{children:j(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})}));Da.displayName=k.Content.displayName;var ot=Pe.forwardRef(({className:e,inset:a,...t},o)=>j(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}));ot.displayName=k.Item.displayName;var Pu=Pe.forwardRef(({className:e,children:a,checked:t,...o},r)=>_t(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:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(k.ItemIndicator,{children:j(se,{className:"ps-h-4 ps-w-4"})})}),a]}));Pu.displayName=k.CheckboxItem.displayName;var ku=Pe.forwardRef(({className:e,children:a,...t},o)=>_t(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:[j("span",{className:"ps-absolute ps-left-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:j(k.ItemIndicator,{children:j(Ve,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));ku.displayName=k.RadioItem.displayName;var Ru=Pe.forwardRef(({className:e,inset:a,...t},o)=>j(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}));Ru.displayName=k.Label.displayName;var Mu=Pe.forwardRef(({className:e,...a},t)=>j(k.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Mu.displayName=k.Separator.displayName;var Tu=({className:e,...a})=>j("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Tu.displayName="DropdownMenuShortcut";import*as nr from"react";import{jsx as Du}from"react/jsx-runtime";var ne=nr.forwardRef(({className:e,type:a,...t},o)=>Du("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}));ne.displayName="Input";import*as R from"@radix-ui/react-select";import*as Ue from"react";import{jsx as _,jsxs as Qt}from"react/jsx-runtime";var rt=R.Root;var st=R.Value,Aa=Ue.forwardRef(({className:e,children:a,...t},o)=>Qt(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,_(R.Icon,{asChild:!0,children:_(ce,{className:"ps-h-4 ps-w-4 ps-opacity-50"})})]}));Aa.displayName=R.Trigger.displayName;var ir=Ue.forwardRef(({className:e,...a},t)=>_(R.ScrollUpButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(ia,{className:"ps-h-4 ps-w-4"})}));ir.displayName=R.ScrollUpButton.displayName;var fr=Ue.forwardRef(({className:e,...a},t)=>_(R.ScrollDownButton,{ref:t,className:p("ps-flex ps-cursor-default ps-items-center ps-justify-center ps-py-1",e),...a,children:_(ce,{className:"ps-h-4 ps-w-4"})}));fr.displayName=R.ScrollDownButton.displayName;var Fa=Ue.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>_(R.Portal,{children:Qt(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:[_(ir,{}),_(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}),_(fr,{})]})}));Fa.displayName=R.Content.displayName;var Au=Ue.forwardRef(({className:e,...a},t)=>_(R.Label,{ref:t,className:p("ps-px-2 ps-py-1.5 ps-text-sm ps-font-semibold",e),...a}));Au.displayName=R.Label.displayName;var K=Ue.forwardRef(({className:e,children:a,...t},o)=>Qt(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:[_("span",{className:"ps-absolute ps-right-2 ps-flex ps-h-3.5 ps-w-3.5 ps-items-center ps-justify-center",children:_(R.ItemIndicator,{children:_(se,{className:"ps-h-4 ps-w-4"})})}),_(R.ItemText,{children:a})]}));K.displayName=R.Item.displayName;var Fu=Ue.forwardRef(({className:e,...a},t)=>_(R.Separator,{ref:t,className:p("ps--mx-1 ps-my-1 ps-h-px ps-bg-muted",e),...a}));Fu.displayName=R.Separator.displayName;import{Fragment as Yu,jsx as h,jsxs as O}from"react/jsx-runtime";var mr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>O(rt,{value:e,onValueChange:a,disabled:t,children:[h(Aa,{className:o,children:h(st,{placeholder:"Logic"})}),O(Fa,{children:[h(K,{value:"and",children:h("div",{className:"ps-font-semibold",children:"AND"})}),h(K,{value:"or",children:h("div",{className:"ps-font-semibold",children:"OR"})})]})]}),Ju=({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"?h(gr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):h($t,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},$u=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:u,onDragEndSignal:d})=>{let n=_u(()=>e.map(m=>m.id),[e]),f=Uu(cr(Eu,{activationConstraint:{distance:8}}),cr(qu,{coordinateGetter:Gu}));return O(Nu,{sensors:f,collisionDetection:Bu,onDragStart:u,onDragEnd:m=>{let{active:x,over:S}=m;if(S&&x.id!==S.id){let c=e.findIndex(C=>C.id===x.id),L=e.findIndex(C=>C.id===S.id);c!==-1&&L!==-1&&l(c,L)}d()},children:[h(zu,{items:n,strategy:Wu,children:e.map((m,x)=>{let S=!1,c,L,C=!1;if(x>0){S=!0;let w=e[x-1];c=w.after,L=E=>{let U={...w,after:E};o(x-1,U)},C=x-1===e.length-1}return h(ju,{filter:m,onUpdate:w=>o(x,w),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:S,leadingOperatorValue:c,onLeadingOperatorChange:L,isLeadingOperatorTargetLast:C},m.id)})}),Zu(h(Ou,{children:s?h("div",{className:"ps-opacity-80",children:h(Ju,{activeId:s,items:e,table:t})}):null}),document.body)]})},ju=({filter:e,onUpdate:a,onDelete:t,parentDndId:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let{attributes:n,listeners:f,setNodeRef:g,transform:m,transition:x,isDragging:S}=Vu({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:Ku.Transform.toString(m),transition:x,opacity:S?.5:1};return h("div",{ref:g,style:c,className:"ps-flex ps-flex-row ps-justify-between ps-gap-2",children:e.kind==="ColumnFilter"?h(gr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d}):h($t,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})})},gr=({filter:e,onUpdate:a,onDelete:t,dragHandleProps:o,table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:d})=>{let n=S=>{a({...e,column:S})},f=S=>{a({...e,operator:S})},g=S=>{let c=S.target.value,L=r.columns[e.column];if(L!==void 0){let C=ur(L,e.operator,c);a({...e,value:C})}},[m,x]=Jt(dr(r.columns[e.column],e.operator,e.value));return O(Zt.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:[h("div",{...o,className:"ps-cursor-grab",children:h(xa,{className:"ps-text-gray-500",size:16})}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&u?h(mr,{value:s,onValueChange:u,disabled:d}):null,O(rt,{value:e.column,onValueChange:n,children:[h(Aa,{className:"ps-w-28 ps-text-xs ps-h-8",children:h(st,{placeholder:"Select column"})}),h(Fa,{children:Object.keys(r.columns).map(S=>h(K,{value:S,children:S},S))})]}),O(rt,{value:e.operator,onValueChange:S=>f(S),children:[h(Aa,{className:"ps-w-20 ps-text-xs ps-h-8",children:h(st,{placeholder:"Operator"})}),O(Fa,{children:[h(K,{value:"=",children:"="}),h(K,{value:"!=",children:"!="}),h(K,{value:">",children:">"}),h(K,{value:">=",children:">="}),h(K,{value:"<",children:"<"}),h(K,{value:"<=",children:"<="}),h(K,{value:"is",children:"is"}),h(K,{value:"is not",children:"is not"}),h(K,{value:"like",children:"like"}),h(K,{value:"not like",children:"not like"}),h(K,{value:"ilike",children:"ilike"}),h(K,{value:"not ilike",children:"not ilike"})]})]}),h(ne,{value:m,onChange:S=>{x(S.target.value),g(S)},placeholder:"value",className:"ps-w-24 ps-text-xs ps-h-8"})]})]}),h("div",{className:"ps-flex ps-items-center ps-gap-2",children:h(D,{variant:"ghost",size:"xs",onClick:t,children:h(Oe,{size:14})})})]})},$t=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:u,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:n})=>{let[f,g]=Jt(!0),[m,x]=Jt(null),S=()=>{let H={id:pr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,H]})},c=()=>{let H={id:pr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,H]})},L=(H,Q)=>{let z=[...e.filters];z[H]=Q,a({...e,filters:z})},C=H=>{let Q=[...e.filters];Q.splice(H,1),a({...e,filters:Q})},w=H=>{x(H.active.id)},E=()=>{x(null)},U=(H,Q)=>{if(H===Q)return;let z=Hu(e.filters,H,Q);a({...e,filters:z})},oe=()=>f?!e.filters||e.filters.length===0?h("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."}):h(Zt.div,{transition:{layout:{duration:.12}},children:h("div",{className:p("ps-flex ps-flex-col ps-relative ps-gap-2",r?"":"ps-pb-2"),children:h($u,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:L,onDeleteItem:C,onReorderItems:U,activeDragId:m,onDragStart:w,onDragEndSignal:E})})}):null;return h(Zt.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&&h("div",{...o,className:"ps-cursor-grab",onClick:()=>g(!f),children:f?h(ce,{size:16}):h(le,{size:16})}),s&&d&&!r&&h("div",{className:"ps-flex ps-items-center",children:h(mr,{value:u,onValueChange:d,disabled:n})}),O(D,{variant:"outline",size:"sm",onClick:S,className:p("ps-flex ps-items-center ps-gap-2 overflow-hidden ps-transition-all"),children:["Add Filter",e.filters.length>0&&h(Xa,{className:"ps-transition-all",children:h(Xu,{transition:{layout:{duration:.12}},children:e.filters.length})})]}),h(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(at,{children:[h(tt,{asChild:!0,children:h(D,{variant:"ghost",size:"sm",children:h(Fe,{className:"ps-size-4"})})}),h(Da,{align:"center",className:"ps-w-full",children:e.filters.length===0?h("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."}):h("div",{className:"ps-p-2 ps-text-center ps-text-sm ps-bg-neutral-100 ps-rounded-sm ps-font-mono",children:h(xr,{filter:e})})})]}),!r&&h(D,{variant:"ghost",size:"xs",onClick:t,children:h(Oe,{size:14})})]})]}),h("div",{className:p(r?"":"ps-ml-6"),children:oe()})]})})},xr=({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(Yu,{children:[O("span",{children:[" ",u," "]}),O("span",{children:[" ",d," "]}),h("span",{children:" ? "})]})}else l=h(xr,{filter:o});return O(Qu,{children:[a===1?h("span",{className:"ps-font-semibold",children:"("}):"",l,a===-1?h("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 h("span",{children:t})};function Lr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return O("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[h($t,{group:e,onUpdate:a,onDelete:()=>{},isRoot:!0,table:o}),h(D,{variant:"default",size:"sm",className:"ps-self-end",onClick:()=>{t(e)},children:"Apply Filters"})]})}import{DndContext as gd,MouseSensor as xd,useSensor as Ld,useSensors as Cd}from"@dnd-kit/core";import{arrayMove as hd,horizontalListSortingStrategy as Id,SortableContext as Sd,useSortable as bd}from"@dnd-kit/sortable";import{CSS as wd}from"@dnd-kit/utilities";import{getCoreRowModel as yd,useReactTable as vd}from"@tanstack/react-table";import*as ke from"react";import I from"react";function He(){return He=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},He.apply(null,arguments)}var ed=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function ad(e,a){let[t,o]=I.useState();I.useEffect(()=>{let l=ed(e);o(typeof l>"u"||l===null?typeof a=="function"?a():a:l)},[a,e]);let r=I.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 me={background:"#0b1521",backgroundAlt:"#132337",foreground:"white",gray:"#3f4e60",grayAlt:"#222e3e",inputBackgroundColor:"#fff",inputTextColor:"#000",success:"#00ab52",danger:"#ff0085",active:"#006bff",warning:"#ffb200"},Ir=I.createContext(me);function Sr(e){let{theme:a,...t}=e;return I.createElement(Ir.Provider,He({value:a},t))}function td(){return I.useContext(Ir)}function od(e){let[a,t]=I.useState(()=>{if(typeof window<"u")return window.matchMedia&&window.matchMedia(e).matches});return I.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 rd=typeof window>"u";function ie(e,a,t){return t===void 0&&(t={}),I.forwardRef((o,r)=>{let{style:l,...s}=o,u=td(),d=Object.entries(t).reduce((n,f)=>{let[g,m]=f;return od(g)?{...n,...typeof m=="function"?m(s,u):m}:n},{});return I.createElement(e,{...s,style:{...typeof a=="function"?a(s,u):a,...l,...d},ref:r})})}function sd(){let e=I.useRef(!1),a=I.useCallback(()=>e.current,[]);return I[rd?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var ld=ie("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"}});ie("div",()=>({flex:"1 1 500px",display:"flex",flexDirection:"column",overflow:"auto",height:"100%"}),{"(max-width: 700px)":(e,a)=>({borderTop:`2px solid ${a.gray}`})});var ud=ie("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"}));ie("code",{fontSize:".9em"});ie("input",(e,a)=>({backgroundColor:a.inputBackgroundColor,border:0,borderRadius:".2em",color:a.inputTextColor,fontSize:".9em",lineHeight:"1.3",padding:".3em .4em"}));ie("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 Cr=ie("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),lt=ie("span",{cursor:"pointer",color:"white"}),dd=ie("span",(e,a)=>({color:a.danger})),jt=ie("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),nd=ie("span",{color:"grey",fontSize:".7rem"}),hr=e=>{let{expanded:a,style:t={},...o}=e;return I.createElement("span",{style:{display:"inline-block",transition:"all .1s ease",transform:`rotate(${a?90:0}deg) ${t.transform||""}`,...t}},"\u25B6")},id=e=>{let{handleEntry:a,label:t,value:o,subEntries:r,subEntryPages:l,type:s,expanded:u,toggle:d,pageSize:n,renderer:f}=e,[g,m]=I.useState(void 0),[x,S]=I.useState([]),c=()=>{m(o())};return I.createElement(Cr,{key:t},l!=null&&l.length?I.createElement(I.Fragment,null,I.createElement(lt,{onClick:()=>d()},I.createElement(hr,{expanded:u})," ",t," ",I.createElement(nd,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),u?l.length===1?I.createElement(jt,null,r.map(L=>a(L))):I.createElement(jt,null,l.map((L,C)=>I.createElement("div",{key:C},I.createElement(Cr,null,I.createElement(lt,{onClick:()=>S(w=>w.includes(C)?w.filter(E=>E!==C):[...w,C])},I.createElement(hr,{expanded:u})," [",C*n," ..."," ",C*n+n-1,"]"),x.includes(C)?I.createElement(jt,null,L.map(w=>a(w))):null)))):null):s==="function"?I.createElement(I.Fragment,null,I.createElement(ge,{renderer:f,label:I.createElement("button",{onClick:c},I.createElement(lt,null,t)," \u{1F504}"," "),value:g,defaultExpanded:{}})):I.createElement(I.Fragment,null,I.createElement(lt,null,t,":")," ",I.createElement(dd,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function ge(e){let{value:a,defaultExpanded:t,renderer:o=id,pageSize:r=100,depth:l=0,...s}=e,[u,d]=I.useState(t),n=c=>{d(L=>typeof c<"u"?c:!L)},f=[],g=typeof a,m,x=[],S=c=>{let L=f.concat(c.label),C=t===!0?{[c.label]:!0}:t?.[c.label];return{...c,subPath:c,path:L,depth:l+1,defaultExpanded:C}};if(Array.isArray(a)?(g="array",m=a.map((c,L)=>S({label:L,value:c}))):a!==null&&typeof a=="object"&&typeof a[Symbol.iterator]=="function"?(g="Iterable",m=Array.from(a,(c,L)=>S({label:L,value:c}))):typeof a=="function"?g="function":typeof a=="object"&&a!==null&&(g="object",m=Object.entries(a).map(c=>{let[L,C]=c;return S({label:L,value:C})})),m){let c=0;for(;c<m.length;)x.push(m.slice(c,c+r)),c=c+r}return o({handleEntry:c=>I.createElement(ge,He({key:c.label,renderer:o},s,c)),type:g,subEntries:m,subEntryPages:x,depth:l,value:a,path:f,expanded:u,toggle:n,pageSize:r,...s})}function br(e){return ke.createElement("svg",He({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),ke.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},ke.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},ke.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},ke.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},ke.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) "}),ke.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"}),ke.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 wr(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=I.useRef(null),u=I.useRef(null),[d,n]=ad("reactTableDevtoolsOpen",a),f=sd(),{style:g={},...m}=o,{style:x={},onClick:S,...c}=r;return f()?I.createElement(l,{ref:s,className:"ReactTableDevtools"},I.createElement(Sr,{theme:me},d?I.createElement(fd,He({ref:u},m,{table:t,isOpen:d,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...g}})):I.createElement("button",He({type:"button"},c,{"aria-label":"Open React Table Devtools",onClick:L=>{n(!0),S&&S(L)},style:{background:"none",border:0,padding:0,margin:".5rem",display:"inline-flex",fontSize:"1.5em",cursor:"pointer",width:"fit-content",...x}}),I.createElement(br,{"aria-hidden":!0})))):null}var fd=I.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return I.createElement(Sr,{theme:me},I.createElement(ld,He({ref:t,className:"ReactTableDevtoolsPanel"},s),I.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
1
|
+
import"../chunk-IAKOOX7B.js";import{D as Ye}from"../chunk-OGMDOPWW.js";import{B as wt,aa as vt,c as oe,q as St,r as bt,t as yt}from"../chunk-RFCV76TR.js";import{a as Ts,b as ye}from"../chunk-XBQ4XZ2M.js";import{AnimatePresence as Jn,motion as Rs}from"motion/react";import{useCallback as Mo,useEffect as tl}from"react";import{QueryClient as Ks,QueryClientProvider as Xs}from"@tanstack/react-query";import*as le from"react";import{onlineManager as Ds,useQueryClient as As}from"@tanstack/react-query";var Io=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=wt(()=>{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=yt(()=>import("../CPIOZS5X-ICU6WNOA.js")),this.#d=u),vt(this.#c,this.#t),St(u,bt({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}},So=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=wt(()=>{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=yt(()=>import("../OKF6E45R-3IGVLQES.js")),this.#u=n),vt(this.#c,this.#t),St(n,bt({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 Fs}from"react/jsx-runtime";function bo(e){let a=As(e.client),t=le.useRef(null),{buttonPosition:o,position:r,initialIsOpen:l,errorTypes:s,styleNonce:d,shadowDOMTarget:u}=e,[n]=le.useState(new Io({client:a,queryFlavor:"React Query",version:"5",onlineManager:Ds,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]),Fs("div",{dir:"ltr",className:"tsqd-parent-container",ref:t})}import*as we from"react";import{onlineManager as Ns,useQueryClient as Os}from"@tanstack/react-query";import{jsx as qs}from"react/jsx-runtime";function yo(e){let a=Os(e.client),t=we.useRef(null),{errorTypes:o,styleNonce:r,shadowDOMTarget:l}=e,[s]=we.useState(new So({client:a,queryFlavor:"React Query",version:"5",onlineManager:Ns,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]),qs("div",{style:{height:"500px",...e.style},className:"tsqd-parent-container",ref:t})}var wo=process.env.NODE_ENV!=="development"?function(){return null}:bo,pi=process.env.NODE_ENV!=="development"?function(){return null}:yo;import{createContext as _s,useContext as Qs,useMemo as Zs,useState as ja}from"react";import{toast as Js}from"sonner";import{Toaster as Us}from"sonner";import{jsx as Hs}from"react/jsx-runtime";var vo=({...e})=>Hs(Us,{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 zs}from"nuqs/adapters/custom";import{useEffect as Vs,useState as Gs}from"react";function Ws(){let e=window.location.hash.slice(1),[a,t]=Gs(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 Vs(()=>{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 Po=zs(Ws);import{jsx as Ya,jsxs as js}from"react/jsx-runtime";var $s=new Ks,ko=_s(void 0);function Ro(e){let{children:a,...t}=e,[o,r]=ja(null),[l,s]=ja("tables"),[d,u]=ja(!1),[n,f]=ja(!0),m=e.onError;m??=c=>Js.error(c.message);let g=Zs(()=>e.onTelemetryEvent??(()=>{}),[e.onTelemetryEvent]),x=()=>u(c=>!c),L=()=>f(c=>!c);return js(Xs,{client:$s,children:[Ya(wo,{}),Ya(vo,{}),Ya(Po,{children:Ya(ko.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 U(){let e=Qs(ko);if(!e)throw new Error("`useStudio` must be used within a `StudioContext.Provider`");return e}var V={};Ts(V,{keyMap:()=>Pt,urlKeys:()=>al,useQueryState:()=>pe,useQueryStates:()=>la});ye(V,Ei);import{useQueryState as Ys,useQueryStates as el}from"nuqs";import*as Ei from"nuqs";function Pt(e){return e}function al(e){return e}var Oi=Symbol("BRAND_SYMBOL");function pe(e,a){return Ys(e,a)}function la(e,a){return el(e,a)}function et(){let{activeView:e,setActiveView:a}=U(),[t,o]=pe("view",{defaultValue:"tables",parse:s=>s||"tables",serialize:s=>s??""}),r=Mo(()=>{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()}`)},[]);tl(()=>{t&&(t==="tables"||t==="schema-visualiser")&&a(t)},[t,a]);let l=Mo(s=>{e!==s&&(a(s),s==="schema-visualiser"?r():o(s))},[e,a,o,r]);return{activeView:e,handleViewChange:l}}import{clsx as Nl}from"clsx";var Mt="-",ol=e=>{let a=sl(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:s=>{let d=s.split(Mt);return d[0]===""&&d.length!==1&&d.shift(),Bo(d,a)||rl(s)},getConflictingClassGroupIds:(s,d)=>{let u=t[s]||[];return d&&o[s]?[...u,...o[s]]:u}}},Bo=(e,a)=>{if(e.length===0)return a.classGroupId;let t=e[0],o=a.nextPart.get(t),r=o?Bo(e.slice(1),o):void 0;if(r)return r;if(a.validators.length===0)return;let l=e.join(Mt);return a.validators.find(({validator:s})=>s(l))?.classGroupId},To=/^\[(.+)\]$/,rl=e=>{if(To.test(e)){let a=To.exec(e)[1],t=a?.substring(0,a.indexOf(":"));if(t)return"arbitrary.."+t}},sl=e=>{let{theme:a,prefix:t}=e,o={nextPart:new Map,validators:[]};return dl(Object.entries(e.classGroups),t).forEach(([l,s])=>{Rt(s,o,l,a)}),o},Rt=(e,a,t,o)=>{e.forEach(r=>{if(typeof r=="string"){let l=r===""?a:Do(a,r);l.classGroupId=t;return}if(typeof r=="function"){if(ll(r)){Rt(r(o),a,t,o);return}a.validators.push({validator:r,classGroupId:t});return}Object.entries(r).forEach(([l,s])=>{Rt(s,Do(a,l),t,o)})})},Do=(e,a)=>{let t=e;return a.split(Mt).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},ll=e=>e.isThemeGetter,dl=(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,ul=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)}}},No="!",nl=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(No),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},il=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},fl=e=>({cache:ul(e.cacheSize),parseClassName:nl(e),...ol(e)}),cl=/\s+/,pl=(e,a)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:r}=a,l=[],s=e.trim().split(cl),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=il(f).join(":"),h=m?C+No:C,y=h+c;if(l.includes(y))continue;l.push(y);let E=r(c,L);for(let H=0;H<E.length;++H){let re=E[H];l.push(h+re)}d=n+(d.length>0?" "+d:d)}return d};function ml(){let e=0,a,t,o="";for(;e<arguments.length;)(a=arguments[e++])&&(t=Oo(a))&&(o&&(o+=" "),o+=t);return o}var Oo=e=>{if(typeof e=="string")return e;let a,t="";for(let o=0;o<e.length;o++)e[o]&&(a=Oo(e[o]))&&(t&&(t+=" "),t+=a);return t};function Ao(e,...a){let t,o,r,l=s;function s(u){let n=a.reduce((f,m)=>m(f),e());return t=fl(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=pl(u,t);return r(u,f),f}return function(){return l(ml.apply(null,arguments))}}var F=e=>{let a=t=>t[e]||[];return a.isThemeGetter=!0,a},qo=/^\[(?:([a-z-]+):)?(.+)\]$/i,gl=/^\d+\/\d+$/,xl=new Set(["px","full","screen"]),Ll=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Cl=/\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$/,hl=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Il=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Sl=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ve=e=>ea(e)||xl.has(e)||gl.test(e),Fe=e=>aa(e,"length",Ml),ea=e=>!!e&&!Number.isNaN(Number(e)),kt=e=>aa(e,"number",ea),da=e=>!!e&&Number.isInteger(Number(e)),bl=e=>e.endsWith("%")&&ea(e.slice(0,-1)),w=e=>qo.test(e),Be=e=>Ll.test(e),yl=new Set(["length","size","percentage"]),wl=e=>aa(e,yl,Eo),vl=e=>aa(e,"position",Eo),Pl=new Set(["image","url"]),kl=e=>aa(e,Pl,Dl),Rl=e=>aa(e,"",Tl),ua=()=>!0,aa=(e,a,t)=>{let o=qo.exec(e);return o?o[1]?typeof a=="string"?o[1]===a:a.has(o[1]):t(o[2]):!1},Ml=e=>Cl.test(e)&&!hl.test(e),Eo=()=>!1,Tl=e=>Il.test(e),Dl=e=>Sl.test(e);var Fo=()=>{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"),E=F("saturate"),H=F("scale"),re=F("sepia"),z=F("skew"),Z=F("space"),G=F("translate"),B=()=>["auto","contain","none"],v=()=>["auto","hidden","clip","visible","scroll"],J=()=>["auto",w,a],M=()=>[w,a],Se=()=>["",ve,Fe],$e=()=>["auto",ea,w],Za=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],je=()=>["solid","dashed","dotted","double","none"],Ja=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],sa=()=>["start","end","center","between","around","evenly","stretch"],Ge=()=>["","0",w],$a=()=>["auto","avoid","all","avoid-page","page","left","right","column"],se=()=>[ea,w];return{cacheSize:500,separator:":",theme:{colors:[ua],spacing:[ve,Fe],blur:["none","",Be,w],brightness:se(),borderColor:[e],borderRadius:["none","","full",Be,w],borderSpacing:M(),borderWidth:Se(),contrast:se(),grayscale:Ge(),hueRotate:se(),invert:Ge(),gap:M(),gradientColorStops:[e],gradientColorStopPositions:[bl,Fe],inset:J(),margin:J(),opacity:se(),padding:M(),saturate:se(),scale:se(),sepia:Ge(),skew:se(),space:M(),translate:M()},classGroups:{aspect:[{aspect:["auto","square","video",w]}],container:["container"],columns:[{columns:[Be]}],"break-after":[{"break-after":$a()}],"break-before":[{"break-before":$a()}],"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:[...Za(),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:Ge()}],shrink:[{shrink:Ge()}],order:[{order:["first","last","none",da,w]}],"grid-cols":[{"grid-cols":[ua]}],"col-start-end":[{col:["auto",{span:["full",da,w]},w]}],"col-start":[{"col-start":$e()}],"col-end":[{"col-end":$e()}],"grid-rows":[{"grid-rows":[ua]}],"row-start-end":[{row:["auto",{span:[da,w]},w]}],"row-start":[{"row-start":$e()}],"row-end":[{"row-end":$e()}],"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",...sa()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...sa(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...sa(),"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:[Be]},Be]}],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",Be,Fe]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",kt]}],"font-family":[{font:[ua]}],"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",ea,kt]}],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:[...je(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ve,Fe]}],"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:[...Za(),vl]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",wl]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},kl]}],"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:[...je(),"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:je()}],"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:["",...je()]}],"outline-offset":[{"outline-offset":[ve,w]}],"outline-w":[{outline:[ve,Fe]}],"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,Fe]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Be,Rl]}],"shadow-color":[{shadow:[ua]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":[...Ja(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Ja()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[u]}],"drop-shadow":[{"drop-shadow":["","none",Be,w]}],grayscale:[{grayscale:[n]}],"hue-rotate":[{"hue-rotate":[f]}],invert:[{invert:[m]}],saturate:[{saturate:[E]}],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":[E]}],"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:[H]}],"scale-x":[{"scale-x":[H]}],"scale-y":[{"scale-y":[H]}],rotate:[{rotate:[da,w]}],"translate-x":[{"translate-x":[G]}],"translate-y":[{"translate-y":[G]}],"skew-x":[{"skew-x":[z]}],"skew-y":[{"skew-y":[z]}],"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,Fe,kt]}],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"]}}},Al=(e,{cacheSize:a,prefix:t,separator:o,experimentalParseClassName:r,extend:l={},override:s={}})=>{na(e,"cacheSize",a),na(e,"prefix",t),na(e,"separator",o),na(e,"experimentalParseClassName",r);for(let d in s)Fl(e[d],s[d]);for(let d in l)Bl(e[d],l[d]);return e},na=(e,a,t)=>{t!==void 0&&(e[a]=t)},Fl=(e,a)=>{if(a)for(let t in a)na(e,t,a[t])},Bl=(e,a)=>{if(a)for(let t in a){let o=a[t];o!==void 0&&(e[t]=(e[t]||[]).concat(o))}},Uo=(e,...a)=>typeof e=="function"?Ao(Fo,e,...a):Ao(()=>Al(Fo(),e),...a);var Ol=Uo({prefix:"ps-"});function p(...e){return Ol(Nl(e))}import{useIsMutating as kn}from"@tanstack/react-query";import{forwardRef as El,createElement as Ul}from"react";var Ho=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),at=(...e)=>e.filter((a,t,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===t).join(" ").trim();import{forwardRef as ql,createElement as Vo}from"react";var zo={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 Go=ql(({color:e="currentColor",size:a=24,strokeWidth:t=2,absoluteStrokeWidth:o,className:r="",children:l,iconNode:s,...d},u)=>Vo("svg",{ref:u,...zo,width:a,height:a,stroke:e,strokeWidth:o?Number(t)*24/Number(a):t,className:at("lucide",r),...d},[...s.map(([n,f])=>Vo(n,f)),...Array.isArray(l)?l:[l]]));var b=(e,a)=>{let t=El(({className:o,...r},l)=>Ul(Go,{ref:l,iconNode:a,className:at(`lucide-${Ho(e)}`,o),...r}));return t.displayName=`${e}`,t};var Ne=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 ia=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 fa=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 ca=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 pa=b("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);var ma=b("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);var ga=b("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);var Oe=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 We=b("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var xa=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 La=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 Ca=b("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);var ha=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 Ia=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 Sa=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 ba=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 ya=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 wa=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 va=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 Pa=b("MoveDown",[["path",{d:"M8 18L12 22L16 18",key:"cskvfv"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var ka=b("MoveUp",[["path",{d:"M8 6L12 2L16 6",key:"1yvkyx"}],["path",{d:"M12 2V22",key:"r89rzk"}]]);var qe=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 Ee=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 Ra=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 Ma=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 Ta=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 Da=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 Aa=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 Fa=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 Ue=b("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);import{AnimateNumber as Rn}from"motion-plus/react";import{useEffect as Mn,useState as Tn}from"react";import{toast as Dn}from"sonner";import{cva as Hl}from"class-variance-authority";import{jsx as zl}from"react/jsx-runtime";var Tt=Hl("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 tt({className:e,variant:a,...t}){return zl("div",{className:p(Tt({variant:a}),e),...t})}import{Slot as Vl}from"@radix-ui/react-slot";import{cva as Gl}from"class-variance-authority";import*as Wo from"react";import{jsx as Kl}from"react/jsx-runtime";var Wl=Gl("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=Wo.forwardRef(({className:e,variant:a,size:t,asChild:o=!1,...r},l)=>Kl(o?Vl:"button",{className:p(Wl({variant:a,size:t,className:e})),ref:l,...r}));D.displayName="Button";import*as ge from"@radix-ui/react-popover";import*as Xo from"react";import{jsx as Ko}from"react/jsx-runtime";var _o=ge.Root,Qo=ge.Trigger;var Dt=Xo.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>Ko(ge.Portal,{children:Ko(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})}));Dt.displayName=ge.Content.displayName;import{useMutation as _l,useQueryClient as Ql}from"@tanstack/react-query";function Xl(e,a){let t={filter:Ye(e,a.columns),table:`${a.schema}.${a.name}`};return JSON.stringify(t)}function Zo(e,a){return{...e,__ps_rowid:Xl(e,a)}}function ot(e,a){let{row:t,rows:o}=e;return t!==void 0?{...e,row:Zo(t,a)}:o!==void 0?{...e,rows:o.map(r=>Zo(r,a))}:e}function Jo(){let{activeTable:e,adapter:a}=U(),t=Ql(),{schema:o=null,name:r=null}=e??{};return _l({mutationKey:["schema",o,"table",r,"insert"],async mutationFn(l){let[s,d]=await a.insert({rows:l,table:e},{});if(s)throw s;return ot(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 Zl}from"@tanstack/react-query";function $o(e){let{pageIndex:a,pageSize:t,sortOrder:o,filter:r}=e,{activeTable:l,adapter:s}=U();return Zl({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 ot(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 $l}from"@tanstack/react-query";function jo(){let{activeTable:e,adapter:a,onError:t}=U(),o=$l(),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),At({getFinderFn(){let n={...u,...d},f=Ye(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;At({getFinderFn(){let{row:d}=s,u=Ye(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){At({getFinderFn(){let{changes:d,row:u}=s.details,n={...u,...d},f=Ye(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 At(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 jl,useMemo as Yo,useState as Yl}from"react";import ed from"short-uuid";var ad={kind:"FilterGroup",filters:[],after:"and",id:ed.generate()},er=e=>{let a=0;for(let t of e.filters)t.kind==="ColumnFilter"?t.column.trim()&&a++:t.kind==="FilterGroup"&&(a+=er(t));return a};function ar(){let[e,a]=pe("filter",{defaultValue:JSON.stringify(ad)}),t=Yo(()=>JSON.parse(e),[e]),o=d=>void a(JSON.stringify(d)),[r,l]=Yl(t);jl(()=>{l(t)},[t]);let s=Yo(()=>er(r),[r]);return{appliedFilter:t,setAppliedFilter:o,editingFilter:r,setEditingFilter:l,totalEditingFilters:s}}import{useIsMutating as td}from"@tanstack/react-query";function rt(){return td({predicate({options:{mutationKey:e}}){return e?.[4]==="insert"}})}import{useCallback as od}from"react";var rd=25,sd={pageIndex:V.parseAsIndex.withDefault(0),pageSize:V.parseAsInteger.withDefault(rd)};function st(){let[{pageIndex:e,pageSize:a},t]=la(sd),o=od(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 ud,useState as nd}from"react";import{useMutation as ld,useQueryClient as dd}from"@tanstack/react-query";function tr(){let{activeTable:e,adapter:a}=U(),t=dd(),{schema:o=null,name:r=null}=e??{};return ld({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 or(e){let{activeTable:a,onError:t}=U(),{paginationState:o}=st(),[r,l]=nd({}),s=Object.keys(r).length!==0,{mutate:d}=tr();ud(()=>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 id,useState as fd}from"react";function rr(){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]=fd(()=>t(e));return id(()=>{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 qd}from"remeda";import{forwardRef as bd}from"react";import*as ke from"react";import{jsx as Pe}from"react/jsx-runtime";var Ft=ke.forwardRef(({className:e,...a},t)=>Pe("div",{className:"ps-relative ps-w-full ps-overflow-auto ps-flex ps-items-start ps-h-full",children:Pe("table",{ref:t,className:p("ps-w-full ps-caption-bottom ps-text-sm",e),...a})}));Ft.displayName="Table";var Bt=ke.forwardRef(({className:e,...a},t)=>Pe("thead",{ref:t,className:p(e),...a}));Bt.displayName="TableHeader";var Nt=ke.forwardRef(({className:e,...a},t)=>Pe("tbody",{ref:t,className:p("[&_tr:last-child]:ps-border-0",e),...a}));Nt.displayName="TableBody";var cd=ke.forwardRef(({className:e,...a},t)=>Pe("tfoot",{ref:t,className:p("ps-border-t ps-bg-muted/50 ps-font-medium [&>tr]:last:ps-border-b-0",e),...a}));cd.displayName="TableFooter";var Ke=ke.forwardRef(({className:e,...a},t)=>Pe("tr",{ref:t,className:p("ps-border-b ps-transition-colors hover:ps-bg-muted/50 data-[state=selected]:ps-bg-muted",e),...a}));Ke.displayName="TableRow";var Xe=ke.forwardRef(({className:e,...a},t)=>Pe("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 He=ke.forwardRef(({className:e,...a},t)=>Pe("td",{ref:t,className:p("ps-align-middle",e),...a}));He.displayName="TableCell";var pd=ke.forwardRef(({className:e,...a},t)=>Pe("caption",{ref:t,className:p("ps-mt-4 ps-text-sm ps-text-muted-foreground",e),...a}));pd.displayName="TableCaption";import{isValidElement as Sd}from"react";import*as P from"@radix-ui/react-context-menu";import*as Re from"react";import{jsx as $,jsxs as Et}from"react/jsx-runtime";var sr=P.Root,lr=P.Trigger;var md=Re.forwardRef(({className:e,inset:a,children:t,...o},r)=>Et(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"})]}));md.displayName=P.SubTrigger.displayName;var gd=Re.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}));gd.displayName=P.SubContent.displayName;var Ot=Re.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})}));Ot.displayName=P.Content.displayName;var qt=Re.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}));qt.displayName=P.Item.displayName;var xd=Re.forwardRef(({className:e,children:a,checked:t,...o},r)=>Et(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]}));xd.displayName=P.CheckboxItem.displayName;var Ld=Re.forwardRef(({className:e,children:a,...t},o)=>Et(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:$(We,{className:"ps-h-4 ps-w-4 ps-fill-current"})})}),a]}));Ld.displayName=P.RadioItem.displayName;var Cd=Re.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}));Cd.displayName=P.Label.displayName;var hd=Re.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}));hd.displayName=P.Separator.displayName;var Id=({className:e,...a})=>$("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-text-muted-foreground",e),...a});Id.displayName="ContextMenuShortcut";import{jsx as Ut,jsxs as dr}from"react/jsx-runtime";function ur(e){let{children:a}=e;return dr(sr,{children:[Ut(lr,{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}),Ut(Ot,{children:dr(qt,{onClick:()=>{let t=Ht(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:[Ut(xa,{size:12}),"Copy"]})})]})}function Ht(e){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return String(e);if(e==null)return"";if(Sd(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?Ht(a.children):""}return Array.isArray(e)?e.map(Ht).join(""):""}import{jsx as nr}from"react/jsx-runtime";function W(e){let{children:a,className:t,ref:o,style:r,...l}=e;return nr(He,{...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:nr(ur,{children:a})})}import{jsx as ir}from"react/jsx-runtime";var zt=bd((e,a)=>{let{containerProps:t,value:o,...r}=e;return ir(W,{...r,...t,ref:a,children:ir("div",{"data-cell-type":"boolean",children:String(!!o)})})});zt.displayName="BooleanCell";import{forwardRef as yd}from"react";import{jsx as wd}from"react/jsx-runtime";var Vt=yd((e,a)=>{let{containerProps:t,value:o,...r}=e;return wd(W,{...r,...t,ref:a,children:String(o)})});Vt.displayName="DateCell";import{forwardRef as vd}from"react";import{jsx as Pd}from"react/jsx-runtime";var Ba=vd((e,a)=>{let{containerProps:t,...o}=e;return Pd(W,{...o,...t,ref:a})});Ba.displayName="EmptyCell";import{forwardRef as kd}from"react";import{jsx as Rd}from"react/jsx-runtime";var Gt=kd((e,a)=>{let{containerProps:t,value:o,options:r,...l}=e;return Rd(W,{...l,...t,ref:a,children:String(o)})});Gt.displayName="EnumCell";import{forwardRef as Md}from"react";import{jsx as Td}from"react/jsx-runtime";var lt=Md((e,a)=>{let{containerProps:t,value:o,...r}=e;return Td(W,{...r,...t,ref:a,children:JSON.stringify(o,null,2)})});lt.displayName="JSONCell";import{forwardRef as Dd}from"react";import{jsx as fr}from"react/jsx-runtime";var Wt=Dd((e,a)=>{let{containerProps:t,...o}=e;return fr(W,{...o,...t,ref:a,children:fr("code",{className:"ps-text-muted-foreground/60",children:"NULL"})})});Wt.displayName="NullCell";import{forwardRef as Ad}from"react";import{jsx as cr}from"react/jsx-runtime";var Kt=Ad((e,a)=>{let{containerProps:t,value:o,...r}=e;return cr(W,{...r,...t,ref:a,children:cr("div",{"data-cell-type":"numeric",children:o===null?"NULL":String(o)})})});Kt.displayName="NumericCell";import{forwardRef as Fd}from"react";import{jsx as Bd}from"react/jsx-runtime";var dt=Fd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Bd(W,{...r,...t,ref:a,children:String(o)})});dt.displayName="RawCell";import{forwardRef as Nd}from"react";import{jsx as Od}from"react/jsx-runtime";var Xt=Nd((e,a)=>{let{containerProps:t,value:o,...r}=e;return Od(W,{...r,...t,ref:a,children:String(o)})});Xt.displayName="TimeCell";import{jsx as ne}from"react/jsx-runtime";function ut({cell:e,column:a,props:t}){let o=e.getValue();if(o===void 0)return ne(Ba,{containerProps:t});if(o===null)return ne(Wt,{containerProps:t});let{group:r,options:l,isArray:s}=a.datatype;if(r==="json"||s)return ne(lt,{containerProps:t,value:o});if(r==="string")return ne(dt,{containerProps:t,value:o});if(r==="enum")return ne(Gt,{containerProps:t,value:o,options:l});if(r==="boolean")return ne(zt,{containerProps:t,value:o});if(r==="datetime")return ne(Vt,{containerProps:t,value:o});if(r==="time")return ne(Xt,{containerProps:t,value:o});if(r==="numeric")return ne(Kt,{containerProps:t,value:o});if(r==="raw")return qd(o)?ne(lt,{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 Ed}from"react";import*as Na from"@radix-ui/react-checkbox";import*as pr from"react";import{jsx as _t}from"react/jsx-runtime";var Oa=pr.forwardRef(({className:e,...a},t)=>_t(Na.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(Na.Indicator,{className:p("ps-flex ps-items-center ps-justify-center ps-text-current"),children:_t(de,{className:"ps-h-4 ps-w-4"})})}));Oa.displayName=Na.Root.displayName;import{jsx as Qt}from"react/jsx-runtime";var Zt=Ed((e,a)=>{let{table:t,readonly:o,className:r,style:l,...s}=e;return Qt("div",{ref:a,className:r,style:l,...s,children:Qt("div",{className:"ps-flex ps-items-center ps-justify-center ps-w-full",children:Qt(Oa,{checked:t.getIsAllRowsSelected(),onCheckedChange:d=>t.toggleAllRowsSelected(!!d),disabled:o})})})});Zt.displayName="SelectHeaderCell";import{forwardRef as Hd}from"react";import{Fragment as Ud,jsx as Jt}from"react/jsx-runtime";function mr(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 Jt(Ud,{children:l?Jt(Xe,{...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}):Jt(He,{...s,className:p(d,"ps-z-10 ps-h-[39px]",t),ref:o,style:r,children:a})})}import{jsx as gr}from"react/jsx-runtime";var $t=Hd((e,a)=>{let{row:t,readonly:o,className:r,style:l,...s}=e;return gr(mr,{ref:a,className:r,style:l,...s,children:gr(Oa,{checked:t.getIsSelected(),disabled:!t.getCanSelect()||o,onCheckedChange:t.getToggleSelectedHandler()})})});$t.displayName="SelectRowCell";import*as Me from"@radix-ui/react-popover";import*as _ from"react";import{jsx as qa}from"react/jsx-runtime";var xr=_.createContext(null),jt=({children:e,...a})=>{let[t,o]=_.useState(!1);return qa(xr.Provider,{value:{open:t,setOpen:o},children:qa(Me.Root,{open:t,onOpenChange:o,...a,children:e})})};jt.displayName="PopoverCell";var Yt=_.forwardRef(({children:e,onDoubleClick:a,className:t,...o},r)=>{let l=_.useRef(null);return qa(Me.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})});Yt.displayName="PopoverCellTrigger";var eo=_.forwardRef(({className:e,align:a="center",sideOffset:t=4,...o},r)=>qa(Me.Portal,{children:qa(Me.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})}));eo.displayName=Me.Content.displayName;function j(e){let a=_.useContext(xr),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 Lr,jsxs as zd}from"react/jsx-runtime";function nt(e){let{cellComponent:a,inputComponent:t}=e;return zd(jt,{children:[Lr(Yt,{asChild:!0,children:a}),Lr(eo,{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 jd,DndContext as Yd,DragOverlay as eu,KeyboardSensor as au,PointerSensor as tu,useSensor as yr,useSensors as ou}from"@dnd-kit/core";import{arrayMove as ru,SortableContext as su,sortableKeyboardCoordinates as lu,useSortable as du,verticalListSortingStrategy as uu}from"@dnd-kit/sortable";import{CSS as nu}from"@dnd-kit/utilities";import{motion as oo}from"motion/react";import{AnimateNumber as iu}from"motion-plus/react";import{useMemo as fu,useState as ro}from"react";import{Fragment as cu}from"react/jsx-runtime";import{createPortal as pu}from"react-dom";import wr from"short-uuid";function Cr(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 hr(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 Te from"react";import{jsx as Y,jsxs as ao}from"react/jsx-runtime";var it=k.Root,ft=k.Trigger;var Vd=Te.forwardRef(({className:e,inset:a,children:t,...o},r)=>ao(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"})]}));Vd.displayName=k.SubTrigger.displayName;var Gd=Te.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}));Gd.displayName=k.SubContent.displayName;var Ea=Te.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})}));Ea.displayName=k.Content.displayName;var ct=Te.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}));ct.displayName=k.Item.displayName;var Wd=Te.forwardRef(({className:e,children:a,checked:t,...o},r)=>ao(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]}));Wd.displayName=k.CheckboxItem.displayName;var Kd=Te.forwardRef(({className:e,children:a,...t},o)=>ao(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(We,{className:"ps-h-2 ps-w-2 ps-fill-current"})})}),a]}));Kd.displayName=k.RadioItem.displayName;var Xd=Te.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}));Xd.displayName=k.Label.displayName;var _d=Te.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}));_d.displayName=k.Separator.displayName;var Qd=({className:e,...a})=>Y("span",{className:p("ps-ml-auto ps-text-xs ps-tracking-widest ps-opacity-60",e),...a});Qd.displayName="DropdownMenuShortcut";import*as Ir from"react";import{jsx as Zd}from"react/jsx-runtime";var ie=Ir.forwardRef(({className:e,type:a,...t},o)=>Zd("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 ze from"react";import{jsx as Q,jsxs as to}from"react/jsx-runtime";var pt=R.Root;var mt=R.Value,Ua=ze.forwardRef(({className:e,children:a,...t},o)=>to(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"})})]}));Ua.displayName=R.Trigger.displayName;var Sr=ze.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(pa,{className:"ps-h-4 ps-w-4"})}));Sr.displayName=R.ScrollUpButton.displayName;var br=ze.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"})}));br.displayName=R.ScrollDownButton.displayName;var Ha=ze.forwardRef(({className:e,children:a,position:t="popper",...o},r)=>Q(R.Portal,{children:to(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(Sr,{}),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(br,{})]})}));Ha.displayName=R.Content.displayName;var Jd=ze.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 K=ze.forwardRef(({className:e,children:a,...t},o)=>to(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})]}));K.displayName=R.Item.displayName;var $d=ze.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}));$d.displayName=R.Separator.displayName;import{Fragment as Lu,jsx as I,jsxs as O}from"react/jsx-runtime";var vr=({value:e,onValueChange:a,disabled:t,triggerClassName:o="ps-w-20 ps-text-xs ps-h-8"})=>O(pt,{value:e,onValueChange:a,disabled:t,children:[I(Ua,{className:o,children:I(mt,{placeholder:"Logic"})}),O(Ha,{children:[I(K,{value:"and",children:I("div",{className:"ps-font-semibold",children:"AND"})}),I(K,{value:"or",children:I("div",{className:"ps-font-semibold",children:"OR"})})]})]}),mu=({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(Pr,{filter:o,onUpdate:()=>{},onDelete:()=>{},table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{}}):I(so,{group:o,onUpdate:()=>{},onDelete:()=>{},isRoot:!1,table:t,showLeadingOperator:l,leadingOperatorValue:r,onLeadingOperatorChange:()=>{},isLeadingOperatorTargetLast:!1})},gu=({items:e,parentGroupId:a,table:t,onUpdateItem:o,onDeleteItem:r,onReorderItems:l,activeDragId:s,onDragStart:d,onDragEndSignal:u})=>{let n=fu(()=>e.map(g=>g.id),[e]),f=ou(yr(tu,{activationConstraint:{distance:8}}),yr(au,{coordinateGetter:lu}));return O(Yd,{sensors:f,collisionDetection:jd,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(su,{items:n,strategy:uu,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=E=>{let H={...y,after:E};o(x-1,H)},h=x-1===e.length-1}return I(xu,{filter:g,onUpdate:y=>o(x,y),onDelete:()=>r(x),parentDndId:a,table:t,showLeadingOperator:L,leadingOperatorValue:c,onLeadingOperatorChange:C,isLeadingOperatorTargetLast:h},g.id)})}),pu(I(eu,{children:s?I("div",{className:"ps-opacity-80",children:I(mu,{activeId:s,items:e,table:t})}):null}),document.body)]})},xu=({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}=du({id:e.id,data:{type:e.kind,parentId:o}}),c={transform:nu.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(Pr,{filter:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u}):I(so,{group:e,onUpdate:a,onDelete:t,dragHandleProps:{...n,...f},table:r,showLeadingOperator:l,leadingOperatorValue:s,onLeadingOperatorChange:d,isLeadingOperatorTargetLast:u})})},Pr=({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=Cr(C,e.operator,c);a({...e,value:h})}},[g,x]=ro(hr(r.columns[e.column],e.operator,e.value));return O(oo.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(ha,{className:"ps-text-gray-500",size:16})}),O("div",{className:"ps-flex ps-items-center ps-gap-2",children:[l&&d?I(vr,{value:s,onValueChange:d,disabled:u}):null,O(pt,{value:e.column,onValueChange:n,children:[I(Ua,{className:"ps-w-28 ps-text-xs ps-h-8",children:I(mt,{placeholder:"Select column"})}),I(Ha,{children:Object.keys(r.columns).map(L=>I(K,{value:L,children:L},L))})]}),O(pt,{value:e.operator,onValueChange:L=>f(L),children:[I(Ua,{className:"ps-w-20 ps-text-xs ps-h-8",children:I(mt,{placeholder:"Operator"})}),O(Ha,{children:[I(K,{value:"=",children:"="}),I(K,{value:"!=",children:"!="}),I(K,{value:">",children:">"}),I(K,{value:">=",children:">="}),I(K,{value:"<",children:"<"}),I(K,{value:"<=",children:"<="}),I(K,{value:"is",children:"is"}),I(K,{value:"is not",children:"is not"}),I(K,{value:"like",children:"like"}),I(K,{value:"not like",children:"not like"}),I(K,{value:"ilike",children:"ilike"}),I(K,{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(Ue,{size:14})})})]})},so=({group:e,onUpdate:a,onDelete:t,dragHandleProps:o,isRoot:r=!1,table:l,showLeadingOperator:s,leadingOperatorValue:d,onLeadingOperatorChange:u,isLeadingOperatorTargetLast:n})=>{let[f,m]=ro(!0),[g,x]=ro(null),L=()=>{let z={id:wr.generate(),kind:"ColumnFilter",column:Object.keys(l.columns)[0]??"",operator:"=",value:void 0,after:"and"};a({...e,filters:[...e.filters,z]})},c=()=>{let z={id:wr.generate(),kind:"FilterGroup",filters:[],after:"and"};a({...e,filters:[...e.filters,z]})},C=(z,Z)=>{let G=[...e.filters];G[z]=Z,a({...e,filters:G})},h=z=>{let Z=[...e.filters];Z.splice(z,1),a({...e,filters:Z})},y=z=>{x(z.active.id)},E=()=>{x(null)},H=(z,Z)=>{if(z===Z)return;let G=ru(e.filters,z,Z);a({...e,filters:G})},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(oo.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(gu,{items:e.filters,parentGroupId:e.id,table:l,onUpdateItem:C,onDeleteItem:h,onReorderItems:H,activeDragId:g,onDragStart:y,onDragEndSignal:E})})}):null;return I(oo.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(vr,{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(tt,{className:"ps-transition-all",children:I(iu,{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(it,{children:[I(ft,{asChild:!0,children:I(D,{variant:"ghost",size:"sm",children:I(Oe,{className:"ps-size-4"})})}),I(Ea,{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(kr,{filter:e})})})]}),!r&&I(D,{variant:"ghost",size:"xs",onClick:t,children:I(Ue,{size:14})})]})]}),I("div",{className:p(r?"":"ps-ml-6"),children:re()})]})})},kr=({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(Lu,{children:[O("span",{children:[" ",d," "]}),O("span",{children:[" ",u," "]}),I("span",{children:" ? "})]})}else l=I(kr,{filter:o});return O(cu,{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 Rr({filter:e,setFilter:a,setAppliedFilter:t,table:o}){return O("div",{className:"ps-flex ps-flex-col ps-gap-4",children:[I(so,{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 Fu,MouseSensor as Bu,useSensor as Nu,useSensors as Ou}from"@dnd-kit/core";import{arrayMove as qu,horizontalListSortingStrategy as Eu,SortableContext as Uu,useSortable as Hu}from"@dnd-kit/sortable";import{CSS as zu}from"@dnd-kit/utilities";import{getCoreRowModel as Vu,useReactTable as Gu}from"@tanstack/react-table";import*as De from"react";import S from"react";function Ve(){return Ve=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},Ve.apply(null,arguments)}var Cu=e=>{try{let a=localStorage.getItem(e);return typeof a=="string"?JSON.parse(a):void 0}catch{return}};function hu(e,a){let[t,o]=S.useState();S.useEffect(()=>{let l=Cu(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"},Dr=S.createContext(xe);function Ar(e){let{theme:a,...t}=e;return S.createElement(Dr.Provider,Ve({value:a},t))}function Iu(){return S.useContext(Dr)}function Su(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 bu=typeof window>"u";function fe(e,a,t){return t===void 0&&(t={}),S.forwardRef((o,r)=>{let{style:l,...s}=o,d=Iu(),u=Object.entries(t).reduce((n,f)=>{let[m,g]=f;return Su(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 yu(){let e=S.useRef(!1),a=S.useCallback(()=>e.current,[]);return S[bu?"useEffect":"useLayoutEffect"](()=>(e.current=!0,()=>{e.current=!1}),[]),a}var wu=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 vu=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 Mr=fe("div",{fontFamily:"Menlo, monospace",fontSize:"0.7rem",lineHeight:"1.7",outline:"none",wordBreak:"break-word"}),gt=fe("span",{cursor:"pointer",color:"white"}),Pu=fe("span",(e,a)=>({color:a.danger})),lo=fe("div",{marginLeft:".1rem",paddingLeft:"1rem",borderLeft:"2px solid rgba(0,0,0,.15)"}),ku=fe("span",{color:"grey",fontSize:".7rem"}),Tr=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")},Ru=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(Mr,{key:t},l!=null&&l.length?S.createElement(S.Fragment,null,S.createElement(gt,{onClick:()=>u()},S.createElement(Tr,{expanded:d})," ",t," ",S.createElement(ku,null,String(s).toLowerCase()==="iterable"?"(Iterable) ":"",r.length," ",r.length>1?"items":"item")),d?l.length===1?S.createElement(lo,null,r.map(C=>a(C))):S.createElement(lo,null,l.map((C,h)=>S.createElement("div",{key:h},S.createElement(Mr,null,S.createElement(gt,{onClick:()=>L(y=>y.includes(h)?y.filter(E=>E!==h):[...y,h])},S.createElement(Tr,{expanded:d})," [",h*n," ..."," ",h*n+n-1,"]"),x.includes(h)?S.createElement(lo,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(gt,null,t)," \u{1F504}"," "),value:m,defaultExpanded:{}})):S.createElement(S.Fragment,null,S.createElement(gt,null,t,":")," ",S.createElement(Pu,null,JSON.stringify(o,Object.getOwnPropertyNames(Object(o))))))};function Le(e){let{value:a,defaultExpanded:t,renderer:o=Ru,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,Ve({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 Fr(e){return De.createElement("svg",Ve({width:"40px",height:"40px",viewBox:"0 0 190 190",version:"1.1"},e),De.createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},De.createElement("g",{id:"og-white",transform:"translate(-28.000000, -21.000000)"},De.createElement("g",{id:"Group-2",transform:"translate(28.000000, 31.000000)"},De.createElement("g",{id:"Group",transform:"translate(0.000000, 10.000000)"},De.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) "}),De.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"}),De.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 Br(e){let{initialIsOpen:a,table:t,panelProps:o={},toggleButtonProps:r={},containerElement:l="footer"}=e,s=S.useRef(null),d=S.useRef(null),[u,n]=hu("reactTableDevtoolsOpen",a),f=yu(),{style:m={},...g}=o,{style:x={},onClick:L,...c}=r;return f()?S.createElement(l,{ref:s,className:"ReactTableDevtools"},S.createElement(Ar,{theme:xe},u?S.createElement(Mu,Ve({ref:d},g,{table:t,isOpen:u,setIsOpen:n,style:{maxHeight:"80vh",width:"100%",...m}})):S.createElement("button",Ve({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(Fr,{"aria-hidden":!0})))):null}var Mu=S.forwardRef(function(a,t){let{table:o,isOpen:r=!0,setIsOpen:l,...s}=a;return S.createElement(Ar,{theme:xe},S.createElement(wu,Ve({ref:t,className:"ReactTableDevtoolsPanel"},s),S.createElement("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
2
|
.ReactTableDevtoolsPanel * {
|
|
3
|
-
scrollbar-color: ${
|
|
3
|
+
scrollbar-color: ${xe.backgroundAlt} ${xe.gray};
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar, .ReactTableDevtoolsPanel scrollbar {
|
|
@@ -9,15 +9,15 @@ import"../chunk-IAKOOX7B.js";import{D as je}from"../chunk-OGMDOPWW.js";import{B
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-track, .ReactTableDevtoolsPanel scrollbar-track {
|
|
12
|
-
background: ${
|
|
12
|
+
background: ${xe.backgroundAlt};
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.ReactTableDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactTableDevtoolsPanel scrollbar-thumb {
|
|
16
|
-
background: ${
|
|
16
|
+
background: ${xe.gray};
|
|
17
17
|
border-radius: .5em;
|
|
18
|
-
border: 3px solid ${
|
|
18
|
+
border: 3px solid ${xe.backgroundAlt};
|
|
19
19
|
}
|
|
20
|
-
`}}),I.createElement("div",{style:{flex:"1 1 500px",minHeight:"40%",maxHeight:"100%",overflow:"auto",borderRight:`1px solid ${me.grayAlt}`,display:"flex",flexDirection:"column"}},I.createElement("div",{style:{padding:".5em",background:me.backgroundAlt,display:"flex",justifyContent:"space-between",alignItems:"center"}},I.createElement(br,{"aria-hidden":!0,style:{marginRight:".5em"},onClick:()=>l(!1)}),I.createElement("div",{style:{marginRight:"auto",fontSize:"clamp(.8rem, 2vw, 1.3rem)",fontWeight:"bold"}},"React Table"," ",I.createElement("span",{style:{fontWeight:100}},"Devtools")),I.createElement("div",{style:{display:"flex",flexDirection:"column"}},r?I.createElement(ud,{type:"button","aria-label":"Close React Table Devtools",onClick:()=>{l(!1)}},"Close"):null)),I.createElement("div",{style:{display:"flex",flexWrap:"wrap",overflowY:"auto",flex:"1"}},I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(ge,{label:"Instance",value:o,defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(ge,{label:"State",value:o.getState(),defaultExpanded:!1}),I.createElement("div",{style:{height:".5rem"}}),I.createElement(ge,{label:"Columns",value:o.getAllColumns(),defaultExpanded:!1})),I.createElement("div",{style:{flex:"1 1 auto",padding:".5em"}},I.createElement(ge,{label:"Core Model",value:o.getCoreRowModel(),defaultExpanded:!1}),I.createElement(ge,{label:"Filtered Model",value:o.getFilteredRowModel(),defaultExpanded:!1}),I.createElement(ge,{label:"Sorted Model",value:o.getSortedRowModel(),defaultExpanded:!1}),I.createElement(ge,{label:"Grouped Model",value:o.getGroupedRowModel(),defaultExpanded:!1}),I.createElement(ge,{label:"Expanded Model",value:o.getExpandedRowModel(),defaultExpanded:!1}))))))});import{AnimatePresence as Pd,motion as kd}from"motion/react";import{useEffect as Rd,useMemo as Md,useState as eo}from"react";import{jsx as cd}from"react/jsx-runtime";function aa({className:e,...a}){return cd("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as pd}from"@tanstack/react-table";import{AnimatePresence as md,motion as yr}from"motion/react";import{Fragment as Yt,jsx as q,jsxs as xe}from"react/jsx-runtime";function vr(e){let{header:a,className:t}=e;return xe("div",{className:p("ps-flex ps-items-center ps-justify-between",t),children:[xe("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:pd(a.column.columnDef.header,a.getContext())})})}),xe("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(md,{mode:"wait",children:a.column.getIsSorted()==="desc"?q(yr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:q(Ia,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?q(yr.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:4},transition:{duration:.2},children:q(Sa,{size:14,className:"ps-text-muted-foreground"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&xe(at,{children:[q(tt,{asChild:!0,children:q(D,{variant:"ghost",size:"sm",className:"ps-px-0 ps-h-6 ps-w-6",children:q(ce,{size:12})})}),xe(Da,{children:[a.column.getCanSort()&&q(ot,{onClick:()=>a.column.toggleSorting(),children:q("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?xe(Yt,{children:[q(Ae,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?xe(Yt,{children:[q(da,{size:16}),"Sort ascending"]}):xe(Yt,{children:[q(Oe,{size:16}),"Cancel sorting"]})})}),q(ot,{onClick:()=>a.column.pin(a.column.getIsPinned()?!1:"left"),children:a.column.getIsPinned()?xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(ba,{size:16}),"Unpin column"]}):xe("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(wa,{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 Pr}from"react/jsx-runtime";function kr({className:e}){return Pr("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:Pr("div",{className:"ps-animate-indeterminate-bar ps-h-full ps-w-1/3 ps-rounded-r-full ps-bg-primary"})})}import{jsx as Y,jsxs as ut}from"react/jsx-runtime";function Rr(e){let{table:a,variant:t="basic"}=e,{pageIndex:o}=a.getState().pagination,r=a.getPageCount();return Y("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:Y("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"?ut("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:"Previous"}),Y(D,{variant:"outline",size:"sm",className:"ps-h-9",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:"Next"})]}):Y("div",{className:"ps-flex ps-items-center ps-space-x-2",children:ut("div",{className:"ps-flex ps-items-center ps-space-x-2",children:[Y(D,{variant:"outline",onClick:()=>a.setPageIndex(0),disabled:!a.getCanPreviousPage(),children:Y(fa,{className:"ps-w-4 ps-h-4"})}),Y(D,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:Y(na,{className:"ps-w-4 ps-h-4"})}),ut("div",{className:"ps-flex ps-items-center ps-gap-1 ps-text-xs ps-font-medium",children:["Page",Y(ne,{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)}}),ut("span",{className:"ps-shrink-0 ps-w-max",children:["of ",r]})]}),Y(D,{variant:"outline",onClick:()=>a.nextPage(),disabled:!a.getCanNextPage(),children:Y(le,{className:"ps-w-4 ps-h-4"})}),Y(D,{variant:"outline",onClick:()=>a.setPageIndex(r-1),disabled:!a.getCanNextPage(),children:Y(ca,{className:"ps-w-4 ps-h-4"})})]})})})})}function Re(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 Ad,jsx as A,jsxs as ta}from"react/jsx-runtime";var Td=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:g}=bd({id:o.id}),m={...r,cursor:"grab",touchAction:"none",transform:wd.Transform.toString(d),transition:n},x=p(t,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),S=p(x,g&&"!ps-z-50 ps-border-2 ps-border-violet-500");return A(Ke,{ref:f,...s,...u,style:l?r:m,className:l?x:S,children:A("div",{className:"ps-w-full",children:a})})};function Tr(e){let{columnDefs:a,getBeforeRows:t,isLoading:o,isProcessing:r,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:u,pageCount:d,paginationState:n,rows:f,rowSelectionState:g,sortingState:m}=e,[x,S]=eo([]),[c,L]=eo({left:["__ps_select"],right:[]}),[C,w]=eo({}),E=Md(()=>Mr(m),[m]),U=o||r;Rd(()=>{S(a.map(({accessorKey:B})=>B)),L({left:["__ps_select"],right:[]}),w({})},[a]);function oe({active:B,over:v}){v&&B.id!==v.id&&S(Z=>{let M=Z.indexOf(B.id),Le=Z.indexOf(v.id);return hd(Z,M,Le)})}let H=Ld(xd,{activationConstraint:{distance:10}}),Q=Cd(H),z=vd({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(u&&m),getCoreRowModel:yd(),getRowId:({__ps_rowid:B})=>B,manualPagination:!0,manualSorting:!0,onColumnOrderChange:S,onColumnPinningChange:L,onColumnSizingChange:w,onPaginationChange:l,onRowSelectionChange:s,onSortingChange:B=>u?.(v=>(typeof B=="function"&&(B=B(Mr(v))),Dd(B))),pageCount:d,state:{columnOrder:x,columnPinning:c,columnSizing:C,pagination:n,rowSelection:g,sorting:E}});return ta(Ad,{children:[process.env.NODE_ENV==="production"?null:A(wr,{table:z}),ta("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:U&&A(kr,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),A(gd,{sensors:Q,onDragEnd:oe,children:ta(vt,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[A(Pt,{children:z.getHeaderGroups().map(B=>A(We,{children:A(Sd,{items:B.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Id,children:B.headers.map(v=>{if(v.column.id==="__ps_select"){let Z=v.column.columnDef.header;if(typeof Z=="function"){let M=Z(v.getContext());if(typeof M=="function"){let Le=Re(v.column,"header");return A(Ke,{className:p(Le.className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Le.style,children:M({})},v.id)}return A(Ke,{className:p(Re(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Re(v.column,"header").style,children:M},v.id)}return null}return A(Td,{header:v,table:z,...Re(v.column,"header"),children:A(vr,{header:v})},v.id)})})},B.id))}),ta(kt,{children:[t?.(z),z.getRowModel().rows?.length?z.getRowModel().rows.map(B=>A(We,{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,Z)=>{if(typeof v.column.columnDef.cell=="function"){let M=v.column.columnDef.cell(v.getContext());return A(M,{...Re(v.column,"cell"),className:"group-odd:ps-bg-neutral-50 group-even:ps-bg-white group-hover:ps-bg-neutral-100"},Z)}else return A(Ee,{...Re(v.column,"cell"),children:v.getValue()},v.id)})},B.id)):A(We,{children:A(Ee,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&ta("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[A(aa,{className:"ps-h-4 ps-w-full"}),A(aa,{className:"ps-h-4 ps-w-4/5"}),A(aa,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!d||d<2?null:A(Rr,{table:z,variant:"numeric"}),A(Pd,{mode:"wait",children:z.getRowModel().rows?.length===0&&!o&&!r&&A(kd.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:ta("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 Mr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Dd(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as fe from"@radix-ui/react-tooltip";import*as Ar from"react";import{jsx as Dr}from"react/jsx-runtime";var Fr=fe.Provider,Br=fe.Root,Nr=fe.Trigger,ao=Ar.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Dr(fe.Portal,{children:Dr(fe.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})}));ao.displayName=fe.Content.displayName;import{jsx as Xe,jsxs as Or}from"react/jsx-runtime";function qr({column:e}){return Or("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&Xe(Fr,{delayDuration:120,children:Or(Br,{children:[Xe(Nr,{asChild:!0,children:Xe(La,{size:12,className:"ps-text-primary"})}),Xe(ao,{side:"bottom",className:"text-xs",children:Xe("span",{children:"Primary Key"})})]})}),Xe("span",{className:"ps-font-medium ps-truncate",children:e.name}),Xe("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 zr}from"motion/react";import qd,{useState as Gr}from"react";import*as to from"@radix-ui/react-label";import{cva as Fd}from"class-variance-authority";import*as Er from"react";import{jsx as Nd}from"react/jsx-runtime";var Bd=Fd("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),Ba=Er.forwardRef(({className:e,...a},t)=>Nd(to.Root,{ref:t,className:p(Bd(),e),...a}));Ba.displayName=to.Root.displayName;import*as Na from"@radix-ui/react-switch";import*as Hr from"react";import{jsx as Ur}from"react/jsx-runtime";var Oa=Hr.forwardRef(({className:e,...a},t)=>Ur(Na.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:Ur(Na.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")})}));Oa.displayName=Na.Root.displayName;import{Fragment as Od,jsx as _e,jsxs as qa}from"react/jsx-runtime";var ee=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>_e("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&qa(Od,{children:[qa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[qa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[_e("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:_e(ma,{size:12,strokeWidth:2})})," ","Save changes"]}),qa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[_e("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&&_e("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:qa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[_e(Oa,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),_e("span",{children:"Set to NULL"})]})})]})});import{Fragment as Ed,jsx as Ea,jsxs as Vr}from"react/jsx-runtime";function Wr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=Gr(a===null?!1:a),[d,n]=Gr(a===null),f=a===null?!1:a,g=C=>{u(C)},m=C=>{n(C)},x=qd.useCallback(()=>{let C=d?null:s;return C!==a?(t(C),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return Vr(Ed,{children:[Vr("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:[Ea(Ba,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Ea(zr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Ea(Oa,{id:"boolean-input",checked:s,onCheckedChange:g,disabled:d||r})}),Ea(zr.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)})]}),Ea(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import Kr from"dayjs";import Hd from"dayjs/plugin/localizedFormat";import{useCallback as zd,useMemo as Gd}from"react";import{useState as Ud}from"react";function oa(e){let{initialValue:a}=e,[t,o]=Ud(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as Vd,jsx as Ua,jsxs as oo}from"react/jsx-runtime";Kr.extend(Hd);function Xr(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=oa({initialValue:r}),u=Gd(()=>{try{let x=Kr(s);return x.isValid()?s.includes(":")?x.format("LL LTS"):x.format("LL"):s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=zd(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return oo(Vd,{children:[oo("form",{onSubmit:d,children:[Ua(ne,{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}),Ua("input",{type:"submit",className:"ps-sr-only"})]}),oo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ua("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ua("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ua(ee,{onSave:g,onCancel:m,readonly:o})]})}import{useCallback as Wd,useState as _r}from"react";import{Fragment as Kd,jsx as dt,jsxs as Xd}from"react/jsx-runtime";function Qr(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,u=String(o),[d,n]=_r(u),[f,g]=_r(o===null),m=w=>{n(w)},x=w=>{g(w)},S=Wd(()=>f?o!==null?(a(null),!0):!1:d!==u?(a(d),!0):!1,[d,u,a,f,o]),c=()=>{n(u),g(o===null)},{handleSave:L,handleCancel:C}=$({onSave:S,onCancel:c,readonly:l});return Xd(Kd,{children:[dt("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}),dt("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(w=>dt("button",{onClick:()=>m(w),className:It({variant:w===d?"default":"outline"}),disabled:f||l,children:w},w))}),dt(ee,{onSave:L,onCancel:C,onNullChange:s?x:void 0,isNull:f,readonly:l})]})}import _d,{useState as Zr}from"react";import{Fragment as Qd,jsx as ro,jsxs as Zd}from"react/jsx-runtime";function Jr(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]=Zr(s),[n,f]=Zr(a===null),g=C=>{d(C.target.value)},m=C=>{f(C)},x=_d.useCallback(()=>{if(n)return a!==null?(t(null),!0):!1;let C=u===""?null:JSON.parse(u);return C!==a?(t(C),!0):!1},[u,a,t,n]),S=()=>{d(s),f(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return Zd(Qd,{children:[ro("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:ro("textarea",{rows:5,value:u,onChange:g,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"})}),ro(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:n,readonly:r})]})}import Jd,{useState as $r}from"react";import{Fragment as $d,jsx as so,jsxs as jr}from"react/jsx-runtime";function Yr(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,u]=$r(a===null?"":String(a)),[d,n]=$r(a===null),f=a===null?"":String(a),g=C=>{u(C.target.value)},m=C=>{n(C)},x=Jd.useCallback(()=>{if(d)return a!==null?(t(null),!0):!1;let C=s===""?null:Number(s);return s!==a?(t(C),!0):!1},[s,a,t,d]),S=()=>{u(f),n(a===null)},{handleSave:c,handleCancel:L}=$({onSave:x,onCancel:S,readonly:r});return jr($d,{children:[jr("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[so(Ba,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),so("input",{type:"text",inputMode:"numeric",pattern:"\\d*",value:s,onChange:g,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"})]}),so(ee,{onSave:c,onCancel:L,onNullChange:l?m:void 0,isNull:d,readonly:r})]})}import jd from"react";import{Fragment as Yd,jsx as lo,jsxs as es}from"react/jsx-runtime";function as(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=oa({initialValue:r});function u(m){m.preventDefault(),s!==r&&a(s)}let d=jd.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:g}=$({onSave:d,onCancel:n,readonly:o});return es(Yd,{children:[es("form",{onSubmit:u,children:[lo(ne,{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}),lo("input",{type:"submit",className:"ps-sr-only"})]}),lo(ee,{onSave:f,onCancel:g,readonly:o})]})}import ts from"dayjs";import en from"dayjs/plugin/localizedFormat";import{useCallback as an,useMemo as tn}from"react";import{Fragment as on,jsx as Ha,jsxs as uo}from"react/jsx-runtime";ts.extend(en);function os(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=oa({initialValue:r}),u=tn(()=>{try{if(!s.includes(":"))return s;let x=/[+-]\d{2}(:\d{2})?$/.test(s),S=ts(`2000-01-01 ${s}`);if(S.isValid())return S.format("h:mm A")+(x?` (${S.format("Z")})`:"");let c=/(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?([+-]\d{2}(?::\d{2})?)?/,L=s.match(c);if(L){let C=parseInt(L[1]||"12",10),w=L[2]||"00",E=L[4]||"",U=C>=12?"PM":"AM";return`${C%12===0?12:C%12}:${w} ${U}${E?` (${E})`:""}`}return s}catch{return s}},[s]);function d(x){x.preventDefault(),s!==r&&a(s)}let n=an(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:g,handleCancel:m}=$({onSave:n,onCancel:f,readonly:o});return uo(on,{children:[uo("form",{onSubmit:d,children:[Ha(ne,{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}),Ha("input",{type:"submit",className:"ps-sr-only"})]}),uo("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-border-t ps-border-table-border",children:[Ha("div",{className:"ps-text-xs ps-text-muted-foreground",children:"Formatted value"}),Ha("div",{className:"ps-text-xs ps-font-mono ps-text-foreground",children:u})]}),Ha(ee,{onSave:g,onCancel:m,readonly:o})]})}import{jsx as Qe}from"react/jsx-runtime";function nt(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"?Qe(Xr,{onSubmit:o,value:n,column:t,readonly:u}):r==="time"?Qe(os,{onSubmit:o,value:n,column:t,readonly:u}):r==="json"||s?Qe(Jr,{onSubmit:o,value:n,column:t,readonly:u}):r==="boolean"?Qe(Wr,{onSubmit:o,value:n,column:t,readonly:u}):r==="enum"?Qe(Qr,{onSubmit:o,value:n,options:l,column:t,readonly:u}):r==="numeric"?Qe(Yr,{onSubmit:o,value:n,column:t,readonly:u}):Qe(as,{onSubmit:o,value:rn(n)?JSON.stringify(n):n,readonly:u})}import{useReactTable as sn}from"@tanstack/react-table";import{omit as ln}from"remeda";import{Fragment as un,jsx as za}from"react/jsx-runtime";function rs(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!Za();function l(d,n){o(f=>{let g=[...f];return g[d]={...g[d],...n},g})}let s=Object.values(a.options.columns).map(d=>d.id==="__ps_select"?{...d,cell(){return()=>za(ka,{})}}:{...d,cell({cell:n}){return f=>za(et,{cellComponent:Ya({cell:n,column:d.meta,props:f}),inputComponent:nt({cell:n,column:d.meta,onSubmit(g){l(f.rowIndex,{[d.id]:g})},readonly:r})})}}),u=sn({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:ln(a.options.state,["pagination","sorting"])});return za(un,{children:u.getRowModel().rows.map((d,n)=>za(We,{children:d.getVisibleCells().map((f,g)=>{if(typeof f.column.columnDef.cell=="function"){let m=f.column.columnDef.cell(f.getContext());return za(m,{...Re(f.column,"cell"),rowIndex:n},g)}return null})},n))})}import{Fragment as no,jsx as T,jsxs as Ze}from"react/jsx-runtime";function ss(e){let a=!!dn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:u}=G(),{sortingState:d,setSortingState:n}=_o(),{paginationState:f,setPaginationState:g}=Ja(),[m,x]=cn([]),{appliedFilter:S,setAppliedFilter:c,editingFilter:L,setEditingFilter:C,totalEditingFilters:w}=Wo(),{data:E,isFetching:U,refetch:oe}=Ho({...f,sortOrder:d,filter:S}),{deleteSelection:H,isSelecting:Q,rowSelectionState:z,setRowSelectionState:B}=Xo(E),v=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),Z=Za(),M=Uo(),Le=zo();if(fn(()=>x([]),[t]),!t)return null;function Je(){M.mutate(m,{onError:o,onSuccess(){pn.success("Rows inserted successfully"),x([])}})}function Ga(){x(N=>[...N,{}])}function $e(){x([])}function Va(N,Ce,ft){Le.mutate({details:{changes:{[Ce.name]:N},row:ft,table:t},options:{}})}function ra(N){N===!0?C(S):c(L)}let Ge=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header(){return qr({column:N})},cell({cell:Ce}){return ft=>T(et,{cellComponent:Ya({cell:Ce,column:N,props:ft}),inputComponent:nt({cell:Ce,column:N,readonly:v,onSubmit(cs){return Va(cs,N,Ce.row.original)}})})}})),Wa=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:N}){return Ce=>T(zt,{table:N,readonly:v,...Ce})},cell({row:N}){return Ce=>T(Vt,{row:N,readonly:v,...Ce})}}],re=[...Ge,...Wa].sort(gn);return Ze(no,{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:Ze("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[Ze("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"sm",onClick:s,children:u?T(Be,{}):T(Ne,{})}),Ze(ko,{onOpenChange:ra,children:[T(Ro,{asChild:!0,children:T(D,{variant:"outline",size:"sm",className:p(w>0&&"ps-border-primary"),children:Ze("span",{className:"ps-flex ps-items-center ps-gap-2",children:[T(ga,{}),w>0&&T(Xa,{children:T(nn,{transition:{layout:{duration:.12}},children:w})})]})})}),T(St,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:T(Lr,{filter:L,setFilter:C,setAppliedFilter:N=>{C(N),c(N)},table:t})})]}),T(D,{variant:"outline",size:"sm",onClick:Ga,disabled:Z>0,children:"Insert row"}),m.length>0&&Ze(no,{children:[T(D,{variant:"secondary",size:"sm",onClick:Je,children:"Save"}),T(D,{variant:"ghost",size:"sm",onClick:$e,children:"Cancel"})]}),Q&&T(no,{children:T(D,{variant:"secondary",size:"sm",onClick:H,children:"Delete"})})]}),Ze("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"icon",onClick:()=>void oe(),disabled:U,children:T(ya,{className:p("ps-h-4 ps-w-4",U&&"ps-animate-spin")})}),T(D,{variant:"outline",size:"icon",onClick:l,children:r?T(ha,{}):T(Ca,{})})]})]})})}),T(Tr,{columnDefs:re,getBeforeRows:N=>T(rs,{table:N,stagedRows:m,setStagedRows:x}),isLoading:U,isProcessing:a,onPaginationChange:g,onRowSelectionChange:B,onSortingChange:n,pageCount:mn(E?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:E?.rows??[],rowSelectionState:z,sortingState:d})]})}function mn(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 gn(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 hn}from"@radix-ui/react-slot";import{useCallback as Ln,useEffect as us,useMemo as ds}from"react";import{v4 as Cn}from"uuid";import{useQuery as xn}from"@tanstack/react-query";var it=-1;function ls(){let{adapter:e}=G();return xn({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 ns(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=G(),{data:r,dataUpdatedAt:l}=ls(),s=l===it,u=ds(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),d=ds(()=>Object.values(r.schemas).reduce((c,L)=>c+Object.keys(L.tables).length,0),[r.schemas]),[n]=u,[f,g]=Pa({table:{defaultValue:null,parse:c=>c,serialize:c=>c??""},schema:{defaultValue:"",parse:c=>c,serialize:c=>c??""}}),[,m]=qe("pageIndex",{parse:c=>c,serialize:c=>c??""}),[,x]=qe("sort",{parse:c=>c,serialize:c=>c??""});us(()=>{if(!s){if(f?.table&&u.length>0){let c=u.find(L=>L.name===f.table);if(c){a(c);return}}u.length>0&&!e&&(a(n||null),n&&g({table:n.name,schema:n.schema}))}},[s,f,u,n,e,a,g]);let S=Ln(c=>{e!==c&&(a(c),g({table:c.name,schema:c.schema}),m(null),x(null))},[e,a,g,m,x]);return us(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:Cn(),timestamp:new Date().toISOString(),table_count:d}})},[u,o,l,d]),{tables:u,activeTable:e,isLoading:s,handleTableChange:S}}import{jsx as te,jsxs as is}from"react/jsx-runtime";function ze({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=ns(),l=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 te("div",{className:l,children:te(ze.Block,{label:"Tables",children:a.length>0?a.map(s=>te(ze.Item,{asChild:!0,isActive:t===s,onClick:()=>{r(s)},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=${s.name}&schema=${s.schema}`,children:s.name})},`${s.schema}-${s.name}`)):o?Array(4).fill(null).map((s,u)=>te(ze.Item,{wrapChildrenInSpan:!1,children:te(aa,{className:"ps-h-3 ps-w-full"})},u)):te(ze.Item,{children:"No tables found"})})})}var In=({className:e,label:a,children:t,...o})=>is("div",{className:e,...o,children:[is("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(va,{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})]}),Sn=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?hn:"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});ze.Block=In;ze.Item=Sn;import{jsx as Me,jsxs as vn}from"react/jsx-runtime";function wn(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Me(qo,{adapter:a,onError:t,onTelemetryEvent:o,children:Me(yn,{})}):(console.error("No adapter provided to Studio component"),Me("div",{children:"Error: No adapter provided"}))}function yn(){let{isFullscreen:e,isNavigationOpen:a}=G(),t=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 Me("div",{"data-fullscreen":e,className:t,children:vn("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:[Me(bn,{mode:"wait",children:a&&Me(fs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Me(ze,{})})}),Me(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:Me(ss,{})})]})})}export{wn 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(Fr,{"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(vu,{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 Wu,motion as Ku}from"motion/react";import{useEffect as Xu,useMemo as _u,useState as no}from"react";import{jsx as Tu}from"react/jsx-runtime";function ta({className:e,...a}){return Tu("div",{className:p("ps-animate-pulse ps-rounded-md ps-bg-foreground/10",e),...a})}import{flexRender as Du}from"@tanstack/react-table";import{AnimatePresence as Au,motion as Nr}from"motion/react";import{Fragment as uo,jsx as q,jsxs as Ce}from"react/jsx-runtime";function Or(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:Du(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(Au,{mode:"wait",children:a.column.getIsSorted()==="desc"?q(Nr.div,{initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.2},children:q(Pa,{size:14,className:"ps-text-muted-foreground"})},"desc"):a.column.getIsSorted()==="asc"?q(Nr.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"})},"asc"):null})}),a.column.getCanPin()&&a.column.id!=="select"&&Ce(it,{children:[q(ft,{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(Ea,{children:[a.column.getCanSort()&&q(ct,{onClick:()=>a.column.toggleSorting(),children:q("span",{className:"ps-flex ps-items-center ps-gap-2",children:a.column.getNextSortingOrder()==="desc"?Ce(uo,{children:[q(Ne,{size:16}),"Sort descending"]}):a.column.getNextSortingOrder()==="asc"?Ce(uo,{children:[q(ia,{size:16}),"Sort ascending"]}):Ce(uo,{children:[q(Ue,{size:16}),"Cancel sorting"]})})}),q(ct,{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(Ma,{size:16}),"Unpin column"]}):Ce("span",{className:"ps-flex ps-items-center ps-gap-2",children:[q(Ta,{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 qr}from"react/jsx-runtime";function Er({className:e}){return qr("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:qr("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 xt}from"react/jsx-runtime";function Ur(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"?xt("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:xt("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(ma,{className:"ps-w-4 ps-h-4"})}),ee(D,{variant:"outline",onClick:()=>a.previousPage(),disabled:!a.getCanPreviousPage(),children:ee(ca,{className:"ps-w-4 ps-h-4"})}),xt("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)}}),xt("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(ga,{className:"ps-w-4 ps-h-4"})})]})})})})}function Ae(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 oa}from"react/jsx-runtime";var Qu=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}=Hu({id:o.id}),g={...r,cursor:"grab",touchAction:"none",transform:zu.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(Xe,{ref:f,...s,...d,style:l?r:g,className:l?x:L,children:A("div",{className:"ps-w-full",children:a})})};function zr(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]=no([]),[c,C]=no({left:["__ps_select"],right:[]}),[h,y]=no({}),E=_u(()=>Hr(g),[g]),H=o||r;Xu(()=>{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 qu(J,M,Se)})}let z=Nu(Bu,{activationConstraint:{distance:10}}),Z=Ou(z),G=Gu({columnResizeMode:"onChange",columns:a,data:f,defaultColumn:{size:200,minSize:50,maxSize:500},enableColumnPinning:!0,enableColumnResizing:!0,enableRowSelection:!0,enableSorting:!!(d&&g),getCoreRowModel:Vu(),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(Hr(v))),Zu(B))),pageCount:u,state:{columnOrder:x,columnPinning:c,columnSizing:h,pagination:n,rowSelection:m,sorting:E}});return oa(Ju,{children:[process.env.NODE_ENV==="production"?null:A(Br,{table:G}),oa("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:H&&A(Er,{className:"ps-absolute -ps-top-[1px] ps-left-0 ps-right-0"})}),A(Fu,{sensors:Z,onDragEnd:re,children:oa(Ft,{className:"ps-table-fixed ps-border-separate ps-border-spacing-0 ps-box-border ps-w-auto",children:[A(Bt,{children:G.getHeaderGroups().map(B=>A(Ke,{children:A(Uu,{items:B.headers.filter(v=>!("disableDragging"in v.column.columnDef)).map(v=>v.id),strategy:Eu,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=Ae(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(Ae(v.column,"header").className,"ps-select-none ps-touch-none ps-sticky ps-top-0 ps-bg-table-head"),style:Ae(v.column,"header").style,children:M},v.id)}return null}return A(Qu,{header:v,table:G,...Ae(v.column,"header"),children:A(Or,{header:v})},v.id)})})},B.id))}),oa(Nt,{children:[t?.(G),G.getRowModel().rows?.length?G.getRowModel().rows.map(B=>A(Ke,{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,{...Ae(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(He,{...Ae(v.column,"cell"),children:v.getValue()},v.id)})},B.id)):A(Ke,{children:A(He,{colSpan:a.length,className:"ps-h-24 ps-text-left ps-p-[var(--studio-cell-spacing)]",children:o&&oa("div",{className:"ps-flex ps-flex-col ps-gap-2",children:[A(ta,{className:"ps-h-4 ps-w-full"}),A(ta,{className:"ps-h-4 ps-w-4/5"}),A(ta,{className:"ps-h-4 ps-w-2/3"})]})})})]})]})}),!u||u<2?null:A(Ur,{table:G,variant:"numeric"}),A(Wu,{mode:"wait",children:G.getRowModel().rows?.length===0&&!o&&!r&&A(Ku.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:oa("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 Hr(e){return e?.map(a=>({id:a.column,desc:a.direction==="desc"}))||[]}function Zu(e){return e.map(a=>({column:a.id,direction:a.desc?"desc":"asc"}))}import*as ce from"@radix-ui/react-tooltip";import*as Gr from"react";import{jsx as Vr}from"react/jsx-runtime";var Wr=ce.Provider,Kr=ce.Root,Xr=ce.Trigger,io=Gr.forwardRef(({className:e,sideOffset:a=4,...t},o)=>Vr(ce.Portal,{children:Vr(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})}));io.displayName=ce.Content.displayName;import{jsx as _e,jsxs as _r}from"react/jsx-runtime";function Qr({column:e}){return _r("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",children:[e.isInPrimaryKey&&_e(Wr,{delayDuration:120,children:_r(Kr,{children:[_e(Xr,{asChild:!0,children:_e(Sa,{size:12,className:"ps-text-primary"})}),_e(io,{side:"bottom",className:"text-xs",children:_e("span",{children:"Primary Key"})})]})}),_e("span",{className:"ps-font-medium ps-truncate",children:e.name}),_e("span",{className:"ps-overflow-hidden ps-text-ellipsis ps-text-muted-foreground/70 ps-lowercase ps-truncate",children:e.datatype.name})]})}import{isObjectType as yn}from"remeda";import{motion as jr}from"motion/react";import an,{useState as Yr}from"react";import*as fo from"@radix-ui/react-label";import{cva as $u}from"class-variance-authority";import*as Zr from"react";import{jsx as Yu}from"react/jsx-runtime";var ju=$u("ps-text-sm ps-font-medium ps-leading-none peer-disabled:ps-cursor-not-allowed peer-disabled:ps-opacity-70"),za=Zr.forwardRef(({className:e,...a},t)=>Yu(fo.Root,{ref:t,className:p(ju(),e),...a}));za.displayName=fo.Root.displayName;import*as Va from"@radix-ui/react-switch";import*as $r from"react";import{jsx as Jr}from"react/jsx-runtime";var Ga=$r.forwardRef(({className:e,...a},t)=>Jr(Va.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(Va.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")})}));Ga.displayName=Va.Root.displayName;import{Fragment as en,jsx as Qe,jsxs as Wa}from"react/jsx-runtime";var ae=({onSave:e,onCancel:a,onClose:t,onNullChange:o,isNull:r=!1,readonly:l})=>Qe("div",{className:"ps-flex ps-flex-row ps-gap-1 ps-border-t ps-border-table-border ps-text-xs ps-",children:!l&&Wa(en,{children:[Wa("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2 ps-mr-auto",children:[Wa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{e&&e(),t&&t()},children:[Qe("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:Qe(La,{size:12,strokeWidth:2})})," ","Save changes"]}),Wa("button",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center ps-cursor-pointer",onClick:()=>{a&&a(),t&&t()},children:[Qe("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&&Qe("div",{className:"ps-flex ps-flex-col ps-gap-1 ps-p-2",children:Wa("label",{className:"ps-flex ps-flex-row ps-gap-1 ps-items-center",htmlFor:"set-nullable",children:[Qe(Ga,{id:"set-nullable",checked:r,onCheckedChange:n=>{o&&o(n)}}),Qe("span",{children:"Set to NULL"})]})})]})});import{Fragment as tn,jsx as Ka,jsxs as es}from"react/jsx-runtime";function as(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,d]=Yr(a===null?!1:a),[u,n]=Yr(a===null),f=a===null?!1:a,m=h=>{d(h)},g=h=>{n(h)},x=an.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 es(tn,{children:[es("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:[Ka(za,{htmlFor:"boolean-input",className:"ps-sr-only",children:"Boolean"}),Ka(jr.div,{className:"ps-flex ps-items-center",initial:{opacity:0},animate:{opacity:1},transition:{duration:.24},children:Ka(Ga,{id:"boolean-input",checked:s,onCheckedChange:m,disabled:u||r})}),Ka(jr.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)})]}),Ka(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:u,readonly:r})]})}import ts from"dayjs";import rn from"dayjs/plugin/localizedFormat";import{useCallback as sn,useMemo as ln}from"react";import{useState as on}from"react";function ra(e){let{initialValue:a}=e,[t,o]=on(a??"");return{handleOnChange:l=>{o(l.target.value)},value:t}}import{Fragment as dn,jsx as Xa,jsxs as co}from"react/jsx-runtime";ts.extend(rn);function os(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ra({initialValue:r}),d=ln(()=>{try{let x=ts(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=sn(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:g}=j({onSave:n,onCancel:f,readonly:o});return co(dn,{children:[co("form",{onSubmit:u,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"})]}),co("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:d})]}),Xa(ae,{onSave:m,onCancel:g,readonly:o})]})}import{useCallback as un,useState as rs}from"react";import{Fragment as nn,jsx as Lt,jsxs as fn}from"react/jsx-runtime";function ss(e){let{onSubmit:a,column:t,value:o,options:r=[],readonly:l}=e,s=t.nullable===!0,d=String(o),[u,n]=rs(d),[f,m]=rs(o===null),g=y=>{n(y)},x=y=>{m(y)},L=un(()=>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 fn(nn,{children:[Lt("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}),Lt("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=>Lt("button",{onClick:()=>g(y),className:Tt({variant:y===u?"default":"outline"}),disabled:f||l,children:y},y))}),Lt(ae,{onSave:C,onCancel:h,onNullChange:s?x:void 0,isNull:f,readonly:l})]})}import cn,{useState as ls}from"react";import{Fragment as pn,jsx as po,jsxs as mn}from"react/jsx-runtime";function ds(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]=ls(s),[n,f]=ls(a===null),m=h=>{u(h.target.value)},g=h=>{f(h)},x=cn.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 mn(pn,{children:[po("div",{className:"ps-flex ps-flex-row ps-items-center ps-gap-4 ps-py-0",children:po("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"})}),po(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:n,readonly:r})]})}import gn,{useState as us}from"react";import{Fragment as xn,jsx as mo,jsxs as ns}from"react/jsx-runtime";function is(e){let{value:a,onSubmit:t,column:o,readonly:r}=e,l=o.nullable===!0,[s,d]=us(a===null?"":String(a)),[u,n]=us(a===null),f=a===null?"":String(a),m=h=>{d(h.target.value)},g=h=>{n(h)},x=gn.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 ns(xn,{children:[ns("div",{className:"ps-flex ps-flex-row ps-items-center ps-h-[var(--studio-cell-height)] ps-gap-4 ps-py-0",children:[mo(za,{htmlFor:"numeric-input",className:"ps-sr-only",children:"Numeric"}),mo("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"})]}),mo(ae,{onSave:c,onCancel:C,onNullChange:l?g:void 0,isNull:u,readonly:r})]})}import Ln from"react";import{Fragment as Cn,jsx as go,jsxs as fs}from"react/jsx-runtime";function cs(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ra({initialValue:r});function d(g){g.preventDefault(),s!==r&&a(s)}let u=Ln.useCallback(()=>s!==r?(a(s),!0):!1,[s,r,a]),n=()=>{},{handleSave:f,handleCancel:m}=j({onSave:u,onCancel:n,readonly:o});return fs(Cn,{children:[fs("form",{onSubmit:d,children:[go(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}),go("input",{type:"submit",className:"ps-sr-only"})]}),go(ae,{onSave:f,onCancel:m,readonly:o})]})}import ps from"dayjs";import hn from"dayjs/plugin/localizedFormat";import{useCallback as In,useMemo as Sn}from"react";import{Fragment as bn,jsx as _a,jsxs as xo}from"react/jsx-runtime";ps.extend(hn);function ms(e){let{onSubmit:a,value:t,readonly:o}=e,r=String(t),{handleOnChange:l,value:s}=ra({initialValue:r}),d=Sn(()=>{try{if(!s.includes(":"))return s;let x=/[+-]\d{2}(:\d{2})?$/.test(s),L=ps(`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",E=C[4]||"",H=h>=12?"PM":"AM";return`${h%12===0?12:h%12}:${y} ${H}${E?` (${E})`:""}`}return s}catch{return s}},[s]);function u(x){x.preventDefault(),s!==r&&a(s)}let n=In(()=>s!==r?(a(s),!0):!1,[s,r,a]),f=()=>{},{handleSave:m,handleCancel:g}=j({onSave:n,onCancel:f,readonly:o});return xo(bn,{children:[xo("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"})]}),xo("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{jsx as Ze}from"react/jsx-runtime";function Ct(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"?Ze(os,{onSubmit:o,value:n,column:t,readonly:d}):r==="time"?Ze(ms,{onSubmit:o,value:n,column:t,readonly:d}):r==="json"||s?Ze(ds,{onSubmit:o,value:n,column:t,readonly:d}):r==="boolean"?Ze(as,{onSubmit:o,value:n,column:t,readonly:d}):r==="enum"?Ze(ss,{onSubmit:o,value:n,options:l,column:t,readonly:d}):r==="numeric"?Ze(is,{onSubmit:o,value:n,column:t,readonly:d}):Ze(cs,{onSubmit:o,value:yn(n)?JSON.stringify(n):n,readonly:d})}import{useReactTable as wn}from"@tanstack/react-table";import{omit as vn}from"remeda";import{Fragment as Pn,jsx as Qa}from"react/jsx-runtime";function gs(e){let{table:a,stagedRows:t,setStagedRows:o}=e,r=!!rt();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()=>Qa(Ba,{})}}:{...u,cell({cell:n}){return f=>Qa(nt,{cellComponent:ut({cell:n,column:u.meta,props:f}),inputComponent:Ct({cell:n,column:u.meta,onSubmit(m){l(f.rowIndex,{[u.id]:m})},readonly:r})})}}),d=wn({...a.options,columns:s,enableSorting:!1,onPaginationChange:void 0,onSortingChange:void 0,data:t,state:vn(a.options.state,["pagination","sorting"])});return Qa(Pn,{children:d.getRowModel().rows.map((u,n)=>Qa(Ke,{children:u.getVisibleCells().map((f,m)=>{if(typeof f.column.columnDef.cell=="function"){let g=f.column.columnDef.cell(f.getContext());return Qa(g,{...Ae(f.column,"cell"),rowIndex:n},m)}return null})},n))})}import{Fragment as Lo,jsx as T,jsxs as Je}from"react/jsx-runtime";function xs(e){let a=!!kn(),{activeTable:t,onError:o,isFullscreen:r,toggleFullscreen:l,toggleNavigation:s,isNavigationOpen:d}=U(),{sortingState:u,setSortingState:n}=rr(),{paginationState:f,setPaginationState:m}=st(),[g,x]=Tn([]),{appliedFilter:L,setAppliedFilter:c,editingFilter:C,setEditingFilter:h,totalEditingFilters:y}=ar(),{data:E,isFetching:H,refetch:re}=$o({...f,sortOrder:u,filter:L}),{deleteSelection:z,isSelecting:Z,rowSelectionState:G,setRowSelectionState:B}=or(E),v=!Object.values(t?.columns??{}).some(N=>N.isInPrimaryKey),J=rt(),M=Jo(),Se=jo();if(Mn(()=>x([]),[t]),!t)return null;function $e(){M.mutate(g,{onError:o,onSuccess(){Dn.success("Rows inserted successfully"),x([])}})}function Za(){x(N=>[...N,{}])}function je(){x([])}function Ja(N,be,It){Se.mutate({details:{changes:{[be.name]:N},row:It,table:t},options:{}})}function sa(N){N===!0?h(L):c(C)}let Ge=Object.values(t?.columns??{}).map(N=>({id:N.name,accessorKey:N.name,meta:N,header(){return Qr({column:N})},cell({cell:be}){return It=>T(nt,{cellComponent:ut({cell:be,column:N,props:It}),inputComponent:Ct({cell:be,column:N,readonly:v,onSubmit(Ms){return Ja(Ms,N,be.row.original)}})})}})),$a=[{id:"__ps_select",accessorKey:"__ps_select",enablePinning:!0,enableResizing:!1,enableSorting:!1,disableDragging:!0,size:50,minSize:50,header({table:N}){return be=>T(Zt,{table:N,readonly:v,...be})},cell({row:N}){return be=>T($t,{row:N,readonly:v,...be})}}],se=[...Ge,...$a].sort(Fn);return Je(Lo,{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:Je("div",{className:"ps-flex ps-flex-grow ps-justify-between ps-items-center",children:[Je("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"sm",onClick:s,children:d?T(qe,{}):T(Ee,{})}),Je(_o,{onOpenChange:sa,children:[T(Qo,{asChild:!0,children:T(D,{variant:"outline",size:"sm",className:p(y>0&&"ps-border-primary"),children:Je("span",{className:"ps-flex ps-items-center ps-gap-2",children:[T(Ca,{}),y>0&&T(tt,{children:T(Rn,{transition:{layout:{duration:.12}},children:y})})]})})}),T(Dt,{align:"start",side:"bottom",className:"ps-w-min ps-max-h-[520px] ps-overflow-y-auto",children:T(Rr,{filter:C,setFilter:h,setAppliedFilter:N=>{h(N),c(N)},table:t})})]}),T(D,{variant:"outline",size:"sm",onClick:Za,disabled:J>0,children:"Insert row"}),g.length>0&&Je(Lo,{children:[T(D,{variant:"secondary",size:"sm",onClick:$e,children:"Save"}),T(D,{variant:"ghost",size:"sm",onClick:je,children:"Cancel"})]}),Z&&T(Lo,{children:T(D,{variant:"secondary",size:"sm",onClick:z,children:"Delete"})})]}),Je("div",{className:"ps-flex ps-items-center ps-gap-2",children:[T(D,{variant:"outline",size:"icon",onClick:()=>void re(),disabled:H,children:T(Da,{className:p("ps-h-4 ps-w-4",H&&"ps-animate-spin")})}),T(D,{variant:"outline",size:"icon",onClick:l,children:r?T(va,{}):T(wa,{})})]})]})})}),T(zr,{columnDefs:se,getBeforeRows:N=>T(gs,{table:N,stagedRows:g,setStagedRows:x}),isLoading:H,isProcessing:a,onPaginationChange:m,onRowSelectionChange:B,onSortingChange:n,pageCount:An(E?.filteredRowCount??1/0,f.pageSize),paginationState:f,rows:E?.rows??[],rowSelectionState:G,sortingState:u})]})}function An(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 Fn(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 qn}from"@radix-ui/react-slot";import{useCallback as Nn,useEffect as Cs,useMemo as hs}from"react";import{v4 as On}from"uuid";import{useQuery as Bn}from"@tanstack/react-query";var ht=-1;function Ls(){let{adapter:e}=U();return Bn({initialData:{schemas:{[e.defaultSchema||"db"]:{tables:{}}},timezone:"UTC",filterOperators:[]},initialDataUpdatedAt:ht,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===ht?0:1/0})}function Is(){let{activeTable:e,setActiveTable:a,adapter:t,emitTelemetryEvent:o}=U(),{data:r,dataUpdatedAt:l}=Ls(),s=l===ht,d=hs(()=>Object.values(r.schemas[t.defaultSchema||"db"]?.tables||{}),[r.schemas,t.defaultSchema]),u=hs(()=>Object.values(r.schemas).reduce((c,C)=>c+Object.keys(C.tables).length,0),[r.schemas]),[n]=d,[f,m]=la({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??""});Cs(()=>{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=Nn(c=>{e!==c&&(a(c),m({table:c.name,schema:c.schema}),g(null),x(null))},[e,a,m,g,x]);return Cs(()=>{l!==-1&&o({event:"studio_launched",payload:{event_id:On(),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 Co}from"react/jsx-runtime";function he({className:e}){let{tables:a,activeTable:t,isLoading:o,handleTableChange:r}=Is(),{activeView:l,handleViewChange:s}=et(),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 Co("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(ta,{className:"ps-h-3 ps-w-full"})},n)):te(he.Item,{children:"No tables found"})})]})}var En=({className:e,label:a,children:t,...o})=>Co("div",{className:e,...o,children:[Co("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(Aa,{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})]}),Un=({className:e,asChild:a=!1,isActive:t,size:o,children:r,wrapChildrenInSpan:l=!0,...s})=>te(a?qn:"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=En;he.Item=Un;import"reactflow/dist/style.css";import{memo as Hn,useCallback as zn}from"react";import Vn,{addEdge as Gn,Background as Wn,ConnectionLineType as Kn,Controls as Xn,Handle as Ss,Position as bs,useEdgesState as _n,useNodesState as Qn}from"reactflow";import{jsx as X,jsxs as ho}from"react/jsx-runtime";var ys=Hn(({data:e})=>{let a=t=>{switch(t.toLowerCase()){case"id":return X(Ia,{className:"ps-w-4 ps-h-4"});case"email":return X(ya,{className:"ps-w-4 ps-h-4"});case"phone":return X(Ra,{className:"ps-w-4 ps-h-4"});case"name":return X(Fa,{className:"ps-w-4 ps-h-4"});case"createdat":case"updatedat":return X(fa,{className:"ps-w-4 ps-h-4"});default:return X(ba,{className:"ps-w-4 ps-h-4"})}};return ho("div",{className:"ps-min-w-[250px] ps-shadow-xl ps-rounded-md ps-border ps-border-border ps-bg-card",children:[X(Ss,{type:"target",position:bs.Top,style:{opacity:0}}),X("div",{className:"ps-px-4 ps-py-3 ps-border-b",children:X("div",{className:"ps-font-bold",children:e.label})}),X("div",{className:"ps-px-4 ps-py-2",children:e.fields.map((t,o)=>ho("div",{className:p("ps-flex ps-items-center ps-gap-2 ps-py-2 ps-text-sm",t.isPrimary&&"ps-text-primary"),children:[X("span",{className:"ps-text-muted-foreground",children:a(t.name)}),X("span",{className:"ps-flex-1",children:t.name}),X("span",{className:"ps-text-xs ps-text-muted-foreground",children:t.type})]},o))}),X(Ss,{type:"source",position:bs.Bottom,style:{opacity:0}})]})});ys.displayName="TableNode";var Zn={tableNode:ys};function ws({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]=Qn(t),[d,u,n]=_n(o),f=zn(m=>u(g=>Gn(m,g)),[u]);return X("div",{className:"ps-w-full ps-h-full ps-bg-card",children:ho(Vn,{nodes:r,edges:d,onNodesChange:s,onEdgesChange:n,onConnect:f,connectionLineType:Kn.SmoothStep,nodeTypes:Zn,fitView:!0,children:[X(Wn,{className:"ps-bg-muted",gap:16}),X(Xn,{className:"!ps-bg-[hsl(var(--studio-background))] !ps-border-[hsl(var(--studio-border))] !ps-text-[hsl(var(--studio-foreground))]"})]})})}import{jsx as Ps}from"react/jsx-runtime";var vs={tables:[{name:"Pet Owners",fields:[{name:"id",type:"UUID",isPrimary:!0},{name:"name",type:"String",isRequired:!0},{name:"email",type:"String",isRequired:!0},{name:"phone",type:"String"},{name:"createdAt",type:"DateTime"},{name:"updatedAt",type:"DateTime"}]},{name:"Pets",fields:[{name:"id",type:"UUID",isPrimary:!0},{name:"name",type:"String",isRequired:!0},{name:"species",type:"String",isRequired:!0},{name:"breed",type:"String"},{name:"birthDate",type:"Date"},{name:"ownerId",type:"UUID",isRequired:!0},{name:"createdAt",type:"DateTime"},{name:"updatedAt",type:"DateTime"}]}],relationships:[{from:"Pet Owners",to:"Pets",type:"1:n"}]};function ks(){return Ps("div",{className:"ps-w-full ps-h-full",children:Ps(ws,{tables:vs.tables,relationships:vs.relationships})})}import{jsx as Ie,jsxs as Yn}from"react/jsx-runtime";function $n(e){let{adapter:a,onError:t,onTelemetryEvent:o}=e;return a?Ie(Ro,{adapter:a,onError:t,onTelemetryEvent:o,children:Ie(jn,{})}):(console.error("No adapter provided to Studio component"),Ie("div",{children:"Error: No adapter provided"}))}function jn(){let{isFullscreen:e,isNavigationOpen:a}=U(),{activeView:t}=et(),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:Yn("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(Jn,{mode:"wait",children:a&&Ie(Rs.div,{initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.14},children:Ie(he,{})})}),Ie(Rs.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(xs,{}):Ie(ks,{})})]})})}export{$n as Studio};
|
|
21
21
|
/*! Bundled license information:
|
|
22
22
|
|
|
23
23
|
lucide-react/dist/esm/shared/src/utils.js:
|
|
@@ -68,6 +68,14 @@ lucide-react/dist/esm/icons/arrow-up-wide-narrow.js:
|
|
|
68
68
|
* See the LICENSE file in the root directory of this source tree.
|
|
69
69
|
*)
|
|
70
70
|
|
|
71
|
+
lucide-react/dist/esm/icons/calendar.js:
|
|
72
|
+
(**
|
|
73
|
+
* @license lucide-react v0.466.0 - ISC
|
|
74
|
+
*
|
|
75
|
+
* This source code is licensed under the ISC license.
|
|
76
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
77
|
+
*)
|
|
78
|
+
|
|
71
79
|
lucide-react/dist/esm/icons/check.js:
|
|
72
80
|
(**
|
|
73
81
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -172,6 +180,14 @@ lucide-react/dist/esm/icons/grip-vertical.js:
|
|
|
172
180
|
* See the LICENSE file in the root directory of this source tree.
|
|
173
181
|
*)
|
|
174
182
|
|
|
183
|
+
lucide-react/dist/esm/icons/hash.js:
|
|
184
|
+
(**
|
|
185
|
+
* @license lucide-react v0.466.0 - ISC
|
|
186
|
+
*
|
|
187
|
+
* This source code is licensed under the ISC license.
|
|
188
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
189
|
+
*)
|
|
190
|
+
|
|
175
191
|
lucide-react/dist/esm/icons/key-round.js:
|
|
176
192
|
(**
|
|
177
193
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -180,6 +196,22 @@ lucide-react/dist/esm/icons/key-round.js:
|
|
|
180
196
|
* See the LICENSE file in the root directory of this source tree.
|
|
181
197
|
*)
|
|
182
198
|
|
|
199
|
+
lucide-react/dist/esm/icons/key.js:
|
|
200
|
+
(**
|
|
201
|
+
* @license lucide-react v0.466.0 - ISC
|
|
202
|
+
*
|
|
203
|
+
* This source code is licensed under the ISC license.
|
|
204
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
205
|
+
*)
|
|
206
|
+
|
|
207
|
+
lucide-react/dist/esm/icons/mail.js:
|
|
208
|
+
(**
|
|
209
|
+
* @license lucide-react v0.466.0 - ISC
|
|
210
|
+
*
|
|
211
|
+
* This source code is licensed under the ISC license.
|
|
212
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
213
|
+
*)
|
|
214
|
+
|
|
183
215
|
lucide-react/dist/esm/icons/maximize.js:
|
|
184
216
|
(**
|
|
185
217
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -228,6 +260,14 @@ lucide-react/dist/esm/icons/panel-left-open.js:
|
|
|
228
260
|
* See the LICENSE file in the root directory of this source tree.
|
|
229
261
|
*)
|
|
230
262
|
|
|
263
|
+
lucide-react/dist/esm/icons/phone.js:
|
|
264
|
+
(**
|
|
265
|
+
* @license lucide-react v0.466.0 - ISC
|
|
266
|
+
*
|
|
267
|
+
* This source code is licensed under the ISC license.
|
|
268
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
269
|
+
*)
|
|
270
|
+
|
|
231
271
|
lucide-react/dist/esm/icons/pin-off.js:
|
|
232
272
|
(**
|
|
233
273
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -260,6 +300,14 @@ lucide-react/dist/esm/icons/table-2.js:
|
|
|
260
300
|
* See the LICENSE file in the root directory of this source tree.
|
|
261
301
|
*)
|
|
262
302
|
|
|
303
|
+
lucide-react/dist/esm/icons/user.js:
|
|
304
|
+
(**
|
|
305
|
+
* @license lucide-react v0.466.0 - ISC
|
|
306
|
+
*
|
|
307
|
+
* This source code is licensed under the ISC license.
|
|
308
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
309
|
+
*)
|
|
310
|
+
|
|
263
311
|
lucide-react/dist/esm/icons/x.js:
|
|
264
312
|
(**
|
|
265
313
|
* @license lucide-react v0.466.0 - ISC
|
|
@@ -288,4 +336,4 @@ lucide-react/dist/esm/lucide-react.js:
|
|
|
288
336
|
* @license MIT
|
|
289
337
|
*)
|
|
290
338
|
*/
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvbGliL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jbGFzcy1ncm91cC11dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbHJ1LWNhY2hlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9wYXJzZS1jbGFzcy1uYW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9jb25maWctdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNsYXNzbGlzdC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctam9pbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY3JlYXRlLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9mcm9tLXRoZW1lLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi92YWxpZGF0b3JzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9kZWZhdWx0LWNvbmZpZy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvbWVyZ2UtY29uZmlncy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZXh0ZW5kLXRhaWx3aW5kLW1lcmdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi90dy1tZXJnZS50cyIsICIuLi8uLi91aS9zdHVkaW8vQWN0aXZlVGFibGVWaWV3LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9zaGFyZWQvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvZGVmYXVsdEF0dHJpYnV0ZXMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9JY29uLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvY3JlYXRlTHVjaWRlSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2Fycm93LWRvd24td2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy11cC13aWRlLW5hcnJvdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2tleS1yb3VuZC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21heGltaXplLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWluaW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLWRvd24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tb3ZlLXVwLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3BhbmVsLWxlZnQtb3Blbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3Bpbi1vZmYudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9yZWZyZXNoLWN3LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvdGFibGUtMi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3gudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9iYWRnZS50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9idXR0b24udHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2NvbnRleHQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL1JlYWN0UXVlcnlEZXZ0b29scy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9pbmRleC5qcyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvaW5kZXgudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zb25uZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OdXFzSGFzaEFkYXB0ZXIudHN4IiwgIi4uLy4uL3VpL2hvb2tzL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtcXVlcnkudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWZpbHRlcmluZy50cyIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pcy1pbnNlcnRpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXBhZ2luYXRpb24udHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLXNlbGVjdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWRlbGV0ZS50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc29ydGluZy50cyIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9nZXQtY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQm9vbGVhbkNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdGFibGUudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkQ2VsbENvbnRleHRNZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRGF0ZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0VtcHR5Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW51bUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL0pTT05DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdWxsQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvTnVtZXJpY0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1Jhd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1RpbWVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RSb3dDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9TZWxlY3RDZWxsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvV3JpdGVhYmxlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL0ZpbHRlclRyZWUudHN4IiwgIi4uLy4uL2xpYi9jb252ZXJzaW9uVXRpbHMudHMiLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9kcm9wZG93bi1tZW51LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2lucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NlbGVjdC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWQudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3VzZUxvY2FsU3RvcmFnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy90aGVtZS50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTWVkaWFRdWVyeS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9zdHlsZWRDb21wb25lbnRzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0V4cGxvcmVyLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9Mb2dvLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy9pbmRleC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9za2VsZXRvbi50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXIudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkTG9hZGluZ0Jhci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRQYWdpbmF0aW9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9mZWF0dXJlcy9jb2x1bW4tcGlubmluZy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3Rvb2x0aXAudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL0RhdGFHcmlkSGVhZGVyQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2dldC1pbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0Jvb2xlYW5JbnB1dC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9sYWJlbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9zd2l0Y2gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9pbnB1dC1hY3Rpb25zLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvRGF0ZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvdXNlLWlucHV0LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9FbnVtSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9Kc29uSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9OdW1lcmljSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9SYXdJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1RpbWVJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL1N0YWdlZFJvd3MudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9OYXZpZ2F0aW9uLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1pbnRyb3NwZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHsgQWN0aXZlVGFibGVWaWV3IH0gZnJvbSBcIi4vQWN0aXZlVGFibGVWaWV3XCI7XG5pbXBvcnQgeyBTdHVkaW9Db250ZXh0UHJvdmlkZXIsIHVzZVN0dWRpbyB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuXG4gIGNvbnN0IGNvbnRhaW5lckNsYXNzZXMgPSBjbihcbiAgICBcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsIHBzLW1pbi1oLTAgcHMtbWF4LWgtZnVsbFwiLFxuICAgIGlzRnVsbHNjcmVlbiAmJiBcInBzLWZpeGVkIHBzLWluc2V0LTAgcHMtei1bOTk5OV0gcHMtYmctYmFja2dyb3VuZCBwcy1wLTJcIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgZGF0YS1mdWxsc2NyZWVuPXtpc0Z1bGxzY3JlZW59IGNsYXNzTmFtZT17Y29udGFpbmVyQ2xhc3Nlc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZ2FwLTAgcHMtdy1mdWxsIHBzLWJnLW5ldXRyYWwtNTAgcHMtcmVsYXRpdmUgcHMtbWF4LWgtZnVsbCBwcy1taW4taC1mdWxsIHBzLXJvdW5kZWQtbGdcIj5cbiAgICAgICAgPEFuaW1hdGVQcmVzZW5jZSBtb2RlPVwid2FpdFwiPlxuICAgICAgICAgIHtpc05hdmlnYXRpb25PcGVuICYmIChcbiAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgIGluaXRpYWw9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgYW5pbWF0ZT17eyB3aWR0aDogXCJhdXRvXCIsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICAgICAgZXhpdD17eyB3aWR0aDogMCwgb3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOYXZpZ2F0aW9uIC8+XG4gICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTEwMCBwcy1mbGV4LWNvbCBwcy1wLXB4IHBzLXJvdW5kZWQtbGcgcHMtc2VsZi1zdGFydCBwcy1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1tYXgtaC1mdWxsIHBzLW92ZXJmbG93LWNsaXBcIlxuICAgICAgICAgIHRyYW5zaXRpb249e3sgZHVyYXRpb246IDAuMTQgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxBY3RpdmVUYWJsZVZpZXcgLz5cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVIZWxwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PUzR3T1NBNVlUTWdNeUF3SURBZ01TQTFMamd6SURGak1DQXlMVE1nTXkweklETWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXlJREUzYUM0d01TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGUtaGVscFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUhlbHAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVIZWxwJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMnLCBrZXk6ICcxdTc3M3MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTdoLjAxJywga2V5OiAncDMycDA1JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVIZWxwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcHlcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVFFpSUdobGFXZG9kRDBpTVRRaUlIZzlJamdpSUhrOUlqZ2lJSEo0UFNJeUlpQnllVDBpTWlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTkNBeE5tTXRNUzR4SURBdE1pMHVPUzB5TFRKV05HTXdMVEV1TVM0NUxUSWdNaTB5YURFd1l6RXVNU0F3SURJZ0xqa2dNaUF5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29weVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcHkgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3B5JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICcxNCcsIHg6ICc4JywgeTogJzgnLCByeDogJzInLCByeTogJzInLCBrZXk6ICcxN2p5ZWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyJywga2V5OiAneml4OXVmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29ybmVyRG93bkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNJNUlERXdJRFFnTVRVZ09TQXlNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakFnTkhZM1lUUWdOQ0F3SURBZ01TMDBJRFJJTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Nvcm5lci1kb3duLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3JuZXJEb3duTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Nvcm5lckRvd25MZWZ0JywgW1xuICBbJ3BvbHlsaW5lJywgeyBwb2ludHM6ICc5IDEwIDQgMTUgOSAyMCcsIGtleTogJ3IzanBydicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMCA0djdhNCA0IDAgMCAxLTQgNEg0Jywga2V5OiAnNm81YjdsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3JuZXJEb3duTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEZpbHRlclxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXZHZiaUJ3YjJsdWRITTlJakl5SURNZ01pQXpJREV3SURFeUxqUTJJREV3SURFNUlERTBJREl4SURFMElERXlMalEySURJeUlETWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9maWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBGaWx0ZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdGaWx0ZXInLCBbXG4gIFsncG9seWdvbicsIHsgcG9pbnRzOiAnMjIgMyAyIDMgMTAgMTIuNDYgMTAgMTkgMTQgMjEgMTQgMTIuNDYgMjIgMycsIGtleTogJzF5Zzc3ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgR3JpcFZlcnRpY2FsXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0k1SWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqVWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpFNUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpTVRVaUlHTjVQU0kxSWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVGtpSUhJOUlqRWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9ncmlwLXZlcnRpY2FsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgR3JpcFZlcnRpY2FsID0gY3JlYXRlTHVjaWRlSWNvbignR3JpcFZlcnRpY2FsJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXZjdGdmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnaHAwdGNmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2ZrampmNicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXRtYWlqJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzUnLCByOiAnMScsIGtleTogJzE5bDI4ZScgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZjR6b2ozJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBHcmlwVmVydGljYWw7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBLZXlSb3VuZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWk0MU9EWWdNVGN1TkRFMFFUSWdNaUF3SURBZ01DQXlJREU0TGpneU9GWXlNV0V4SURFZ01DQXdJREFnTVNBeGFETmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YURGaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhQzR4TnpKaE1pQXlJREFnTUNBd0lERXVOREUwTFM0MU9EWnNMamd4TkMwdU9ERTBZVFl1TlNBMkxqVWdNQ0F4SURBdE5DMDBlaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4Tmk0MUlpQmplVDBpTnk0MUlpQnlQU0l1TlNJZ1ptbHNiRDBpWTNWeWNtVnVkRU52Ykc5eUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleS1yb3VuZFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleVJvdW5kID0gY3JlYXRlTHVjaWRlSWNvbignS2V5Um91bmQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yLjU4NiAxNy40MTRBMiAyIDAgMCAwIDIgMTguODI4VjIxYTEgMSAwIDAgMCAxIDFoM2ExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoLjE3MmEyIDIgMCAwIDAgMS40MTQtLjU4NmwuODE0LS44MTRhNi41IDYuNSAwIDEgMC00LTR6JyxcbiAgICAgIGtleTogJzFzNnQ3dCcsXG4gICAgfSxcbiAgXSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTYuNScsIGN5OiAnNy41JywgcjogJy41JywgZmlsbDogJ2N1cnJlbnRDb2xvcicsIGtleTogJ3cwZWtwZycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5Um91bmQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNYXhpbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBelNEVmhNaUF5SURBZ01DQXdMVElnTW5ZeklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRWalZoTWlBeUlEQWdNQ0F3TFRJdE1tZ3RNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm5ZellUSWdNaUF3SURBZ01DQXlJREpvTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRm9NMkV5SURJZ01DQXdJREFnTWkweWRpMHpJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tYXhpbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1heGltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWF4aW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDNINWEyIDIgMCAwIDAtMiAydjMnLCBrZXk6ICcxZGNtaXQnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOFY1YTIgMiAwIDAgMC0yLTJoLTMnLCBrZXk6ICcxZTRndDMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNnYzYTIgMiAwIDAgMCAyIDJoMycsIGtleTogJ3dzbDVzYycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMWgzYTIgMiAwIDAgMCAyLTJ2LTMnLCBrZXk6ICcxOHRyZWsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1heGltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTWluaW1pemVcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXpkak5oTWlBeUlEQWdNQ0F4TFRJZ01rZ3pJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0E0YUMwellUSWdNaUF3SURBZ01TMHlMVEpXTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTXlBeE5tZ3pZVElnTWlBd0lEQWdNU0F5SURKMk15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UWWdNakYyTFROaE1pQXlJREFnTUNBeElESXRNbWd6SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWluaW1pemVcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBNaW5pbWl6ZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ01pbmltaXplJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCAzdjNhMiAyIDAgMCAxLTIgMkgzJywga2V5OiAnaG9oYnRyJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDhoLTNhMiAyIDAgMCAxLTItMlYzJywga2V5OiAnNWp3MWYzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTMgMTZoM2EyIDIgMCAwIDEgMiAydjMnLCBrZXk6ICcxOTh0dnInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTYgMjF2LTNhMiAyIDAgMCAxIDItMmgzJywga2V5OiAncGg4bXhwJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNaW5pbWl6ZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1vdmVEb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F4T0V3eE1pQXlNa3d4TmlBeE9DSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNbFl5TWlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21vdmUtZG93blxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVEb3duID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZURvd24nLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDE4TDEyIDIyTDE2IDE4Jywga2V5OiAnY3NrdmZ2JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTEyIDJWMjInLCBrZXk6ICdyODlyemsnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1vdmVEb3duO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZVVwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0EyVERFeUlESk1NVFlnTmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS11cFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1vdmVVcCA9IGNyZWF0ZUx1Y2lkZUljb24oJ01vdmVVcCcsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggNkwxMiAyTDE2IDYnLCBrZXk6ICcxeXZreXgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZVVwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0Q2xvc2VcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVGdpSUdobGFXZG9kRDBpTVRnaUlIZzlJak1pSUhrOUlqTWlJSEo0UFNJeUlpQXZQZ29nSUR4d1lYUm9JR1E5SWswNUlETjJNVGdpSUM4K0NpQWdQSEJoZEdnZ1pEMGliVEUySURFMUxUTXRNeUF6TFRNaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BhbmVsLWxlZnQtY2xvc2VcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRDbG9zZSA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdENsb3NlJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzMnLCByeDogJzInLCBrZXk6ICdhZml0djcnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOSAzdjE4Jywga2V5OiAnZmgzaHFhJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE2IDE1LTMtMyAzLTMnLCBrZXk6ICcxNHk5OXonIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdENsb3NlO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGFuZWxMZWZ0T3BlblxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTBJRGtnTXlBekxUTWdNeUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1vcGVuXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGFuZWxMZWZ0T3BlbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BhbmVsTGVmdE9wZW4nLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTQgOSAzIDMtMyAzJywga2V5OiAnODAxMGVlJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQYW5lbExlZnRPcGVuO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluT2ZmXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk1UVWdPUzR6TkZZM1lURWdNU0F3SURBZ01TQXhMVEVnTWlBeUlEQWdNQ0F3SURBdE5FZzNMamc1SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTB5SURJZ01qQWdNakFpSUM4K0NpQWdQSEJoZEdnZ1pEMGlUVGtnT1hZeExqYzJZVElnTWlBd0lEQWdNUzB4TGpFeElERXVOemxzTFRFdU56Z3VPVUV5SURJZ01DQXdJREFnTlNBeE5TNHlORll4Tm1FeElERWdNQ0F3SURBZ01TQXhhREV4SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGluLW9mZlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbk9mZiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1Bpbk9mZicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTUgOS4zNFY3YTEgMSAwIDAgMSAxLTEgMiAyIDAgMCAwIDAtNEg3Ljg5Jywga2V5OiAnem53bnpxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTIgMiAyMCAyMCcsIGtleTogJzFvb2V3eScgfV0sXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDl2MS43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMScsXG4gICAgICBrZXk6ICdjOXFobTInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluT2ZmO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUGluXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVElnTVRkMk5TSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9TQXhNQzQzTm1FeUlESWdNQ0F3SURFdE1TNHhNU0F4TGpjNWJDMHhMamM0TGpsQk1pQXlJREFnTUNBd0lEVWdNVFV1TWpSV01UWmhNU0F4SURBZ01DQXdJREVnTVdneE1tRXhJREVnTUNBd0lEQWdNUzB4ZGkwdU56WmhNaUF5SURBZ01DQXdMVEV1TVRFdE1TNDNPV3d0TVM0M09DMHVPVUV5SURJZ01DQXdJREVnTVRVZ01UQXVOelpXTjJFeElERWdNQ0F3SURFZ01TMHhJRElnTWlBd0lEQWdNQ0F3TFRSSU9HRXlJRElnTUNBd0lEQWdNQ0EwSURFZ01TQXdJREFnTVNBeElERjZJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQaW4gPSBjcmVhdGVMdWNpZGVJY29uKCdQaW4nLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xMiAxN3Y1Jywga2V5OiAnYmIxZHU5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgMTAuNzZhMiAyIDAgMCAxLTEuMTEgMS43OWwtMS43OC45QTIgMiAwIDAgMCA1IDE1LjI0VjE2YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtLjc2YTIgMiAwIDAgMC0xLjExLTEuNzlsLTEuNzgtLjlBMiAyIDAgMCAxIDE1IDEwLjc2VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDhhMiAyIDAgMCAwIDAgNCAxIDEgMCAwIDEgMSAxeicsXG4gICAgICBrZXk6ICcxbmt6OGInLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGluO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgUmVmcmVzaEN3XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NeUF4TW1FNUlEa2dNQ0F3SURFZ09TMDVJRGt1TnpVZ09TNDNOU0F3SURBZ01TQTJMamMwSURJdU56Uk1NakVnT0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTWpFZ00zWTFhQzAxSWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBeE1tRTVJRGtnTUNBd0lERXRPU0E1SURrdU56VWdPUzQzTlNBd0lEQWdNUzAyTGpjMExUSXVOelJNTXlBeE5pSWdMejRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhOa2d6ZGpVaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3JlZnJlc2gtY3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBSZWZyZXNoQ3cgPSBjcmVhdGVMdWNpZGVJY29uKCdSZWZyZXNoQ3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00zIDEyYTkgOSAwIDAgMSA5LTkgOS43NSA5Ljc1IDAgMCAxIDYuNzQgMi43NEwyMSA4Jywga2V5OiAndjloNXZjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDN2NWgtNScsIGtleTogJzFxN3RvMCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSAxMmE5IDkgMCAwIDEtOSA5IDkuNzUgOS43NSAwIDAgMS02Ljc0LTIuNzRMMyAxNicsIGtleTogJzN1aWZsMycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ004IDE2SDN2NScsIGtleTogJzFjdjY3OCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmcmVzaEN3O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgVGFibGUyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PU0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNblkwYlRZdE5tZ3hNR0V5SURJZ01DQXdJREVnTWlBeWRqUk5PU0F6ZGpFNGJUQWdNR2d4TUdFeUlESWdNQ0F3SURBZ01pMHlWamxOT1NBeU1VZzFZVElnTWlBd0lEQWdNUzB5TFRKV09XMHdJREJvTVRnaUlDOCtDand2YzNablBnbz0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3RhYmxlLTJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBUYWJsZTIgPSBjcmVhdGVMdWNpZGVJY29uKCdUYWJsZTInLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ005IDNINWEyIDIgMCAwIDAtMiAydjRtNi02aDEwYTIgMiAwIDAgMSAyIDJ2NE05IDN2MThtMCAwaDEwYTIgMiAwIDAgMCAyLTJWOU05IDIxSDVhMiAyIDAgMCAxLTItMlY5bTAgMGgxOCcsXG4gICAgICBrZXk6ICdndWdqODMnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgVGFibGUyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgWFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTVRnZ05pQTJJREU0SWlBdlBnb2dJRHh3WVhSb0lHUTlJbTAySURZZ01USWdNVElpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMveFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKCdYJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTggNiA2IDE4Jywga2V5OiAnMWJsNWY4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTYgNiAxMiAxMicsIGtleTogJ2Q4Yms2dicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgWDtcbiIsICJpbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSBcImNsYXNzLXZhcmlhbmNlLWF1dGhvcml0eVwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IGJhZGdlVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLXB4LTIuNSBwcy1weS0wLjUgcHMtdGV4dC14cyBwcy1mb250LXNlbWlib2xkIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1yaW5nLTIgZm9jdXM6cHMtcmluZy1yaW5nIGZvY3VzOnBzLXJpbmctb2Zmc2V0LTJcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXByaW1hcnkgcHMtdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLXByaW1hcnkvODBcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZGVzdHJ1Y3RpdmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctZGVzdHJ1Y3RpdmUgcHMtdGV4dC1kZXN0cnVjdGl2ZS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1kZXN0cnVjdGl2ZS84MFwiLFxuICAgICAgICBvdXRsaW5lOiBcInBzLXRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFkZ2VQcm9wcyBleHRlbmRzIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgVmFyaWFudFByb3BzPHR5cGVvZiBiYWRnZVZhcmlhbnRzPiB7fVxuXG5mdW5jdGlvbiBCYWRnZSh7IGNsYXNzTmFtZSwgdmFyaWFudCwgLi4ucHJvcHMgfTogQmFkZ2VQcm9wcykge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKGJhZGdlVmFyaWFudHMoeyB2YXJpYW50IH0pLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgeyBCYWRnZSwgYmFkZ2VWYXJpYW50cyB9O1xuIiwgImltcG9ydCB7IFNsb3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYnV0dG9uVmFyaWFudHMgPSBjdmEoXG4gIFwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLWdhcC0yIHBzLXdoaXRlc3BhY2Utbm93cmFwIHBzLXJvdW5kZWQtbWQgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMSBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBkaXNhYmxlZDpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyZfc3ZnXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106cHMtc2l6ZS00IFsmX3N2Z106cHMtc2hyaW5rLTBcIixcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzkwXCIsXG4gICAgICAgIG91dGxpbmU6XG4gICAgICAgICAgXCJwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLWJhY2tncm91bmQgcHMtc2hhZG93LXNtIGhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIHNlY29uZGFyeTogXCJwcy1iZy1zZWNvbmRhcnkgcHMtdGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOnBzLWJnLWFjY2VudCBob3Zlcjpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwicHMtdGV4dC1wcmltYXJ5IHBzLXVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjpwcy11bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwicHMtaC05IHBzLXB4LTQgcHMtcHktMlwiLFxuICAgICAgICB4czogXCJwcy1oLTYgcHMtcm91bmRlZC1tZCBwcy1weC0yIHBzLXRleHQteHNcIixcbiAgICAgICAgc206IFwicHMtaC04IHBzLXJvdW5kZWQtbWQgcHMtcHgtMyBwcy10ZXh0LXhzXCIsXG4gICAgICAgIGxnOiBcInBzLWgtMTAgcHMtcm91bmRlZC1tZCBwcy1weC04XCIsXG4gICAgICAgIGljb246IFwicHMtaC05IHBzLXctOVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czoge1xuICAgICAgdmFyaWFudDogXCJkZWZhdWx0XCIsXG4gICAgICBzaXplOiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCdXR0b25Qcm9wc1xuICBleHRlbmRzIFJlYWN0LkJ1dHRvbkhUTUxBdHRyaWJ1dGVzPEhUTUxCdXR0b25FbGVtZW50PixcbiAgICBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1dHRvblZhcmlhbnRzPiB7XG4gIGFzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBCdXR0b24gPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBCdXR0b25Qcm9wcz4oXG4gICh7IGNsYXNzTmFtZSwgdmFyaWFudCwgc2l6ZSwgYXNDaGlsZCA9IGZhbHNlLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiA8Q29tcCBjbGFzc05hbWU9e2NuKGJ1dHRvblZhcmlhbnRzKHsgdmFyaWFudCwgc2l6ZSwgY2xhc3NOYW1lIH0pKX0gcmVmPXtyZWZ9IHsuLi5wcm9wc30gLz47XG4gIH0sXG4pO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJCdXR0b25cIjtcblxuZXhwb3J0IHsgQnV0dG9uLCBidXR0b25WYXJpYW50cyB9O1xuIiwgImltcG9ydCAqIGFzIFBvcG92ZXJQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BvdmVyXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgUG9wb3ZlciA9IFBvcG92ZXJQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgUG9wb3ZlclRyaWdnZXIgPSBQb3BvdmVyUHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IFBvcG92ZXJBbmNob3IgPSBQb3BvdmVyUHJpbWl0aXZlLkFuY2hvcjtcblxuY29uc3QgUG9wb3ZlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBhbGlnbiA9IFwiY2VudGVyXCIsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFBvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxQb3BvdmVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgIHJlZj17cmVmfVxuICAgICAgYWxpZ249e2FsaWdufVxuICAgICAgc2lkZU9mZnNldD17c2lkZU9mZnNldH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy13LTcyIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC00IHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBwcy1vdXRsaW5lLW5vbmUgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1wb3BvdmVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICA8L1BvcG92ZXJQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5Qb3BvdmVyQ29udGVudC5kaXNwbGF5TmFtZSA9IFBvcG92ZXJQcmltaXRpdmUuQ29udGVudC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgUG9wb3ZlciwgUG9wb3ZlclRyaWdnZXIsIFBvcG92ZXJDb250ZW50LCBQb3BvdmVyQW5jaG9yIH07XG4iLCAiaW1wb3J0IHsgUXVlcnlLZXksIHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBhZGRSb3dJZFRvUmVzdWx0IH0gZnJvbSBcIi4vdXRpbHMvYWRkLXJvdy1pZC10by1yZXN1bHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuICBjb25zdCB7IHNjaGVtYSA9IG51bGwsIG5hbWU6IHRhYmxlID0gbnVsbCB9ID0gYWN0aXZlVGFibGUgPz8ge307XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbktleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJpbnNlcnRcIl0sXG4gICAgYXN5bmMgbXV0YXRpb25Gbihyb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSB7XG4gICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCBhZGFwdGVyLmluc2VydCh7IHJvd3MsIHRhYmxlOiBhY3RpdmVUYWJsZSEgfSwge30pO1xuXG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhZGRSb3dJZFRvUmVzdWx0KHJlc3VsdCwgYWN0aXZlVGFibGUhKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzcyhuZXdEYXRhKSB7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyaWVzRGF0YTxBZGFwdGVyUXVlcnlSZXN1bHQ+KFxuICAgICAgICB7XG4gICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgIC8vIGhlcmUgd2UgcGFydGlhbGx5IG1hdGNoIHRoZSBxdWVyeSBrZXkgdG8gZ2V0IHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgICAgfSxcbiAgICAgICAgKG9sZERhdGEpID0+IHtcbiAgICAgICAgICBpZiAob2xkRGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2xkRGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ub2xkRGF0YSxcbiAgICAgICAgICAgIHJvd3M6IFsuLi5uZXdEYXRhLnJvd3MsIC4uLm9sZERhdGEucm93c10sXG4gICAgICAgICAgfSBzYXRpc2ZpZXMgQWRhcHRlclF1ZXJ5UmVzdWx0O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcblxuLyoqXG4gKiBTdHVkaW8gY29udGV4dCB2YWx1ZSBpbnRlcmZhY2VcbiAqL1xuaW50ZXJmYWNlIFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGFjdGl2ZVRhYmxlOiBUYWJsZSB8IG51bGw7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIHNldEFjdGl2ZVRhYmxlOiAodGFibGU6IFRhYmxlIHwgbnVsbCkgPT4gdm9pZDtcbiAgb25FcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgZW1pdFRlbGVtZXRyeUV2ZW50OiAoYXJnczogU3R1ZGlvVGVsZW1ldHJ5RXZlbnQpID0+IHZvaWQ7XG4gIC8vIFVJIHN0YXRlXG4gIGlzRnVsbHNjcmVlbjogYm9vbGVhbjtcbiAgdG9nZ2xlRnVsbHNjcmVlbjogKCkgPT4gdm9pZDtcbiAgaXNOYXZpZ2F0aW9uT3BlbjogYm9vbGVhbjtcbiAgdG9nZ2xlTmF2aWdhdGlvbjogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgcXVlcnlDbGllbnQgPSBuZXcgUXVlcnlDbGllbnQoKTtcblxuLyoqXG4gKiBDb250ZXh0IGZvciBzaGFyaW5nIFN0dWRpbyBzdGF0ZSBhY3Jvc3MgY29tcG9uZW50c1xuICovXG5jb25zdCBTdHVkaW9Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxTdHVkaW9Db250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBvbkVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgb25UZWxlbWV0cnlFdmVudD86IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbn0+O1xuXG5leHBvcnQgZnVuY3Rpb24gU3R1ZGlvQ29udGV4dFByb3ZpZGVyKHByb3BzOiBTdHVkaW9Db250ZXh0UHJvdmlkZXJQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgW2FjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZV0gPSB1c2VTdGF0ZTxUYWJsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGlzRnVsbHNjcmVlbixcbiAgICAgICAgICAgIHNldEFjdGl2ZVRhYmxlLFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIGVtaXRUZWxlbWV0cnlFdmVudCxcbiAgICAgICAgICAgIHRvZ2dsZUZ1bGxzY3JlZW4sXG4gICAgICAgICAgICBpc05hdmlnYXRpb25PcGVuLFxuICAgICAgICAgICAgdG9nZ2xlTmF2aWdhdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1N0dWRpb0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L051cXNIYXNoQWRhcHRlcj5cbiAgICA8L1F1ZXJ5Q2xpZW50UHJvdmlkZXI+XG4gICk7XG59XG5cbi8qKlxuICogSG9vayB0byBhY2Nlc3MgU3R1ZGlvIGNvbnRleHRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdXNlZCBvdXRzaWRlIG9mIFN0dWRpby5Qcm92aWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3R1ZGlvKCk6IFN0dWRpb0NvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFN0dWRpb0NvbnRleHQpO1xuXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImB1c2VTdHVkaW9gIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgU3R1ZGlvQ29udGV4dC5Qcm92aWRlcmBcIik7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cbiIsICIndXNlIGNsaWVudCdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgb25saW5lTWFuYWdlciwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7XG4gIERldnRvb2xzQnV0dG9uUG9zaXRpb24sXG4gIERldnRvb2xzRXJyb3JUeXBlLFxuICBEZXZ0b29sc1Bvc2l0aW9uLFxufSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IFF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuXG5leHBvcnQgaW50ZXJmYWNlIERldnRvb2xzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBSZWFjdCBRdWVyeSBsb2dvIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBkZXZ0b29scyBwYW5lbC5cbiAgICogJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20tcmlnaHQnLlxuICAgKi9cbiAgYnV0dG9uUG9zaXRpb24/OiBEZXZ0b29sc0J1dHRvblBvc2l0aW9uXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0J1xuICAgKiBEZWZhdWx0cyB0byAnYm90dG9tJy5cbiAgICovXG4gIHBvc2l0aW9uPzogRGV2dG9vbHNQb3NpdGlvblxuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29scyhcbiAgcHJvcHM6IERldnRvb2xzT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7XG4gICAgYnV0dG9uUG9zaXRpb24sXG4gICAgcG9zaXRpb24sXG4gICAgaW5pdGlhbElzT3BlbixcbiAgICBlcnJvclR5cGVzLFxuICAgIHN0eWxlTm9uY2UsXG4gICAgc2hhZG93RE9NVGFyZ2V0LFxuICB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgfSksXG4gIClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldENsaWVudChxdWVyeUNsaWVudClcbiAgfSwgW3F1ZXJ5Q2xpZW50LCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldEJ1dHRvblBvc2l0aW9uKGJ1dHRvblBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW2J1dHRvblBvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGRldnRvb2xzLnNldFBvc2l0aW9uKHBvc2l0aW9uKVxuICAgIH1cbiAgfSwgW3Bvc2l0aW9uLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRJbml0aWFsSXNPcGVuKGluaXRpYWxJc09wZW4gfHwgZmFsc2UpXG4gIH0sIFtpbml0aWFsSXNPcGVuLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIDxkaXYgZGlyPVwibHRyXCIgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCIgcmVmPXtyZWZ9PjwvZGl2PlxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgcmVuZGVyLCBsYXp5LCBzZXR1cFN0eWxlU2hlZXQsIGNyZWF0ZUNvbXBvbmVudCwgbWVyZ2VQcm9wcyB9IGZyb20gJy4vY2h1bmsvSFI3WVhaNUguanMnO1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzLnRzeFxudmFyIFRhbnN0YWNrUXVlcnlEZXZ0b29scyA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNDb21wb25lbnQ7XG4gICNkaXNwb3NlO1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQsXG4gICAgICBxdWVyeUZsYXZvcixcbiAgICAgIHZlcnNpb24sXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldFxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0QnV0dG9uUG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0UG9zaXRpb24ocG9zaXRpb24pIHtcbiAgICB0aGlzLiNwb3NpdGlvblsxXShwb3NpdGlvbik7XG4gIH1cbiAgc2V0SW5pdGlhbElzT3Blbihpc09wZW4pIHtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuWzFdKGlzT3Blbik7XG4gIH1cbiAgc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzKSB7XG4gICAgdGhpcy4jZXJyb3JUeXBlc1sxXShlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRDbGllbnQoY2xpZW50KSB7XG4gICAgdGhpcy4jY2xpZW50WzFdKGNsaWVudCk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgbGV0IERldnRvb2xzO1xuICAgICAgaWYgKHRoaXMuI0NvbXBvbmVudCkge1xuICAgICAgICBEZXZ0b29scyA9IHRoaXMuI0NvbXBvbmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIERldnRvb2xzID0gbGF6eSgoKSA9PiBpbXBvcnQoJy4vRGV2dG9vbHNDb21wb25lbnQvQ1BJT1pTNVguanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG4vLyBzcmMvVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgPSBjbGFzcyB7XG4gICNjbGllbnQ7XG4gICNvbmxpbmVNYW5hZ2VyO1xuICAjcXVlcnlGbGF2b3I7XG4gICN2ZXJzaW9uO1xuICAjaXNNb3VudGVkID0gZmFsc2U7XG4gICNzdHlsZU5vbmNlO1xuICAjc2hhZG93RE9NVGFyZ2V0O1xuICAjYnV0dG9uUG9zaXRpb247XG4gICNwb3NpdGlvbjtcbiAgI2luaXRpYWxJc09wZW47XG4gICNlcnJvclR5cGVzO1xuICAjb25DbG9zZTtcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZVxuICAgIH0gPSBjb25maWc7XG4gICAgdGhpcy4jY2xpZW50ID0gY3JlYXRlU2lnbmFsKGNsaWVudCk7XG4gICAgdGhpcy4jcXVlcnlGbGF2b3IgPSBxdWVyeUZsYXZvcjtcbiAgICB0aGlzLiN2ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLiNvbmxpbmVNYW5hZ2VyID0gb25saW5lTWFuYWdlcjtcbiAgICB0aGlzLiNzdHlsZU5vbmNlID0gc3R5bGVOb25jZTtcbiAgICB0aGlzLiNzaGFkb3dET01UYXJnZXQgPSBzaGFkb3dET01UYXJnZXQ7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb24gPSBjcmVhdGVTaWduYWwoYnV0dG9uUG9zaXRpb24pO1xuICAgIHRoaXMuI3Bvc2l0aW9uID0gY3JlYXRlU2lnbmFsKHBvc2l0aW9uKTtcbiAgICB0aGlzLiNpbml0aWFsSXNPcGVuID0gY3JlYXRlU2lnbmFsKGluaXRpYWxJc09wZW4pO1xuICAgIHRoaXMuI2Vycm9yVHlwZXMgPSBjcmVhdGVTaWduYWwoZXJyb3JUeXBlcyk7XG4gICAgdGhpcy4jb25DbG9zZSA9IGNyZWF0ZVNpZ25hbChvbkNsb3NlKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBzZXRPbkNsb3NlKG9uQ2xvc2UpIHtcbiAgICB0aGlzLiNvbkNsb3NlWzFdKCgpID0+IG9uQ2xvc2UpO1xuICB9XG4gIG1vdW50KGVsKSB7XG4gICAgaWYgKHRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgYWxyZWFkeSBtb3VudGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwb3NlID0gcmVuZGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IF9zZWxmJCA9IHRoaXM7XG4gICAgICBjb25zdCBbYnRuUG9zaXRpb25dID0gdGhpcy4jYnV0dG9uUG9zaXRpb247XG4gICAgICBjb25zdCBbcG9zXSA9IHRoaXMuI3Bvc2l0aW9uO1xuICAgICAgY29uc3QgW2lzT3Blbl0gPSB0aGlzLiNpbml0aWFsSXNPcGVuO1xuICAgICAgY29uc3QgW2Vycm9yc10gPSB0aGlzLiNlcnJvclR5cGVzO1xuICAgICAgY29uc3QgW3F1ZXJ5Q2xpZW50XSA9IHRoaXMuI2NsaWVudDtcbiAgICAgIGNvbnN0IFtvbkNsb3NlXSA9IHRoaXMuI29uQ2xvc2U7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc1BhbmVsQ29tcG9uZW50L09LRjZFNDVSLmpzJykpO1xuICAgICAgICB0aGlzLiNDb21wb25lbnQgPSBEZXZ0b29scztcbiAgICAgIH1cbiAgICAgIHNldHVwU3R5bGVTaGVldCh0aGlzLiNzdHlsZU5vbmNlLCB0aGlzLiNzaGFkb3dET01UYXJnZXQpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEZXZ0b29scywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGdldCBxdWVyeUZsYXZvcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNxdWVyeUZsYXZvcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jdmVyc2lvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9ubGluZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jb25saW5lTWFuYWdlcjtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHNoYWRvd0RPTVRhcmdldCgpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNzaGFkb3dET01UYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgZ2V0IGNsaWVudCgpIHtcbiAgICAgICAgICByZXR1cm4gcXVlcnlDbGllbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGJ1dHRvblBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBidG5Qb3NpdGlvbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHBvcygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgaW5pdGlhbElzT3BlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNPcGVuKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBlcnJvclR5cGVzKCkge1xuICAgICAgICAgIHJldHVybiBlcnJvcnMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uQ2xvc2UoKSB7XG4gICAgICAgICAgcmV0dXJuIG9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0sIGVsKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICB9XG4gIHVubW91bnQoKSB7XG4gICAgaWYgKCF0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIG5vdCBtb3VudGVkXCIpO1xuICAgIH1cbiAgICB0aGlzLiNkaXNwb3NlPy4oKTtcbiAgICB0aGlzLiNpc01vdW50ZWQgPSBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzLCBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCB9O1xuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBEZXZ0b29sc0Vycm9yVHlwZSB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNQYW5lbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGluc3RhbmNlIG9mIFF1ZXJ5Q2xpZW50XG4gICAqL1xuICBjbGllbnQ/OiBRdWVyeUNsaWVudFxuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBkZWZpbmUgY3VzdG9tIGVycm9ycyB0aGF0IGNhbiBiZSBzaG93biBpbiB0aGUgZGV2dG9vbHMuXG4gICAqL1xuICBlcnJvclR5cGVzPzogQXJyYXk8RGV2dG9vbHNFcnJvclR5cGU+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBwYXNzIGEgbm9uY2UgdG8gdGhlIHN0eWxlIHRhZyB0aGF0IGlzIGFkZGVkIHRvIHRoZSBkb2N1bWVudCBoZWFkLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKENTUCkgbm9uY2UgdG8gYWxsb3cgaW5saW5lIHN0eWxlcy5cbiAgICovXG4gIHN0eWxlTm9uY2U/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHNvIHlvdSBjYW4gYXR0YWNoIHRoZSBkZXZ0b29sJ3Mgc3R5bGVzIHRvIHNwZWNpZmljIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAgICovXG4gIHNoYWRvd0RPTVRhcmdldD86IFNoYWRvd1Jvb3RcblxuICAvKipcbiAgICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIGRldnRvb2xzIHBhbmVsXG4gICAqIEBkZWZhdWx0IHsgaGVpZ2h0OiAnNTAwcHgnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJyB9XG4gICAqIEBleGFtcGxlIHsgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfVxuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGRldnRvb2xzIHBhbmVsIGlzIGNsb3NlZFxuICAgKi9cbiAgb25DbG9zZT86ICgpID0+IHVua25vd25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsKFxuICBwcm9wczogRGV2dG9vbHNQYW5lbE9wdGlvbnMsXG4pOiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudChwcm9wcy5jbGllbnQpXG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBlcnJvclR5cGVzLCBzdHlsZU5vbmNlLCBzaGFkb3dET01UYXJnZXQgfSA9IHByb3BzXG4gIGNvbnN0IFtkZXZ0b29sc10gPSBSZWFjdC51c2VTdGF0ZShcbiAgICBuZXcgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwoe1xuICAgICAgY2xpZW50OiBxdWVyeUNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yOiAnUmVhY3QgUXVlcnknLFxuICAgICAgdmVyc2lvbjogJzUnLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uOiAnYm90dG9tLWxlZnQnLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgaW5pdGlhbElzT3BlbjogdHJ1ZSxcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0LFxuICAgICAgb25DbG9zZTogcHJvcHMub25DbG9zZSxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldE9uQ2xvc2UocHJvcHMub25DbG9zZSA/PyAoKCkgPT4ge30pKVxuICB9LCBbcHJvcHMub25DbG9zZSwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0RXJyb3JUeXBlcyhlcnJvclR5cGVzIHx8IFtdKVxuICB9LCBbZXJyb3JUeXBlcywgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XG4gICAgICBkZXZ0b29scy5tb3VudChyZWYuY3VycmVudClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZGV2dG9vbHMudW5tb3VudCgpXG4gICAgfVxuICB9LCBbZGV2dG9vbHNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3sgaGVpZ2h0OiAnNTAwcHgnLCAuLi5wcm9wcy5zdHlsZSB9fVxuICAgICAgY2xhc3NOYW1lPVwidHNxZC1wYXJlbnQtY29udGFpbmVyXCJcbiAgICAgIHJlZj17cmVmfVxuICAgID48L2Rpdj5cbiAgKVxufVxuIiwgIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgKiBhcyBEZXZ0b29scyBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29scydcbmltcG9ydCAqIGFzIERldnRvb2xzUGFuZWwgZnJvbSAnLi9SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCdcblxuZXhwb3J0IGNvbnN0IFJlYWN0UXVlcnlEZXZ0b29sczogKHR5cGVvZiBEZXZ0b29scylbJ1JlYWN0UXVlcnlEZXZ0b29scyddID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICA6IERldnRvb2xzLlJlYWN0UXVlcnlEZXZ0b29sc1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzUGFuZWw6ICh0eXBlb2YgRGV2dG9vbHNQYW5lbClbJ1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHNQYW5lbC5SZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbFxuIiwgImltcG9ydCB7IFRvYXN0ZXIgYXMgU29ubmVyIH0gZnJvbSBcInNvbm5lclwiO1xuXG4vLyBpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAL3VpL3N0dWRpby91dGlsL3RoZW1lLXByb3ZpZGVyXCI7XG5cbnR5cGUgVG9hc3RlclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNvbm5lcj47XG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgLy8gY29uc3QgeyB0aGVtZSA9IFwic3lzdGVtXCIgfSA9IHVzZVRoZW1lKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8U29ubmVyXG4gICAgICAvLyB0aGVtZT17dGhlbWUgYXMgVG9hc3RlclByb3BzW1widGhlbWVcIl19XG4gICAgICBjbGFzc05hbWU9XCJwcy10b2FzdGVyIHBzLWdyb3VwXCJcbiAgICAgIHRvYXN0T3B0aW9ucz17e1xuICAgICAgICBjbGFzc05hbWVzOiB7XG4gICAgICAgICAgdG9hc3Q6XG4gICAgICAgICAgICBcImdyb3VwIHRvYXN0IGdyb3VwLVsudG9hc3Rlcl06YmctYmFja2dyb3VuZCBncm91cC1bLnRvYXN0ZXJdOnRleHQtZm9yZWdyb3VuZCBncm91cC1bLnRvYXN0ZXJdOmJvcmRlci1ib3JkZXIgZ3JvdXAtWy50b2FzdGVyXTpzaGFkb3ctbGdcIixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogXCJncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgICBhY3Rpb25CdXR0b246IFwiZ3JvdXAtWy50b2FzdF06YmctcHJpbWFyeSBncm91cC1bLnRvYXN0XTp0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGNhbmNlbEJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1tdXRlZCBncm91cC1bLnRvYXN0XTp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCB7IFRvYXN0ZXIgfTtcbiIsICJpbXBvcnQge1xuICB1bnN0YWJsZV9BZGFwdGVyT3B0aW9ucyBhcyBBZGFwdGVyT3B0aW9ucyxcbiAgdW5zdGFibGVfY3JlYXRlQWRhcHRlclByb3ZpZGVyIGFzIGNyZWF0ZUFkYXB0ZXJQcm92aWRlcixcbn0gZnJvbSBcIm51cXMvYWRhcHRlcnMvY3VzdG9tXCI7XG5pbXBvcnQgeyBGQywgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IHR5cGUgeyBkZWZhdWx0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSG9vayB0aGF0IE51cXMgd2lsbCBjYWxsIHRvIHJlYWQgJiB3cml0ZSBVUkwgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHVzZUhhc2hBZGFwdGVyKCkge1xuICAvLyByZWFkIGN1cnJlbnQgc3RhdGUgZnJvbSBldmVyeXRoaW5nIGFmdGVyIHRoZSBcdTIwMUMjXHUyMDFEXG4gIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgY29uc3QgW2hhc2hQYXJhbXMsIHNldEhhc2hQYXJhbXNdID0gdXNlU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG5cbiAgLy8gd3JpdGUgbmV3IHN0YXRlIGJhY2sgaW50byB0aGUgaGFzaCBmcmFnbWVudFxuICBmdW5jdGlvbiB1cGRhdGVVcmwodXBkYXRlZDogVVJMU2VhcmNoUGFyYW1zLCB7IGhpc3RvcnkgfTogQWRhcHRlck9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHBhdGhuYW1lLCBzZWFyY2ggfSA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICBjb25zdCBoYXNoID0gdXBkYXRlZC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IGAke3BhdGhuYW1lfSR7c2VhcmNofSMke2hhc2h9YDtcblxuICAgIGlmIChoaXN0b3J5ID09PSBcInB1c2hcIikge1xuICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgIH1cblxuICAgIHNldEhhc2hQYXJhbXModXBkYXRlZCk7XG4gIH1cblxuICAvLyBleHBvc2UgYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBwYXJhbXNcbiAgZnVuY3Rpb24gZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QoKSB7XG4gICAgY29uc3QgcmF3ID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG5cbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyhyYXcpO1xuICB9XG5cbiAgLy8gc3luYyBzdGF0ZSB3aGVuIHVzZXIgbmF2aWdhdGVzIHZpYSBicm93c2VyIGNvbnRyb2xzIG9yIGV4dGVybmFsIHNjcmlwdFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgICBjb25zdCByYXdIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgICBzZXRIYXNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3SGFzaCkpO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImhhc2hjaGFuZ2VcIiwgaGFuZGxlSGFzaENoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4geyBzZWFyY2hQYXJhbXM6IGhhc2hQYXJhbXMsIHVwZGF0ZVVybCwgZ2V0U2VhcmNoUGFyYW1zU25hcHNob3QgfTtcbn1cblxuLyoqXG4gKiBUaGUgYWRhcHRlciBwcm92aWRlciBjb21wb25lbnQgeW91IHdyYXAgeW91ciBhcHAgaW4uXG4gKi9cbmV4cG9ydCBjb25zdCBOdXFzSGFzaEFkYXB0ZXIgPSBjcmVhdGVBZGFwdGVyUHJvdmlkZXIodXNlSGFzaEFkYXB0ZXIpIGFzIEZDPFByb3BzV2l0aENoaWxkcmVuPjtcbiIsICJpbXBvcnQgeyBpbmZlclJvd0ZpbHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmZ1bmN0aW9uIGdldFJvd0lkKHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCBpZCA9IHtcbiAgICBmaWx0ZXI6IGluZmVyUm93RmlsdGVyKHJvdywgdGFibGUuY29sdW1ucyksXG4gICAgdGFibGU6IGAke3RhYmxlLnNjaGVtYX0uJHt0YWJsZS5uYW1lfWAsXG4gIH07XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlkKTtcbn1cblxuZnVuY3Rpb24gYWRkUm93SWRUb1Jvdyhyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgcmV0dXJuIHsgLi4ucm93LCBfX3BzX3Jvd2lkOiBnZXRSb3dJZChyb3csIHRhYmxlKSB9O1xufVxuXG50eXBlIEFkYXB0ZXJSZXN1bHQgPSB7XG4gIHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByb3dzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRSb3dJZFRvUmVzdWx0PFQgZXh0ZW5kcyBBZGFwdGVyUmVzdWx0PihyZXN1bHQ6IFQsIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCB7IHJvdywgcm93cyB9ID0gcmVzdWx0O1xuXG4gIGlmIChyb3cgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93OiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpIH07XG4gIH1cbiAgaWYgKHJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93czogcm93cy5tYXAoKHJvdykgPT4gYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSkgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBGaWx0ZXJHcm91cCwgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHNvcnRPcmRlcjogU29ydE9yZGVySXRlbVtdO1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVRdWVyeShwcm9wczogVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzKSB7XG4gIGNvbnN0IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCBmaWx0ZXIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgZW5hYmxlZDogQm9vbGVhbihhY3RpdmVUYWJsZSksXG4gICAgZ2NUaW1lOiAwLFxuICAgIHBsYWNlaG9sZGVyRGF0YShwcmV2aW91c0RhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCwgcHJldmlvdXNRdWVyeSkge1xuICAgICAgY29uc3QgWywgc2NoZW1hLCAsIHRhYmxlXSA9IHByZXZpb3VzUXVlcnk/LnF1ZXJ5S2V5IHx8IFtdO1xuXG4gICAgICBpZiAoc2NoZW1hICE9PSBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IHRhYmxlICE9PSBhY3RpdmVUYWJsZT8ubmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c0RhdGE7XG4gICAgfSxcbiAgICBhc3luYyBxdWVyeUZuKHsgc2lnbmFsIH0pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0c10gPSBhd2FpdCBhZGFwdGVyLnF1ZXJ5KFxuICAgICAgICB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgdGFibGU6IGFjdGl2ZVRhYmxlISwgZmlsdGVyIH0sXG4gICAgICAgIHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9LFxuICAgICAgKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHRzLCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcbiAgICAgIFwic2NoZW1hXCIsXG4gICAgICBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IG51bGwsXG4gICAgICBcInRhYmxlXCIsXG4gICAgICBhY3RpdmVUYWJsZT8ubmFtZSB8fCBudWxsLFxuICAgICAgXCJxdWVyeVwiLFxuICAgICAgXCJzb3J0T3JkZXJcIixcbiAgICAgIHNvcnRPcmRlci5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIHx8IFwibmF0dXJhbFwiLFxuICAgICAgXCJwYWdlSW5kZXhcIixcbiAgICAgIHBhZ2VJbmRleCxcbiAgICAgIFwicGFnZVNpemVcIixcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgXCJmaWx0ZXJcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlciksXG4gICAgXSxcbiAgICBzdGFsZVRpbWU6IEluZmluaXR5LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIFF1ZXJ5Q2xpZW50LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBBZGFwdGVyVXBkYXRlRGV0YWlscywgQWRhcHRlclVwZGF0ZU9wdGlvbnMsIFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YS9xdWVyeVwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMge1xuICBkZXRhaWxzOiBBZGFwdGVyVXBkYXRlRGV0YWlscztcbiAgb3B0aW9uczogQWRhcHRlclVwZGF0ZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICBjb25zdCBxdWVyeUtleVByZWZpeCA9IFtcInNjaGVtYVwiLCBhY3RpdmVUYWJsZT8uc2NoZW1hID8/IG51bGwsIFwidGFibGVcIiwgYWN0aXZlVGFibGU/Lm5hbWUgPz8gbnVsbF0gYXMgY29uc3Q7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAocGFyYW1zOiBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci51cGRhdGUocGFyYW1zLmRldGFpbHMsIHBhcmFtcy5vcHRpb25zKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgbXV0YXRpb25LZXk6IFsuLi5xdWVyeUtleVByZWZpeCwgXCJ1cGRhdGVcIl0sXG4gICAgb25FcnJvcihlcnJvciwgcGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgIG9uRXJyb3IoZXJyb3IpO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiByZXZlcnRDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jYWNoZWRSb3csXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhjaGFuZ2VzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChvcmlnaW5hbFZhbHVlcywgY29sdW1uTmFtZSkgPT4gKHsgLi4ub3JpZ2luYWxWYWx1ZXMsIFtjb2x1bW5OYW1lXTogcm93W2NvbHVtbk5hbWVdIH0pLFxuICAgICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25NdXRhdGUocGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGRldGFpbHMgfSA9IHBhcmFtcztcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyByb3c6IHVuY2hhbmdlZFJvdyB9ID0gZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKHVuY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLmRldGFpbHMuY2hhbmdlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MocmVzdWx0LCBwYXJhbXMpIHtcbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5UmVhbERhdGFXaGVuRnJlc2hlcihjYWNoZWRSb3cpIHtcbiAgICAgICAgICBjb25zdCB7IF9fcHNfdXBkYXRlZF9hdF9fIH0gPSBjYWNoZWRSb3c7XG4gICAgICAgICAgY29uc3QgeyByb3cgfSA9IHJlc3VsdDtcblxuICAgICAgICAgIC8vIHJlc3VsdCByb3cgaXMgc3RhbGUuXG4gICAgICAgICAgaWYgKF9fcHNfdXBkYXRlZF9hdF9fICE9IG51bGwgJiYgcm93Ll9fcHNfdXBkYXRlZF9hdF9fIDw9IF9fcHNfdXBkYXRlZF9hdF9fKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUm93O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4ucm93IH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG92ZXJ3cml0ZUNhY2hlZFJvdyhwYXJhbXM6IHtcbiAgZ2V0RmluZGVyRm46ICgpID0+IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHVwZGF0ZXJGbjogKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQ7XG59KSB7XG4gIGNvbnN0IHsgZ2V0RmluZGVyRm4sIHF1ZXJ5Q2xpZW50LCB0YWJsZSwgdXBkYXRlckZuIH0gPSBwYXJhbXM7XG5cbiAgbGV0IGZpbmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RmluZGVyRm4+O1xuXG4gIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhKFxuICAgIHsgZXhhY3Q6IGZhbHNlLCBxdWVyeUtleTogW1wic2NoZW1hXCIsIHRhYmxlLnNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZS5uYW1lLCBcInF1ZXJ5XCJdIH0sXG4gICAgKGNhY2hlZFJlc3VsdDogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IHsgcm93czogY2FjaGVkUm93cyA9IFtdIH0gPSBjYWNoZWRSZXN1bHQgfHwge307XG5cbiAgICAgIGlmIChjYWNoZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZWRSb3dJbmRleCA9IGNhY2hlZFJvd3MuZmluZEluZGV4KChmaW5kZXIgPz89IGdldEZpbmRlckZuKCkpKTtcblxuICAgICAgaWYgKGNhY2hlZFJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdSb3cgPSB1cGRhdGVyRm4oY2FjaGVkUm93c1tjYWNoZWRSb3dJbmRleF0hKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2FjaGVkUmVzdWx0ISxcbiAgICAgICAgcm93czogWy4uLmNhY2hlZFJvd3Muc2xpY2UoMCwgY2FjaGVkUm93SW5kZXgpLCBuZXdSb3csIC4uLmNhY2hlZFJvd3Muc2xpY2UoY2FjaGVkUm93SW5kZXggKyAxKV0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbHRlcjogRmlsdGVyR3JvdXAgPSB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgZmlsdGVyczogW10sXG4gIGFmdGVyOiBcImFuZFwiLFxuICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbn07XG5cbmNvbnN0IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZSA9IChmaWx0ZXJHcm91cDogRmlsdGVyR3JvdXApOiBudW1iZXIgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJHcm91cC5maWx0ZXJzKSB7XG4gICAgaWYgKGZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICAvLyBPbmx5IGNvdW50IGZpbHRlcnMgdGhhdCBoYXZlIGEgbm9uLWVtcHR5IGNvbHVtbiBzZWxlY3RlZFxuICAgICAgaWYgKGZpbHRlci5jb2x1bW4udHJpbSgpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIua2luZCA9PT0gXCJGaWx0ZXJHcm91cFwiKSB7XG4gICAgICBjb3VudCArPSBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbHRlcmluZygpIHtcbiAgY29uc3QgW2ZpbHRlclBhcmFtLCBzZXRGaWx0ZXJQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwiZmlsdGVyXCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRGaWx0ZXIpLFxuICB9KTtcblxuICBjb25zdCBhcHBsaWVkRmlsdGVyID0gdXNlTWVtbygoKSA9PiBKU09OLnBhcnNlKGZpbHRlclBhcmFtKSBhcyBGaWx0ZXJHcm91cCwgW2ZpbHRlclBhcmFtXSk7XG4gIGNvbnN0IHNldEFwcGxpZWRGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZCBzZXRGaWx0ZXJQYXJhbShKU09OLnN0cmluZ2lmeShmaWx0ZXIpKTtcblxuICBjb25zdCBbZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlcl0gPSB1c2VTdGF0ZTxGaWx0ZXJHcm91cD4oYXBwbGllZEZpbHRlcik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICB9LCBbYXBwbGllZEZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvdGFsRWRpdGluZ0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShlZGl0aW5nRmlsdGVyKSwgW2VkaXRpbmdGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gICAgdG90YWxFZGl0aW5nRmlsdGVycyxcbiAgfTtcbn1cbiIsICIvLyB3ZSdyZSBlbnN1cmluZyB0aGF0IGtleXMgYXJlIHR5cGUtc2FmZS4gdGhlcmUgaXMgbm8gcHJvcGVyIHdheSB0byBhY2hpZXZlIGl0IGluIGBudXFzYC5cbi8vIHRoZSBgZGVjbGFyZSBtb2R1bGVgIHRlY2huaXF1ZSByZXN1bHRzIGluIGFkZGluZyBvdmVybG9hZHMsIG5vdCBvdmVycmlkaW5nIHRoZSBleGlzdGluZyBmdW5jdGlvbnMuXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCB7XG4gIHR5cGUgT3B0aW9ucyxcbiAgdHlwZSBQYXJzZXIsXG4gIHVzZVF1ZXJ5U3RhdGUgYXMgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVSZXR1cm4sXG4gIHVzZVF1ZXJ5U3RhdGVzIGFzIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5U3RhdGVzUmV0dXJuLFxufSBmcm9tIFwibnVxc1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1pbXBvcnRzXG5leHBvcnQgKiBmcm9tIFwibnVxc1wiO1xuXG5leHBvcnQgdHlwZSBTdGF0ZUtleSA9IFwicGFnZUluZGV4XCIgfCBcInBhZ2VTaXplXCIgfCBcInRhYmxlXCIgfCBcInNvcnRcIiB8IFwic2NoZW1hXCIgfCBcInRlc3RcIiB8IFwiZmlsdGVyXCI7XG5cbi8vIGxpZnRlZCBmcm9tIEBwcmlzbWEvY2xpZW50L3J1bnRpbWVcbnR5cGUgRXhhY3Q8QSwgVz4gPVxuICB8IChBIGV4dGVuZHMgdW5rbm93blxuICAgICAgPyBXIGV4dGVuZHMgQVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIFtLIGluIGtleW9mIEFdOiBFeGFjdDxBW0tdLCBXW0tdPjtcbiAgICAgICAgICB9XG4gICAgICAgIDogV1xuICAgICAgOiBuZXZlcilcbiAgfCAoQSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCB8IGJvb2xlYW4gfCBbXSA/IEEgOiBuZXZlcik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBhbnk+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGtleU1hcDogRXhhY3Q8TWFwLCBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+LFxuKTogQnJhbmRlZEtleU1hcDxNYXA+IHtcbiAgcmV0dXJuIGtleU1hcCBhcyBuZXZlcjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1cmxLZXlzPGNvbnN0IE1hcCBleHRlbmRzIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4oXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHVybEtleXM6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIHN0cmluZz4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiB1cmxLZXlzIGFzIG5ldmVyO1xufVxuXG5jb25zdCBfQlJBTkRfU1lNQk9MID0gU3ltYm9sKFwiQlJBTkRfU1lNQk9MXCIpO1xuXG50eXBlIEJyYW5kZWRLZXlNYXA8TWFwPiA9IE1hcCAmIHtcbiAgW0sgaW4gdHlwZW9mIF9CUkFORF9TWU1CT0xdOiBuZXZlcjtcbn07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZU9yaWdpbmFsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4gJiB7XG4gICAgZGVmYXVsdFZhbHVlOiBUO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZTxUPihcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogVXNlUXVlcnlTdGF0ZU9wdGlvbnM8VD4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPE5vbk51bGxhYmxlPFJldHVyblR5cGU8dHlwZW9mIG9wdGlvbnMucGFyc2U+PiwgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKFxuICBrZXk6IFN0YXRlS2V5LFxuICBvcHRpb25zOiBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICB9LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxzdHJpbmcsIHR5cGVvZiBvcHRpb25zLmRlZmF1bHRWYWx1ZT47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogUGljazxVc2VRdWVyeVN0YXRlT3B0aW9uczxzdHJpbmc+LCBrZXlvZiBPcHRpb25zPixcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoa2V5OiBTdGF0ZUtleSk6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB1bmRlZmluZWQ+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXksIG9wdGlvbnM/OiBhbnkpOiBhbnkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICByZXR1cm4gdXNlUXVlcnlTdGF0ZU9yaWdpbmFsKGtleSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgVXNlUXVlcnlTdGF0ZXNLZXlzTWFwPFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4gPSBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4sXG4+ID0ge1xuICBbS2V5IGluIGtleW9mIE1hcF06IEtleU1hcFZhbHVlPE1hcFtLZXldPjtcbn07XG5cbnR5cGUgS2V5TWFwVmFsdWU8VHlwZT4gPSBQYXJzZXI8VHlwZT4gJlxuICBPcHRpb25zICYge1xuICAgIGRlZmF1bHRWYWx1ZT86IFR5cGU7XG4gIH07XG5cbi8qKlxuICogQHNlZSB7QGxpbmsgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGVzPEtleU1hcCBleHRlbmRzIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcD4oXG4gIGtleU1hcDogQnJhbmRlZEtleU1hcDxLZXlNYXA+LFxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeVN0YXRlc09wdGlvbnM8S2V5TWFwPj4sXG4pOiBVc2VRdWVyeVN0YXRlc1JldHVybjxLZXlNYXA+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwoa2V5TWFwIGFzIG5ldmVyLCBvcHRpb25zKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG4vKipcbiAqIEhvb2sgdG8ga25vdyB3aGV0aGVyIGFuIGluc2VydCBpcyBjdXJyZW50bHkgb25nb2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzSW5zZXJ0aW5nKCkge1xuICByZXR1cm4gdXNlSXNNdXRhdGluZyh7XG4gICAgcHJlZGljYXRlKHsgb3B0aW9uczogeyBtdXRhdGlvbktleSB9IH0pIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbktleT8uWzRdID09PSBcImluc2VydFwiO1xuICAgIH0sXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT25DaGFuZ2VGbiwgUGFnaW5hdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsga2V5TWFwLCBwYXJzZUFzSW5kZXgsIHBhcnNlQXNJbnRlZ2VyLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcblxuLy8gVE9ETzogZXZlbnR1YWxseSBjb25maWd1cmFibGUgLyBjb250cm9sbGVkIGJ5IHVzZXIuIGJhYnkgc3RlcHMuLlxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAyNTtcblxuY29uc3QgcGFnaW5hdGlvblBhcnNlcnMgPSBrZXlNYXAoe1xuICBwYWdlSW5kZXg6IHBhcnNlQXNJbmRleC53aXRoRGVmYXVsdCgwKSwgLy8gemVyby1iYXNlZFxuICBwYWdlU2l6ZTogcGFyc2VBc0ludGVnZXIud2l0aERlZmF1bHQoREVGQVVMVF9QQUdFX1NJWkUpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uKCkge1xuICBjb25zdCBbeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sIHNldFBhZ2luYXRpb25dID0gdXNlUXVlcnlTdGF0ZXMocGFnaW5hdGlvblBhcnNlcnMpO1xuXG4gIC8vIENvbXBhdGlibGUgd2l0aCBUYW5TdGFjayBUYWJsZSdzIE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPlxuICBjb25zdCBzZXRQYWdpbmF0aW9uU3RhdGU6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPiA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyT3JWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbigob2xkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyT3JWYWx1ZShvbGQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbih7XG4gICAgICAgICAgcGFnZUluZGV4OiB1cGRhdGVyT3JWYWx1ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgcGFnZVNpemU6IHVwZGF0ZXJPclZhbHVlLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRQYWdpbmF0aW9uXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHBhZ2luYXRpb25TdGF0ZTogeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sXG4gICAgc2V0UGFnaW5hdGlvblN0YXRlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlRGVsZXRlIH0gZnJvbSBcIi4vdXNlLWFjdGl2ZS10YWJsZS1kZWxldGVcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi91c2UtcGFnaW5hdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0aW9uKGRhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBpc1NlbGVjdGluZyA9IE9iamVjdC5rZXlzKHJvd1NlbGVjdGlvblN0YXRlKS5sZW5ndGggIT09IDA7XG4gIGNvbnN0IHsgbXV0YXRlIH0gPSB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSksIFthY3RpdmVUYWJsZSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleF0pO1xuXG4gIGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCByb3dzID0gZGF0YT8ucm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgcmV0dXJuIHJvd1NlbGVjdGlvblN0YXRlW3Jvdy5fX3BzX3Jvd2lkIGFzIHN0cmluZ107XG4gICAgfSk7XG5cbiAgICBtdXRhdGUocm93cyA/PyBbXSwge1xuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVsZXRlU2VsZWN0aW9uLFxuICAgIHNldFJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIGlzU2VsZWN0aW5nLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVEZWxldGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImRlbGV0ZVwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuZGVsZXRlKHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGFzeW5jIG9uU3VjY2VzcygpIHtcbiAgICAgIGF3YWl0IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTb3J0aW5nKCkge1xuICAvLyBVc2UgbnVxcyB0byBtYW5hZ2Ugc29ydGluZyBzdGF0ZSBpbiBVUkxcbiAgY29uc3QgW3NvcnRQYXJhbSwgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzb3J0XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFBhcnNlIHNvcnRpbmcgZnJvbSBVUkwgcGFyYW1ldGVyXG4gIGNvbnN0IHBhcnNlU29ydGluZyA9IChzb3J0UGFyYW06IHN0cmluZyB8IG51bGwpOiBTb3J0T3JkZXJJdGVtW10gPT4ge1xuICAgIGlmICghc29ydFBhcmFtKSByZXR1cm4gW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gRm9ybWF0OiBjb2x1bW46ZGlyZWN0aW9uLGNvbHVtbjpkaXJlY3Rpb25cbiAgICAgIHJldHVybiBzb3J0UGFyYW1cbiAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSA9IGl0ZW0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgIGlmICghY29sdW1uIHx8ICFkaXJlY3Rpb24gfHwgIVtcImFzY1wiLCBcImRlc2NcIl0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGNvbHVtbiwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgU29ydE9yZGVySXRlbVtdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcGFyc2Ugc29ydGluZyBwYXJhbWV0ZXI6XCIsIGUpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvLyBDcmVhdGUgYSBzdGFibGUgc29ydGluZyBzdGF0ZSB0aGF0J3MgZGVyaXZlZCBmcm9tIFVSTCBwYXJhbWV0ZXJzXG4gIGNvbnN0IFtzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKSk7XG5cbiAgLy8gS2VlcCBpbnRlcm5hbCBzdGF0ZSBzeW5jaHJvbml6ZWQgd2l0aCBVUkwgcGFyYW1ldGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1NvcnRpbmdTdGF0ZSA9IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pO1xuICAgIHNldFNvcnRpbmdTdGF0ZShuZXdTb3J0aW5nU3RhdGUpO1xuICB9LCBbc29ydFBhcmFtXSk7XG5cbiAgLy8gVXBkYXRlIFVSTCB3aGVuIHNvcnRpbmcgY2hhbmdlcyBmcm9tIHRoZSBVSVxuICBjb25zdCBoYW5kbGVTb3J0aW5nQ2hhbmdlID0gKG5ld1N0YXRlOiBTb3J0T3JkZXJJdGVtW10gfCAoKG9sZDogU29ydE9yZGVySXRlbVtdKSA9PiBTb3J0T3JkZXJJdGVtW10pKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHR5cGVvZiBuZXdTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gbmV3U3RhdGUoc29ydGluZ1N0YXRlKSA6IG5ld1N0YXRlO1xuICAgIHNldFNvcnRpbmdTdGF0ZShyZXNvbHZlZFN0YXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBzb3J0aW5nIHN0YXRlIHRvIFVSTCBwYXJhbWV0ZXJcbiAgICBjb25zdCBzb3J0U3RyaW5nID1cbiAgICAgIHJlc29sdmVkU3RhdGUubGVuZ3RoID4gMCA/IHJlc29sdmVkU3RhdGUubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSA6IG51bGw7XG5cbiAgICB2b2lkIHNldFNvcnRQYXJhbShzb3J0U3RyaW5nKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNvcnRpbmdTdGF0ZSxcbiAgICBzZXRTb3J0aW5nU3RhdGU6IGhhbmRsZVNvcnRpbmdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuQ2VsbCB9IGZyb20gXCIuL0Jvb2xlYW5DZWxsXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcbmltcG9ydCB7IERhdGVDZWxsIH0gZnJvbSBcIi4vRGF0ZUNlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgRW51bUNlbGwgfSBmcm9tIFwiLi9FbnVtQ2VsbFwiO1xuaW1wb3J0IHsgSlNPTkNlbGwgfSBmcm9tIFwiLi9KU09OQ2VsbFwiO1xuaW1wb3J0IHsgTnVsbENlbGwgfSBmcm9tIFwiLi9OdWxsQ2VsbFwiO1xuaW1wb3J0IHsgTnVtZXJpY0NlbGwgfSBmcm9tIFwiLi9OdW1lcmljQ2VsbFwiO1xuaW1wb3J0IHsgUmF3Q2VsbCB9IGZyb20gXCIuL1Jhd0NlbGxcIjtcbmltcG9ydCB7IFRpbWVDZWxsIH0gZnJvbSBcIi4vVGltZUNlbGxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGwoe1xuICBjZWxsLFxuICBjb2x1bW4sXG4gIHByb3BzLFxufToge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59KSB7XG4gIGNvbnN0IHZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDxFbXB0eUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiA8TnVsbENlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gb3B0aW9ucz17b3B0aW9uc30gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAgICAgLy8gXCJkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLTIgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbmRpZ28tNDAwIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5zZXRcIixcbiAgICAgICAgXCJwcy1jdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAgPERhdGFHcmlkQ2VsbENvbnRleHRNZW51PntjaGlsZHJlbn08L0RhdGFHcmlkQ2VsbENvbnRleHRNZW51PlxuICAgIDwvVGFibGVDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgRGF0ZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRGF0ZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5EYXRlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRGF0ZUNlbGxcIjtcblxuZXhwb3J0IHsgRGF0ZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5Q2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IEVtcHR5Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBFbXB0eUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfSAvPjtcbn0pO1xuRW1wdHlDZWxsLmRpc3BsYXlOYW1lID0gXCJFbXB0eUNlbGxcIjtcblxuZXhwb3J0IHsgRW1wdHlDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmNvbnN0IEVudW1DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVudW1DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgb3B0aW9ucywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuRW51bUNlbGwuZGlzcGxheU5hbWUgPSBcIkVudW1DZWxsXCI7XG5cbmV4cG9ydCB7IEVudW1DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKU09OQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXTtcbn1cblxuY29uc3QgSlNPTkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogSlNPTkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkpTT05DZWxsLmRpc3BsYXlOYW1lID0gXCJKU09OQ2VsbFwiO1xuXG5leHBvcnQgeyBKU09OQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVsbENlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufVxuXG5jb25zdCBOdWxsQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBOdWxsQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxjb2RlIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiPk5VTEw8L2NvZGU+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdWxsQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVsbENlbGxcIjtcblxuZXhwb3J0IHsgTnVsbENlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE51bWVyaWNDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVtZXJpY0NlbGwuZGlzcGxheU5hbWUgPSBcIk51bWVyaWNDZWxsXCI7XG5cbmV4cG9ydCB7IE51bWVyaWNDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IFJhd0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogUmF3Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblJhd0NlbGwuZGlzcGxheU5hbWUgPSBcIlJhd0NlbGxcIjtcblxuZXhwb3J0IHsgUmF3Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgVGltZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogVGltZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5UaW1lQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGltZUNlbGxcIjtcblxuZXhwb3J0IHsgVGltZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5jb25zdCBTZWxlY3RIZWFkZXJDZWxsID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzPigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IHRhYmxlLCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctZnVsbFwiPlxuICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpfVxuICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuU2VsZWN0SGVhZGVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0SGVhZGVyQ2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiO1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaC00IHBzLXctNCBwcy1zaHJpbmstMCBwcy1yb3VuZGVkLXNtIHBzLWJvcmRlciBwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3cgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdGV4dC1jdXJyZW50XCIpfT5cbiAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuKSk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENoZWNrYm94UHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IENoZWNrYm94IH07XG4iLCAiaW1wb3J0IHsgUm93IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuaW1wb3J0IHsgU2VsZWN0Q2VsbCB9IGZyb20gXCIuL1NlbGVjdENlbGxcIjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Um93Q2VsbFByb3BzIHtcbiAgcm93OiBSb3c8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdFJvd0NlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RSb3dDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgcm93LCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0Q2VsbCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gey4uLnJlc3R9PlxuICAgICAgPENoZWNrYm94XG4gICAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICAgIGRpc2FibGVkPXshcm93LmdldENhblNlbGVjdCgpIHx8IHJlYWRvbmx5fVxuICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e3Jvdy5nZXRUb2dnbGVTZWxlY3RlZEhhbmRsZXIoKX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3RDZWxsPlxuICApO1xufSk7XG5cblNlbGVjdFJvd0NlbGwuZGlzcGxheU5hbWUgPSBcIlNlbGVjdFJvd0NlbGxcIjtcblxuZXhwb3J0IHsgU2VsZWN0Um93Q2VsbCB9O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsLCBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Q2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpc0hlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RDZWxsKHByb3BzOiBTZWxlY3RDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCBpc0hlYWRlciA9IGZhbHNlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgY29uc3Qgc2VsZWN0Q2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV1cIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNIZWFkZXIgPyAoXG4gICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLWgtMTAgcHMtYmctdGFibGUtaGVhZCBwcy16LTMwIHBzLXN0aWNreSBwcy10b3AtMCBwcy1sZWZ0LTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICApIDogKFxuICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oc2VsZWN0Q2xhc3NlcywgXCJwcy16LTEwIHBzLWgtWzM5cHhdXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZFxuICAgICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZWFibGVDZWxsUHJvcHMge1xuICBjZWxsQ29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGlucHV0Q29tcG9uZW50OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXcml0ZWFibGVDZWxsKHByb3BzOiBXcml0ZWFibGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjZWxsQ29tcG9uZW50LCBpbnB1dENvbXBvbmVudCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+e2NlbGxDb21wb25lbnR9PC9Qb3BvdmVyQ2VsbFRyaWdnZXI+XG4gICAgICA8UG9wb3ZlckNlbGxDb250ZW50XG4gICAgICAgIGFsaWduPVwic3RhcnRcIlxuICAgICAgICBhbGlnbk9mZnNldD17LTF9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1yb3VuZGVkLW5vbmUgcHMtYmctbXV0ZWRcIixcbiAgICAgICAgICBcInBzLXAtMCBwcy16LTMwIHBzLWdhcC0wIHBzLWJvcmRlci1wcmltYXJ5XCIsXG4gICAgICAgICAgXCJwcy13LVtjYWxjKHZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aClfK18xcHgpXSBwcy1tYXgtdy03MiBwcy1taW4tdy1bMjAwcHhdXCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgSGVhZGVyLFxuICB0eXBlIE9uQ2hhbmdlRm4sXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBUYWJsZSBhcyBSZWFjdFRhYmxlLFxuICB1c2VSZWFjdFRhYmxlLFxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBSZWFjdFRhYmxlRGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzXCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIHR5cGUgQ1NTUHJvcGVydGllcyxcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVIZWFkZXIsIFRhYmxlUm93IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBEYXRhR3JpZEhlYWRlciB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZExvYWRpbmdCYXIgfSBmcm9tIFwiLi9EYXRhR3JpZExvYWRpbmdCYXJcIjtcbmltcG9ydCB7IERhdGFHcmlkUGFnaW5hdGlvbiB9IGZyb20gXCIuL0RhdGFHcmlkUGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5cbi8vIEFkZCB0aGlzIG5ldyBjb21wb25lbnQgZm9yIGRyYWdnYWJsZSBoZWFkZXIgY2VsbHNcbnR5cGUgRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5jb25zdCBEcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc2FibGVEcmFnZ2luZyA9IFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWY7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IGRyYWdTdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgY29tbW9uQ2xhc3MgPSBjbihjbGFzc05hbWUsIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiKTtcbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY29tbW9uQ2xhc3MsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWRcbiAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgIHN0eWxlPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25TdHlsZSA6IGRyYWdTdHlsZX1cbiAgICAgIGNsYXNzTmFtZT17ZGlzYWJsZURyYWdnaW5nID8gY29tbW9uQ2xhc3MgOiBkcmFnQ2xhc3N9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBSZXNldCBjb2x1bW4gb3JkZXIsIHBpbm5pbmcsIGFuZCBzaXppbmcgd2hlbiBjb2x1bW5EZWZzIGNoYW5nZSAod2hpY2ggaGFwcGVucyB3aGVuIHRhYmxlIGNoYW5nZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKTtcbiAgICBzZXRDb2x1bW5QaW5uaW5nKHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgICBzZXRDb2x1bW5TaXppbmcoe30pO1xuICB9LCBbY29sdW1uRGVmc10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGhlYWRlcikgPT4gIShcImRpc2FibGVEcmFnZ2luZ1wiIGluIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmKSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChoZWFkZXIpID0+IGhlYWRlci5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXtob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHNlbGVjdCBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLmNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGhlYWRlciBmdW5jdGlvbiBkaXJlY3RseSwgd2hpY2ggc2hvdWxkIGJlIFNlbGVjdEhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlckZuID0gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXJGbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhlYWRlckNvbXBvbmVudCA9IGhlYWRlckZuKGhlYWRlci5nZXRDb250ZXh0KCkpIGFzIHVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIEhlYWRlckNvbXBvbmVudCBpcyBhIGZ1bmN0aW9uIChuZXcgYXBwcm9hY2ggd2l0aCBwcm9wcyBmb3J3YXJkaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEhlYWRlckNvbXBvbmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlubmluZ1N0eWxlcyA9IGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmluZ1N0eWxlcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwaW5uaW5nU3R5bGVzLnN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50KHt9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZGlyZWN0IEpTWCBlbGVtZW50IChvbGQgYXBwcm9hY2gpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0hlYWRlckNvbXBvbmVudCBhcyBKU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ3VsYXIgY29sdW1ucyB1c2UgdGhlIGRyYWdnYWJsZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERyYWdnYWJsZUhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj17aGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXIgaGVhZGVyPXtoZWFkZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0RyYWdnYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICB7Z2V0QmVmb3JlUm93cz8uKHRhYmxlKX1cbiAgICAgICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIHRhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgIFwicHMtYmctdGFibGUtcm93IHBzLW9kZDpiZy10YWJsZS1yb3ctb2RkIHBzLWdyb3VwIFsmOmxhc3Qtb2YtdHlwZV90ZF06cHMtYm9yZGVyLWItMCBwcy1ncm91cFwiLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2VsbCA9IGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsKGNlbGwuZ2V0Q29udGV4dCgpKSBhcyBDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwga2V5PXtjZWxsLmlkfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5nZXRWYWx1ZSgpIGFzIFJlYWN0Tm9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5EZWZzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC0yNCBwcy10ZXh0LWxlZnQgcHMtcC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNC81XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy0yLzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgeyFwYWdlQ291bnQgfHwgcGFnZUNvdW50IDwgMiA/IG51bGwgOiA8RGF0YUdyaWRQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gdmFyaWFudD1cIm51bWVyaWNcIiAvPn1cblxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgJiYgIWlzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1hYnNvbHV0ZSAtcHMtaW5zZXQtMCBwcy1wb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICBJdCBkb2VzbiZhcG9zO3QgbG9vayBsaWtlIHlvdSBoYXZlIGFueSBkYXRhIGluIHRoaXMgdGFibGUuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvU29ydGluZ1N0YXRlKGZyb206IFNvcnRPcmRlckl0ZW1bXSB8IHVuZGVmaW5lZCk6IFNvcnRpbmdTdGF0ZSB7XG4gIHJldHVybiBmcm9tPy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmNvbHVtbiwgZGVzYzogaXRlbS5kaXJlY3Rpb24gPT09IFwiZGVzY1wiIH0pKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0T3JkZXJJdGVtcyhmcm9tOiBTb3J0aW5nU3RhdGUpOiBTb3J0T3JkZXJJdGVtW10ge1xuICByZXR1cm4gZnJvbS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgY29sdW1uOiBpdGVtLmlkLFxuICAgIGRpcmVjdGlvbjogaXRlbS5kZXNjID8gXCJkZXNjXCIgOiBcImFzY1wiLFxuICB9KSk7XG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBnZXRJdGVtID0gKGtleTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgIGlmICh0eXBlb2YgaXRlbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbVZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFQgfCB1bmRlZmluZWRcbik6IFtUIHwgdW5kZWZpbmVkLCAobmV3VmFsOiBUIHwgKChwcmV2VmFsOiBUKSA9PiBUKSkgPT4gdm9pZF0ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlPFQ+KClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEl0ZW0oa2V5KSBhcyBUIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5pdGlhbFZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWZhdWx0VmFsdWUsIGtleV0pXG5cbiAgY29uc3Qgc2V0dGVyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXI6IGFueSkgPT4ge1xuICAgICAgc2V0VmFsdWUob2xkID0+IHtcbiAgICAgICAgbGV0IG5ld1ZhbCA9IHVwZGF0ZXJcblxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5ld1ZhbCA9IHVwZGF0ZXIob2xkKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtrZXldXG4gIClcblxuICByZXR1cm4gW3ZhbHVlLCBzZXR0ZXJdXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoZW1lID0ge1xuICBiYWNrZ3JvdW5kOiAnIzBiMTUyMScsXG4gIGJhY2tncm91bmRBbHQ6ICcjMTMyMzM3JyxcbiAgZm9yZWdyb3VuZDogJ3doaXRlJyxcbiAgZ3JheTogJyMzZjRlNjAnLFxuICBncmF5QWx0OiAnIzIyMmUzZScsXG4gIGlucHV0QmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gIGlucHV0VGV4dENvbG9yOiAnIzAwMCcsXG4gIHN1Y2Nlc3M6ICcjMDBhYjUyJyxcbiAgZGFuZ2VyOiAnI2ZmMDA4NScsXG4gIGFjdGl2ZTogJyMwMDZiZmYnLFxuICB3YXJuaW5nOiAnI2ZmYjIwMCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIGRlZmF1bHRUaGVtZVxuaW50ZXJmYWNlIFByb3ZpZGVyUHJvcHMge1xuICB0aGVtZTogVGhlbWVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuY29uc3QgVGhlbWVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0VGhlbWUpXG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHsgdGhlbWUsIC4uLnJlc3QgfTogUHJvdmlkZXJQcm9wcykge1xuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhlbWV9IHsuLi5yZXN0fSAvPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBwcmVmZXJlbmNlIGluIHN0YXRlLCBzdGFydCB3aXRoIHRoZSBjdXJyZW50IG1hdGNoXG4gIGNvbnN0IFtpc01hdGNoLCBzZXRJc01hdGNoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlc1xuICAgIH1cbiAgfSlcblxuICAvLyBXYXRjaCBmb3IgY2hhbmdlc1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGEgbWF0Y2hlclxuICAgICAgY29uc3QgbWF0Y2hlciA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KVxuXG4gICAgICAvLyBDcmVhdGUgb3VyIGhhbmRsZXJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gKHsgbWF0Y2hlcyB9OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT5cbiAgICAgICAgc2V0SXNNYXRjaChtYXRjaGVzKVxuXG4gICAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXNcbiAgICAgIG1hdGNoZXIuYWRkTGlzdGVuZXIob25DaGFuZ2UpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciBjaGFuZ2VzXG4gICAgICAgIG1hdGNoZXIucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNNYXRjaCwgcXVlcnksIHNldElzTWF0Y2hdKVxuXG4gIHJldHVybiBpc01hdGNoXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUaGVtZSwgdXNlVGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5J1xuXG5jb25zdCBpc1NlcnZlciA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG5cbnR5cGUgU3R5bGVkQ29tcG9uZW50PFQ+ID0gVCBleHRlbmRzICdidXR0b24nXG4gID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgICBIVE1MQnV0dG9uRWxlbWVudFxuICAgID5cbiAgOiBUIGV4dGVuZHMgJ2lucHV0J1xuICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEhUTUxJbnB1dEVsZW1lbnRcbiAgICAgID5cbiAgICA6IFQgZXh0ZW5kcyAnc2VsZWN0J1xuICAgICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgICBSZWFjdC5TZWxlY3RIVE1MQXR0cmlidXRlczxIVE1MU2VsZWN0RWxlbWVudD4sXG4gICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnRcbiAgICAgICAgPlxuICAgICAgOiBUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwXG4gICAgICAgID8gUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdPlxuICAgICAgICA6IG5ldmVyXG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihtYXRjaDogUm91dGVNYXRjaCwgdGhlbWU6IFRoZW1lKSB7XG4vLyAgIHJldHVybiBtYXRjaC5pc0xvYWRpbmdcbi8vICAgICA/IHRoZW1lLmFjdGl2ZVxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncmVqZWN0ZWQnXG4vLyAgICAgPyB0aGVtZS5kYW5nZXJcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXG4vLyAgICAgPyB0aGVtZS53YXJuaW5nXG4vLyAgICAgOiB0aGVtZS5zdWNjZXNzXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5OiBRdWVyeSkge1xuLy8gICByZXR1cm4gcXVlcnkuc3RhdGUuaXNGZXRjaGluZ1xuLy8gICAgID8gJ2ZldGNoaW5nJ1xuLy8gICAgIDogIXF1ZXJ5LmdldE9ic2VydmVyc0NvdW50KClcbi8vICAgICA/ICdpbmFjdGl2ZSdcbi8vICAgICA6IHF1ZXJ5LmlzU3RhbGUoKVxuLy8gICAgID8gJ3N0YWxlJ1xuLy8gICAgIDogJ2ZyZXNoJ1xuLy8gfVxuXG50eXBlIFN0eWxlcyA9XG4gIHwgUmVhY3QuQ1NTUHJvcGVydGllc1xuICB8ICgocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRoZW1lOiBUaGVtZSkgPT4gUmVhY3QuQ1NTUHJvcGVydGllcylcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlZDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdHlwZTogVCxcbiAgbmV3U3R5bGVzOiBTdHlsZXMsXG4gIHF1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFN0eWxlcz4gPSB7fVxuKSB7XG4gIHJldHVybiBSZWFjdC5mb3J3YXJkUmVmPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXSwgU3R5bGVkQ29tcG9uZW50PFQ+PihcbiAgICAoeyBzdHlsZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuXG4gICAgICBjb25zdCBtZWRpYVN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJpZXMpLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGtleSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgLi4uKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHJlc3QsIHRoZW1lKSA6IHZhbHVlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjdXJyZW50XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHR5cGUsIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG5ld1N0eWxlcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBuZXdTdHlsZXMocmVzdCwgdGhlbWUpXG4gICAgICAgICAgICA6IG5ld1N0eWxlcyksXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ubWVkaWFTdHlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZixcbiAgICAgIH0pXG4gICAgfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vdW50ZWQoKSB7XG4gIGNvbnN0IG1vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1vdW50ZWRSZWYuY3VycmVudCwgW10pXG5cbiAgUmVhY3RbaXNTZXJ2ZXIgPyAndXNlRWZmZWN0JyA6ICd1c2VMYXlvdXRFZmZlY3QnXSgoKSA9PiB7XG4gICAgbW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfSwgW10pXG5cbiAgcmV0dXJuIGlzTW91bnRlZFxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhIHNhZmUgdXNlU3RhdGUgdmVyc2lvbiB3aGljaCBzY2hlZHVsZXMgc3RhdGUgdXBkYXRlcyBpbiBtaWNyb3Rhc2tzXG4gKiB0byBwcmV2ZW50IHVwZGF0aW5nIGEgY29tcG9uZW50IHN0YXRlIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZyBkaWZmZXJlbnQgY29tcG9uZW50c1xuICogb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkIGFueW1vcmUuXG4gKi9cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZTxUPihpbml0aWFsU3RhdGU6IFQpOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKVxuXG4gIGNvbnN0IHNhZmVTZXRTdGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogVCkgPT4ge1xuICAgICAgc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtpc01vdW50ZWRdXG4gIClcblxuICByZXR1cm4gW3N0YXRlLCBzYWZlU2V0U3RhdGVdXG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbWljcm90YXNrLlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNjaGVkdWxlIHN0YXRlIHVwZGF0ZXMgYWZ0ZXIgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiBzY2hlZHVsZU1pY3JvdGFzayhjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChlcnJvciA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbn1cbiIsICJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBmb250U2l6ZTogJ2NsYW1wKDEycHgsIDEuNXZ3LCAxNHB4KScsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gICAgJyhtYXgtd2lkdGg6IDYwMHB4KSc6IHtcbiAgICAgIGZvbnRTaXplOiAnLjllbScsXG4gICAgICAvLyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICB9XG4pXG5cbmNvbnN0IEFjdGl2ZVBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKCkgPT4gKHtcbiAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzogKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgICBib3JkZXJUb3A6IGAycHggc29saWQgJHt0aGVtZS5ncmF5fWAsXG4gICAgfSksXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZCgnYnV0dG9uJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIGJhY2tncm91bmQ6IHRoZW1lLmdyYXksXG4gIGJvcmRlcjogJzAnLFxuICBib3JkZXJSYWRpdXM6ICcuM2VtJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIHBhZGRpbmc6ICcuNWVtJyxcbiAgb3BhY2l0eTogcHJvcHMuZGlzYWJsZWQgPyAnLjUnIDogdW5kZWZpbmVkLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbn0pKVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXlzID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbi8vICAgZm9udFNpemU6ICcwLjllbScsXG4vLyB9KVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXkgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4vLyAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuLy8gICBwYWRkaW5nOiAnLjJlbSAuNGVtJyxcbi8vICAgZm9udFdlaWdodDogJ2JvbGQnLFxuLy8gICB0ZXh0U2hhZG93OiAnMCAwIDEwcHggYmxhY2snLFxuLy8gICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbi8vIH0pXG5cbmNvbnN0IENvZGUgPSBzdHlsZWQoJ2NvZGUnLCB7XG4gIGZvbnRTaXplOiAnLjllbScsXG59KVxuXG5jb25zdCBJbnB1dCA9IHN0eWxlZCgnaW5wdXQnLCAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgYm9yZGVyOiAwLFxuICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbiAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgcGFkZGluZzogJy4zZW0gLjRlbScsXG59KSlcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkKFxuICAnc2VsZWN0JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZGlzcGxheTogYGlubGluZS1ibG9ja2AsXG4gICAgZm9udFNpemU6IGAuOWVtYCxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgbGluZUhlaWdodDogYDEuM2AsXG4gICAgcGFkZGluZzogYC4zZW0gMS41ZW0gLjNlbSAuNWVtYCxcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICBib3JkZXI6IDAsXG4gICAgYm9yZGVyUmFkaXVzOiBgLjJlbWAsXG4gICAgYXBwZWFyYW5jZTogYG5vbmVgLFxuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nJTIzNDQ0NDQ0Jz48cG9seWdvbiBwb2ludHM9JzAsMjUgMTAwLDI1IDUwLDc1Jy8+PC9zdmc+XCIpYCxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiBgbm8tcmVwZWF0YCxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb246IGByaWdodCAuNTVlbSBjZW50ZXJgLFxuICAgIGJhY2tncm91bmRTaXplOiBgLjY1ZW0gYXV0bywgMTAwJWAsXG4gICAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA1MDBweCknOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgfVxuKVxuIiwgIi8vIEB0cy1ub2NoZWNrXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRW50cnkgPSBzdHlsZWQoJ2RpdicsIHtcbiAgZm9udEZhbWlseTogJ01lbmxvLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzAuN3JlbScsXG4gIGxpbmVIZWlnaHQ6ICcxLjcnLFxuICBvdXRsaW5lOiAnbm9uZScsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufSlcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBjb2xvcjogJ3doaXRlJyxcbn0pXG5cbmNvbnN0IFZhbHVlID0gc3R5bGVkKCdzcGFuJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lLmRhbmdlcixcbn0pKVxuXG5jb25zdCBTdWJFbnRyaWVzID0gc3R5bGVkKCdkaXYnLCB7XG4gIG1hcmdpbkxlZnQ6ICcuMXJlbScsXG4gIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gIGJvcmRlckxlZnQ6ICcycHggc29saWQgcmdiYSgwLDAsMCwuMTUpJyxcbn0pXG5cbmNvbnN0IEluZm8gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGNvbG9yOiAnZ3JleScsXG4gIGZvbnRTaXplOiAnLjdyZW0nLFxufSlcblxuY29uc3QgRXhwYW5kZXIgPSAoeyBleHBhbmRlZCwgc3R5bGUgPSB7fSwgLi4ucmVzdCB9KSA9PiAoXG4gIDxzcGFuXG4gICAgc3R5bGU9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgdHJhbnNpdGlvbjogJ2FsbCAuMXMgZWFzZScsXG4gICAgICB0cmFuc2Zvcm06IGByb3RhdGUoJHtleHBhbmRlZCA/IDkwIDogMH1kZWcpICR7c3R5bGUudHJhbnNmb3JtIHx8ICcnfWAsXG4gICAgICAuLi5zdHlsZSxcbiAgICB9fVxuICA+XG4gICAg4pa2XG4gIDwvc3Bhbj5cbilcblxuY29uc3QgRGVmYXVsdFJlbmRlcmVyID0gKHtcbiAgaGFuZGxlRW50cnksXG4gIGxhYmVsLFxuICB2YWx1ZSxcbiAgLy8gcGF0aCxcbiAgc3ViRW50cmllcyxcbiAgc3ViRW50cnlQYWdlcyxcbiAgdHlwZSxcbiAgLy8gZGVwdGgsXG4gIGV4cGFuZGVkLFxuICB0b2dnbGUsXG4gIHBhZ2VTaXplLFxuICByZW5kZXJlcixcbn0pID0+IHtcbiAgY29uc3QgW3ZhbHVlU25hcHNob3QsIHNldFZhbHVlU25hcHNob3RdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKVxuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShbXSlcblxuICBjb25zdCByZWZyZXNoVmFsdWVTbmFwc2hvdCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZVNuYXBzaG90KHZhbHVlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFbnRyeSBrZXk9e2xhYmVsfT5cbiAgICAgIHtzdWJFbnRyeVBhZ2VzPy5sZW5ndGggPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsIG9uQ2xpY2s9eygpID0+IHRvZ2dsZSgpfT5cbiAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IHtsYWJlbH17JyAnfVxuICAgICAgICAgICAgPEluZm8+XG4gICAgICAgICAgICAgIHtTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2l0ZXJhYmxlJyA/ICcoSXRlcmFibGUpICcgOiAnJ31cbiAgICAgICAgICAgICAge3N1YkVudHJpZXMubGVuZ3RofSB7c3ViRW50cmllcy5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYH1cbiAgICAgICAgICAgIDwvSW5mbz5cbiAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgIHtleHBhbmRlZCA/IChcbiAgICAgICAgICAgIHN1YkVudHJ5UGFnZXMubGVuZ3RoID09PSAxID8gKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJ5UGFnZXMubWFwKChlbnRyaWVzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgPEVudHJ5PlxuICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwYW5kZWRQYWdlcyhvbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQuaW5jbHVkZXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9sZC5maWx0ZXIoZCA9PiBkICE9PSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWy4uLm9sZCwgaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiBbe2luZGV4ICogcGFnZVNpemV9IC4uLnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggKiBwYWdlU2l6ZSArIHBhZ2VTaXplIC0gMX1dXG4gICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWRQYWdlcy5pbmNsdWRlcyhpbmRleCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2VudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvRW50cnk+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB0eXBlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgcmVuZGVyZXI9e3JlbmRlcmVyfVxuICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3JlZnJlc2hWYWx1ZVNuYXBzaG90fT5cbiAgICAgICAgICAgICAgICA8TGFiZWw+e2xhYmVsfTwvTGFiZWw+IPCflIR7JyAnfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZVNuYXBzaG90fVxuICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXt7fX1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsPntsYWJlbH06PC9MYWJlbD57JyAnfVxuICAgICAgICAgIDxWYWx1ZT5cbiAgICAgICAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0KHZhbHVlKSkpfVxuICAgICAgICAgIDwvVmFsdWU+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0VudHJ5PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxvcmVyKHtcbiAgdmFsdWUsXG4gIGRlZmF1bHRFeHBhbmRlZCxcbiAgcmVuZGVyZXIgPSBEZWZhdWx0UmVuZGVyZXIsXG4gIHBhZ2VTaXplID0gMTAwLFxuICBkZXB0aCA9IDAsXG4gIC4uLnJlc3Rcbn0pIHtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpXG5cbiAgY29uc3QgdG9nZ2xlID0gc2V0ID0+IHtcbiAgICBzZXRFeHBhbmRlZChvbGQgPT4gKHR5cGVvZiBzZXQgIT09ICd1bmRlZmluZWQnID8gc2V0IDogIW9sZCkpXG4gIH1cblxuICBjb25zdCBwYXRoID0gW11cblxuICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuICBsZXQgc3ViRW50cmllc1xuICBjb25zdCBzdWJFbnRyeVBhZ2VzID0gW11cblxuICBjb25zdCBtYWtlUHJvcGVydHkgPSBzdWIgPT4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChzdWIubGFiZWwpXG4gICAgY29uc3Qgc3ViRGVmYXVsdEV4cGFuZGVkID1cbiAgICAgIGRlZmF1bHRFeHBhbmRlZCA9PT0gdHJ1ZVxuICAgICAgICA/IHsgW3N1Yi5sYWJlbF06IHRydWUgfVxuICAgICAgICA6IGRlZmF1bHRFeHBhbmRlZD8uW3N1Yi5sYWJlbF1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgc3ViUGF0aDogc3ViLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIGRlcHRoOiBkZXB0aCArIDEsXG4gICAgICBkZWZhdWx0RXhwYW5kZWQ6IHN1YkRlZmF1bHRFeHBhbmRlZCxcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0eXBlID0gJ2FycmF5J1xuICAgIHN1YkVudHJpZXMgPSB2YWx1ZS5tYXAoKGQsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IGQsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0eXBlID0gJ0l0ZXJhYmxlJ1xuICAgIHN1YkVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLCAodmFsLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0eXBlID0gJ2Z1bmN0aW9uJ1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICB0eXBlID0gJ29iamVjdCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgc3ViRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpZiAoc3ViRW50cmllcykge1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdWJFbnRyaWVzLmxlbmd0aCkge1xuICAgICAgc3ViRW50cnlQYWdlcy5wdXNoKHN1YkVudHJpZXMuc2xpY2UoaSwgaSArIHBhZ2VTaXplKSlcbiAgICAgIGkgPSBpICsgcGFnZVNpemVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIoe1xuICAgIGhhbmRsZUVudHJ5OiBlbnRyeSA9PiAoXG4gICAgICA8RXhwbG9yZXIga2V5PXtlbnRyeS5sYWJlbH0gcmVuZGVyZXI9e3JlbmRlcmVyfSB7Li4ucmVzdH0gey4uLmVudHJ5fSAvPlxuICAgICksXG4gICAgdHlwZSxcbiAgICBzdWJFbnRyaWVzLFxuICAgIHN1YkVudHJ5UGFnZXMsXG4gICAgZGVwdGgsXG4gICAgdmFsdWUsXG4gICAgcGF0aCxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGUsXG4gICAgcGFnZVNpemUsXG4gICAgLi4ucmVzdCxcbiAgfSlcbn1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nbyhwcm9wczogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCI0MHB4XCJcbiAgICAgIGhlaWdodD1cIjQwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOTAgMTkwXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8ZyBpZD1cIm9nLXdoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yOC4wMDAwMDAsIC0yMS4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJHcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI4LjAwMDAwMCwgMzEuMDAwMDAwKVwiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMzkuNzIzOTcxMiw1MS4zNDM2MjM3IEMzNi42MzEyMjQsMzYuMzYyODc3IDM1Ljk2NzUxMTIsMjQuODcyNzcyMiAzNy45NjY2MzMxLDE2LjUyOTM1NTEgQzM5LjE1NTU5NjUsMTEuNTY3MTY3OCA0MS4zMjkzMDg4LDcuNTE5MDg0NjIgNDQuNjM0NjA2NCw0LjU5ODQ2MzA1IEM0OC4xMjQxMzk0LDEuNTE1MDQ3NzcgNTIuNTM2MDMyNywwLjAwMjAxMjE2NjA2IDU3LjQ5MzI1NywwLjAwMjAxMjE2NjA2IEM2NS42NzEyMDEzLDAuMDAyMDEyMTY2MDYgNzQuMjY4MjYwMiwzLjcyNzMyMTQzIDgzLjQ1NTcyNDYsMTAuODA0NDI2NCBDODcuMjAzMTIwMywxMy42OTEwNDU4IDkxLjA5MjQzNjYsMTcuMTcwNDExIDk1LjEzMTY1MTUsMjEuMjQ0NDc0NiBDOTUuNDUzMTQwNCwyMC44MzEwMjY1IDk1LjgxNjU0MTYsMjAuNDQxMDQ1MyA5Ni4yMjE0MzAxLDIwLjA4MDYxNTIgQzEwNy42NDA5OCw5LjkxNDk3MTU4IDExNy4yNTUyNDUsMy41OTg5MjcxNiAxMjUuNDc4NDA4LDEuMTYzNjUwNjggQzEzMC4zNjc4OTksLTAuMjg0MzY0MDA1IDEzNC45NTg1MjYsLTAuNDIyMzE3OTc4IDEzOS4xMzg5MzYsMC45ODMwMzEwMjEgQzE0My41NTE2MzEsMi40NjY0Njg0NCAxNDcuMDY3NjYsNS41MzI5NDg4OCAxNDkuNTQ4MzE0LDkuODI4MTA5MTIgQzE1My42NDIyODgsMTYuOTE2NjczNSAxNTQuNzIxOTE4LDI2LjIzMTA5ODMgMTUzLjE5NTU5NSwzNy43MzIwMjQzIEMxNTIuNTczNDUxLDQyLjQxOTkxMTIgMTUxLjUwOTg1LDQ3LjUyNjM4MzEgMTUwLjAwNzA5NCw1My4wNTkzMTUzIEMxNTAuNTc0MDQ1LDUzLjEyNzcwODYgMTUxLjE0MjQxNiw1My4yNTMyODA4IDE1MS43MDUwNDEsNTMuNDM5NTI5NyBDMTY2LjE5MzkzMiw1OC4yMzU4Njc4IDE3Ni40NTM1ODIsNjMuMzkzNzQ2MiAxODIuNjY1MDIxLDY5LjI4ODI4MzkgQzE4Ni4zNjA2NjksNzIuNzk1MzgzMSAxODguNzczOTcyLDc2LjY5OTg0MzQgMTg5LjY0NjM2NSw4MS4wMjE4MjA0IEMxOTAuNTY3MTc2LDg1LjU4MzY3NDYgMTg5LjY2OTMxMyw5MC4xNTkzMzE2IDE4Ny4xOTE1NDgsOTQuNDUxMjk2NyBDMTgzLjEwNTIxMSwxMDEuNTI5NjE0IDE3NS41OTE2NDMsMTA3LjExMjIxIDE2NC44ODc1ODcsMTExLjUzNDAzMSBDMTYwLjU4OTU1MiwxMTMuMzA5NTM5IDE1NS43MjY1NzksMTE0LjkxNzU1OSAxNTAuMjkzMjU5LDExNi4zNjM3NDggQzE1MC41NDExNzYsMTE2LjkyMjkyIDE1MC43MzM1MjEsMTE3LjUxNjc1OSAxNTAuODYyMTM4LDExOC4xMzk3NTggQzE1My45NTQ4ODYsMTMzLjEyMDUwNSAxNTQuNjE4NTk4LDE0NC42MTA2MSAxNTIuNjE5NDc3LDE1Mi45NTQwMjcgQzE1MS40MzA1MTMsMTU3LjkxNjIxNCAxNDkuMjU2ODAxLDE2MS45NjQyOTcgMTQ1Ljk1MTUwMywxNjQuODg0OTE5IEMxNDIuNDYxOTcsMTY3Ljk2ODMzNCAxMzguMDUwMDc3LDE2OS40ODEzNyAxMzMuMDkyODUzLDE2OS40ODEzNyBDMTI0LjkxNDkwOCwxNjkuNDgxMzcgMTE2LjMxNzg1LDE2NS43NTYwNjEgMTA3LjEzMDM4NSwxNTguNjc4OTU2IEMxMDMuMzQzMTA0LDE1NS43NjE2MTMgOTkuNDEwODY1NSwxNTIuMjM4ODM5IDk1LjMyNTQzMzcsMTQ4LjEwODYxOSBDOTQuOTA1MDc1MywxNDguNzY1NDc0IDk0LjM4ODk2ODEsMTQ5LjM3NjAxMSA5My43Nzg1Njk5LDE0OS45MTkzODUgQzgyLjM1OTAxOTgsMTYwLjA4NTAyOCA3Mi43NDQ3NTUsMTY2LjQwMTA3MyA2NC41MjE1OTE1LDE2OC44MzYzNDkgQzU5LjYzMjEwMDksMTcwLjI4NDM2NCA1NS4wNDE0NzM2LDE3MC40MjIzMTggNTAuODYxMDYzNiwxNjkuMDE2OTY5IEM0Ni40NDgzNjg2LDE2Ny41MzM1MzIgNDIuOTMyMzQwNCwxNjQuNDY3MDUxIDQwLjQ1MTY4NjIsMTYwLjE3MTg5MSBDMzYuMzU3NzExNiwxNTMuMDgzMzI3IDM1LjI3ODA4MjMsMTQzLjc2ODkwMiAzNi44MDQ0MDUzLDEzMi4yNjc5NzYgQzM3LjQ0OTAzOCwxMjcuNDEwNjM0IDM4LjU2NzYyLDEyMi4xMDM4OTggNDAuMTU3NTg5MSwxMTYuMzM5MDA5IEMzOS41MzYxMDQxLDExNi4yNzYxMDQgMzguOTEyMDc1NCwxMTYuMTQ0ODE2IDM4LjI5NDk1OTEsMTE1Ljk0MDUyOSBDMjMuODA2MDY4NCwxMTEuMTQ0MTkxIDEzLjU0NjQxODQsMTA1Ljk4NjMxMiA3LjMzNDk3ODkyLDEwMC4wOTE3NzUgQzMuNjM5MzMxMjEsOTYuNTg0Njc1NCAxLjIyNjAyNzUyLDkyLjY4MDIxNTEgMC4zNTM2MzUyMzUsODguMzU4MjM4MSBDLTAuNTY3MTc2MzMzLDgzLjc5NjM4MzkgMC4zMzA2ODY1ODEsNzkuMjIwNzI2OSAyLjgwODQ1MjM2LDc0LjkyODc2MTggQzYuODk0Nzg4NjMsNjcuODUwNDQ0MyAxNC40MDgzNTY1LDYyLjI2Nzg0ODEgMjUuMTEyNDEzMyw1Ny44NDYwMjczIEMyOS41Mzg1MTQzLDU2LjAxNzYxNTQgMzQuNTYzNzIwOCw1NC4zNjY4MjIgNDAuMTkzOTM5NCw1Mi44ODc0Njc0IEMzOS45OTMzMzkzLDUyLjM5NjkxNzEgMzkuODM0OTM3NCw1MS44ODExMjM1IDM5LjcyMzk3MTIsNTEuMzQzNjIzNyBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBhdGhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAyQzRCXCJcbiAgICAgICAgICAgICAgICBmaWxsUnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NS4wMDAwMDAsIDg1LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOTUuMDAwMDAwLCAtODUuMDAwMDAwKSBcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNOTEuNzM1LDExMCBMOTEuNzM1LDExNiBMODAuNjMyMjA1MSwxMTYgQzc4Ljg0MTEyODYsMTE2IDc3LjE4Njg2MTQsMTE1LjA0MTk3NSA3Ni4yOTU0NDg5LDExMy40ODg0ODMgTDc0LjI5NCwxMTAgTDkxLjczNSwxMTAgWiBNMTE2LjE4MSwxMTAgTDExNC4xODAyNTYsMTEzLjQ4ODQ4MyBDMTEzLjI4ODg0NCwxMTUuMDQxOTc1IDExMS42MzQ1NzYsMTE2IDEwOS44NDM1LDExNiBMOTguNzM1LDExNiBMOTguNzM1LDExMCBMMTE2LjE4MSwxMTAgWiBNOTEuNzM1LDk2IEw5MS43MzUsMTAzIEw3MC4yNzcsMTAzIEw2Ni4yNiw5NiBMOTEuNzM1LDk2IFogTTEyNC4yMTUsOTYgTDEyMC4xOTgsMTAzIEw5OC43MzUsMTAzIEw5OC43MzUsOTYgTDEyNC4yMTUsOTYgWiBNOTEuNzM1LDgyIEw5MS43MzUsODkgTDYyLjI0NCw4OSBMNjEuNjYzMjQzOCw4Ny45ODg0ODI2IEM2MC43Nzg5MTg3LDg2LjQ0NzM0MTcgNjAuNzc4OTE4Nyw4NC41NTI2NTgzIDYxLjY2MzI0MzgsODMuMDExNTE3NCBMNjIuMjQzLDgyIEw5MS43MzUsODIgWiBNMTI4LjIzMiw4MiBMMTI4LjgxMjQ2MSw4My4wMTE1MTc0IEMxMjkuNjk2Nzg2LDg0LjU1MjY1ODMgMTI5LjY5Njc4Niw4Ni40NDczNDE3IDEyOC44MTI0NjEsODcuOTg4NDgyNiBMMTI4LjIzMSw4OSBMOTguNzM1LDg5IEw5OC43MzUsODIgTDEyOC4yMzIsODIgWiBNOTEuNzM1LDY4IEw5MS43MzUsNzUgTDY2LjI2LDc1IEw3MC4yNzcsNjggTDkxLjczNSw2OCBaIE0xMjAuMTk4LDY4IEwxMjQuMjE1LDc1IEw5OC43MzUsNzUgTDk4LjczNSw2OCBMMTIwLjE5OCw2OCBaIE05MS43MzUsNTUgTDkxLjczNSw2MSBMNzQuMjkzLDYxIEw3Ni4yOTU0NDg5LDU3LjUxMTUxNzQgQzc3LjE4Njg2MTQsNTUuOTU4MDI1IDc4Ljg0MTEyODYsNTUgODAuNjMyMjA1MSw1NSBMOTEuNzM1LDU1IFogTTEwOS44NDM1LDU1IEMxMTEuNjM0NTc2LDU1IDExMy4yODg4NDQsNTUuOTU4MDI1IDExNC4xODAyNTYsNTcuNTExNTE3NCBMMTE2LjE4Miw2MSBMOTguNzM1LDYxIEw5OC43MzUsNTUgTDEwOS44NDM1LDU1IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUG9seWdvbi0yXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRDk0Q1wiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01NC44NjAxNzI5LDk4LjM1Nzc1NzggQzU2LjE3MTUyMjQsOTcuNjA4Mjg1NiA1Ny44MzYwMjQ2LDk4LjA3NDYwMTQgNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU5LjA1MjU4NDMsMTAwLjI0MzUyIEM2Mi44NTYzMzkyLDEwNi45ODI5OTMgNjYuODE5MDExNiwxMTMuMzgwMTc2IDcwLjk0MDYwMTYsMTE5LjQzNTA2OCBDNzUuODA3ODgwOCwxMjYuNTg1NDI3IDgxLjI4MTg0LDEzMy44MjQxMSA4Ny4zNjI0NzkyLDE0MS4xNTExMTUgQzg4LjMxNjg3NzgsMTQyLjMwMTE0IDg4LjE4NDk0MzcsMTQ0LjAxMTE3NiA4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODcuMDY1Njg2LDE0NC45OTc5MzcgTDg2LjQ1NDIwODUsMTQ1LjUzNDYyNSBDNjYuMzQ2NTM4OSwxNjMuMTAzMzE0IDUzLjI3NzgxODgsMTY2LjYxMjU1MiA0Ny4yNDgwNDgyLDE1Ni4wNjIzNDEgQzQxLjM1MDA2NTIsMTQ1Ljc0MjcxNyA0My40ODQ0OTE1LDEyNi45ODI4ODggNTMuNjUxMzI3NCw5OS43ODI4NTI2IEM1My44NzY4MTgsOTkuMTc5NTgyMSA1NC4zMDQ1ODYxLDk4LjY3NTI5MSA1NC44NjAxNzI5LDk4LjM1Nzc1NzggWiBNMTQwLjUzNDE3NywxMTkuMDQxNTA0IEMxNDEuOTg2MTMxLDExOC43ODUxNzcgMTQzLjM3NTQ5NiwxMTkuNzQyMTM4IDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjgxMjgxNSwxMjEuOTg2Mzc2IEMxNDguNzgyMzY1LDE0Ny45OTU0NTkgMTQ1LjI4MzM0OCwxNjEgMTMzLjMxNTc2NCwxNjEgQzEyMS42MDk3NDUsMTYxIDEwNi43MDg3MjQsMTQ5LjkwOTAwNyA4OC42MTI3MDE4LDEyNy43MjcwMjIgQzg4LjIxMTM0OTUsMTI3LjIzNTA0NyA4Ny45OTQ1NzIzLDEyNi42MTczNzEgODgsMTI1Ljk4MTUwOSBDODguMDEzMTU4LDEyNC40ODA2ODYgODkuMjM1Nzg1NCwxMjMuMjc0NjUxIDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTEuNjg0NjU0NCwxMjMuMjk0NTMxIEM5OS4zMDU2OTc5LDEyMy4zMzU5OTQgMTA2LjcxNDM4NywxMjMuMDcxNTkxIDExMy45MTA3MjMsMTIyLjUwMTMyMyBDMTIyLjQwOTAzOSwxMjEuODI3ODggMTMxLjI4MzUyMywxMjAuNjc0NjA3IDE0MC41MzQxNzcsMTE5LjA0MTUwNCBaIE0xNDcuNDA4NzI2LDYzLjgxMTk2NjMgQzE0Ny45MzIxMzksNjIuNDAyNjkwMyAxNDkuNTA4Mzg2LDYxLjY2MzQ1MzcgMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTEuNzQyNTUyLDYyLjQxNTQ4NTQgQzE3Ny41ODM3NjMsNzEuMjE3OTIyIDE4Ny40MDIzNTYsODAuODkxNjgwNSAxODEuMTk4MzMyLDkxLjQzNjc2MDkgQzE3NS4xMjk5MDQsMTAxLjc1MTM2NiAxNTcuNDg0MzQ3LDEwOS4yNjAzMzkgMTI4LjI2MTY2LDExMy45NjM2NzggQzEyNy42MTM1MjksMTE0LjA2Nzk5NCAxMjYuOTQ4NjQzLDExMy45NDU5NjkgMTI2LjM4MjczNSwxMTMuNjE4ODQzIEMxMjUuMDQ3MDI1LDExMi44NDY3MjkgMTI0LjYwMjA0NiwxMTEuMTU4MjE0IDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuODg5MzI4LDEwOS4wMTA1IEMxMjkuODc3MTgzLDEwMi4zMTYzMyAxMzMuNDgxMzU4LDk1LjY1NDI2MjEgMTM2LjcwMTg1NCw4OS4wMjQyOTU3IEMxNDAuNTA1MDEsODEuMTk0ODE3OSAxNDQuMDczOTY3LDcyLjc5MDcwODEgMTQ3LjQwODcyNiw2My44MTE5NjYzIFogTTYxLjczODMzOTgsNTYuMDM2MzIxOCBDNjIuMzg2NDcwOCw1NS45MzIwMDYzIDYzLjA1MTM1NjUsNTYuMDU0MDMxNSA2My42MTcyNjQ2LDU2LjM4MTE1NzMgQzY0Ljk1Mjk3NTQsNTcuMTUzMjcxIDY1LjM5Nzk1MzgsNTguODQxNzg2MiA2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuMTEwNjcxOCw2MC45ODk1MDAxIEM2MC4xMjI4MTY4LDY3LjY4MzY2OTkgNTYuNTE4NjQxNiw3NC4zNDU3Mzc5IDUzLjI5ODE0NjIsODAuOTc1NzA0MyBDNDkuNDk0OTksODguODA1MTgyMSA0NS45MjYwMzI4LDk3LjIwOTI5MTkgNDIuNTkxMjc0NCwxMDYuMTg4MDM0IEM0Mi4wNjc4NjA4LDEwNy41OTczMSA0MC40OTE2MTQyLDEwOC4zMzY1NDYgMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOC4yNTc0NDc1LDEwNy41ODQ1MTUgQzEyLjQxNjIzNzIsOTguNzgyMDc4IDIuNTk3NjQzOTgsODkuMTA4MzE5NSA4LjgwMTY2Nzg2LDc4LjU2MzIzOTEgQzE0Ljg3MDA5NTcsNjguMjQ4NjMzNSAzMi41MTU2NTMsNjAuNzM5NjYxMSA2MS43MzgzMzk4LDU2LjAzNjMyMTggWiBNMTAzLjU0NTc5MiwyNC40NjUzNzQ2IEMxMjMuNjUzNDYxLDYuODk2Njg2NDEgMTM2LjcyMjE4MSwzLjM4NzQ0Nzc4IDE0Mi43NTE5NTIsMTMuOTM3NjU4NyBDMTQ4LjY0OTkzNSwyNC4yNTcyODI2IDE0Ni41MTU1MDgsNDMuMDE3MTEyMiAxMzYuMzQ4NjczLDcwLjIxNzE0NzQgQzEzNi4xMjMxODIsNzAuODIwNDE3OSAxMzUuNjk1NDE0LDcxLjMyNDcwOSAxMzUuMTM5ODI3LDcxLjY0MjI0MjIgQzEzMy44Mjg0NzgsNzIuMzkxNzE0NCAxMzIuMTYzOTc1LDcxLjkyNTM5ODYgMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMC45NDc0MTYsNjkuNzU2NDc5OCBDMTI3LjE0MzY2MSw2My4wMTcwMDY1IDEyMy4xODA5ODgsNTYuNjE5ODIzOSAxMTkuMDU5Mzk4LDUwLjU2NDkzMiBDMTE0LjE5MjExOSw0My40MTQ1NzI3IDEwOC43MTgxNiwzNi4xNzU4OTAzIDEwMi42Mzc1MjEsMjguODQ4ODg0NyBDMTAxLjY4MzEyMiwyNy42OTg4NjAyIDEwMS44MTUwNTYsMjUuOTg4ODI0MyAxMDIuOTM0MzE0LDI1LjAwMjA2MjkgTDEwMi45MzQzMTQsMjUuMDAyMDYyOSBaIE01Ny42ODQyMzYxLDggQzY5LjM5MDI1NTEsOCA4NC4yOTEyNzU4LDE5LjA5MDk5MjYgMTAyLjM4NzI5OCw0MS4yNzI5Nzc3IEMxMDIuNzg4NjUxLDQxLjc2NDk1MjcgMTAzLjAwNTQyOCw0Mi4zODI2Mjg4IDEwMyw0My4wMTg0OTExIEMxMDIuOTg2ODQyLDQ0LjUxOTMxNDQgMTAxLjc2NDIxNSw0NS43MjUzNDg5IDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEw5OS4zMTUzNDU2LDQ1LjcwNTQ2ODkgQzkxLjY5NDMwMjEsNDUuNjY0MDA2MyA4NC4yODU2MTI2LDQ1LjkyODQwOTEgNzcuMDg5Mjc3Miw0Ni40OTg2NzczIEM2OC41OTA5NjEyLDQ3LjE3MjEyIDU5LjcxNjQ3NjcsNDguMzI1MzkzIDUwLjQ2NTgyMzUsNDkuOTU4NDk2MiBDNDkuMDEzODY5MSw1MC4yMTQ4MjMxIDQ3LjYyNDUwNDQsNDkuMjU3ODYxOCA0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjE4NzE4NDYsNDcuMDEzNjIzNSBDNDIuMjE3NjM0NywyMS4wMDQ1NDEyIDQ1LjcxNjY1MTksOCA1Ny42ODQyMzYxLDggWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDb21iaW5lZC1TaGFwZVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRjQxNTRcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnXG5cbmltcG9ydCB1c2VMb2NhbFN0b3JhZ2UgZnJvbSAnLi91c2VMb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyB1c2VJc01vdW50ZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBQYW5lbCwgQnV0dG9uIH0gZnJvbSAnLi9zdHlsZWRDb21wb25lbnRzJ1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgZGVmYXVsdFRoZW1lIGFzIHRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbi8vIGltcG9ydCB7IGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFF1ZXJ5U3RhdHVzQ29sb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IEV4cGxvcmVyIGZyb20gJy4vRXhwbG9yZXInXG5pbXBvcnQgTG9nbyBmcm9tICcuL0xvZ28nXG5cbmludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBwYW5lbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgZXRjLlxuICAgKi9cbiAgcGFuZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIGNsb3NlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIGNsb3NlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSB0b2dnbGUgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgdG9nZ2xlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcmVuZGVyIHRoZSBkZXZ0b29scyBpbnNpZGUgYSBkaWZmZXJlbnQgdHlwZSBvZiBjb250YWluZXIgZWxlbWVudCBmb3IgYTExeSBwdXJwb3Nlcy5cbiAgICogQW55IHN0cmluZyB3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbGlkIGludHJpbnNpYyBKU1ggZWxlbWVudCBpcyBhbGxvd2VkLlxuICAgKiBEZWZhdWx0cyB0byAnZm9vdGVyJy5cbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBzdHJpbmcgfCBhbnlcbn1cblxuaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IHN0eWxlIG9iamVjdCB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggaW5saW5lIHN0eWxlc1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3QgY2xhc3NOYW1lIHByb3BlcnR5IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4gb3IgY2xvc2VkXG4gICAqL1xuICBpc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xlcyB0aGUgb3BlbiBhbmQgY2xvc2Ugc3RhdGUgb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29scyh7XG4gIGluaXRpYWxJc09wZW4sXG4gIHRhYmxlLFxuICBwYW5lbFByb3BzID0ge30sXG4gIHRvZ2dsZUJ1dHRvblByb3BzID0ge30sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IENvbnRhaW5lciA9ICdmb290ZXInLFxufTogRGV2dG9vbHNPcHRpb25zKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3RSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBhbmVsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICdyZWFjdFRhYmxlRGV2dG9vbHNPcGVuJyxcbiAgICBpbml0aWFsSXNPcGVuXG4gIClcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcblxuICBjb25zdCB7IHN0eWxlOiBwYW5lbFN0eWxlID0ge30sIC4uLm90aGVyUGFuZWxQcm9wcyB9ID0gcGFuZWxQcm9wc1xuXG4gIGNvbnN0IHtcbiAgICBzdHlsZTogdG9nZ2xlQnV0dG9uU3R5bGUgPSB7fSxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZUNsaWNrLFxuICAgIC4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHNcbiAgfSA9IHRvZ2dsZUJ1dHRvblByb3BzXG5cbiAgLy8gRG8gbm90IHJlbmRlciBvbiB0aGUgc2VydmVyXG4gIGlmICghaXNNb3VudGVkKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHJlZj17cm9vdFJlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzXCI+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHsuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgICAgICAgICBvblRvZ2dsZUNsaWNrICYmIG9uVG9nZ2xlQ2xpY2soZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiAnLjVyZW0nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzEuNWVtJyxcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICAgICAgICAuLi50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ28gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhY3RUYWJsZURldnRvb2xzUGFuZWxcbiAgICAgICAgICAgIHJlZj17cGFuZWxSZWYgYXMgYW55fVxuICAgICAgICAgICAgey4uLm90aGVyUGFuZWxQcm9wc31cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgc2V0SXNPcGVuPXtzZXRJc09wZW59XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgLi4ucGFuZWxTdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgRGV2dG9vbHNQYW5lbE9wdGlvbnNcbj4oZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzUGFuZWwocHJvcHMsIHJlZik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICB0YWJsZSxcbiAgICBpc09wZW4gPSB0cnVlLFxuICAgIHNldElzT3BlbixcbiAgICAuLi5wYW5lbFByb3BzXG4gIH0gPSBwcm9wcyBhcyBEZXZ0b29sc1BhbmVsT3B0aW9ucyAmIHtcbiAgICB0YWJsZTogVGFibGU8YW55PlxuICB9XG5cbiAgLy8gY29uc3QgW2FjdGl2ZU1hdGNoSWQsIHNldEFjdGl2ZVJvdXRlSWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAvLyAgICdyZWFjdFRhYmxlRGV2dG9vbHNBY3RpdmVSb3V0ZUlkJyxcbiAgLy8gICAnJyxcbiAgLy8gKVxuXG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxQYW5lbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzUGFuZWxcIiB7Li4ucGFuZWxQcm9wc30+XG4gICAgICAgIDxzdHlsZVxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke3RoZW1lLmJhY2tncm91bmRBbHR9ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhciwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdHJhY2sge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAgICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmdyYXlBbHR9YCxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmJhY2tncm91bmRBbHQsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJ2NsYW1wKC44cmVtLCAydncsIDEuM3JlbSknLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVhY3QgVGFibGV7JyAnfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERldnRvb2xzXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICBmbGV4OiAnMScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJJbnN0YW5jZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTdGF0ZSgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEFsbENvbHVtbnMoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29yZSBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldENvcmVSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlsdGVyZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTb3J0ZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTb3J0ZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiR3JvdXBlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEdyb3VwZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRXhwYW5kZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRFeHBhbmRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey8qIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJSb3cgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9QYW5lbD5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtYW5pbWF0ZS1wdWxzZSBwcy1yb3VuZGVkLW1kIHBzLWJnLWZvcmVncm91bmQvMTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsICJpbXBvcnQgeyBmbGV4UmVuZGVyLCB0eXBlIEhlYWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93RG93bldpZGVOYXJyb3csIEFycm93VXBXaWRlTmFycm93LCBDaGV2cm9uRG93biwgTW92ZURvd24sIE1vdmVVcCwgUGluLCBQaW5PZmYsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb3BzPFREYXRhPiB7XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBoZWFkZXIsIGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy1mb250LW1vbm8gcHMtdGV4dC14c1wiPlxuICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlciA/IG51bGwgOiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtbWluLXctMCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LWZvcmVncm91bmQvOTBcIj5cbiAgICAgICAgICAgICAgICB7ZmxleFJlbmRlcihoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIsIGhlYWRlci5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1zaHJpbmstMCBwcy1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLW1sLTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZURvd24gc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJhc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVVcCBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblBpbigpICYmIGhlYWRlci5jb2x1bW4uaWQgIT09IFwic2VsZWN0XCIgJiYgKFxuICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXB4LTAgcHMtaC02IHBzLXctNlwiPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd25XaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIHNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4ucGluKGhlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IGZhbHNlIDogXCJsZWZ0XCIpfT5cbiAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbk9mZiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBVbnBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUmVzaXplKCkgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgfHwgZS5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInBzLWFic29sdXRlIHBzLXJpZ2h0LTAgcHMtdG9wLTAgcHMtaC1mdWxsIHBzLXctcHggcHMtY3Vyc29yLWNvbC1yZXNpemUgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVzaXplIGNvbHVtblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG4gIGNvbnN0IGlzU2VsZWN0Q29sdW1uID0gY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIFwicHMtc3RpY2t5XCIsXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIGtpbmQgPT09IFwiaGVhZGVyXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTMwXCIgOiBcInBzLXotMjBcIiksXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIGtpbmQgPT09IFwiY2VsbFwiICYmIChpc1NlbGVjdENvbHVtbiA/IFwicHMtei0xMFwiIDogXCJwcy16LTBcIiksXG4gICAgICBpc0xlZnRQaW5uZWQgJiYgXCJwcy1zaGFkb3ctWzJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICAgIGlzUmlnaHRQaW5uZWQgJiYgXCJwcy1zaGFkb3ctWy0ycHhfMF81cHhfLTJweF9yZ2JhKDAsMCwwLDAuMSldXCIsXG4gICAgKSxcbiAgICBzdHlsZToge1xuICAgICAgbWluV2lkdGg6IGAke2NvbHVtbi5nZXRTaXplKCl9cHhgLFxuICAgICAgd2lkdGg6IGAke2NvbHVtbi5nZXRTaXplKCl9cHhgLFxuICAgICAgbGVmdDogaXNMZWZ0UGlubmVkID8gYCR7Y29sdW1uLmdldFN0YXJ0KFwibGVmdFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgICByaWdodDogaXNSaWdodFBpbm5lZCA/IGAke2NvbHVtbi5nZXRBZnRlcihcInJpZ2h0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHBvc2l0aW9uOiBpc1Bpbm5lZCA/IChcInN0aWNreVwiIGFzIGNvbnN0KSA6IHVuZGVmaW5lZCxcbiAgICB9IGFzIENTU1Byb3BlcnRpZXMsXG4gIH07XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QWN0aW9uc1Byb3BzIHtcbiAgb25TYXZlPzogKCkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgb25OdWxsQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzTnVsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG59OiBJbnB1dEFjdGlvbnNQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAob25OdWxsQ2hhbmdlKSBvbk51bGxDaGFuZ2UoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBpZiAob25TYXZlKSBvblNhdmUoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBpZiAob25DYW5jZWwpIG9uQ2FuY2VsKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLXRleHQteHMgcHMtXCI+XG4gICAgICB7IXJlYWRvbmx5ICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLW1yLWF1dG9cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVTYXZlfT5cbiAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxDb3JuZXJEb3duTGVmdCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgU2F2ZSBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICBFc2NcbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge29uTnVsbENoYW5nZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIj5cbiAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+U2V0IHRvIE5VTEw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlSW5wdXQocHJvcHM6IERhdGVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlIHVzaW5nIGRheWpzIGJhc2VkIG9uIGRldGVjdGVkIGZvcm1hdFxuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhpbnB1dFZhbHVlKTtcbiAgICAgIGlmICghZGF0ZS5pc1ZhbGlkKCkpIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAvLyBEZXRlY3QgaWYgaW5wdXQgaGFzIHRpbWUgY29tcG9uZW50XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgLy8gRm9yIHRpbWVzdGFtcHMsIHNob3cgZnVsbCBkYXRlIGFuZCB0aW1lXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMIExUU1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBkYXRlcywganVzdCBzaG93IHRoZSBkYXRlXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5Gb3JtYXR0ZWQgdmFsdWU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkRGF0ZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSB9O1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGJhZGdlVmFyaWFudHMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW51bUlucHV0KHByb3BzOiBFbnVtSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCBjb2x1bW4sIHZhbHVlLCBvcHRpb25zID0gW10sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gKG9wdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChjdXJyZW50VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsLCB2YWx1ZV0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpOyAvLyBSZXNldCBudWxsIHN0YXRlIGFzIHdlbGxcbiAgfTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1mb250LW1vbm8gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtcHgtMiBwcy1weS0wIHBzLXctZnVsbCBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICB7Y3VycmVudFZhbHVlfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZmxleC13cmFwIHBzLWdhcC0yIHBzLXAtMiBwcy1taW4tdy1bdmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV0gcHMtbWF4LXctWzUwMHB4XSB3LWZ1bGwgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1vdmVyZmxvdy15LXNjcm9sbCBwcy1tYXgtaC0zMlwiPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGtleT17b3B0aW9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbil9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2JhZGdlVmFyaWFudHMoeyB2YXJpYW50OiBvcHRpb24gPT09IGN1cnJlbnRWYWx1ZSA/IFwiZGVmYXVsdFwiIDogXCJvdXRsaW5lXCIgfSl9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtvcHRpb259XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKc29uSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEpzb25JbnB1dChwcm9wczogSnNvbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QganNvblZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IChKU09OLnBhcnNlKGN1cnJlbnRWYWx1ZSkgYXMgb2JqZWN0KTtcblxuICAgIC8vIE9ubHkgc3VibWl0IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIGlmIChqc29uVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChqc29uVmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC00IHBzLXB5LTBcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgcm93cz17NX1cbiAgICAgICAgICB2YWx1ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWJhc2UgcHMtYXBwZWFyYW5jZS1ub25lIHBzLXctZnVsbCBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtb3V0bGluZS1ub25lIHBzLXNoYWRvdy1ub25lIHBzLWJnLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBsYW5nPVwiZW5fRU5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdW1lcmljSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWVyaWNJbnB1dChwcm9wczogTnVtZXJpY0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPih2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBcIlwiIDogU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHRvIG51bWJlclxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IGN1cnJlbnRWYWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIoY3VycmVudFZhbHVlKTtcblxuICAgIC8vIE9ubHkgc3VibWl0IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChudW1lcmljVmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTBcIj5cbiAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJudW1lcmljLWlucHV0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPlxuICAgICAgICAgIE51bWVyaWNcbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGlucHV0TW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIHBhdHRlcm49XCJcXGQqXCJcbiAgICAgICAgICB2YWx1ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtYXBwZWFyYW5jZS1ub25lIHBzLXctZnVsbCBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtb3V0bGluZS1ub25lIHBzLXNoYWRvdy1ub25lIHBzLWJnLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIHN0ZXA9XCJhbnlcIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEZvcm1FdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlSW5wdXQgfSBmcm9tIFwiLi91c2UtaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhd0lucHV0KHByb3BzOiBSYXdJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0XCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1FdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlSW5wdXQgfSBmcm9tIFwiLi91c2UtaW5wdXRcIjtcblxuLy8gSW5pdGlhbGl6ZSBkYXlqcyBwbHVnaW5zXG5kYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lSW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZUlucHV0KHByb3BzOiBUaW1lSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIC8vIEZvcm1hdCB0aW1lIHZhbHVlcyBpbiBhIGh1bWFuLXJlYWRhYmxlIG1hbm5lclxuICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIikpIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICBjb25zdCBoYXNUaW1lem9uZSA9IC9bKy1dXFxkezJ9KDpcXGR7Mn0pPyQvLnRlc3QoaW5wdXRWYWx1ZSk7XG4gICAgICBjb25zdCBkYXRlID0gZGF5anMoYDIwMDAtMDEtMDEgJHtpbnB1dFZhbHVlfWApO1xuICAgICAgaWYgKGRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcImg6bW0gQVwiKSArIChoYXNUaW1lem9uZSA/IGAgKCR7ZGF0ZS5mb3JtYXQoXCJaXCIpfSlgIDogXCJcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVSZWdleCA9IC8oXFxkezEsMn0pOihcXGR7Mn0pOihcXGR7Mn0pKD86XFwuXFxkKyk/KFsrLV1cXGR7Mn0oPzo6XFxkezJ9KT8pPy87XG4gICAgICBjb25zdCBtYXRjaCA9IGlucHV0VmFsdWUubWF0Y2godGltZVJlZ2V4KTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBob3VycyA9IHBhcnNlSW50KG1hdGNoWzFdIHx8IFwiMTJcIiwgMTApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gbWF0Y2hbMl0gfHwgXCIwMFwiO1xuICAgICAgICBjb25zdCB0ek9mZnNldCA9IG1hdGNoWzRdIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHBlcmlvZCA9IGhvdXJzID49IDEyID8gXCJQTVwiIDogXCJBTVwiO1xuICAgICAgICBjb25zdCBob3VyMTIgPSBob3VycyAlIDEyID09PSAwID8gMTIgOiBob3VycyAlIDEyO1xuXG4gICAgICAgIHJldHVybiBgJHtob3VyMTJ9OiR7bWludXRlc30gJHtwZXJpb2R9JHt0ek9mZnNldCA/IGAgKCR7dHpPZmZzZXR9KWAgOiBcIlwifWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5Gb3JtYXR0ZWQgdmFsdWU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkVGltZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW5EZWYsIFRhYmxlLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRUeXBlLCBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9taXQgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuXG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL2NlbGwvRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHN0YWdlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHNldFN0YWdlZFJvd3M6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGFnZWRSb3dzKHByb3BzOiBQcm9wcykge1xuICBjb25zdCB7IHRhYmxlOiBwYXJlbnRUYWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbih1c2VJc0luc2VydGluZygpKTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdGFnZWRSb3cocm93SW5kZXg6IG51bWJlciwgcGFydGlhbFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBzZXRTdGFnZWRSb3dzKChwcmV2Um93cykgPT4ge1xuICAgICAgY29uc3QgbmV3Um93cyA9IFsuLi5wcmV2Um93c107XG4gICAgICBuZXdSb3dzW3Jvd0luZGV4XSA9IHsgLi4ubmV3Um93c1tyb3dJbmRleF0sIC4uLnBhcnRpYWxSb3cgfTtcblxuICAgICAgcmV0dXJuIG5ld1Jvd3M7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhwYXJlbnRUYWJsZS5vcHRpb25zLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgaWYgKGNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIGNlbGwoKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IDxFbXB0eUNlbGwgLz47XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2x1bW4sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbiwgcHJvcHMgfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbixcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGFnZWRSb3cocHJvcHMucm93SW5kZXgsIHsgW2NvbHVtbi5pZCFdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIC4uLnBhcmVudFRhYmxlLm9wdGlvbnMsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBvblNvcnRpbmdDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBkYXRhOiBzdGFnZWRSb3dzLFxuICAgIHN0YXRlOiBvbWl0KHBhcmVudFRhYmxlLm9wdGlvbnMuc3RhdGUsIFtcInBhZ2luYXRpb25cIiwgXCJzb3J0aW5nXCJdKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICA8VGFibGVSb3cga2V5PXtpfT5cbiAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0+O1xuICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2p9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IHJvd0luZGV4PXtpfSAvPjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGFibGVSb3c+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBUYWJsZTIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG50eXBlIE5hdmlnYXRpb25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSAmIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PjtcblxuZXhwb3J0IGZ1bmN0aW9uIE5hdmlnYXRpb24oeyBjbGFzc05hbWUgfTogTmF2aWdhdGlvblByb3BzKSB7XG4gIC8vIFVzZSB0aGUgY3VzdG9tIGhvb2sgdG8gZ2V0IGFsbCBuZWNlc3Nhcnkgc3RhdGUgYW5kIGhhbmRsZXJzXG4gIGNvbnN0IHsgdGFibGVzLCBhY3RpdmVUYWJsZSwgaXNMb2FkaW5nLCBoYW5kbGVUYWJsZUNoYW5nZSB9ID0gdXNlQWN0aXZlVGFibGUoKTtcblxuICBjb25zdCBzaWRlQmFyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LTQ4IHBzLWdhcC00IHBzLW92ZXJmbG93LXktYXV0byBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLTAgcHMtdGV4dC1jYXJkLWZvcmVncm91bmQgcHMtc2hhZG93LXhzXCIsXG4gICAgY2xhc3NOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3NpZGVCYXJDbGFzc2VzfT5cbiAgICAgIHsvKiBUT0RPOiBzY2hlbWEgc2VsZWN0b3IuICovfVxuICAgICAgPE5hdmlnYXRpb24uQmxvY2sgbGFiZWw9XCJUYWJsZXNcIj5cbiAgICAgICAge3RhYmxlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiAoXG4gICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtXG4gICAgICAgICAgICAgIGtleT17YCR7dGFibGUuc2NoZW1hfS0ke3RhYmxlLm5hbWV9YH1cbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVGFibGUgPT09IHRhYmxlfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVGFibGVDaGFuZ2UodGFibGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGEgaHJlZj17YCN0YWJsZT0ke3RhYmxlLm5hbWV9JnNjaGVtYT0ke3RhYmxlLnNjaGVtYX1gfT57dGFibGUubmFtZX08L2E+XG4gICAgICAgICAgICA8L05hdmlnYXRpb24uSXRlbT5cbiAgICAgICAgICApKVxuICAgICAgICApIDogaXNMb2FkaW5nID8gKFxuICAgICAgICAgIEFycmF5KDQpXG4gICAgICAgICAgICAuZmlsbChudWxsKVxuICAgICAgICAgICAgLm1hcCgoXywgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbSBrZXk9e2luZGV4fSB3cmFwQ2hpbGRyZW5JblNwYW49e2ZhbHNlfT5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC0zIHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtPk5vIHRhYmxlcyBmb3VuZDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICApfVxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBCbG9jayA9ICh7IGNsYXNzTmFtZSwgbGFiZWwsIGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4gJiB7IGxhYmVsOiBzdHJpbmcgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHsuLi5wcm9wc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0xIHBzLXB0LTQgcHMtcGItMiBwcy1weC00IHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy1zbGF0ZS01MC81MCBwcy1iYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICAgIDxUYWJsZTIgc2l6ZT17MTZ9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiIC8+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtXCI+e2xhYmVsfTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuYXYgYXJpYS1sYWJlbD17bGFiZWx9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLXB4IHBzLXBiLTMgcHMtcC0yXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgSXRlbSA9ICh7XG4gIGNsYXNzTmFtZSxcbiAgYXNDaGlsZCA9IGZhbHNlLFxuICBpc0FjdGl2ZSxcbiAgc2l6ZSxcbiAgY2hpbGRyZW4sXG4gIHdyYXBDaGlsZHJlbkluU3BhbiA9IHRydWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImJ1dHRvblwiPiAmIHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgc2l6ZT86IFwiZGVmYXVsdFwiIHwgXCJzbVwiO1xuICB3cmFwQ2hpbGRyZW5JblNwYW4/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCBDb21wID0gYXNDaGlsZCA/IFNsb3QgOiBcImJ1dHRvblwiO1xuXG4gIHJldHVybiAoXG4gICAgPENvbXBcbiAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtYnV0dG9uXCJcbiAgICAgIGRhdGEtc2l6ZT17c2l6ZX1cbiAgICAgIGRhdGEtYWN0aXZlPXtpc0FjdGl2ZX1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcHktMS41IHBzLXB4LTIgcHMtdGV4dC1zbSBwcy1mb250LW1lZGl1bSBwcy1yb3VuZGVkLW1kIHBzLWZsZXggcHMtZ2FwLTIgcHMtaXRlbXMtY2VudGVyIHBzLWJvcmRlciBwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctdHJhbnNwYXJlbnRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICB7d3JhcENoaWxkcmVuSW5TcGFuID8gPHNwYW4gY2xhc3NOYW1lPVwicHMtdHJ1bmNhdGVcIj57Y2hpbGRyZW59PC9zcGFuPiA6IGNoaWxkcmVufVxuICAgIDwvQ29tcD5cbiAgKTtcbn07XG5cbk5hdmlnYXRpb24uQmxvY2sgPSBCbG9jaztcbk5hdmlnYXRpb24uSXRlbSA9IEl0ZW07XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsga2V5TWFwLCB1c2VRdWVyeVN0YXRlLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcbmltcG9ydCB7IElOSVRJQUxfREFUQV9VUERBVEVEX0FULCB1c2VJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4vdXNlLWludHJvc3BlY3Rpb25cIjtcblxuLyoqXG4gKiBIb29rIHRvIGVuY2Fwc3VsYXRlIGFsbCBsb2dpYyBmb3IgbWFuYWdpbmcgdGhlIGFjdGl2ZSB0YWJsZSBzZWxlY3Rpb24uXG4gKiBIYW5kbGVzIHN5bmNpbmcgd2l0aCBVUkwgcGFyYW1zLCBkZWZhdWx0IHNlbGVjdGlvbiwgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVRhYmxlKCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBzZXRBY3RpdmVUYWJsZSwgYWRhcHRlciwgZW1pdFRlbGVtZXRyeUV2ZW50IH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBkYXRhOiBpbnRyb3NwZWN0aW9uLCBkYXRhVXBkYXRlZEF0IH0gPSB1c2VJbnRyb3NwZWN0aW9uKCk7XG4gIGNvbnN0IGlzTG9hZGluZyA9IGRhdGFVcGRhdGVkQXQgPT09IElOSVRJQUxfREFUQV9VUERBVEVEX0FUO1xuXG4gIC8vIEdldCBhbGwgdGFibGVzIGZvciB0aGUgY3VycmVudCBzY2hlbWFcbiAgY29uc3QgdGFibGVzOiBUYWJsZVtdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzW2FkYXB0ZXIuZGVmYXVsdFNjaGVtYSB8fCBcImRiXCJdPy50YWJsZXMgfHwge30pO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzLCBhZGFwdGVyLmRlZmF1bHRTY2hlbWFdKTtcblxuICAvLyBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIHRhYmxlcyBhY3Jvc3MgYWxsIHNjaGVtYXNcbiAgY29uc3QgdG90YWxUYWJsZUNvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50cm9zcGVjdGlvbi5zY2hlbWFzKS5yZWR1Y2UoKHN1bSwgc2NoZW1hKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgT2JqZWN0LmtleXMoc2NoZW1hLnRhYmxlcykubGVuZ3RoO1xuICAgIH0sIDApO1xuICB9LCBbaW50cm9zcGVjdGlvbi5zY2hlbWFzXSk7XG5cbiAgY29uc3QgW2ZpcnN0VGFibGVdID0gdGFibGVzO1xuXG4gIGNvbnN0IFt0YWJsZUFuZFNjaGVtYSwgc2V0VGFibGVBbmRTY2hlbWFdID0gdXNlUXVlcnlTdGF0ZXMoXG4gICAga2V5TWFwKHtcbiAgICAgIHRhYmxlOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2LFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gICAgICB9LFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXCJcIixcbiAgICAgICAgcGFyc2U6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2LFxuICAgICAgICBzZXJpYWxpemU6ICh2OiBzdHJpbmcgfCBudWxsKSA9PiB2ID8/IFwiXCIsXG4gICAgICB9LFxuICAgIH0pLFxuICApO1xuICAvLyBBZGQgcXVlcnkgc3RhdGUgZm9yIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zXG4gIGNvbnN0IFssIHNldFBhZ2VQYXJhbV0gPSB1c2VRdWVyeVN0YXRlPHN0cmluZyB8IG51bGw+KFwicGFnZUluZGV4XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcbiAgY29uc3QgWywgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJzb3J0XCIsIHtcbiAgICBwYXJzZTogKHYpID0+IHYsXG4gICAgc2VyaWFsaXplOiAodikgPT4gdiA/PyBcIlwiLFxuICB9KTtcblxuICAvLyBFZmZlY3QgdG8gc3luYyBhY3RpdmUgdGFibGUgd2l0aCBVUkwgcGFyYW0gYW5kIGRlZmF1bHRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTG9hZGluZykgcmV0dXJuO1xuICAgIC8vIElmIHNjaGVtYSBhbmQgdGFibGUgcGFyYW1zIGluIFVSTCwgdHJ5IHRvIHNldCB0aGF0IHRhYmxlXG4gICAgaWYgKHRhYmxlQW5kU2NoZW1hPy50YWJsZSAmJiB0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFibGVGcm9tUGFyYW0gPSB0YWJsZXMuZmluZCgodCkgPT4gdC5uYW1lID09PSB0YWJsZUFuZFNjaGVtYS50YWJsZSk7XG5cbiAgICAgIGlmICh0YWJsZUZyb21QYXJhbSkge1xuICAgICAgICBzZXRBY3RpdmVUYWJsZSh0YWJsZUZyb21QYXJhbSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgbm8gc2NoZW1hL3RhYmxlIHBhcmFtcyBvciBub3QgZm91bmQsIHNldCBmaXJzdCB0YWJsZSBhcyBkZWZhdWx0XG4gICAgaWYgKHRhYmxlcy5sZW5ndGggPiAwICYmICFhY3RpdmVUYWJsZSkge1xuICAgICAgc2V0QWN0aXZlVGFibGUoZmlyc3RUYWJsZSB8fCBudWxsKTtcbiAgICAgIGlmIChmaXJzdFRhYmxlKSB7XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogZmlyc3RUYWJsZS5uYW1lLCBzY2hlbWE6IGZpcnN0VGFibGUuc2NoZW1hIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzTG9hZGluZywgdGFibGVBbmRTY2hlbWEsIHRhYmxlcywgZmlyc3RUYWJsZSwgYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBzZXRUYWJsZUFuZFNjaGVtYV0pO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGFjdGl2ZSB0YWJsZSBhbmQgdXBkYXRlIHRoZSBVUkwgcGFyYW0uXG4gICAqIEFsc28gY2xlYXJzIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zIHdoZW4gc3dpdGNoaW5nIHRhYmxlcy5cbiAgICovXG4gIGNvbnN0IGhhbmRsZVRhYmxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG5ld1RhYmxlOiBUYWJsZSkgPT4ge1xuICAgICAgaWYgKGFjdGl2ZVRhYmxlICE9PSBuZXdUYWJsZSkge1xuICAgICAgICBzZXRBY3RpdmVUYWJsZShuZXdUYWJsZSk7XG4gICAgICAgIHZvaWQgc2V0VGFibGVBbmRTY2hlbWEoeyB0YWJsZTogbmV3VGFibGUubmFtZSwgc2NoZW1hOiBuZXdUYWJsZS5zY2hlbWEgfSk7XG4gICAgICAgIC8vIENsZWFyIHBhZ2luYXRpb24gYW5kIHNvcnRpbmcgcGFyYW1zIHdoZW4gc3dpdGNoaW5nIHRhYmxlc1xuICAgICAgICB2b2lkIHNldFBhZ2VQYXJhbShudWxsKTtcbiAgICAgICAgdm9pZCBzZXRTb3J0UGFyYW0obnVsbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBzZXRUYWJsZUFuZFNjaGVtYSwgc2V0UGFnZVBhcmFtLCBzZXRTb3J0UGFyYW1dLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVE9ETzogcmVwbGFjZSB3aXRoIGlzTG9hZGluZ1xuICAgIGlmIChkYXRhVXBkYXRlZEF0ICE9PSAtMSkge1xuICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50KHtcbiAgICAgICAgZXZlbnQ6IFwic3R1ZGlvX2xhdW5jaGVkXCIsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBldmVudF9pZDogdXVpZHY0KCksXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgdGFibGVfY291bnQ6IHRvdGFsVGFibGVDb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3RhYmxlcywgZW1pdFRlbGVtZXRyeUV2ZW50LCBkYXRhVXBkYXRlZEF0LCB0b3RhbFRhYmxlQ291bnRdKTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlcyxcbiAgICBhY3RpdmVUYWJsZSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaGFuZGxlVGFibGVDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgSW50cm9zcGVjdGlvbiB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9EQVRBX1VQREFURURfQVQgPSAtMTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUludHJvc3BlY3Rpb24oKSB7XG4gIGNvbnN0IHsgYWRhcHRlciB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBpbml0aWFsRGF0YToge1xuICAgICAgc2NoZW1hczoge1xuICAgICAgICBbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl06IHtcbiAgICAgICAgICB0YWJsZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpbWV6b25lOiBcIlVUQ1wiLFxuICAgICAgZmlsdGVyT3BlcmF0b3JzOiBbXSxcbiAgICB9IHNhdGlzZmllcyBJbnRyb3NwZWN0aW9uLFxuICAgIGluaXRpYWxEYXRhVXBkYXRlZEF0OiBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCxcbiAgICBxdWVyeUZuOiBhc3luYyAoeyBzaWduYWwgfSkgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCBpbnRyb3NwZWN0aW9uXSA9IGF3YWl0IGFkYXB0ZXIuaW50cm9zcGVjdCh7IGFib3J0U2lnbmFsOiBzaWduYWwgfSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGludHJvc3BlY3Rpb247XG4gICAgfSxcbiAgICBxdWVyeUtleTogW1wiaW50cm9zcGVjdGlvblwiXSxcbiAgICAvLyBpZiBpcyBpbml0aWFsIGRhdGEsIHJlZmV0Y2ggaW1tZWRpYXRlbHksIG90aGVyd2lzZSwgbmV2ZXIgcmVmZXRjaCBhdXRvbWF0aWNhbGx5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgIC8vIHdlIGNhbiBzdGlsbCByZWZldGNoIG1hbnVhbGx5IHVzaW5nIHRoZSBxdWVyeSBjbGllbnQgLSBwcm9iYWJseSB0cmlnZ2VyZWQgYnkgYSBidXR0b24uXG4gICAgc3RhbGVUaW1lOiAoY3R4KSA9PiAoY3R4LnN0YXRlLmRhdGFVcGRhdGVkQXQgPT09IElOSVRJQUxfREFUQV9VUERBVEVEX0FUID8gMCA6IEluZmluaXR5KSxcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiNE1BQUEsT0FBUyxtQkFBQUEsR0FBaUIsVUFBQUMsT0FBYyxlQ0N4QyxPQUEwQixRQUFBQyxPQUFZLE9DcUJ0QyxJQUFNQyxHQUF1QixJQUVoQkMsR0FBeUJDLEdBQXlCLENBQzNELElBQU1DLEVBQVdDLEdBQWVGLENBQU0sRUFDaEMsQ0FBRUcsdUJBQUFBLEVBQXdCQywrQkFBQUEsQ0FBZ0MsRUFBR0osRUEwQm5FLE1BQU8sQ0FDSEssZ0JBekJxQkMsR0FBcUIsQ0FDMUMsSUFBTUMsRUFBYUQsRUFBVUUsTUFBTVYsRUFBb0IsRUFHdkQsT0FBSVMsRUFBVyxDQUFDLElBQU0sSUFBTUEsRUFBV0UsU0FBVyxHQUM5Q0YsRUFBV0csTUFBSyxFQUdiQyxHQUFrQkosRUFBWU4sQ0FBUSxHQUFLVyxHQUErQk4sQ0FBUyxDQUM5RixFQWlCSU8sNEJBZmdDQSxDQUNoQ0MsRUFDQUMsSUFDQSxD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LENBQWlCLEVBQUlDLEVBQVUsRUFFL0NDLEVBQW1CQyxFQUN2Qix5REFDQUosR0FBZ0IseURBQ2xCLEVBRUEsT0FDRVQsR0FBQyxPQUFJLGtCQUFpQlMsRUFBYyxVQUFXRyxFQUM3QyxTQUFBWCxHQUFDLE9BQUksVUFBVSxvR0FDYixVQUFBRCxHQUFDYyxHQUFBLENBQWdCLEtBQUssT0FDbkIsU0FBQUosR0FDQ1YsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsUUFBUyxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDaEMsUUFBUyxDQUFFLE1BQU8sT0FBUSxRQUFTLENBQUUsRUFDckMsS0FBTSxDQUFFLE1BQU8sRUFBRyxRQUFTLENBQUUsRUFDN0IsV0FBWSxDQUFFLFNBQVUsR0FBSyxFQUU3QixTQUFBZixHQUFDZ0IsR0FBQSxFQUFXLEVBQ2QsRUFFSixFQUVBaEIsR0FBQ2UsR0FBTyxJQUFQLENBQ0MsVUFBVSw2SUFDVixXQUFZLENBQUUsU0FBVSxHQUFLLEVBRTdCLFNBQUFmLEdBQUNpQixHQUFBLEVBQWdCLEVBQ25CLEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiY2xzeCIsICJDTEFTU19QQVJUX1NFUEFSQVRPUiIsICJjcmVhdGVDbGFzc0dyb3VwVXRpbHMiLCAiY29uZmlnIiwgImNsYXNzTWFwIiwgImNyZWF0ZUNsYXNzTWFwIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cHMiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIiwgImdldENsYXNzR3JvdXBJZCIsICJjbGFzc05hbWUiLCAiY2xhc3NQYXJ0cyIsICJzcGxpdCIsICJsZW5ndGgiLCAic2hpZnQiLCAiZ2V0R3JvdXBSZWN1cnNpdmUiLCAiZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5IiwgImdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyIsICJjbGFzc0dyb3VwSWQiLCAiaGFzUG9zdGZpeE1vZGlmaWVyIiwgImNvbmZsaWN0cyIsICJjbGFzc1BhcnRPYmplY3QiLCAiY3VycmVudENsYXNzUGFydCIsICJuZXh0Q2xhc3NQYXJ0T2JqZWN0IiwgIm5leHRQYXJ0IiwgImdldCIsICJjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnQiLCAic2xpY2UiLCAidW5kZWZpbmVkIiwgInZhbGlkYXRvcnMiLCAiY2xhc3NSZXN0IiwgImpvaW4iLCAiZmluZCIsICJ2YWxpZGF0b3IiLCAiYXJiaXRyYXJ5UHJvcGVydHlSZWdleCIsICJ0ZXN0IiwgImFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lIiwgImV4ZWMiLCAicHJvcGVydHkiLCAic3Vic3RyaW5nIiwgImluZGV4T2YiLCAidGhlbWUiLCAicHJlZml4IiwgIk1hcCIsICJwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgImdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAiY2xhc3NHcm91cHMiLCAiZm9yRWFjaCIsICJjbGFzc0dyb3VwIiwgInByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkiLCAiY2xhc3NEZWZpbml0aW9uIiwgImNsYXNzUGFydE9iamVjdFRvRWRpdCIsICJnZXRQYXJ0IiwgImlzVGhlbWVHZXR0ZXIiLCAicHVzaCIsICJrZXkiLCAicGF0aCIsICJjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0IiwgInBhdGhQYXJ0IiwgImhhcyIsICJzZXQiLCAiZnVuYyIsICJjbGFzc0dyb3VwRW50cmllcyIsICJtYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwIiwgImZyb21FbnRyaWVzIiwgInZhbHVlIiwgImNyZWF0ZUxydUNhY2hlIiwgIm1heENhY2hlU2l6ZSIsICJjYWNoZVNpemUiLCAiY2FjaGUiLCAicHJldmlvdXNDYWNoZSIsICJ1cGRhdGUiLCAiSU1QT1JUQU5UX01PRElGSUVSIiwgImNyZWF0ZVBhcnNlQ2xhc3NOYW1lIiwgInNlcGFyYXRvciIsICJleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZSIsICJpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciIsICJmaXJzdFNlcGFyYXRvckNoYXJhY3RlciIsICJzZXBhcmF0b3JMZW5ndGgiLCAicGFyc2VDbGFzc05hbWUiLCAibW9kaWZpZXJzIiwgImJyYWNrZXREZXB0aCIsICJtb2RpZmllclN0YXJ0IiwgInBvc3RmaXhNb2RpZmllclBvc2l0aW9uIiwgImluZGV4IiwgImN1cnJlbnRDaGFyYWN0ZXIiLCAiYmFzZUNsYXNzTmFtZVdpdGhJbXBvcnRhbnRNb2RpZmllciIsICJoYXNJbXBvcnRhbnRNb2RpZmllciIsICJzdGFydHNXaXRoIiwgImJhc2VDbGFzc05hbWUiLCAibWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJzb3J0TW9kaWZpZXJzIiwgInNvcnRlZE1vZGlmaWVycyIsICJ1bnNvcnRlZE1vZGlmaWVycyIsICJtb2RpZmllciIsICJzb3J0IiwgImNyZWF0ZUNvbmZpZ1V0aWxzIiwgIlNQTElUX0NMQVNTRVNfUkVHRVgiLCAibWVyZ2VDbGFzc0xpc3QiLCAiY2xhc3NMaXN0IiwgImNvbmZpZ1V0aWxzIiwgImNsYXNzR3JvdXBzSW5Db25mbGljdCIsICJjbGFzc05hbWVzIiwgInRyaW0iLCAicmVzdWx0IiwgIm9yaWdpbmFsQ2xhc3NOYW1lIiwgIkJvb2xlYW4iLCAidmFyaWFudE1vZGlmaWVyIiwgIm1vZGlmaWVySWQiLCAiY2xhc3NJZCIsICJpbmNsdWRlcyIsICJjb25mbGljdEdyb3VwcyIsICJpIiwgImdyb3VwIiwgInR3Sm9pbiIsICJhcmd1bWVudCIsICJyZXNvbHZlZFZhbHVlIiwgInN0cmluZyIsICJhcmd1bWVudHMiLCAidG9WYWx1ZSIsICJtaXgiLCAiayIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgImNyZWF0ZUNvbmZpZ0ZpcnN0IiwgImNyZWF0ZUNvbmZpZ1Jlc3QiLCAiY2FjaGVHZXQiLCAiY2FjaGVTZXQiLCAiZnVuY3Rpb25Ub0NhbGwiLCAiaW5pdFRhaWx3aW5kTWVyZ2UiLCAicmVkdWNlIiwgInByZXZpb3VzQ29uZmlnIiwgImNyZWF0ZUNvbmZpZ0N1cnJlbnQiLCAidGFpbHdpbmRNZXJnZSIsICJjYWNoZWRSZXN1bHQiLCAiYXBwbHkiLCAiZnJvbVRoZW1lIiwgInRoZW1lR2V0dGVyIiwgImFyYml0cmFyeVZhbHVlUmVnZXgiLCAiZnJhY3Rpb25SZWdleCIsICJzdHJpbmdMZW5ndGhzIiwgIlNldCIsICJ0c2hpcnRVbml0UmVnZXgiLCAibGVuZ3RoVW5pdFJlZ2V4IiwgImNvbG9yRnVuY3Rpb25SZWdleCIsICJzaGFkb3dSZWdleCIsICJpbWFnZVJlZ2V4IiwgImlzTGVuZ3RoIiwgImlzTnVtYmVyIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldElzQXJiaXRyYXJ5VmFsdWUiLCAiaXNMZW5ndGhPbmx5IiwgIk51bWJlciIsICJpc05hTiIsICJpc0FyYml0cmFyeU51bWJlciIsICJpc0ludGVnZXIiLCAiaXNQZXJjZW50IiwgImVuZHNXaXRoIiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiaXNUc2hpcnRTaXplIiwgInNpemVMYWJlbHMiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzTmV2ZXIiLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJpbWFnZUxhYmVscyIsICJpc0FyYml0cmFyeUltYWdlIiwgImlzSW1hZ2UiLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiaXNTaGFkb3ciLCAiaXNBbnkiLCAibGFiZWwiLCAidGVzdFZhbHVlIiwgImdldERlZmF1bHRDb25maWciLCAiY29sb3JzIiwgImZyb21UaGVtZSIsICJzcGFjaW5nIiwgImJsdXIiLCAiYnJpZ2h0bmVzcyIsICJib3JkZXJDb2xvciIsICJib3JkZXJSYWRpdXMiLCAiYm9yZGVyU3BhY2luZyIsICJib3JkZXJXaWR0aCIsICJjb250cmFzdCIsICJncmF5c2NhbGUiLCAiaHVlUm90YXRlIiwgImludmVydCIsICJnYXAiLCAiZ3JhZGllbnRDb2xvclN0b3BzIiwgImdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zIiwgImluc2V0IiwgIm1hcmdpbiIsICJvcGFjaXR5IiwgInBhZGRpbmciLCAic2F0dXJhdGUiLCAic2NhbGUiLCAic2VwaWEiLCAic2tldyIsICJzcGFjZSIsICJ0cmFuc2xhdGUiLCAiZ2V0T3ZlcnNjcm9sbCIsICJnZXRPdmVyZmxvdyIsICJnZXRTcGFjaW5nV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNBcmJpdHJhcnlWYWx1ZSIsICJnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSIsICJnZXRMZW5ndGhXaXRoRW1wdHlBbmRBcmJpdHJhcnkiLCAiaXNMZW5ndGgiLCAiaXNBcmJpdHJhcnlMZW5ndGgiLCAiZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkiLCAiaXNOdW1iZXIiLCAiZ2V0UG9zaXRpb25zIiwgImdldExpbmVTdHlsZXMiLCAiZ2V0QmxlbmRNb2RlcyIsICJnZXRBbGlnbiIsICJnZXRaZXJvQW5kRW1wdHkiLCAiZ2V0QnJlYWtzIiwgImdldE51bWJlckFuZEFyYml0cmFyeSIsICJjYWNoZVNpemUiLCAic2VwYXJhdG9yIiwgInRoZW1lIiwgImlzQW55IiwgImlzVHNoaXJ0U2l6ZSIsICJpc1BlcmNlbnQiLCAiY2xhc3NHcm91cHMiLCAiYXNwZWN0IiwgImNvbnRhaW5lciIsICJjb2x1bW5zIiwgImJveCIsICJkaXNwbGF5IiwgImZsb2F0IiwgImNsZWFyIiwgImlzb2xhdGlvbiIsICJvYmplY3QiLCAib3ZlcmZsb3ciLCAib3ZlcnNjcm9sbCIsICJwb3NpdGlvbiIsICJzdGFydCIsICJlbmQiLCAidG9wIiwgInJpZ2h0IiwgImJvdHRvbSIsICJsZWZ0IiwgInZpc2liaWxpdHkiLCAieiIsICJpc0ludGVnZXIiLCAiYmFzaXMiLCAiZmxleCIsICJncm93IiwgInNocmluayIsICJvcmRlciIsICJjb2wiLCAic3BhbiIsICJyb3ciLCAianVzdGlmeSIsICJjb250ZW50IiwgIml0ZW1zIiwgInNlbGYiLCAicCIsICJweCIsICJweSIsICJwcyIsICJwZSIsICJwdCIsICJwciIsICJwYiIsICJwbCIsICJtIiwgIm14IiwgIm15IiwgIm1zIiwgIm1lIiwgIm10IiwgIm1yIiwgIm1iIiwgIm1sIiwgInciLCAic2NyZWVuIiwgImgiLCAic2l6ZSIsICJ0ZXh0IiwgImZvbnQiLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAidHJhY2tpbmciLCAibGVhZGluZyIsICJsaXN0IiwgInBsYWNlaG9sZGVyIiwgImRlY29yYXRpb24iLCAiaW5kZW50IiwgImFsaWduIiwgIndoaXRlc3BhY2UiLCAiYnJlYWsiLCAiaHlwaGVucyIsICJiZyIsICJpc0FyYml0cmFyeVBvc2l0aW9uIiwgInJlcGVhdCIsICJpc0FyYml0cmFyeVNpemUiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJmcm9tIiwgInZpYSIsICJ0byIsICJyb3VuZGVkIiwgImJvcmRlciIsICJkaXZpZGUiLCAib3V0bGluZSIsICJyaW5nIiwgInNoYWRvdyIsICJpc0FyYml0cmFyeVNoYWRvdyIsICJmaWx0ZXIiLCAidGFibGUiLCAiY2FwdGlvbiIsICJ0cmFuc2l0aW9uIiwgImR1cmF0aW9uIiwgImVhc2UiLCAiZGVsYXkiLCAiYW5pbWF0ZSIsICJ0cmFuc2Zvcm0iLCAicm90YXRlIiwgIm9yaWdpbiIsICJhY2NlbnQiLCAiYXBwZWFyYW5jZSIsICJjdXJzb3IiLCAiY2FyZXQiLCAicmVzaXplIiwgInNjcm9sbCIsICJzbmFwIiwgInRvdWNoIiwgInNlbGVjdCIsICJmaWxsIiwgInN0cm9rZSIsICJzciIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJtZXJnZUNvbmZpZ3MiLCAiYmFzZUNvbmZpZyIsICJwcmVmaXgiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiZXh0ZW5kIiwgIm92ZXJyaWRlIiwgIm92ZXJyaWRlUHJvcGVydHkiLCAiY29uZmlnS2V5IiwgIm92ZXJyaWRlQ29uZmlnUHJvcGVydGllcyIsICJrZXkiLCAibWVyZ2VDb25maWdQcm9wZXJ0aWVzIiwgImJhc2VPYmplY3QiLCAib3ZlcnJpZGVLZXkiLCAib3ZlcnJpZGVWYWx1ZSIsICJ1bmRlZmluZWQiLCAib3ZlcnJpZGVPYmplY3QiLCAibWVyZ2VPYmplY3QiLCAibWVyZ2VWYWx1ZSIsICJjb25jYXQiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjb25maWdFeHRlbnNpb24iLCAiY3JlYXRlQ29uZmlnIiwgImNyZWF0ZVRhaWx3aW5kTWVyZ2UiLCAidHdNZXJnZSIsICJleHRlbmRUYWlsd2luZE1lcmdlIiwgImNuIiwgImlucHV0cyIsICJjbHN4IiwgInVzZUlzTXV0YXRpbmciLCAidG9LZWJhYkNhc2UiLCAic3RyaW5nIiwgIm1lcmdlQ2xhc3NlcyIsICJjbGFzc2VzIiwgImNsYXNzTmFtZSIsICJpbmRleCIsICJhcnJheSIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJJY29uIiwgImZvcndhcmRSZWYiLCAiY29sb3IiLCAic2l6ZSIsICJzdHJva2VXaWR0aCIsICJhYnNvbHV0ZVN0cm9rZVdpZHRoIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJpY29uTm9kZSIsICJyZXN0IiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgImRlZmF1bHRBdHRyaWJ1dGVzIiwgIm1lcmdlQ2xhc3NlcyIsICJ0YWciLCAiYXR0cnMiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJpY29uTmFtZSIsICJpY29uTm9kZSIsICJDb21wb25lbnQiLCAiZm9yd2FyZFJlZiIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNyZWF0ZUVsZW1lbnQiLCAiSWNvbiIsICJtZXJnZUNsYXNzZXMiLCAidG9LZWJhYkNhc2UiLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFycm93VXBXaWRlTmFycm93IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUhlbHAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3B5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29ybmVyRG93bkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJGaWx0ZXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJHcmlwVmVydGljYWwiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJLZXlSb3VuZCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1heGltaXplIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWluaW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNb3ZlRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVVcCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBhbmVsTGVmdENsb3NlIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0T3BlbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbk9mZiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlBpbiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlJlZnJlc2hDdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlRhYmxlMiIsICJjcmVhdGVMdWNpZGVJY29uIiwgIlgiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJjdmEiLCAianN4IiwgImJhZGdlVmFyaWFudHMiLCAiY3ZhIiwgIkJhZGdlIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInByb3BzIiwgImNuIiwgIlNsb3QiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJidXR0b25WYXJpYW50cyIsICJjdmEiLCAiQnV0dG9uIiwgImNsYXNzTmFtZSIsICJ2YXJpYW50IiwgInNpemUiLCAiYXNDaGlsZCIsICJwcm9wcyIsICJyZWYiLCAiU2xvdCIsICJjbiIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgIlBvcG92ZXJDb250ZW50IiwgImNsYXNzTmFtZSIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJqc3giLCAiY24iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnRQcm92aWRlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICIjY2xpZW50IiwgIiNvbmxpbmVNYW5hZ2VyIiwgIiNxdWVyeUZsYXZvciIsICIjdmVyc2lvbiIsICIjaXNNb3VudGVkIiwgIiNzdHlsZU5vbmNlIiwgIiNzaGFkb3dET01UYXJnZXQiLCAiI2J1dHRvblBvc2l0aW9uIiwgIiNwb3NpdGlvbiIsICIjaW5pdGlhbElzT3BlbiIsICIjZXJyb3JUeXBlcyIsICIjQ29tcG9uZW50IiwgIiNkaXNwb3NlIiwgImNvbmZpZyIsICJjbGllbnQiLCAicXVlcnlGbGF2b3IiLCAidmVyc2lvbiIsICJvbmxpbmVNYW5hZ2VyIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJjcmVhdGVTaWduYWwiLCAiaXNPcGVuIiwgImVsIiwgImRpc3Bvc2UiLCAicmVuZGVyIiwgIl9zZWxmJCIsICJidG5Qb3NpdGlvbiIsICJwb3MiLCAiZXJyb3JzIiwgInF1ZXJ5Q2xpZW50IiwgIkRldnRvb2xzIiwgImxhenkiLCAic2V0dXBTdHlsZVNoZWV0IiwgImNyZWF0ZUNvbXBvbmVudCIsICJtZXJnZVByb3BzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIiNvbkNsb3NlIiwgIm9uQ2xvc2UiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiYnV0dG9uUG9zaXRpb24iLCAicG9zaXRpb24iLCAiaW5pdGlhbElzT3BlbiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29scyIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0IiwgIm9ubGluZU1hbmFnZXIiLCAidXNlUXVlcnlDbGllbnQiLCAianN4IiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgInByb3BzIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInJlZiIsICJlcnJvclR5cGVzIiwgInN0eWxlTm9uY2UiLCAic2hhZG93RE9NVGFyZ2V0IiwgImRldnRvb2xzIiwgIlRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIiwgIm9ubGluZU1hbmFnZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzIiwgIlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsIiwgImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInRvYXN0IiwgIlNvbm5lciIsICJqc3giLCAiVG9hc3RlciIsICJwcm9wcyIsICJjcmVhdGVBZGFwdGVyUHJvdmlkZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZUhhc2hBZGFwdGVyIiwgInJhd0hhc2giLCAiaGFzaFBhcmFtcyIsICJzZXRIYXNoUGFyYW1zIiwgInVwZGF0ZVVybCIsICJ1cGRhdGVkIiwgImhpc3RvcnkiLCAicGF0aG5hbWUiLCAic2VhcmNoIiwgImhhc2giLCAidXJsIiwgImdldFNlYXJjaFBhcmFtc1NuYXBzaG90IiwgInJhdyIsICJoYW5kbGVIYXNoQ2hhbmdlIiwgIk51cXNIYXNoQWRhcHRlciIsICJqc3giLCAianN4cyIsICJxdWVyeUNsaWVudCIsICJRdWVyeUNsaWVudCIsICJTdHVkaW9Db250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgInByb3BzIiwgImNoaWxkcmVuIiwgIm90aGVyUHJvcHMiLCAiYWN0aXZlVGFibGUiLCAic2V0QWN0aXZlVGFibGUiLCAidXNlU3RhdGUiLCAiaXNGdWxsc2NyZWVuIiwgInNldElzRnVsbHNjcmVlbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInNldElzTmF2aWdhdGlvbk9wZW4iLCAib25FcnJvciIsICJlcnJvciIsICJ0b2FzdCIsICJlbWl0VGVsZW1ldHJ5RXZlbnQiLCAidXNlTWVtbyIsICJ0b2dnbGVGdWxsc2NyZWVuIiwgInByZXYiLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJRdWVyeUNsaWVudFByb3ZpZGVyIiwgIlJlYWN0UXVlcnlEZXZ0b29sczIiLCAiVG9hc3RlciIsICJOdXFzSGFzaEFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgImNvbnRleHQiLCAidXNlQ29udGV4dCIsICJnZXRSb3dJZCIsICJyb3ciLCAidGFibGUiLCAiaWQiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiYWRkUm93SWRUb1JvdyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgInJlc3VsdCIsICJyb3dzIiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIm5ld0RhdGEiLCAib2xkRGF0YSIsICJ1c2VRdWVyeSIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgInByb3BzIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInByZXZpb3VzRGF0YSIsICJwcmV2aW91c1F1ZXJ5IiwgInNjaGVtYSIsICJ0YWJsZSIsICJzaWduYWwiLCAiZXJyb3IiLCAicmVzdWx0cyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIml0ZW0iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJxdWVyeUtleVByZWZpeCIsICJ1c2VNdXRhdGlvbiIsICJwYXJhbXMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImNoYW5nZXMiLCAicm93IiwgIm92ZXJ3cml0ZUNhY2hlZFJvdyIsICJjaGFuZ2VkUm93IiwgInJvd0ZpbHRlciIsICJpbmZlclJvd0ZpbHRlciIsICJjYWNoZWRSb3ciLCAiY29sdW1uTmFtZSIsICJ2YWx1ZSIsICJvcmlnaW5hbFZhbHVlcyIsICJkZXRhaWxzIiwgInVuY2hhbmdlZFJvdyIsICJfX3BzX3VwZGF0ZWRfYXRfXyIsICJnZXRGaW5kZXJGbiIsICJ0YWJsZSIsICJ1cGRhdGVyRm4iLCAiZmluZGVyIiwgImNhY2hlZFJlc3VsdCIsICJjYWNoZWRSb3dzIiwgImNhY2hlZFJvd0luZGV4IiwgIm5ld1JvdyIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJzaG9ydCIsICJudXFzX2V4cG9ydHMiLCAiX19leHBvcnQiLCAia2V5TWFwIiwgInVybEtleXMiLCAidXNlUXVlcnlTdGF0ZSIsICJ1c2VRdWVyeVN0YXRlcyIsICJfX3JlRXhwb3J0IiwgIm51cXNfZXhwb3J0cyIsICJudXFzX3N0YXIiLCAidXNlUXVlcnlTdGF0ZU9yaWdpbmFsIiwgInVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWwiLCAia2V5TWFwIiwgInVybEtleXMiLCAiX0JSQU5EX1NZTUJPTCIsICJ1c2VRdWVyeVN0YXRlIiwgImtleSIsICJvcHRpb25zIiwgInVzZVF1ZXJ5U3RhdGVzIiwgImRlZmF1bHRGaWx0ZXIiLCAic2hvcnQiLCAiY291bnRGaWx0ZXJzUmVjdXJzaXZlIiwgImZpbHRlckdyb3VwIiwgImNvdW50IiwgImZpbHRlciIsICJ1c2VGaWx0ZXJpbmciLCAiZmlsdGVyUGFyYW0iLCAic2V0RmlsdGVyUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInVzZU1lbW8iLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlSXNNdXRhdGluZyIsICJ1c2VJc0luc2VydGluZyIsICJtdXRhdGlvbktleSIsICJ1c2VDYWxsYmFjayIsICJERUZBVUxUX1BBR0VfU0laRSIsICJwYWdpbmF0aW9uUGFyc2VycyIsICJ1c2VQYWdpbmF0aW9uIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzZXRQYWdpbmF0aW9uIiwgInVzZVF1ZXJ5U3RhdGVzIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAibmV3U3RhdGUiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZU11dGF0aW9uIiwgInVzZVF1ZXJ5Q2xpZW50IiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJ1c2VTZWxlY3Rpb24iLCAiZGF0YSIsICJhY3RpdmVUYWJsZSIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJwYWdpbmF0aW9uU3RhdGUiLCAidXNlUGFnaW5hdGlvbiIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzZXRSb3dTZWxlY3Rpb25TdGF0ZSIsICJ1c2VTdGF0ZSIsICJpc1NlbGVjdGluZyIsICJtdXRhdGUiLCAidXNlQWN0aXZlVGFibGVEZWxldGUiLCAidXNlRWZmZWN0IiwgImRlbGV0ZVNlbGVjdGlvbiIsICJyb3dzIiwgInJvdyIsICJ1c2VFZmZlY3QiLCAidXNlU3RhdGUiLCAidXNlU29ydGluZyIsICJzb3J0UGFyYW0iLCAic2V0U29ydFBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAicGFyc2VTb3J0aW5nIiwgIml0ZW0iLCAiY29sdW1uIiwgImRpcmVjdGlvbiIsICJlIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgIm5ld1NvcnRpbmdTdGF0ZSIsICJuZXdTdGF0ZSIsICJyZXNvbHZlZFN0YXRlIiwgInNvcnRTdHJpbmciLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiUmVhY3QiLCAianN4IiwgIlRhYmxlIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiVGFibGVIZWFkZXIiLCAiVGFibGVCb2R5IiwgIlRhYmxlRm9vdGVyIiwgIlRhYmxlUm93IiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAiVGFibGVDYXB0aW9uIiwgImlzVmFsaWRFbGVtZW50IiwgIkNvbnRleHRNZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiQ29udGV4dE1lbnVTdWJDb250ZW50IiwgIkNvbnRleHRNZW51Q29udGVudCIsICJDb250ZXh0TWVudUl0ZW0iLCAiQ29udGV4dE1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJDb250ZXh0TWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiQ29udGV4dE1lbnVMYWJlbCIsICJDb250ZXh0TWVudVNlcGFyYXRvciIsICJDb250ZXh0TWVudVNob3J0Y3V0IiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkQ2VsbENvbnRleHRNZW51IiwgInByb3BzIiwgImNoaWxkcmVuIiwgIkNvbnRleHRNZW51IiwgIkNvbnRleHRNZW51VHJpZ2dlciIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgImNvbnRlbnQiLCAiZXh0cmFjdFRleHRDb250ZW50IiwgImVycm9yIiwgIkNvcHkiLCAibm9kZSIsICJpc1ZhbGlkRWxlbWVudCIsICJqc3giLCAiQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImZvcndhcmRlZFByb3BzIiwgIlRhYmxlQ2VsbCIsICJjbiIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJqc3giLCAiQm9vbGVhbkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJEYXRlQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVtcHR5Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIkVudW1DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJKU09OQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bGxDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiTnVtZXJpY0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJSYXdDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiVGltZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJqc3giLCAiZ2V0Q2VsbCIsICJjZWxsIiwgImNvbHVtbiIsICJwcm9wcyIsICJ2YWx1ZSIsICJFbXB0eUNlbGwiLCAiTnVsbENlbGwiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgIkpTT05DZWxsIiwgIlJhd0NlbGwiLCAiRW51bUNlbGwiLCAiQm9vbGVhbkNlbGwiLCAiRGF0ZUNlbGwiLCAiVGltZUNlbGwiLCAiTnVtZXJpY0NlbGwiLCAiaXNPYmplY3RUeXBlIiwgImZvcndhcmRSZWYiLCAiQ2hlY2tib3hQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIkNoZWNrYm94IiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiQ2hlY2siLCAianN4IiwgIlNlbGVjdEhlYWRlckNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAidGFibGUiLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiQ2hlY2tib3giLCAidmFsdWUiLCAiZm9yd2FyZFJlZiIsICJGcmFnbWVudCIsICJqc3giLCAiU2VsZWN0Q2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAicmVmIiwgInN0eWxlIiwgImlzSGVhZGVyIiwgImZvcndhcmRlZFByb3BzIiwgInNlbGVjdENsYXNzZXMiLCAiY24iLCAiVGFibGVIZWFkIiwgIlRhYmxlQ2VsbCIsICJqc3giLCAiU2VsZWN0Um93Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJyb3ciLCAicmVhZG9ubHkiLCAiY2xhc3NOYW1lIiwgInN0eWxlIiwgInJlc3QiLCAiU2VsZWN0Q2VsbCIsICJDaGVja2JveCIsICJQb3BvdmVyUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJQb3BvdmVyQ2VsbENvbnRleHQiLCAiUG9wb3ZlckNlbGwiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAib3BlbiIsICJzZXRPcGVuIiwgIlBvcG92ZXJDZWxsVHJpZ2dlciIsICJvbkRvdWJsZUNsaWNrIiwgImNsYXNzTmFtZSIsICJyZWYiLCAidHJpZ2dlclJlZiIsICJub2RlIiwgImNuIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJhbGlnbiIsICJzaWRlT2Zmc2V0IiwgImV2ZW50IiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgImFjdGlvbnMiLCAiY29udGV4dCIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJoYW5kbGVLZXlEb3duIiwgImpzeCIsICJqc3hzIiwgIldyaXRlYWJsZUNlbGwiLCAicHJvcHMiLCAiY2VsbENvbXBvbmVudCIsICJpbnB1dENvbXBvbmVudCIsICJQb3BvdmVyQ2VsbCIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAiUG9wb3ZlckNlbGxDb250ZW50IiwgImNuIiwgImNsb3Nlc3RDZW50ZXIiLCAiRG5kQ29udGV4dCIsICJEcmFnT3ZlcmxheSIsICJLZXlib2FyZFNlbnNvciIsICJQb2ludGVyU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJTb3J0YWJsZUNvbnRleHQiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgInVzZVNvcnRhYmxlIiwgInZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJDU1MiLCAibW90aW9uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJjcmVhdGVQb3J0YWwiLCAic2hvcnQiLCAiY29lcmNlVG9WYWx1ZSIsICJjb2x1bW4iLCAib3BlcmF0b3IiLCAidmFsdWUiLCAiZGF0YVR5cGVHcm91cCIsICJjb2VyY2VUb1N0cmluZyIsICJEcm9wZG93bk1lbnVQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgImpzeHMiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiRHJvcGRvd25NZW51U3ViVHJpZ2dlciIsICJjbGFzc05hbWUiLCAiaW5zZXQiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25SaWdodCIsICJEcm9wZG93bk1lbnVTdWJDb250ZW50IiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAic2lkZU9mZnNldCIsICJEcm9wZG93bk1lbnVJdGVtIiwgIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIkNoZWNrIiwgIkRyb3Bkb3duTWVudVJhZGlvSXRlbSIsICJDaXJjbGUiLCAiRHJvcGRvd25NZW51TGFiZWwiLCAiRHJvcGRvd25NZW51U2VwYXJhdG9yIiwgIkRyb3Bkb3duTWVudVNob3J0Y3V0IiwgIlJlYWN0IiwgImpzeCIsICJJbnB1dCIsICJjbGFzc05hbWUiLCAidHlwZSIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAiU2VsZWN0UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIlNlbGVjdCIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvbkRvd24iLCAiU2VsZWN0U2Nyb2xsVXBCdXR0b24iLCAiQ2hldnJvblVwIiwgIlNlbGVjdFNjcm9sbERvd25CdXR0b24iLCAiU2VsZWN0Q29udGVudCIsICJwb3NpdGlvbiIsICJTZWxlY3RMYWJlbCIsICJTZWxlY3RJdGVtIiwgIkNoZWNrIiwgIlNlbGVjdFNlcGFyYXRvciIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJMZWFkaW5nT3BlcmF0b3JTZWxlY3QiLCAidmFsdWUiLCAib25WYWx1ZUNoYW5nZSIsICJkaXNhYmxlZCIsICJ0cmlnZ2VyQ2xhc3NOYW1lIiwgIlNlbGVjdCIsICJTZWxlY3RUcmlnZ2VyIiwgIlNlbGVjdFZhbHVlIiwgIlNlbGVjdENvbnRlbnQiLCAiU2VsZWN0SXRlbSIsICJEcmFnZ2FibGVGaWx0ZXJJdGVtUHJldmlldyIsICJhY3RpdmVJZCIsICJpdGVtcyIsICJ0YWJsZSIsICJhY3RpdmVJdGVtIiwgIml0ZW0iLCAibGVhZGluZ09wZXJhdG9yVmFsdWUiLCAic2hvd0xlYWRpbmdPcEZvck92ZXJsYXkiLCAiYWN0aXZlSXRlbUluZGV4IiwgInByZXZpb3VzSXRlbSIsICJGaWx0ZXJDb25kaXRpb24iLCAiRmlsdGVyR3JvdXBDb21wb25lbnQiLCAiRmlsdGVyTGlzdEl0ZW1zIiwgInBhcmVudEdyb3VwSWQiLCAib25VcGRhdGVJdGVtIiwgIm9uRGVsZXRlSXRlbSIsICJvblJlb3JkZXJJdGVtcyIsICJhY3RpdmVEcmFnSWQiLCAib25EcmFnU3RhcnQiLCAib25EcmFnRW5kU2lnbmFsIiwgInNvcnRhYmxlSXRlbUlkcyIsICJ1c2VNZW1vIiwgInNlbnNvcnMiLCAidXNlU2Vuc29ycyIsICJ1c2VTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJLZXlib2FyZFNlbnNvciIsICJzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMiLCAiRG5kQ29udGV4dCIsICJjbG9zZXN0Q2VudGVyIiwgImV2ZW50IiwgImFjdGl2ZSIsICJvdmVyIiwgIm9sZEluZGV4IiwgIm5ld0luZGV4IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiY3VycmVudEZpbHRlckl0ZW0iLCAiaW5kZXgiLCAic2hvd0xlYWRpbmdPcCIsICJsZWFkaW5nT3BWYWwiLCAib25MZWFkaW5nT3BDaGFuZ2VGbiIsICJpc0xlYWRpbmdPcFRhcmdldExhc3QiLCAicHJldkl0ZW0iLCAibmV3VmFsdWUiLCAidXBkYXRlZFByZXZJdGVtIiwgIlNvcnRhYmxlRmlsdGVySXRlbSIsICJ1cGRhdGVkRmlsdGVyIiwgImNyZWF0ZVBvcnRhbCIsICJEcmFnT3ZlcmxheSIsICJmaWx0ZXIiLCAib25VcGRhdGUiLCAib25EZWxldGUiLCAicGFyZW50RG5kSWQiLCAic2hvd0xlYWRpbmdPcGVyYXRvciIsICJvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSIsICJpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QiLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAic2V0Tm9kZVJlZiIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgInN0eWxlIiwgIkNTUyIsICJkcmFnSGFuZGxlUHJvcHMiLCAiaGFuZGxlQ29sdW1uQ2hhbmdlIiwgImhhbmRsZU9wZXJhdG9yQ2hhbmdlIiwgImhhbmRsZVZhbHVlQ2hhbmdlIiwgImUiLCAicmF3VmFsdWUiLCAiY29sdW1uSW5mbyIsICJjb2VyY2VUb1ZhbHVlIiwgImVkaXRlZFZhbHVlIiwgInNldEVkaXRlZFZhbHVlIiwgInVzZVN0YXRlIiwgImNvZXJjZVRvU3RyaW5nIiwgIm1vdGlvbiIsICJHcmlwVmVydGljYWwiLCAiY29sdW1uIiwgIklucHV0IiwgIkJ1dHRvbiIsICJYIiwgImdyb3VwIiwgImlzUm9vdCIsICJpc0V4cGFuZGVkIiwgInNldElzRXhwYW5kZWQiLCAic2V0QWN0aXZlRHJhZ0lkIiwgImhhbmRsZUFkZEZpbHRlciIsICJuZXdGaWx0ZXIiLCAic2hvcnQiLCAiaGFuZGxlQWRkR3JvdXAiLCAibmV3R3JvdXAiLCAidXBkYXRlSXRlbUluR3JvdXAiLCAidXBkYXRlZEZpbHRlck9yR3JvdXAiLCAibmV3RmlsdGVycyIsICJkZWxldGVJdGVtRnJvbUdyb3VwIiwgImhhbmRsZURyYWdTdGFydCIsICJoYW5kbGVEcmFnRW5kU2lnbmFsIiwgImhhbmRsZVJlb3JkZXJJdGVtcyIsICJyZW9yZGVyZWRGaWx0ZXJzIiwgImFycmF5TW92ZSIsICJyZW5kZXJHcm91cENvbnRlbnQiLCAiY24iLCAiQ2hldnJvbkRvd24iLCAiQ2hldnJvblJpZ2h0IiwgIkJhZGdlIiwgIkFuaW1hdGVOdW1iZXIiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQ2lyY2xlSGVscCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIlF1ZXJ5VmlzdWFsaXplciIsICJpc0FuZEdyb3VwT3BlbiIsICJmIiwgImkiLCAicmVzdWx0IiwgImlzTGFzdCIsICJvcGVyYXRvciIsICJGaWx0ZXJUcmVlIiwgInNldEZpbHRlciIsICJzZXRBcHBsaWVkRmlsdGVyIiwgIkRuZENvbnRleHQiLCAiTW91c2VTZW5zb3IiLCAidXNlU2Vuc29yIiwgInVzZVNlbnNvcnMiLCAiYXJyYXlNb3ZlIiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgIlNvcnRhYmxlQ29udGV4dCIsICJ1c2VTb3J0YWJsZSIsICJDU1MiLCAiZ2V0Q29yZVJvd01vZGVsIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0SXRlbSIsICJrZXkiLCAiaXRlbVZhbHVlIiwgImxvY2FsU3RvcmFnZSIsICJKU09OIiwgInBhcnNlIiwgInVzZUxvY2FsU3RvcmFnZSIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAidXNlRWZmZWN0IiwgImluaXRpYWxWYWx1ZSIsICJzZXR0ZXIiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlciIsICJvbGQiLCAibmV3VmFsIiwgInNldEl0ZW0iLCAic3RyaW5naWZ5IiwgImRlZmF1bHRUaGVtZSIsICJiYWNrZ3JvdW5kIiwgImJhY2tncm91bmRBbHQiLCAiZm9yZWdyb3VuZCIsICJncmF5IiwgImdyYXlBbHQiLCAiaW5wdXRCYWNrZ3JvdW5kQ29sb3IiLCAiaW5wdXRUZXh0Q29sb3IiLCAic3VjY2VzcyIsICJkYW5nZXIiLCAiYWN0aXZlIiwgIndhcm5pbmciLCAiVGhlbWVDb250ZXh0IiwgImNyZWF0ZUNvbnRleHQiLCAiVGhlbWVQcm92aWRlciIsICJfcmVmIiwgInRoZW1lIiwgInJlc3QiLCAiY3JlYXRlRWxlbWVudCIsICJQcm92aWRlciIsICJfZXh0ZW5kcyIsICJ1c2VUaGVtZSIsICJ1c2VDb250ZXh0IiwgInVzZU1lZGlhUXVlcnkiLCAicXVlcnkiLCAiaXNNYXRjaCIsICJzZXRJc01hdGNoIiwgIndpbmRvdyIsICJtYXRjaE1lZGlhIiwgIm1hdGNoZXMiLCAibWF0Y2hlciIsICJvbkNoYW5nZSIsICJhZGRMaXN0ZW5lciIsICJyZW1vdmVMaXN0ZW5lciIsICJpc1NlcnZlciIsICJzdHlsZWQiLCAidHlwZSIsICJuZXdTdHlsZXMiLCAicXVlcmllcyIsICJmb3J3YXJkUmVmIiwgInJlZiIsICJzdHlsZSIsICJtZWRpYVN0eWxlcyIsICJPYmplY3QiLCAiZW50cmllcyIsICJyZWR1Y2UiLCAiY3VycmVudCIsICJfcmVmMiIsICJ1c2VJc01vdW50ZWQiLCAibW91bnRlZFJlZiIsICJ1c2VSZWYiLCAiaXNNb3VudGVkIiwgIlBhbmVsIiwgIl9wcm9wcyIsICJmb250U2l6ZSIsICJmb250RmFtaWx5IiwgImRpc3BsYXkiLCAiYmFja2dyb3VuZENvbG9yIiwgImNvbG9yIiwgImZsZXhEaXJlY3Rpb24iLCAiZmxleCIsICJvdmVyZmxvdyIsICJoZWlnaHQiLCAiKG1heC13aWR0aDogNzAwcHgpIiwgImJvcmRlclRvcCIsICJCdXR0b24iLCAicHJvcHMiLCAiYXBwZWFyYW5jZSIsICJmb250V2VpZ2h0IiwgImJvcmRlciIsICJib3JkZXJSYWRpdXMiLCAicGFkZGluZyIsICJvcGFjaXR5IiwgImRpc2FibGVkIiwgInVuZGVmaW5lZCIsICJjdXJzb3IiLCAibGluZUhlaWdodCIsICJXZWJraXRBcHBlYXJhbmNlIiwgImJhY2tncm91bmRJbWFnZSIsICJiYWNrZ3JvdW5kUmVwZWF0IiwgImJhY2tncm91bmRQb3NpdGlvbiIsICJiYWNrZ3JvdW5kU2l6ZSIsICJFbnRyeSIsICJvdXRsaW5lIiwgIndvcmRCcmVhayIsICJMYWJlbCIsICJWYWx1ZSIsICJTdWJFbnRyaWVzIiwgIm1hcmdpbkxlZnQiLCAicGFkZGluZ0xlZnQiLCAiYm9yZGVyTGVmdCIsICJJbmZvIiwgIkV4cGFuZGVyIiwgImV4cGFuZGVkIiwgInRyYW5zaXRpb24iLCAidHJhbnNmb3JtIiwgIkRlZmF1bHRSZW5kZXJlciIsICJoYW5kbGVFbnRyeSIsICJsYWJlbCIsICJzdWJFbnRyaWVzIiwgInN1YkVudHJ5UGFnZXMiLCAidG9nZ2xlIiwgInBhZ2VTaXplIiwgInJlbmRlcmVyIiwgInZhbHVlU25hcHNob3QiLCAic2V0VmFsdWVTbmFwc2hvdCIsICJleHBhbmRlZFBhZ2VzIiwgInNldEV4cGFuZGVkUGFnZXMiLCAicmVmcmVzaFZhbHVlU25hcHNob3QiLCAibGVuZ3RoIiwgIkZyYWdtZW50IiwgIm9uQ2xpY2siLCAiU3RyaW5nIiwgInRvTG93ZXJDYXNlIiwgIm1hcCIsICJlbnRyeSIsICJpbmRleCIsICJpbmNsdWRlcyIsICJmaWx0ZXIiLCAiZCIsICJFeHBsb3JlciIsICJkZWZhdWx0RXhwYW5kZWQiLCAiZ2V0T3duUHJvcGVydHlOYW1lcyIsICJfcmVmMyIsICJkZXB0aCIsICJzZXRFeHBhbmRlZCIsICJzZXQiLCAicGF0aCIsICJtYWtlUHJvcGVydHkiLCAic3ViIiwgIm5ld1BhdGgiLCAiY29uY2F0IiwgInN1YkRlZmF1bHRFeHBhbmRlZCIsICJzdWJQYXRoIiwgIkFycmF5IiwgImlzQXJyYXkiLCAiaSIsICJTeW1ib2wiLCAiaXRlcmF0b3IiLCAiZnJvbSIsICJ2YWwiLCAiX3JlZjQiLCAicHVzaCIsICJzbGljZSIsICJMb2dvIiwgIndpZHRoIiwgInZpZXdCb3giLCAidmVyc2lvbiIsICJzdHJva2UiLCAic3Ryb2tlV2lkdGgiLCAiZmlsbCIsICJmaWxsUnVsZSIsICJpZCIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiaW5pdGlhbElzT3BlbiIsICJ0YWJsZSIsICJwYW5lbFByb3BzIiwgInRvZ2dsZUJ1dHRvblByb3BzIiwgImNvbnRhaW5lckVsZW1lbnQiLCAiQ29udGFpbmVyIiwgInJvb3RSZWYiLCAicGFuZWxSZWYiLCAiaXNPcGVuIiwgInNldElzT3BlbiIsICJwYW5lbFN0eWxlIiwgIm90aGVyUGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25TdHlsZSIsICJvblRvZ2dsZUNsaWNrIiwgIm90aGVyVG9nZ2xlQnV0dG9uUHJvcHMiLCAiY2xhc3NOYW1lIiwgIlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIiwgIm1heEhlaWdodCIsICJlIiwgIm1hcmdpbiIsICJkYW5nZXJvdXNseVNldElubmVySFRNTCIsICJfX2h0bWwiLCAibWluSGVpZ2h0IiwgImJvcmRlclJpZ2h0IiwgImp1c3RpZnlDb250ZW50IiwgImFsaWduSXRlbXMiLCAibWFyZ2luUmlnaHQiLCAiZmxleFdyYXAiLCAib3ZlcmZsb3dZIiwgImdldFN0YXRlIiwgImdldEFsbENvbHVtbnMiLCAiZ2V0Q29yZVJvd01vZGVsIiwgImdldEZpbHRlcmVkUm93TW9kZWwiLCAiZ2V0U29ydGVkUm93TW9kZWwiLCAiZ2V0R3JvdXBlZFJvd01vZGVsIiwgImdldEV4cGFuZGVkUm93TW9kZWwiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJqc3giLCAiU2tlbGV0b24iLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlciIsICJwcm9wcyIsICJoZWFkZXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImZsZXhSZW5kZXIiLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJNb3ZlRG93biIsICJNb3ZlVXAiLCAiRHJvcGRvd25NZW51IiwgIkRyb3Bkb3duTWVudVRyaWdnZXIiLCAiQnV0dG9uIiwgIkNoZXZyb25Eb3duIiwgIkRyb3Bkb3duTWVudUNvbnRlbnQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJBcnJvd0Rvd25XaWRlTmFycm93IiwgIkFycm93VXBXaWRlTmFycm93IiwgIlgiLCAiUGluT2ZmIiwgIlBpbiIsICJlIiwgImpzeCIsICJEYXRhR3JpZExvYWRpbmdCYXIiLCAiY2xhc3NOYW1lIiwgImNuIiwgImpzeCIsICJqc3hzIiwgIkRhdGFHcmlkUGFnaW5hdGlvbiIsICJwcm9wcyIsICJ0YWJsZSIsICJ2YXJpYW50IiwgInBhZ2VJbmRleCIsICJwYWdlQ291bnQiLCAiQnV0dG9uIiwgIkNoZXZyb25zTGVmdCIsICJDaGV2cm9uTGVmdCIsICJJbnB1dCIsICJlIiwgIkNoZXZyb25SaWdodCIsICJDaGV2cm9uc1JpZ2h0IiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiY29sdW1uIiwgImtpbmQiLCAiaXNQaW5uZWQiLCAiaXNMZWZ0UGlubmVkIiwgImlzUmlnaHRQaW5uZWQiLCAiaXNTZWxlY3RDb2x1bW4iLCAiY24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRHJhZ2dhYmxlSGVhZGVyQ2VsbCIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJjbGFzc05hbWUiLCAiaGVhZGVyIiwgImNvbW1vblN0eWxlIiwgImRpc2FibGVEcmFnZ2luZyIsICJhdHRyaWJ1dGVzIiwgImxpc3RlbmVycyIsICJ0cmFuc2Zvcm0iLCAidHJhbnNpdGlvbiIsICJzZXROb2RlUmVmIiwgImlzRHJhZ2dpbmciLCAidXNlU29ydGFibGUiLCAiZHJhZ1N0eWxlIiwgIkNTUyIsICJjb21tb25DbGFzcyIsICJjbiIsICJkcmFnQ2xhc3MiLCAiVGFibGVIZWFkIiwgIkRhdGFHcmlkIiwgImNvbHVtbkRlZnMiLCAiZ2V0QmVmb3JlUm93cyIsICJpc0xvYWRpbmciLCAiaXNQcm9jZXNzaW5nIiwgIm9uUGFnaW5hdGlvbkNoYW5nZSIsICJvblJvd1NlbGVjdGlvbkNoYW5nZSIsICJvblNvcnRpbmdDaGFuZ2UiLCAicGFnZUNvdW50IiwgInBhZ2luYXRpb25TdGF0ZSIsICJyb3dzIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNvcnRpbmdTdGF0ZSIsICJjb2x1bW5PcmRlciIsICJzZXRDb2x1bW5PcmRlciIsICJ1c2VTdGF0ZSIsICJjb2x1bW5QaW5uaW5nIiwgInNldENvbHVtblBpbm5pbmciLCAiY29sdW1uU2l6aW5nIiwgInNldENvbHVtblNpemluZyIsICJzb3J0aW5nIiwgInVzZU1lbW8iLCAidG9Tb3J0aW5nU3RhdGUiLCAiZGlzcGxheUxvYWRlciIsICJ1c2VFZmZlY3QiLCAiYWNjZXNzb3JLZXkiLCAiaGFuZGxlRHJhZ0VuZCIsICJhY3RpdmUiLCAib3ZlciIsICJvcmRlciIsICJhY3RpdmVJbmRleCIsICJvdmVySW5kZXgiLCAiYXJyYXlNb3ZlIiwgIm1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJNb3VzZVNlbnNvciIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJnZXRDb3JlUm93TW9kZWwiLCAiX19wc19yb3dpZCIsICJ1cGRhdGVyT3JWYWx1ZSIsICJvbGQiLCAidG9Tb3J0T3JkZXJJdGVtcyIsICJSZWFjdFRhYmxlRGV2dG9vbHMiLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgIkRuZENvbnRleHQiLCAiVGFibGUiLCAiVGFibGVIZWFkZXIiLCAiaGVhZGVyR3JvdXAiLCAiVGFibGVSb3ciLCAiU29ydGFibGVDb250ZXh0IiwgImhvcml6b250YWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImhlYWRlckZuIiwgIkhlYWRlckNvbXBvbmVudCIsICJwaW5uaW5nU3R5bGVzIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRGF0YUdyaWRIZWFkZXIiLCAiVGFibGVCb2R5IiwgInJvdyIsICJjZWxsIiwgImkiLCAiQ2VsbCIsICJUYWJsZUNlbGwiLCAiU2tlbGV0b24iLCAiRGF0YUdyaWRQYWdpbmF0aW9uIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiZnJvbSIsICJpdGVtIiwgIlRvb2x0aXBQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIlRvb2x0aXBDb250ZW50IiwgImNsYXNzTmFtZSIsICJzaWRlT2Zmc2V0IiwgInByb3BzIiwgInJlZiIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY29sdW1uIiwgIlRvb2x0aXBQcm92aWRlciIsICJUb29sdGlwIiwgIlRvb2x0aXBUcmlnZ2VyIiwgIktleVJvdW5kIiwgIlRvb2x0aXBDb250ZW50IiwgImlzT2JqZWN0VHlwZSIsICJtb3Rpb24iLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiTGFiZWxQcmltaXRpdmUiLCAiY3ZhIiwgIlJlYWN0IiwgImpzeCIsICJsYWJlbFZhcmlhbnRzIiwgImN2YSIsICJMYWJlbCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlN3aXRjaFByaW1pdGl2ZXMiLCAiUmVhY3QiLCAianN4IiwgIlN3aXRjaCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIklucHV0QWN0aW9ucyIsICJvblNhdmUiLCAib25DYW5jZWwiLCAib25DbG9zZSIsICJvbk51bGxDaGFuZ2UiLCAiaXNOdWxsIiwgInJlYWRvbmx5IiwgIkNvcm5lckRvd25MZWZ0IiwgIlN3aXRjaCIsICJjaGVja2VkIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkJvb2xlYW5JbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAidmFsdWVUb1N1Ym1pdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAibW90aW9uIiwgIlN3aXRjaCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAidXNlSW5wdXQiLCAicHJvcHMiLCAiaW5pdGlhbFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgImV2ZW50IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJEYXRlSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkRGF0ZSIsICJ1c2VNZW1vIiwgImRhdGUiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJ1c2VDYWxsYmFjayIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJFbnVtSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInZhbHVlIiwgIm9wdGlvbnMiLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJpbml0aWFsVmFsdWUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImhhbmRsZVNlbGVjdE9wdGlvbiIsICJvcHRpb24iLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJiYWRnZVZhcmlhbnRzIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJ1c2VTdGF0ZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJKc29uSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVDaGFuZ2UiLCAiZSIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImNoZWNrZWQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAiUmVhY3QiLCAianNvblZhbHVlIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTnVtZXJpY0lucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgIm51bWVyaWNWYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiTGFiZWwiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIlJhd0lucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgInVzZUNhbGxiYWNrIiwgInVzZU1lbW8iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiZGF5anMiLCAibG9jYWxpemVkRm9ybWF0IiwgIlRpbWVJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJmb3JtYXR0ZWRUaW1lIiwgInVzZU1lbW8iLCAiaGFzVGltZXpvbmUiLCAiZGF0ZSIsICJ0aW1lUmVnZXgiLCAibWF0Y2giLCAiaG91cnMiLCAibWludXRlcyIsICJ0ek9mZnNldCIsICJwZXJpb2QiLCAiaGFuZGxlT25TdWJtaXQiLCAiZXZlbnQiLCAiaGFuZGxlSW5wdXRTdWJtaXQiLCAidXNlQ2FsbGJhY2siLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIklucHV0IiwgIklucHV0QWN0aW9ucyIsICJqc3giLCAiZ2V0SW5wdXQiLCAicHJvcHMiLCAiY2VsbCIsICJjb2x1bW4iLCAib25TdWJtaXQiLCAiZ3JvdXAiLCAib3B0aW9ucyIsICJpc0FycmF5IiwgInJlYWRvbmx5IiwgImNlbGxWYWx1ZSIsICJ2YWx1ZSIsICJEYXRlSW5wdXQiLCAiVGltZUlucHV0IiwgIkpzb25JbnB1dCIsICJCb29sZWFuSW5wdXQiLCAiRW51bUlucHV0IiwgIk51bWVyaWNJbnB1dCIsICJSYXdJbnB1dCIsICJpc09iamVjdFR5cGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgIkZyYWdtZW50IiwgImpzeCIsICJTdGFnZWRSb3dzIiwgInByb3BzIiwgInBhcmVudFRhYmxlIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJyZWFkb25seSIsICJ1c2VJc0luc2VydGluZyIsICJ1cGRhdGVTdGFnZWRSb3ciLCAicm93SW5kZXgiLCAicGFydGlhbFJvdyIsICJwcmV2Um93cyIsICJuZXdSb3dzIiwgImNvbHVtbkRlZnMiLCAiY29sdW1uIiwgIkVtcHR5Q2VsbCIsICJjZWxsIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2YWx1ZSIsICJ0YWJsZSIsICJ1c2VSZWFjdFRhYmxlIiwgIm9taXQiLCAicm93IiwgImkiLCAiVGFibGVSb3ciLCAiaiIsICJDZWxsIiwgImdldENvbHVtblBpbm5pbmdTdHlsZXMiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiQWN0aXZlVGFibGVWaWV3IiwgIl9wcm9wcyIsICJpc011dGF0aW5nIiwgInVzZUlzTXV0YXRpbmciLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJpc0Z1bGxzY3JlZW4iLCAidG9nZ2xlRnVsbHNjcmVlbiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgInNvcnRpbmdTdGF0ZSIsICJzZXRTb3J0aW5nU3RhdGUiLCAidXNlU29ydGluZyIsICJwYWdpbmF0aW9uU3RhdGUiLCAic2V0UGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAic3RhZ2VkUm93cyIsICJzZXRTdGFnZWRSb3dzIiwgInVzZVN0YXRlIiwgImFwcGxpZWRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJlZGl0aW5nRmlsdGVyIiwgInNldEVkaXRpbmdGaWx0ZXIiLCAidG90YWxFZGl0aW5nRmlsdGVycyIsICJ1c2VGaWx0ZXJpbmciLCAiZGF0YSIsICJpc0ZldGNoaW5nIiwgInJlZmV0Y2giLCAidXNlQWN0aXZlVGFibGVRdWVyeSIsICJkZWxldGVTZWxlY3Rpb24iLCAiaXNTZWxlY3RpbmciLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU2VsZWN0aW9uIiwgInJlYWRvbmx5IiwgImNvbHVtbiIsICJpc0luc2VydGluZyIsICJ1c2VJc0luc2VydGluZyIsICJpbnNlcnQiLCAidXNlQWN0aXZlVGFibGVJbnNlcnQiLCAidXBkYXRlIiwgInVzZUFjdGl2ZVRhYmxlVXBkYXRlIiwgInVzZUVmZmVjdCIsICJzYXZlU3RhZ2VkUm93cyIsICJ0b2FzdCIsICJuZXdTdGFnZWRSb3ciLCAib2xkIiwgImRyb3BTdGFnZWRSb3dzIiwgImhhbmRsZUNlbGxJbnB1dFN1Ym1pdCIsICJ2YWx1ZSIsICJyb3ciLCAib25GaWx0ZXJPcGVuQ2hhbmdlIiwgIm9wZW4iLCAiY29uY3JldGVDb2x1bW5EZWZzIiwgIkRhdGFHcmlkSGVhZGVyQ2VsbCIsICJjZWxsIiwgInByb3BzIiwgIldyaXRlYWJsZUNlbGwiLCAiZ2V0Q2VsbCIsICJnZXRJbnB1dCIsICJ2aXJ0dWFsQ29sdW1uRGVmcyIsICJ0YWJsZSIsICJTZWxlY3RIZWFkZXJDZWxsIiwgIlNlbGVjdFJvd0NlbGwiLCAiY29sdW1uRGVmcyIsICJkZWZhdWx0Q29sdW1uU29ydGluZyIsICJCdXR0b24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiUGFuZWxMZWZ0T3BlbiIsICJQb3BvdmVyIiwgIlBvcG92ZXJUcmlnZ2VyIiwgImNuIiwgIkZpbHRlciIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIlBvcG92ZXJDb250ZW50IiwgIkZpbHRlclRyZWUiLCAiZmlsdGVyIiwgIlJlZnJlc2hDdyIsICJNaW5pbWl6ZSIsICJNYXhpbWl6ZSIsICJEYXRhR3JpZCIsICJTdGFnZWRSb3dzIiwgImdldFBhZ2VDb3VudCIsICJyb3dDb3VudCIsICJwYWdlU2l6ZSIsICJwYWdlQ291bnQiLCAiYSIsICJiIiwgImFNZXRhIiwgImJNZXRhIiwgIlNsb3QiLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXVpZHY0IiwgInVzZVF1ZXJ5IiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInVzZUludHJvc3BlY3Rpb24iLCAiYWRhcHRlciIsICJ1c2VTdHVkaW8iLCAidXNlUXVlcnkiLCAic2lnbmFsIiwgImVycm9yIiwgImludHJvc3BlY3Rpb24iLCAiY3R4IiwgInVzZUFjdGl2ZVRhYmxlIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAiZW1pdFRlbGVtZXRyeUV2ZW50IiwgInVzZVN0dWRpbyIsICJpbnRyb3NwZWN0aW9uIiwgImRhdGFVcGRhdGVkQXQiLCAidXNlSW50cm9zcGVjdGlvbiIsICJpc0xvYWRpbmciLCAiSU5JVElBTF9EQVRBX1VQREFURURfQVQiLCAidGFibGVzIiwgInVzZU1lbW8iLCAidG90YWxUYWJsZUNvdW50IiwgInN1bSIsICJzY2hlbWEiLCAiZmlyc3RUYWJsZSIsICJ0YWJsZUFuZFNjaGVtYSIsICJzZXRUYWJsZUFuZFNjaGVtYSIsICJ1c2VRdWVyeVN0YXRlcyIsICJ2IiwgInNldFBhZ2VQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInNldFNvcnRQYXJhbSIsICJ1c2VFZmZlY3QiLCAidGFibGVGcm9tUGFyYW0iLCAidCIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VDYWxsYmFjayIsICJuZXdUYWJsZSIsICJ1dWlkdjQiLCAianN4IiwgImpzeHMiLCAiTmF2aWdhdGlvbiIsICJjbGFzc05hbWUiLCAidGFibGVzIiwgImFjdGl2ZVRhYmxlIiwgImlzTG9hZGluZyIsICJoYW5kbGVUYWJsZUNoYW5nZSIsICJ1c2VBY3RpdmVUYWJsZSIsICJzaWRlQmFyQ2xhc3NlcyIsICJjbiIsICJ0YWJsZSIsICJfIiwgImluZGV4IiwgIlNrZWxldG9uIiwgIkJsb2NrIiwgImxhYmVsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIlRhYmxlMiIsICJJdGVtIiwgImFzQ2hpbGQiLCAiaXNBY3RpdmUiLCAic2l6ZSIsICJ3cmFwQ2hpbGRyZW5JblNwYW4iLCAiU2xvdCIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImNvbnRhaW5lckNsYXNzZXMiLCAiY24iLCAiQW5pbWF0ZVByZXNlbmNlIiwgIm1vdGlvbiIsICJOYXZpZ2F0aW9uIiwgIkFjdGl2ZVRhYmxlVmlldyJdCn0K
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vdWkvc3R1ZGlvL1N0dWRpby50c3giLCAiLi4vLi4vdWkvaG9va3MvdXNlLWFjdGl2ZS12aWV3LnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jb250ZXh0LnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5LWRldnRvb2xzQDUuNzIuMl9AdGFuc3RhY2srcmVhY3QtcXVlcnlANS43Mi4yX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzL3NyYy9SZWFjdFF1ZXJ5RGV2dG9vbHMudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcXVlcnktZGV2dG9vbHNANS43Mi4yL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcXVlcnktZGV2dG9vbHMvYnVpbGQvaW5kZXguanMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC1xdWVyeS1kZXZ0b29sc0A1LjcyLjJfQHRhbnN0YWNrK3JlYWN0LXF1ZXJ5QDUuNzIuMl9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC1xdWVyeS1kZXZ0b29scy9zcmMvUmVhY3RRdWVyeURldnRvb2xzUGFuZWwudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtcXVlcnktZGV2dG9vbHNANS43Mi4yX0B0YW5zdGFjaytyZWFjdC1xdWVyeUA1LjcyLjJfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtcXVlcnktZGV2dG9vbHMvc3JjL2luZGV4LnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc29ubmVyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vTnVxc0hhc2hBZGFwdGVyLnRzeCIsICIuLi8uLi91aS9ob29rcy9udXFzLnRzIiwgIi4uLy4uL3VpL2xpYi91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY2xhc3MtZ3JvdXAtdXRpbHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2xydS1jYWNoZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvcGFyc2UtY2xhc3MtbmFtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvY29uZmlnLXV0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90YWlsd2luZC1tZXJnZUAyLjUuMi9ub2RlX21vZHVsZXMvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xpYi9tZXJnZS1jbGFzc2xpc3QudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL3R3LWpvaW4udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2NyZWF0ZS10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZnJvbS10aGVtZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdmFsaWRhdG9ycy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvZGVmYXVsdC1jb25maWcudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL21lcmdlLWNvbmZpZ3MudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RhaWx3aW5kLW1lcmdlQDIuNS4yL25vZGVfbW9kdWxlcy90YWlsd2luZC1tZXJnZS9zcmMvbGliL2V4dGVuZC10YWlsd2luZC1tZXJnZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vdGFpbHdpbmQtbWVyZ2VAMi41LjIvbm9kZV9tb2R1bGVzL3RhaWx3aW5kLW1lcmdlL3NyYy9saWIvdHctbWVyZ2UudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL0FjdGl2ZVRhYmxlVmlldy50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvc2hhcmVkL3NyYy91dGlscy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2RlZmF1bHRBdHRyaWJ1dGVzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvSWNvbi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2NyZWF0ZUx1Y2lkZUljb24udHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3cudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jYWxlbmRhci50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZWNrLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1kb3duLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbi1yaWdodC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NoZXZyb24tdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaGV2cm9ucy1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvY2hldnJvbnMtcmlnaHQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jaXJjbGUtaGVscC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NpcmNsZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2NvcHkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9jb3JuZXItZG93bi1sZWZ0LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZmlsdGVyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvZ3JpcC12ZXJ0aWNhbC50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL2hhc2gudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXktcm91bmQudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9rZXkudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9tYWlsLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvbWF4aW1pemUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9taW5pbWl6ZS50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtZG93bi50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL21vdmUtdXAudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9wYW5lbC1sZWZ0LWNsb3NlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGFuZWwtbGVmdC1vcGVuLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGhvbmUudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy9waW4tb2ZmLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcGluLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMvcmVmcmVzaC1jdy50cyIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbHVjaWRlLXJlYWN0QDAuNDY2LjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3Qvc3JjL2ljb25zL3RhYmxlLTIudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2x1Y2lkZS1yZWFjdEAwLjQ2Ni4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L3NyYy9pY29ucy91c2VyLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9sdWNpZGUtcmVhY3RAMC40NjYuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL2x1Y2lkZS1yZWFjdC9zcmMvaWNvbnMveC50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2JhZGdlLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2J1dHRvbi50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS9wb3BvdmVyLnRzeCIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLWluc2VydC50cyIsICIuLi8uLi91aS9ob29rcy91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdC50cyIsICIuLi8uLi91aS9ob29rcy91c2UtYWN0aXZlLXRhYmxlLXF1ZXJ5LnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtdXBkYXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1maWx0ZXJpbmcudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWlzLWluc2VydGluZy50cyIsICIuLi8uLi91aS9ob29rcy91c2UtcGFnaW5hdGlvbi50cyIsICIuLi8uLi91aS9ob29rcy91c2Utc2VsZWN0aW9uLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUtZGVsZXRlLnRzIiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1zb3J0aW5nLnRzIiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL2dldC1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Cb29sZWFuQ2VsbC50c3giLCAiLi4vLi4vdWkvY29tcG9uZW50cy91aS90YWJsZS50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY29udGV4dC1tZW51LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9DZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9EYXRlQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvRW1wdHlDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9FbnVtQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvSlNPTkNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL051bGxDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9OdW1lcmljQ2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvUmF3Q2VsbC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2NlbGwvVGltZUNlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdEhlYWRlckNlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3gudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdFJvd0NlbGwudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9jZWxsL1NlbGVjdENlbGwudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vY2VsbC9Xcml0ZWFibGVDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vRmlsdGVyVHJlZS50c3giLCAiLi4vLi4vbGliL2NvbnZlcnNpb25VdGlscy50cyIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnUudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvaW5wdXQudHN4IiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvc2VsZWN0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZC50c3giLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvdXNlTG9jYWxTdG9yYWdlLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3RoZW1lLnRzeCIsICIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHRhbnN0YWNrK3JlYWN0LXRhYmxlLWRldnRvb2xzQDguMjEuM19yZWFjdC1kb21AMTguMy4wX3JlYWN0QDE4LjMuMC9ub2RlX21vZHVsZXMvQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzL3NyYy91c2VNZWRpYVF1ZXJ5LnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3V0aWxzLnRzIiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL3N0eWxlZENvbXBvbmVudHMudHMiLCAiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytyZWFjdC10YWJsZS1kZXZ0b29sc0A4LjIxLjNfcmVhY3QtZG9tQDE4LjMuMF9yZWFjdEAxOC4zLjAvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9yZWFjdC10YWJsZS1kZXZ0b29scy9zcmMvRXhwbG9yZXIudHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL0xvZ28udHN4IiwgIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AdGFuc3RhY2srcmVhY3QtdGFibGUtZGV2dG9vbHNAOC4yMS4zX3JlYWN0LWRvbUAxOC4zLjBfcmVhY3RAMTguMy4wL25vZGVfbW9kdWxlcy9AdGFuc3RhY2svcmVhY3QtdGFibGUtZGV2dG9vbHMvc3JjL2luZGV4LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3NrZWxldG9uLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZEhlYWRlci50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRMb2FkaW5nQmFyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vZ3JpZC9EYXRhR3JpZFBhZ2luYXRpb24udHN4IiwgIi4uLy4uL3VpL3N0dWRpby9ncmlkL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nLnRzIiwgIi4uLy4uL3VpL2NvbXBvbmVudHMvdWkvdG9vbHRpcC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2dyaWQvRGF0YUdyaWRIZWFkZXJDZWxsLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvZ2V0LWlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvQm9vbGVhbklucHV0LnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL2xhYmVsLnRzeCIsICIuLi8uLi91aS9jb21wb25lbnRzL3VpL3N3aXRjaC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L2lucHV0LWFjdGlvbnMudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC9EYXRlSW5wdXQudHN4IiwgIi4uLy4uL3VpL3N0dWRpby9pbnB1dC91c2UtaW5wdXQudHMiLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0VudW1JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L0pzb25JbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L051bWVyaWNJbnB1dC50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL2lucHV0L1Jhd0lucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vaW5wdXQvVGltZUlucHV0LnRzeCIsICIuLi8uLi91aS9zdHVkaW8vU3RhZ2VkUm93cy50c3giLCAiLi4vLi4vdWkvc3R1ZGlvL05hdmlnYXRpb24udHN4IiwgIi4uLy4uL3VpL2hvb2tzL3VzZS1hY3RpdmUtdGFibGUudHMiLCAiLi4vLi4vdWkvaG9va3MvdXNlLWludHJvc3BlY3Rpb24udHMiLCAiLi4vLi4vdWkvc3R1ZGlvL3NjaGVtYS9WaXN1YWxpc2VyLnRzeCIsICIuLi8uLi91aS9zdHVkaW8vc2NoZW1hL1NjaGVtYVZpZXcudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2RhdGFcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVZpZXcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS12aWV3XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IEFjdGl2ZVRhYmxlVmlldyB9IGZyb20gXCIuL0FjdGl2ZVRhYmxlVmlld1wiO1xuaW1wb3J0IHsgU3R1ZGlvQ29udGV4dFByb3ZpZGVyLCB1c2VTdHVkaW8gfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uIH0gZnJvbSBcIi4vTmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgU2NoZW1hVmlldyB9IGZyb20gXCIuL3NjaGVtYS9TY2hlbWFWaWV3XCI7XG5cbmV4cG9ydCB0eXBlIFN0dWRpb1RlbGVtZXRyeUV2ZW50ID0ge1xuICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIjtcbiAgcGF5bG9hZDoge1xuICAgIGV2ZW50X2lkOiBzdHJpbmc7XG4gICAgdGltZXN0YW1wOiBzdHJpbmc7XG4gICAgdXNlcl9pZD86IHN0cmluZztcbiAgICB3b3Jrc3BhY2VfaWQ/OiBzdHJpbmc7XG4gICAgb3JnYW5pemF0aW9uX2lkPzogc3RyaW5nO1xuICAgIGVtYmVkZGluZ190eXBlPzogc3RyaW5nO1xuICAgIHZlbmRvcl9pZD86IHN0cmluZztcbiAgICB0YWJsZV9jb3VudDogbnVtYmVyO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdHVkaW9Qcm9wcyB7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIE1haW4gU3R1ZGlvIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGRhdGFiYXNlIHZpc3VhbGl6YXRpb24gYW5kIG1hbmFnZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN0dWRpbyhwcm9wczogU3R1ZGlvUHJvcHMpIHtcbiAgY29uc3QgeyBhZGFwdGVyLCBvbkVycm9yLCBvblRlbGVtZXRyeUV2ZW50IH0gPSBwcm9wcztcblxuICBpZiAoIWFkYXB0ZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiTm8gYWRhcHRlciBwcm92aWRlZCB0byBTdHVkaW8gY29tcG9uZW50XCIpO1xuICAgIHJldHVybiA8ZGl2PkVycm9yOiBObyBhZGFwdGVyIHByb3ZpZGVkPC9kaXY+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R1ZGlvQ29udGV4dFByb3ZpZGVyIGFkYXB0ZXI9e2FkYXB0ZXJ9IG9uRXJyb3I9e29uRXJyb3J9IG9uVGVsZW1ldHJ5RXZlbnQ9e29uVGVsZW1ldHJ5RXZlbnR9PlxuICAgICAgPFN0dWRpb0NvbnRlbnQgLz5cbiAgICA8L1N0dWRpb0NvbnRleHRQcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU3R1ZGlvQ29udGVudCgpIHtcbiAgY29uc3QgeyBpc0Z1bGxzY3JlZW4sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGFjdGl2ZVZpZXcgfSA9IHVzZUFjdGl2ZVZpZXcoKTtcblxuICBjb25zdCBjb250YWluZXJDbGFzc2VzID0gY24oXG4gICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXctZnVsbCBwcy1taW4taC0wIHBzLW1heC1oLWZ1bGxcIixcbiAgICBpc0Z1bGxzY3JlZW4gJiYgXCJwcy1maXhlZCBwcy1pbnNldC0wIHBzLXotWzk5OTldIHBzLWJnLWJhY2tncm91bmQgcHMtcC0yXCIsXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGRhdGEtZnVsbHNjcmVlbj17aXNGdWxsc2NyZWVufSBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWdhcC0wIHBzLXctZnVsbCBwcy1iZy1uZXV0cmFsLTUwIHBzLXJlbGF0aXZlIHBzLW1heC1oLWZ1bGwgcHMtbWluLWgtZnVsbCBwcy1yb3VuZGVkLWxnXCI+XG4gICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBpbml0aWFsPXt7IHdpZHRoOiAwLCBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgd2lkdGg6IFwiYXV0b1wiLCBvcGFjaXR5OiAxIH19XG4gICAgICAgICAgICAgIGV4aXQ9e3sgd2lkdGg6IDAsIG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4xNCB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbiAvPlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuXG4gICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtZmxleCBwcy13LWZ1bGwgcHMtYmctbmV1dHJhbC0xMDAgcHMtZmxleC1jb2wgcHMtcC1weCBwcy1yb3VuZGVkLWxnIHBzLXNlbGYtc3RhcnQgcHMtaC1mdWxsIHBzLW1pbi1oLWZ1bGwgcHMtbWF4LWgtZnVsbCBwcy1vdmVyZmxvdy1jbGlwXCJcbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjE0IH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWN0aXZlVmlldyA9PT0gXCJ0YWJsZXNcIiA/IDxBY3RpdmVUYWJsZVZpZXcgLz4gOiA8U2NoZW1hVmlldyAvPn1cbiAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBTdHVkaW9WaWV3LCB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbi8qKlxuICogSG9vayB0byBlbmNhcHN1bGF0ZSBhbGwgbG9naWMgZm9yIG1hbmFnaW5nIHRoZSBhY3RpdmUgdmlldy5cbiAqIEhhbmRsZXMgc3luY2luZyB3aXRoIFVSTCBwYXJhbXMgYW5kIGV4cG9zZXMgYSBzaW1wbGUgQVBJIGZvciBjb25zdW1lcnMuXG4gKiBTaG91bGQgb25seSBiZSB1c2VkIHdpdGhpbiBTdHVkaW8gY29udGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGl2ZVZpZXcoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVmlldywgc2V0QWN0aXZlVmlldyB9ID0gdXNlU3R1ZGlvKCk7XG5cbiAgLy8gR2V0IGFsbCB0aGUgcGFyYW1zIHdlIG1pZ2h0IG5lZWQgdG8gY2xlYW4gdXBcbiAgY29uc3QgW3ZpZXdQYXJhbSwgc2V0Vmlld1BhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJ2aWV3XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwidGFibGVzXCIgYXMgU3R1ZGlvVmlldyxcbiAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+ICh2IGFzIFN0dWRpb1ZpZXcpIHx8IFwidGFibGVzXCIsXG4gICAgc2VyaWFsaXplOiAodjogU3R1ZGlvVmlldyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgfSk7XG5cbiAgLy8gQ2xlYW4gdXAgVVJMIHBhcmFtcyB0aGF0IGFyZSBub3QgbmVlZGVkIGZvciBzY2hlbWEgdmlzdWFsaXNlclxuICBjb25zdCBjbGVhblVybFBhcmFtc0ZvclNjaGVtYVZpc3VhbGlzZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IGhhc2ggYW5kIGNyZWF0ZSBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAgICBjb25zdCBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhoYXNoKTtcblxuICAgIC8vIFJlbW92ZSBhbGwgcGFyYW1zIGV4Y2VwdCAndmlldydcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIEFycmF5LmZyb20oc2VhcmNoUGFyYW1zLmtleXMoKSkpIHtcbiAgICAgIGlmIChwYXJhbSAhPT0gXCJ2aWV3XCIpIHtcbiAgICAgICAgc2VhcmNoUGFyYW1zLmRlbGV0ZShwYXJhbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIHZpZXcgcGFyYW0gaXMgc2V0IHRvIHNjaGVtYS12aXN1YWxpc2VyXG4gICAgc2VhcmNoUGFyYW1zLnNldChcInZpZXdcIiwgXCJzY2hlbWEtdmlzdWFsaXNlclwiKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgVVJMXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIGAjJHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gKTtcbiAgfSwgW10pO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB2aWV3IHdpdGggVVJMIHBhcmFtXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHZpZXdQYXJhbSAmJiAodmlld1BhcmFtID09PSBcInRhYmxlc1wiIHx8IHZpZXdQYXJhbSA9PT0gXCJzY2hlbWEtdmlzdWFsaXNlclwiKSkge1xuICAgICAgc2V0QWN0aXZlVmlldyh2aWV3UGFyYW0pO1xuICAgIH1cbiAgfSwgW3ZpZXdQYXJhbSwgc2V0QWN0aXZlVmlld10pO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGFjdGl2ZSB2aWV3IGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZVZpZXdDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VmlldzogU3R1ZGlvVmlldykgPT4ge1xuICAgICAgaWYgKGFjdGl2ZVZpZXcgIT09IG5ld1ZpZXcpIHtcbiAgICAgICAgc2V0QWN0aXZlVmlldyhuZXdWaWV3KTtcblxuICAgICAgICAvLyBDbGVhbiB1cCBVUkwgcGFyYW1zIHdoZW4gc3dpdGNoaW5nIHRvIHNjaGVtYSB2aXN1YWxpc2VyXG4gICAgICAgIGlmIChuZXdWaWV3ID09PSBcInNjaGVtYS12aXN1YWxpc2VyXCIpIHtcbiAgICAgICAgICBjbGVhblVybFBhcmFtc0ZvclNjaGVtYVZpc3VhbGlzZXIoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGb3IgdGFibGVzIHZpZXcsIGp1c3QgdXBkYXRlIHRoZSB2aWV3IHBhcmFtXG4gICAgICAgICAgdm9pZCBzZXRWaWV3UGFyYW0obmV3Vmlldyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVWaWV3LCBzZXRBY3RpdmVWaWV3LCBzZXRWaWV3UGFyYW0sIGNsZWFuVXJsUGFyYW1zRm9yU2NoZW1hVmlzdWFsaXNlcl0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVWaWV3LFxuICAgIGhhbmRsZVZpZXdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgUXVlcnlDbGllbnQsIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5pbXBvcnQgeyBSZWFjdFF1ZXJ5RGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5LWRldnRvb2xzXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwic29ubmVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IFRvYXN0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zb25uZXJcIjtcbmltcG9ydCB7IE51cXNIYXNoQWRhcHRlciB9IGZyb20gXCIuL051cXNIYXNoQWRhcHRlclwiO1xuaW1wb3J0IHsgU3R1ZGlvVGVsZW1ldHJ5RXZlbnQgfSBmcm9tIFwiLi9TdHVkaW9cIjtcblxuLy8gRGVmaW5lIHRoZSBhdmFpbGFibGUgdmlld3MgaW4gdGhlIHN0dWRpb1xuZXhwb3J0IHR5cGUgU3R1ZGlvVmlldyA9IFwidGFibGVzXCIgfCBcInNjaGVtYS12aXN1YWxpc2VyXCI7XG5cbi8qKlxuICogU3R1ZGlvIGNvbnRleHQgdmFsdWUgaW50ZXJmYWNlXG4gKi9cbmludGVyZmFjZSBTdHVkaW9Db250ZXh0VmFsdWUge1xuICBhY3RpdmVUYWJsZTogVGFibGUgfCBudWxsO1xuICBhY3RpdmVWaWV3OiBTdHVkaW9WaWV3O1xuICBhZGFwdGVyOiBBZGFwdGVyO1xuICBzZXRBY3RpdmVUYWJsZTogKHRhYmxlOiBUYWJsZSB8IG51bGwpID0+IHZvaWQ7XG4gIHNldEFjdGl2ZVZpZXc6ICh2aWV3OiBTdHVkaW9WaWV3KSA9PiB2b2lkO1xuICBvbkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBlbWl0VGVsZW1ldHJ5RXZlbnQ6IChhcmdzOiBTdHVkaW9UZWxlbWV0cnlFdmVudCkgPT4gdm9pZDtcbiAgLy8gVUkgc3RhdGVcbiAgaXNGdWxsc2NyZWVuOiBib29sZWFuO1xuICB0b2dnbGVGdWxsc2NyZWVuOiAoKSA9PiB2b2lkO1xuICBpc05hdmlnYXRpb25PcGVuOiBib29sZWFuO1xuICB0b2dnbGVOYXZpZ2F0aW9uOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBxdWVyeUNsaWVudCA9IG5ldyBRdWVyeUNsaWVudCgpO1xuXG4vKipcbiAqIENvbnRleHQgZm9yIHNoYXJpbmcgU3R1ZGlvIHN0YXRlIGFjcm9zcyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IFN0dWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PFN0dWRpb0NvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IHR5cGUgU3R1ZGlvQ29udGV4dFByb3ZpZGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIGFkYXB0ZXI6IEFkYXB0ZXI7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBvblRlbGVtZXRyeUV2ZW50PzogKGFyZ3M6IFN0dWRpb1RlbGVtZXRyeUV2ZW50KSA9PiB2b2lkO1xufT47XG5cbmV4cG9ydCBmdW5jdGlvbiBTdHVkaW9Db250ZXh0UHJvdmlkZXIocHJvcHM6IFN0dWRpb0NvbnRleHRQcm92aWRlclByb3BzKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBbYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlXSA9IHVzZVN0YXRlPFRhYmxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFthY3RpdmVWaWV3LCBzZXRBY3RpdmVWaWV3XSA9IHVzZVN0YXRlPFN0dWRpb1ZpZXc+KFwidGFibGVzXCIpO1xuICBjb25zdCBbaXNGdWxsc2NyZWVuLCBzZXRJc0Z1bGxzY3JlZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNOYXZpZ2F0aW9uT3Blbiwgc2V0SXNOYXZpZ2F0aW9uT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuICBsZXQgb25FcnJvciA9IHByb3BzLm9uRXJyb3I7XG4gIG9uRXJyb3IgPz89IChlcnJvcjogRXJyb3IpID0+IHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGVtaXRUZWxlbWV0cnlFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5vblRlbGVtZXRyeUV2ZW50ID8/ICgoKSA9PiB7fSk7XG4gIH0sIFtwcm9wcy5vblRlbGVtZXRyeUV2ZW50XSk7XG5cbiAgY29uc3QgdG9nZ2xlRnVsbHNjcmVlbiA9ICgpID0+IHNldElzRnVsbHNjcmVlbigocHJldikgPT4gIXByZXYpO1xuICBjb25zdCB0b2dnbGVOYXZpZ2F0aW9uID0gKCkgPT4gc2V0SXNOYXZpZ2F0aW9uT3BlbigocHJldikgPT4gIXByZXYpO1xuICByZXR1cm4gKFxuICAgIDxRdWVyeUNsaWVudFByb3ZpZGVyIGNsaWVudD17cXVlcnlDbGllbnR9PlxuICAgICAgPFJlYWN0UXVlcnlEZXZ0b29scyAvPlxuICAgICAgPFRvYXN0ZXIgLz5cbiAgICAgIDxOdXFzSGFzaEFkYXB0ZXI+XG4gICAgICAgIDxTdHVkaW9Db250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIC4uLm90aGVyUHJvcHMsXG4gICAgICAgICAgICBhY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXcsXG4gICAgICAgICAgICBpc0Z1bGxzY3JlZW4sXG4gICAgICAgICAgICBzZXRBY3RpdmVUYWJsZSxcbiAgICAgICAgICAgIHNldEFjdGl2ZVZpZXcsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgZW1pdFRlbGVtZXRyeUV2ZW50LFxuICAgICAgICAgICAgdG9nZ2xlRnVsbHNjcmVlbixcbiAgICAgICAgICAgIGlzTmF2aWdhdGlvbk9wZW4sXG4gICAgICAgICAgICB0b2dnbGVOYXZpZ2F0aW9uLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvU3R1ZGlvQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvTnVxc0hhc2hBZGFwdGVyPlxuICAgIDwvUXVlcnlDbGllbnRQcm92aWRlcj5cbiAgKTtcbn1cblxuLyoqXG4gKiBIb29rIHRvIGFjY2VzcyBTdHVkaW8gY29udGV4dFxuICogQHRocm93cyBFcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgU3R1ZGlvLlByb3ZpZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHVkaW8oKTogU3R1ZGlvQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoU3R1ZGlvQ29udGV4dCk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYHVzZVN0dWRpb2AgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBTdHVkaW9Db250ZXh0LlByb3ZpZGVyYFwiKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIiwgIid1c2UgY2xpZW50J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBvbmxpbmVNYW5hZ2VyLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcbmltcG9ydCB7IFRhbnN0YWNrUXVlcnlEZXZ0b29scyB9IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHtcbiAgRGV2dG9vbHNCdXR0b25Qb3NpdGlvbixcbiAgRGV2dG9vbHNFcnJvclR5cGUsXG4gIERldnRvb2xzUG9zaXRpb24sXG59IGZyb20gJ0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scydcbmltcG9ydCB0eXBlIHsgUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2dG9vbHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNldCB0aGlzIHRydWUgaWYgeW91IHdhbnQgdGhlIGRldiB0b29scyB0byBkZWZhdWx0IHRvIGJlaW5nIG9wZW5cbiAgICovXG4gIGluaXRpYWxJc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIFJlYWN0IFF1ZXJ5IGxvZ28gdG8gb3BlbiBhbmQgY2xvc2UgdGhlIGRldnRvb2xzIHBhbmVsLlxuICAgKiAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCdcbiAgICogRGVmYXVsdHMgdG8gJ2JvdHRvbS1yaWdodCcuXG4gICAqL1xuICBidXR0b25Qb3NpdGlvbj86IERldnRvb2xzQnV0dG9uUG9zaXRpb25cbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgUmVhY3QgUXVlcnkgZGV2dG9vbHMgcGFuZWwuXG4gICAqICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnXG4gICAqIERlZmF1bHRzIHRvICdib3R0b20nLlxuICAgKi9cbiAgcG9zaXRpb24/OiBEZXZ0b29sc1Bvc2l0aW9uXG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzKFxuICBwcm9wczogRGV2dG9vbHNPcHRpb25zLFxuKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQocHJvcHMuY2xpZW50KVxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHtcbiAgICBidXR0b25Qb3NpdGlvbixcbiAgICBwb3NpdGlvbixcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGVycm9yVHlwZXMsXG4gICAgc3R5bGVOb25jZSxcbiAgICBzaGFkb3dET01UYXJnZXQsXG4gIH0gPSBwcm9wc1xuICBjb25zdCBbZGV2dG9vbHNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgbmV3IFRhbnN0YWNrUXVlcnlEZXZ0b29scyh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb24sXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGluaXRpYWxJc09wZW4sXG4gICAgICBlcnJvclR5cGVzLFxuICAgICAgc3R5bGVOb25jZSxcbiAgICAgIHNoYWRvd0RPTVRhcmdldCxcbiAgICB9KSxcbiAgKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0Q2xpZW50KHF1ZXJ5Q2xpZW50KVxuICB9LCBbcXVlcnlDbGllbnQsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidXR0b25Qb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0QnV0dG9uUG9zaXRpb24oYnV0dG9uUG9zaXRpb24pXG4gICAgfVxuICB9LCBbYnV0dG9uUG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgZGV2dG9vbHMuc2V0UG9zaXRpb24ocG9zaXRpb24pXG4gICAgfVxuICB9LCBbcG9zaXRpb24sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEluaXRpYWxJc09wZW4oaW5pdGlhbElzT3BlbiB8fCBmYWxzZSlcbiAgfSwgW2luaXRpYWxJc09wZW4sIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRldnRvb2xzLnNldEVycm9yVHlwZXMoZXJyb3JUeXBlcyB8fCBbXSlcbiAgfSwgW2Vycm9yVHlwZXMsIGRldnRvb2xzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkge1xuICAgICAgZGV2dG9vbHMubW91bnQocmVmLmN1cnJlbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRldnRvb2xzLnVubW91bnQoKVxuICAgIH1cbiAgfSwgW2RldnRvb2xzXSlcblxuICByZXR1cm4gPGRpdiBkaXI9XCJsdHJcIiBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIiByZWY9e3JlZn0+PC9kaXY+XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCByZW5kZXIsIGxhenksIHNldHVwU3R5bGVTaGVldCwgY3JlYXRlQ29tcG9uZW50LCBtZXJnZVByb3BzIH0gZnJvbSAnLi9jaHVuay9IUjdZWFo1SC5qcyc7XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHMudHN4XG52YXIgVGFuc3RhY2tRdWVyeURldnRvb2xzID0gY2xhc3Mge1xuICAjY2xpZW50O1xuICAjb25saW5lTWFuYWdlcjtcbiAgI3F1ZXJ5Rmxhdm9yO1xuICAjdmVyc2lvbjtcbiAgI2lzTW91bnRlZCA9IGZhbHNlO1xuICAjc3R5bGVOb25jZTtcbiAgI3NoYWRvd0RPTVRhcmdldDtcbiAgI2J1dHRvblBvc2l0aW9uO1xuICAjcG9zaXRpb247XG4gICNpbml0aWFsSXNPcGVuO1xuICAjZXJyb3JUeXBlcztcbiAgI0NvbXBvbmVudDtcbiAgI2Rpc3Bvc2U7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHF1ZXJ5Rmxhdm9yLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG9ubGluZU1hbmFnZXIsXG4gICAgICBidXR0b25Qb3NpdGlvbixcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgaW5pdGlhbElzT3BlbixcbiAgICAgIGVycm9yVHlwZXMsXG4gICAgICBzdHlsZU5vbmNlLFxuICAgICAgc2hhZG93RE9NVGFyZ2V0XG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgfVxuICBzZXRCdXR0b25Qb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI2J1dHRvblBvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRQb3NpdGlvbihwb3NpdGlvbikge1xuICAgIHRoaXMuI3Bvc2l0aW9uWzFdKHBvc2l0aW9uKTtcbiAgfVxuICBzZXRJbml0aWFsSXNPcGVuKGlzT3Blbikge1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW5bMV0oaXNPcGVuKTtcbiAgfVxuICBzZXRFcnJvclR5cGVzKGVycm9yVHlwZXMpIHtcbiAgICB0aGlzLiNlcnJvclR5cGVzWzFdKGVycm9yVHlwZXMpO1xuICB9XG4gIHNldENsaWVudChjbGllbnQpIHtcbiAgICB0aGlzLiNjbGllbnRbMV0oY2xpZW50KTtcbiAgfVxuICBtb3VudChlbCkge1xuICAgIGlmICh0aGlzLiNpc01vdW50ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGlzIGFscmVhZHkgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGlzcG9zZSA9IHJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBfc2VsZiQgPSB0aGlzO1xuICAgICAgY29uc3QgW2J0blBvc2l0aW9uXSA9IHRoaXMuI2J1dHRvblBvc2l0aW9uO1xuICAgICAgY29uc3QgW3Bvc10gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtpc09wZW5dID0gdGhpcy4jaW5pdGlhbElzT3BlbjtcbiAgICAgIGNvbnN0IFtlcnJvcnNdID0gdGhpcy4jZXJyb3JUeXBlcztcbiAgICAgIGNvbnN0IFtxdWVyeUNsaWVudF0gPSB0aGlzLiNjbGllbnQ7XG4gICAgICBsZXQgRGV2dG9vbHM7XG4gICAgICBpZiAodGhpcy4jQ29tcG9uZW50KSB7XG4gICAgICAgIERldnRvb2xzID0gdGhpcy4jQ29tcG9uZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRGV2dG9vbHMgPSBsYXp5KCgpID0+IGltcG9ydCgnLi9EZXZ0b29sc0NvbXBvbmVudC9DUElPWlM1WC5qcycpKTtcbiAgICAgICAgdGhpcy4jQ29tcG9uZW50ID0gRGV2dG9vbHM7XG4gICAgICB9XG4gICAgICBzZXR1cFN0eWxlU2hlZXQodGhpcy4jc3R5bGVOb25jZSwgdGhpcy4jc2hhZG93RE9NVGFyZ2V0KTtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGV2dG9vbHMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBnZXQgcXVlcnlGbGF2b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jcXVlcnlGbGF2b3I7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3ZlcnNpb247XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbmxpbmVNYW5hZ2VyKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI29ubGluZU1hbmFnZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBzaGFkb3dET01UYXJnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9zZWxmJC4jc2hhZG93RE9NVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGdldCBjbGllbnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHF1ZXJ5Q2xpZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBidXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYnRuUG9zaXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwb3MoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGluaXRpYWxJc09wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGlzT3BlbigpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgZXJyb3JUeXBlcygpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3JzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9LCBlbCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB0aGlzLiNkaXNwb3NlID0gZGlzcG9zZTtcbiAgfVxuICB1bm1vdW50KCkge1xuICAgIGlmICghdGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBub3QgbW91bnRlZFwiKTtcbiAgICB9XG4gICAgdGhpcy4jZGlzcG9zZT8uKCk7XG4gICAgdGhpcy4jaXNNb3VudGVkID0gZmFsc2U7XG4gIH1cbn07XG5cbi8vIHNyYy9UYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbC50c3hcbnZhciBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCA9IGNsYXNzIHtcbiAgI2NsaWVudDtcbiAgI29ubGluZU1hbmFnZXI7XG4gICNxdWVyeUZsYXZvcjtcbiAgI3ZlcnNpb247XG4gICNpc01vdW50ZWQgPSBmYWxzZTtcbiAgI3N0eWxlTm9uY2U7XG4gICNzaGFkb3dET01UYXJnZXQ7XG4gICNidXR0b25Qb3NpdGlvbjtcbiAgI3Bvc2l0aW9uO1xuICAjaW5pdGlhbElzT3BlbjtcbiAgI2Vycm9yVHlwZXM7XG4gICNvbkNsb3NlO1xuICAjQ29tcG9uZW50O1xuICAjZGlzcG9zZTtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3IsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgb25saW5lTWFuYWdlcixcbiAgICAgIGJ1dHRvblBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBpbml0aWFsSXNPcGVuLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlXG4gICAgfSA9IGNvbmZpZztcbiAgICB0aGlzLiNjbGllbnQgPSBjcmVhdGVTaWduYWwoY2xpZW50KTtcbiAgICB0aGlzLiNxdWVyeUZsYXZvciA9IHF1ZXJ5Rmxhdm9yO1xuICAgIHRoaXMuI3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuI29ubGluZU1hbmFnZXIgPSBvbmxpbmVNYW5hZ2VyO1xuICAgIHRoaXMuI3N0eWxlTm9uY2UgPSBzdHlsZU5vbmNlO1xuICAgIHRoaXMuI3NoYWRvd0RPTVRhcmdldCA9IHNoYWRvd0RPTVRhcmdldDtcbiAgICB0aGlzLiNidXR0b25Qb3NpdGlvbiA9IGNyZWF0ZVNpZ25hbChidXR0b25Qb3NpdGlvbik7XG4gICAgdGhpcy4jcG9zaXRpb24gPSBjcmVhdGVTaWduYWwocG9zaXRpb24pO1xuICAgIHRoaXMuI2luaXRpYWxJc09wZW4gPSBjcmVhdGVTaWduYWwoaW5pdGlhbElzT3Blbik7XG4gICAgdGhpcy4jZXJyb3JUeXBlcyA9IGNyZWF0ZVNpZ25hbChlcnJvclR5cGVzKTtcbiAgICB0aGlzLiNvbkNsb3NlID0gY3JlYXRlU2lnbmFsKG9uQ2xvc2UpO1xuICB9XG4gIHNldEJ1dHRvblBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jYnV0dG9uUG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldFBvc2l0aW9uKHBvc2l0aW9uKSB7XG4gICAgdGhpcy4jcG9zaXRpb25bMV0ocG9zaXRpb24pO1xuICB9XG4gIHNldEluaXRpYWxJc09wZW4oaXNPcGVuKSB7XG4gICAgdGhpcy4jaW5pdGlhbElzT3BlblsxXShpc09wZW4pO1xuICB9XG4gIHNldEVycm9yVHlwZXMoZXJyb3JUeXBlcykge1xuICAgIHRoaXMuI2Vycm9yVHlwZXNbMV0oZXJyb3JUeXBlcyk7XG4gIH1cbiAgc2V0Q2xpZW50KGNsaWVudCkge1xuICAgIHRoaXMuI2NsaWVudFsxXShjbGllbnQpO1xuICB9XG4gIHNldE9uQ2xvc2Uob25DbG9zZSkge1xuICAgIHRoaXMuI29uQ2xvc2VbMV0oKCkgPT4gb25DbG9zZSk7XG4gIH1cbiAgbW91bnQoZWwpIHtcbiAgICBpZiAodGhpcy4jaXNNb3VudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXZ0b29scyBpcyBhbHJlYWR5IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGRpc3Bvc2UgPSByZW5kZXIoKCkgPT4ge1xuICAgICAgY29uc3QgX3NlbGYkID0gdGhpcztcbiAgICAgIGNvbnN0IFtidG5Qb3NpdGlvbl0gPSB0aGlzLiNidXR0b25Qb3NpdGlvbjtcbiAgICAgIGNvbnN0IFtwb3NdID0gdGhpcy4jcG9zaXRpb247XG4gICAgICBjb25zdCBbaXNPcGVuXSA9IHRoaXMuI2luaXRpYWxJc09wZW47XG4gICAgICBjb25zdCBbZXJyb3JzXSA9IHRoaXMuI2Vycm9yVHlwZXM7XG4gICAgICBjb25zdCBbcXVlcnlDbGllbnRdID0gdGhpcy4jY2xpZW50O1xuICAgICAgY29uc3QgW29uQ2xvc2VdID0gdGhpcy4jb25DbG9zZTtcbiAgICAgIGxldCBEZXZ0b29scztcbiAgICAgIGlmICh0aGlzLiNDb21wb25lbnQpIHtcbiAgICAgICAgRGV2dG9vbHMgPSB0aGlzLiNDb21wb25lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBEZXZ0b29scyA9IGxhenkoKCkgPT4gaW1wb3J0KCcuL0RldnRvb2xzUGFuZWxDb21wb25lbnQvT0tGNkU0NVIuanMnKSk7XG4gICAgICAgIHRoaXMuI0NvbXBvbmVudCA9IERldnRvb2xzO1xuICAgICAgfVxuICAgICAgc2V0dXBTdHlsZVNoZWV0KHRoaXMuI3N0eWxlTm9uY2UsIHRoaXMuI3NoYWRvd0RPTVRhcmdldCk7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERldnRvb2xzLCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IHF1ZXJ5Rmxhdm9yKCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3F1ZXJ5Rmxhdm9yO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiN2ZXJzaW9uO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25saW5lTWFuYWdlcigpIHtcbiAgICAgICAgICByZXR1cm4gX3NlbGYkLiNvbmxpbmVNYW5hZ2VyO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgc2hhZG93RE9NVGFyZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBfc2VsZiQuI3NoYWRvd0RPTVRhcmdldDtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBnZXQgY2xpZW50KCkge1xuICAgICAgICAgIHJldHVybiBxdWVyeUNsaWVudCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgYnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIGJ0blBvc2l0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcG9zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBpbml0aWFsSXNPcGVuKCkge1xuICAgICAgICAgIHJldHVybiBpc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGVycm9yVHlwZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9ycygpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbG9zZSgpIHtcbiAgICAgICAgICByZXR1cm4gb25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSwgZWwpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IHRydWU7XG4gICAgdGhpcy4jZGlzcG9zZSA9IGRpc3Bvc2U7XG4gIH1cbiAgdW5tb3VudCgpIHtcbiAgICBpZiAoIXRoaXMuI2lzTW91bnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGV2dG9vbHMgaXMgbm90IG1vdW50ZWRcIik7XG4gICAgfVxuICAgIHRoaXMuI2Rpc3Bvc2U/LigpO1xuICAgIHRoaXMuI2lzTW91bnRlZCA9IGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgeyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHMsIFRhbnN0YWNrUXVlcnlEZXZ0b29sc1BhbmVsIH07XG4iLCAiJ3VzZSBjbGllbnQnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IG9ubGluZU1hbmFnZXIsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHsgVGFuc3RhY2tRdWVyeURldnRvb2xzUGFuZWwgfSBmcm9tICdAdGFuc3RhY2svcXVlcnktZGV2dG9vbHMnXG5pbXBvcnQgdHlwZSB7IERldnRvb2xzRXJyb3JUeXBlIH0gZnJvbSAnQHRhbnN0YWNrL3F1ZXJ5LWRldnRvb2xzJ1xuaW1wb3J0IHR5cGUgeyBRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuZXhwb3J0IGludGVyZmFjZSBEZXZ0b29sc1BhbmVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDdXN0b20gaW5zdGFuY2Ugb2YgUXVlcnlDbGllbnRcbiAgICovXG4gIGNsaWVudD86IFF1ZXJ5Q2xpZW50XG4gIC8qKlxuICAgKiBVc2UgdGhpcyBzbyB5b3UgY2FuIGRlZmluZSBjdXN0b20gZXJyb3JzIHRoYXQgY2FuIGJlIHNob3duIGluIHRoZSBkZXZ0b29scy5cbiAgICovXG4gIGVycm9yVHlwZXM/OiBBcnJheTxEZXZ0b29sc0Vycm9yVHlwZT5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHBhc3MgYSBub25jZSB0byB0aGUgc3R5bGUgdGFnIHRoYXQgaXMgYWRkZWQgdG8gdGhlIGRvY3VtZW50IGhlYWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKSBub25jZSB0byBhbGxvdyBpbmxpbmUgc3R5bGVzLlxuICAgKi9cbiAgc3R5bGVOb25jZT86IHN0cmluZ1xuICAvKipcbiAgICogVXNlIHRoaXMgc28geW91IGNhbiBhdHRhY2ggdGhlIGRldnRvb2wncyBzdHlsZXMgdG8gc3BlY2lmaWMgZWxlbWVudCBpbiB0aGUgRE9NLlxuICAgKi9cbiAgc2hhZG93RE9NVGFyZ2V0PzogU2hhZG93Um9vdFxuXG4gIC8qKlxuICAgKiBDdXN0b20gc3R5bGVzIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAgICogQGRlZmF1bHQgeyBoZWlnaHQ6ICc1MDBweCcgfVxuICAgKiBAZXhhbXBsZSB7IGhlaWdodDogJzEwMCUnIH1cbiAgICogQGV4YW1wbGUgeyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9XG4gICAqL1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZGV2dG9vbHMgcGFuZWwgaXMgY2xvc2VkXG4gICAqL1xuICBvbkNsb3NlPzogKCkgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVhY3RRdWVyeURldnRvb2xzUGFuZWwoXG4gIHByb3BzOiBEZXZ0b29sc1BhbmVsT3B0aW9ucyxcbik6IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGwge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KHByb3BzLmNsaWVudClcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB7IGVycm9yVHlwZXMsIHN0eWxlTm9uY2UsIHNoYWRvd0RPTVRhcmdldCB9ID0gcHJvcHNcbiAgY29uc3QgW2RldnRvb2xzXSA9IFJlYWN0LnVzZVN0YXRlKFxuICAgIG5ldyBUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCh7XG4gICAgICBjbGllbnQ6IHF1ZXJ5Q2xpZW50LFxuICAgICAgcXVlcnlGbGF2b3I6ICdSZWFjdCBRdWVyeScsXG4gICAgICB2ZXJzaW9uOiAnNScsXG4gICAgICBvbmxpbmVNYW5hZ2VyLFxuICAgICAgYnV0dG9uUG9zaXRpb246ICdib3R0b20tbGVmdCcsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBpbml0aWFsSXNPcGVuOiB0cnVlLFxuICAgICAgZXJyb3JUeXBlcyxcbiAgICAgIHN0eWxlTm9uY2UsXG4gICAgICBzaGFkb3dET01UYXJnZXQsXG4gICAgICBvbkNsb3NlOiBwcm9wcy5vbkNsb3NlLFxuICAgIH0pLFxuICApXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRDbGllbnQocXVlcnlDbGllbnQpXG4gIH0sIFtxdWVyeUNsaWVudCwgZGV2dG9vbHNdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGV2dG9vbHMuc2V0T25DbG9zZShwcm9wcy5vbkNsb3NlID8/ICgoKSA9PiB7fSkpXG4gIH0sIFtwcm9wcy5vbkNsb3NlLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBkZXZ0b29scy5zZXRFcnJvclR5cGVzKGVycm9yVHlwZXMgfHwgW10pXG4gIH0sIFtlcnJvclR5cGVzLCBkZXZ0b29sc10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgIGRldnRvb2xzLm1vdW50KHJlZi5jdXJyZW50KVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkZXZ0b29scy51bm1vdW50KClcbiAgICB9XG4gIH0sIFtkZXZ0b29sc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBoZWlnaHQ6ICc1MDBweCcsIC4uLnByb3BzLnN0eWxlIH19XG4gICAgICBjbGFzc05hbWU9XCJ0c3FkLXBhcmVudC1jb250YWluZXJcIlxuICAgICAgcmVmPXtyZWZ9XG4gICAgPjwvZGl2PlxuICApXG59XG4iLCAiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAqIGFzIERldnRvb2xzIGZyb20gJy4vUmVhY3RRdWVyeURldnRvb2xzJ1xuaW1wb3J0ICogYXMgRGV2dG9vbHNQYW5lbCBmcm9tICcuL1JlYWN0UXVlcnlEZXZ0b29sc1BhbmVsJ1xuXG5leHBvcnQgY29uc3QgUmVhY3RRdWVyeURldnRvb2xzOiAodHlwZW9mIERldnRvb2xzKVsnUmVhY3RRdWVyeURldnRvb2xzJ10gPVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50J1xuICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIDogRGV2dG9vbHMuUmVhY3RRdWVyeURldnRvb2xzXG5cbmV4cG9ydCBjb25zdCBSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbDogKHR5cGVvZiBEZXZ0b29sc1BhbmVsKVsnUmVhY3RRdWVyeURldnRvb2xzUGFuZWwnXSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgOiBEZXZ0b29sc1BhbmVsLlJlYWN0UXVlcnlEZXZ0b29sc1BhbmVsXG4iLCAiaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIgfSBmcm9tIFwic29ubmVyXCI7XG5cbi8vIGltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkAvdWkvc3R1ZGlvL3V0aWwvdGhlbWUtcHJvdmlkZXJcIjtcblxudHlwZSBUb2FzdGVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU29ubmVyPjtcblxuY29uc3QgVG9hc3RlciA9ICh7IC4uLnByb3BzIH06IFRvYXN0ZXJQcm9wcykgPT4ge1xuICAvLyBjb25zdCB7IHRoZW1lID0gXCJzeXN0ZW1cIiB9ID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxTb25uZXJcbiAgICAgIC8vIHRoZW1lPXt0aGVtZSBhcyBUb2FzdGVyUHJvcHNbXCJ0aGVtZVwiXX1cbiAgICAgIGNsYXNzTmFtZT1cInBzLXRvYXN0ZXIgcHMtZ3JvdXBcIlxuICAgICAgdG9hc3RPcHRpb25zPXt7XG4gICAgICAgIGNsYXNzTmFtZXM6IHtcbiAgICAgICAgICB0b2FzdDpcbiAgICAgICAgICAgIFwiZ3JvdXAgdG9hc3QgZ3JvdXAtWy50b2FzdGVyXTpiZy1iYWNrZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06dGV4dC1mb3JlZ3JvdW5kIGdyb3VwLVsudG9hc3Rlcl06Ym9yZGVyLWJvcmRlciBncm91cC1bLnRvYXN0ZXJdOnNoYWRvdy1sZ1wiLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICAgIGFjdGlvbkJ1dHRvbjogXCJncm91cC1bLnRvYXN0XTpiZy1wcmltYXJ5IGdyb3VwLVsudG9hc3RdOnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImdyb3VwLVsudG9hc3RdOmJnLW11dGVkIGdyb3VwLVsudG9hc3RdOnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLFxuICAgICAgICB9LFxuICAgICAgfX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IHsgVG9hc3RlciB9O1xuIiwgImltcG9ydCB7XG4gIHVuc3RhYmxlX0FkYXB0ZXJPcHRpb25zIGFzIEFkYXB0ZXJPcHRpb25zLFxuICB1bnN0YWJsZV9jcmVhdGVBZGFwdGVyUHJvdmlkZXIgYXMgY3JlYXRlQWRhcHRlclByb3ZpZGVyLFxufSBmcm9tIFwibnVxcy9hZGFwdGVycy9jdXN0b21cIjtcbmltcG9ydCB7IEZDLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBIb29rIHRoYXQgTnVxcyB3aWxsIGNhbGwgdG8gcmVhZCAmIHdyaXRlIFVSTCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gdXNlSGFzaEFkYXB0ZXIoKSB7XG4gIC8vIHJlYWQgY3VycmVudCBzdGF0ZSBmcm9tIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIFx1MjAxQyNcdTIwMURcbiAgY29uc3QgcmF3SGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpO1xuICBjb25zdCBbaGFzaFBhcmFtcywgc2V0SGFzaFBhcmFtc10gPSB1c2VTdGF0ZShuZXcgVVJMU2VhcmNoUGFyYW1zKHJhd0hhc2gpKTtcblxuICAvLyB3cml0ZSBuZXcgc3RhdGUgYmFjayBpbnRvIHRoZSBoYXNoIGZyYWdtZW50XG4gIGZ1bmN0aW9uIHVwZGF0ZVVybCh1cGRhdGVkOiBVUkxTZWFyY2hQYXJhbXMsIHsgaGlzdG9yeSB9OiBBZGFwdGVyT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgIGNvbnN0IGhhc2ggPSB1cGRhdGVkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgdXJsID0gYCR7cGF0aG5hbWV9JHtzZWFyY2h9IyR7aGFzaH1gO1xuXG4gICAgaWYgKGhpc3RvcnkgPT09IFwicHVzaFwiKSB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgXCJcIiwgdXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIFwiXCIsIHVybCk7XG4gICAgfVxuXG4gICAgc2V0SGFzaFBhcmFtcyh1cGRhdGVkKTtcbiAgfVxuXG4gIC8vIGV4cG9zZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHBhcmFtc1xuICBmdW5jdGlvbiBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCgpIHtcbiAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcblxuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHJhdyk7XG4gIH1cblxuICAvLyBzeW5jIHN0YXRlIHdoZW4gdXNlciBuYXZpZ2F0ZXMgdmlhIGJyb3dzZXIgY29udHJvbHMgb3IgZXh0ZXJuYWwgc2NyaXB0XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICAgIGNvbnN0IHJhd0hhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTtcbiAgICAgIHNldEhhc2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcyhyYXdIYXNoKSk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJoYXNoY2hhbmdlXCIsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiaGFzaGNoYW5nZVwiLCBoYW5kbGVIYXNoQ2hhbmdlKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IHNlYXJjaFBhcmFtczogaGFzaFBhcmFtcywgdXBkYXRlVXJsLCBnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCB9O1xufVxuXG4vKipcbiAqIFRoZSBhZGFwdGVyIHByb3ZpZGVyIGNvbXBvbmVudCB5b3Ugd3JhcCB5b3VyIGFwcCBpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE51cXNIYXNoQWRhcHRlciA9IGNyZWF0ZUFkYXB0ZXJQcm92aWRlcih1c2VIYXNoQWRhcHRlcikgYXMgRkM8UHJvcHNXaXRoQ2hpbGRyZW4+O1xuIiwgIi8vIHdlJ3JlIGVuc3VyaW5nIHRoYXQga2V5cyBhcmUgdHlwZS1zYWZlLiB0aGVyZSBpcyBubyBwcm9wZXIgd2F5IHRvIGFjaGlldmUgaXQgaW4gYG51cXNgLlxuLy8gdGhlIGBkZWNsYXJlIG1vZHVsZWAgdGVjaG5pcXVlIHJlc3VsdHMgaW4gYWRkaW5nIG92ZXJsb2Fkcywgbm90IG92ZXJyaWRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9ucy5cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IHtcbiAgdHlwZSBPcHRpb25zLFxuICB0eXBlIFBhcnNlcixcbiAgdXNlUXVlcnlTdGF0ZSBhcyB1c2VRdWVyeVN0YXRlT3JpZ2luYWwsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZVJldHVybixcbiAgdXNlUXVlcnlTdGF0ZXMgYXMgdXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCxcbiAgdHlwZSBVc2VRdWVyeVN0YXRlc09wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlTdGF0ZXNSZXR1cm4sXG59IGZyb20gXCJudXFzXCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWltcG9ydHNcbmV4cG9ydCAqIGZyb20gXCJudXFzXCI7XG5cbmV4cG9ydCB0eXBlIFN0YXRlS2V5ID0gXCJwYWdlSW5kZXhcIiB8IFwicGFnZVNpemVcIiB8IFwidGFibGVcIiB8IFwic29ydFwiIHwgXCJzY2hlbWFcIiB8IFwidGVzdFwiIHwgXCJmaWx0ZXJcIiB8IFwidmlld1wiO1xuXG4vLyBsaWZ0ZWQgZnJvbSBAcHJpc21hL2NsaWVudC9ydW50aW1lXG50eXBlIEV4YWN0PEEsIFc+ID1cbiAgfCAoQSBleHRlbmRzIHVua25vd25cbiAgICAgID8gVyBleHRlbmRzIEFcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbSyBpbiBrZXlvZiBBXTogRXhhY3Q8QVtLXSwgV1tLXT47XG4gICAgICAgICAgfVxuICAgICAgICA6IFdcbiAgICAgIDogbmV2ZXIpXG4gIHwgKEEgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQgfCBib29sZWFuIHwgW10gPyBBIDogbmV2ZXIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGtleU1hcDxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgYW55Pj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBrZXlNYXA6IEV4YWN0PE1hcCwgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+Pixcbik6IEJyYW5kZWRLZXlNYXA8TWFwPiB7XG4gIHJldHVybiBrZXlNYXAgYXMgbmV2ZXI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXJsS2V5czxjb25zdCBNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxTdGF0ZUtleSwgc3RyaW5nPj4+KFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1cmxLZXlzOiBFeGFjdDxNYXAsIFBhcnRpYWw8UmVjb3JkPFN0YXRlS2V5LCBzdHJpbmc+Pj4sXG4pOiBCcmFuZGVkS2V5TWFwPE1hcD4ge1xuICByZXR1cm4gdXJsS2V5cyBhcyBuZXZlcjtcbn1cblxuY29uc3QgX0JSQU5EX1NZTUJPTCA9IFN5bWJvbChcIkJSQU5EX1NZTUJPTFwiKTtcblxudHlwZSBCcmFuZGVkS2V5TWFwPE1hcD4gPSBNYXAgJiB7XG4gIFtLIGluIHR5cGVvZiBfQlJBTkRfU1lNQk9MXTogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+ICYge1xuICAgIGRlZmF1bHRWYWx1ZTogVDtcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48Tm9uTnVsbGFibGU8UmV0dXJuVHlwZTx0eXBlb2Ygb3B0aW9ucy5wYXJzZT4+LCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGU8VD4oXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFVzZVF1ZXJ5U3RhdGVPcHRpb25zPFQ+LFxuKTogVXNlUXVlcnlTdGF0ZVJldHVybjxOb25OdWxsYWJsZTxSZXR1cm5UeXBlPHR5cGVvZiBvcHRpb25zLnBhcnNlPj4sIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShcbiAga2V5OiBTdGF0ZUtleSxcbiAgb3B0aW9uczogT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgfSxcbik6IFVzZVF1ZXJ5U3RhdGVSZXR1cm48c3RyaW5nLCB0eXBlb2Ygb3B0aW9ucy5kZWZhdWx0VmFsdWU+O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5U3RhdGUoXG4gIGtleTogU3RhdGVLZXksXG4gIG9wdGlvbnM6IFBpY2s8VXNlUXVlcnlTdGF0ZU9wdGlvbnM8c3RyaW5nPiwga2V5b2YgT3B0aW9ucz4sXG4pOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlKGtleTogU3RhdGVLZXkpOiBVc2VRdWVyeVN0YXRlUmV0dXJuPHN0cmluZywgdW5kZWZpbmVkPjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gdXNlUXVlcnlTdGF0ZShrZXk6IFN0YXRlS2V5LCBvcHRpb25zPzogYW55KTogYW55IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcbiAgcmV0dXJuIHVzZVF1ZXJ5U3RhdGVPcmlnaW5hbChrZXksIG9wdGlvbnMpO1xufVxuXG50eXBlIFVzZVF1ZXJ5U3RhdGVzS2V5c01hcDxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgTWFwIGV4dGVuZHMgUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+ID0gUGFydGlhbDxSZWNvcmQ8U3RhdGVLZXksIGFueT4+LFxuPiA9IHtcbiAgW0tleSBpbiBrZXlvZiBNYXBdOiBLZXlNYXBWYWx1ZTxNYXBbS2V5XT47XG59O1xuXG50eXBlIEtleU1hcFZhbHVlPFR5cGU+ID0gUGFyc2VyPFR5cGU+ICZcbiAgT3B0aW9ucyAmIHtcbiAgICBkZWZhdWx0VmFsdWU/OiBUeXBlO1xuICB9O1xuXG4vKipcbiAqIEBzZWUge0BsaW5rIHVzZVF1ZXJ5U3RhdGVzT3JpZ2luYWx9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeVN0YXRlczxLZXlNYXAgZXh0ZW5kcyBVc2VRdWVyeVN0YXRlc0tleXNNYXA+KFxuICBrZXlNYXA6IEJyYW5kZWRLZXlNYXA8S2V5TWFwPixcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlUXVlcnlTdGF0ZXNPcHRpb25zPEtleU1hcD4+LFxuKTogVXNlUXVlcnlTdGF0ZXNSZXR1cm48S2V5TWFwPiB7XG4gIHJldHVybiB1c2VRdWVyeVN0YXRlc09yaWdpbmFsKGtleU1hcCBhcyBuZXZlciwgb3B0aW9ucyk7XG59XG4iLCAiLy8gc2hhZGNuIHV0aWxzXG5pbXBvcnQgeyB0eXBlIENsYXNzVmFsdWUsIGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgZXh0ZW5kVGFpbHdpbmRNZXJnZSB9IGZyb20gXCJ0YWlsd2luZC1tZXJnZVwiO1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGV4dGVuZFRhaWx3aW5kTWVyZ2Uoe1xuICBwcmVmaXg6IFwicHMtXCIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNuKC4uLmlucHV0czogQ2xhc3NWYWx1ZVtdKSB7XG4gIHJldHVybiB0d01lcmdlKGNsc3goaW5wdXRzKSk7XG59XG4iLCAiaW1wb3J0IHtcbiAgICBDbGFzc0dyb3VwLFxuICAgIENsYXNzVmFsaWRhdG9yLFxuICAgIENvbmZpZyxcbiAgICBHZW5lcmljQ2xhc3NHcm91cElkcyxcbiAgICBHZW5lcmljQ29uZmlnLFxuICAgIEdlbmVyaWNUaGVtZUdyb3VwSWRzLFxuICAgIFRoZW1lR2V0dGVyLFxuICAgIFRoZW1lT2JqZWN0LFxufSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzUGFydE9iamVjdCB7XG4gICAgbmV4dFBhcnQ6IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD5cbiAgICB2YWxpZGF0b3JzOiBDbGFzc1ZhbGlkYXRvck9iamVjdFtdXG4gICAgY2xhc3NHcm91cElkPzogR2VuZXJpY0NsYXNzR3JvdXBJZHNcbn1cblxuaW50ZXJmYWNlIENsYXNzVmFsaWRhdG9yT2JqZWN0IHtcbiAgICBjbGFzc0dyb3VwSWQ6IEdlbmVyaWNDbGFzc0dyb3VwSWRzXG4gICAgdmFsaWRhdG9yOiBDbGFzc1ZhbGlkYXRvclxufVxuXG5jb25zdCBDTEFTU19QQVJUX1NFUEFSQVRPUiA9ICctJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xhc3NHcm91cFV0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNsYXNzTWFwID0gY3JlYXRlQ2xhc3NNYXAoY29uZmlnKVxuICAgIGNvbnN0IHsgY29uZmxpY3RpbmdDbGFzc0dyb3VwcywgY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzIH0gPSBjb25maWdcblxuICAgIGNvbnN0IGdldENsYXNzR3JvdXBJZCA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc1BhcnRzID0gY2xhc3NOYW1lLnNwbGl0KENMQVNTX1BBUlRfU0VQQVJBVE9SKVxuXG4gICAgICAgIC8vIENsYXNzZXMgbGlrZSBgLWluc2V0LTFgIHByb2R1Y2UgYW4gZW1wdHkgc3RyaW5nIGFzIGZpcnN0IGNsYXNzUGFydC4gV2UgYXNzdW1lIHRoYXQgY2xhc3NlcyBmb3IgbmVnYXRpdmUgdmFsdWVzIGFyZSB1c2VkIGNvcnJlY3RseSBhbmQgcmVtb3ZlIGl0IGZyb20gY2xhc3NQYXJ0cy5cbiAgICAgICAgaWYgKGNsYXNzUGFydHNbMF0gPT09ICcnICYmIGNsYXNzUGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICBjbGFzc1BhcnRzLnNoaWZ0KClcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRHcm91cFJlY3Vyc2l2ZShjbGFzc1BhcnRzLCBjbGFzc01hcCkgfHwgZ2V0R3JvdXBJZEZvckFyYml0cmFyeVByb3BlcnR5KGNsYXNzTmFtZSlcbiAgICB9XG5cbiAgICBjb25zdCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgPSAoXG4gICAgICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllcjogYm9vbGVhbixcbiAgICApID0+IHtcbiAgICAgICAgY29uc3QgY29uZmxpY3RzID0gY29uZmxpY3RpbmdDbGFzc0dyb3Vwc1tjbGFzc0dyb3VwSWRdIHx8IFtdXG5cbiAgICAgICAgaWYgKGhhc1Bvc3RmaXhNb2RpZmllciAmJiBjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnNbY2xhc3NHcm91cElkXSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25mbGljdHMsIC4uLmNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyc1tjbGFzc0dyb3VwSWRdIV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25mbGljdHNcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXRDbGFzc0dyb3VwSWQsXG4gICAgICAgIGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkcyxcbiAgICB9XG59XG5cbmNvbnN0IGdldEdyb3VwUmVjdXJzaXZlID0gKFxuICAgIGNsYXNzUGFydHM6IHN0cmluZ1tdLFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuKTogR2VuZXJpY0NsYXNzR3JvdXBJZHMgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChjbGFzc1BhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LmNsYXNzR3JvdXBJZFxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDbGFzc1BhcnQgPSBjbGFzc1BhcnRzWzBdIVxuICAgIGNvbnN0IG5leHRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KGN1cnJlbnRDbGFzc1BhcnQpXG4gICAgY29uc3QgY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0ID0gbmV4dENsYXNzUGFydE9iamVjdFxuICAgICAgICA/IGdldEdyb3VwUmVjdXJzaXZlKGNsYXNzUGFydHMuc2xpY2UoMSksIG5leHRDbGFzc1BhcnRPYmplY3QpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0KSB7XG4gICAgICAgIHJldHVybiBjbGFzc0dyb3VwRnJvbU5leHRDbGFzc1BhcnRcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc1Jlc3QgPSBjbGFzc1BhcnRzLmpvaW4oQ0xBU1NfUEFSVF9TRVBBUkFUT1IpXG5cbiAgICByZXR1cm4gY2xhc3NQYXJ0T2JqZWN0LnZhbGlkYXRvcnMuZmluZCgoeyB2YWxpZGF0b3IgfSkgPT4gdmFsaWRhdG9yKGNsYXNzUmVzdCkpPy5jbGFzc0dyb3VwSWRcbn1cblxuY29uc3QgYXJiaXRyYXJ5UHJvcGVydHlSZWdleCA9IC9eXFxbKC4rKVxcXSQvXG5cbmNvbnN0IGdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSA9IChjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChhcmJpdHJhcnlQcm9wZXJ0eVJlZ2V4LnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICBjb25zdCBhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSA9IGFyYml0cmFyeVByb3BlcnR5UmVnZXguZXhlYyhjbGFzc05hbWUpIVsxXVxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGFyYml0cmFyeVByb3BlcnR5Q2xhc3NOYW1lPy5zdWJzdHJpbmcoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYXJiaXRyYXJ5UHJvcGVydHlDbGFzc05hbWUuaW5kZXhPZignOicpLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAvLyBJIHVzZSB0d28gZG90cyBoZXJlIGJlY2F1c2Ugb25lIGRvdCBpcyB1c2VkIGFzIHByZWZpeCBmb3IgY2xhc3MgZ3JvdXBzIGluIHBsdWdpbnNcbiAgICAgICAgICAgIHJldHVybiAnYXJiaXRyYXJ5Li4nICsgcHJvcGVydHlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFeHBvcnRlZCBmb3IgdGVzdGluZyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVDbGFzc01hcCA9IChjb25maWc6IENvbmZpZzxHZW5lcmljQ2xhc3NHcm91cElkcywgR2VuZXJpY1RoZW1lR3JvdXBJZHM+KSA9PiB7XG4gICAgY29uc3QgeyB0aGVtZSwgcHJlZml4IH0gPSBjb25maWdcbiAgICBjb25zdCBjbGFzc01hcDogQ2xhc3NQYXJ0T2JqZWN0ID0ge1xuICAgICAgICBuZXh0UGFydDogbmV3IE1hcDxzdHJpbmcsIENsYXNzUGFydE9iamVjdD4oKSxcbiAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyA9IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZy5jbGFzc0dyb3VwcyksXG4gICAgICAgIHByZWZpeCxcbiAgICApXG5cbiAgICBwcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzLmZvckVhY2goKFtjbGFzc0dyb3VwSWQsIGNsYXNzR3JvdXBdKSA9PiB7XG4gICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoY2xhc3NHcm91cCwgY2xhc3NNYXAsIGNsYXNzR3JvdXBJZCwgdGhlbWUpXG4gICAgfSlcblxuICAgIHJldHVybiBjbGFzc01hcFxufVxuXG5jb25zdCBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5ID0gKFxuICAgIGNsYXNzR3JvdXA6IENsYXNzR3JvdXA8R2VuZXJpY1RoZW1lR3JvdXBJZHM+LFxuICAgIGNsYXNzUGFydE9iamVjdDogQ2xhc3NQYXJ0T2JqZWN0LFxuICAgIGNsYXNzR3JvdXBJZDogR2VuZXJpY0NsYXNzR3JvdXBJZHMsXG4gICAgdGhlbWU6IFRoZW1lT2JqZWN0PEdlbmVyaWNUaGVtZUdyb3VwSWRzPixcbikgPT4ge1xuICAgIGNsYXNzR3JvdXAuZm9yRWFjaCgoY2xhc3NEZWZpbml0aW9uKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xhc3NEZWZpbml0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NQYXJ0T2JqZWN0VG9FZGl0ID1cbiAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24gPT09ICcnID8gY2xhc3NQYXJ0T2JqZWN0IDogZ2V0UGFydChjbGFzc1BhcnRPYmplY3QsIGNsYXNzRGVmaW5pdGlvbilcbiAgICAgICAgICAgIGNsYXNzUGFydE9iamVjdFRvRWRpdC5jbGFzc0dyb3VwSWQgPSBjbGFzc0dyb3VwSWRcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGlmIChpc1RoZW1lR2V0dGVyKGNsYXNzRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICBjbGFzc0RlZmluaXRpb24odGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzR3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGFzc1BhcnRPYmplY3QudmFsaWRhdG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3I6IGNsYXNzRGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNsYXNzRGVmaW5pdGlvbikuZm9yRWFjaCgoW2tleSwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3NDbGFzc2VzUmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgY2xhc3NHcm91cCxcbiAgICAgICAgICAgICAgICBnZXRQYXJ0KGNsYXNzUGFydE9iamVjdCwga2V5KSxcbiAgICAgICAgICAgICAgICBjbGFzc0dyb3VwSWQsXG4gICAgICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuY29uc3QgZ2V0UGFydCA9IChjbGFzc1BhcnRPYmplY3Q6IENsYXNzUGFydE9iamVjdCwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QgPSBjbGFzc1BhcnRPYmplY3RcblxuICAgIHBhdGguc3BsaXQoQ0xBU1NfUEFSVF9TRVBBUkFUT1IpLmZvckVhY2goKHBhdGhQYXJ0KSA9PiB7XG4gICAgICAgIGlmICghY3VycmVudENsYXNzUGFydE9iamVjdC5uZXh0UGFydC5oYXMocGF0aFBhcnQpKSB7XG4gICAgICAgICAgICBjdXJyZW50Q2xhc3NQYXJ0T2JqZWN0Lm5leHRQYXJ0LnNldChwYXRoUGFydCwge1xuICAgICAgICAgICAgICAgIG5leHRQYXJ0OiBuZXcgTWFwKCksXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW10sXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENsYXNzUGFydE9iamVjdCA9IGN1cnJlbnRDbGFzc1BhcnRPYmplY3QubmV4dFBhcnQuZ2V0KHBhdGhQYXJ0KSFcbiAgICB9KVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDbGFzc1BhcnRPYmplY3Rcbn1cblxuY29uc3QgaXNUaGVtZUdldHRlciA9IChmdW5jOiBDbGFzc1ZhbGlkYXRvciB8IFRoZW1lR2V0dGVyKTogZnVuYyBpcyBUaGVtZUdldHRlciA9PlxuICAgIChmdW5jIGFzIFRoZW1lR2V0dGVyKS5pc1RoZW1lR2V0dGVyXG5cbmNvbnN0IGdldFByZWZpeGVkQ2xhc3NHcm91cEVudHJpZXMgPSAoXG4gICAgY2xhc3NHcm91cEVudHJpZXM6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPixcbiAgICBwcmVmaXg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IEFycmF5PFtjbGFzc0dyb3VwSWQ6IHN0cmluZywgY2xhc3NHcm91cDogQ2xhc3NHcm91cDxHZW5lcmljVGhlbWVHcm91cElkcz5dPiA9PiB7XG4gICAgaWYgKCFwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzR3JvdXBFbnRyaWVzLm1hcCgoW2NsYXNzR3JvdXBJZCwgY2xhc3NHcm91cF0pID0+IHtcbiAgICAgICAgY29uc3QgcHJlZml4ZWRDbGFzc0dyb3VwID0gY2xhc3NHcm91cC5tYXAoKGNsYXNzRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGFzc0RlZmluaXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeCArIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNsYXNzRGVmaW5pdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjbGFzc0RlZmluaXRpb24pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbcHJlZml4ICsga2V5LCB2YWx1ZV0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNsYXNzRGVmaW5pdGlvblxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBbY2xhc3NHcm91cElkLCBwcmVmaXhlZENsYXNzR3JvdXBdXG4gICAgfSlcbn1cbiIsICIvLyBFeHBvcnQgaXMgbmVlZGVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjb21wbGFpbnMgYWJvdXQgYW4gZXJyb3Igb3RoZXJ3aXNlOlxuLy8gRXJyb3I6IFx1MjAyNi90YWlsd2luZC1tZXJnZS9zcmMvY29uZmlnLXV0aWxzLnRzKDgsMTcpOiBzZW1hbnRpYyBlcnJvciBUUzQwNTg6IFJldHVybiB0eXBlIG9mIGV4cG9ydGVkIGZ1bmN0aW9uIGhhcyBvciBpcyB1c2luZyBuYW1lICdMcnVDYWNoZScgZnJvbSBleHRlcm5hbCBtb2R1bGUgXCJcdTIwMjYvdGFpbHdpbmQtbWVyZ2Uvc3JjL2xydS1jYWNoZVwiIGJ1dCBjYW5ub3QgYmUgbmFtZWQuXG5leHBvcnQgaW50ZXJmYWNlIExydUNhY2hlPEtleSwgVmFsdWU+IHtcbiAgICBnZXQoa2V5OiBLZXkpOiBWYWx1ZSB8IHVuZGVmaW5lZFxuICAgIHNldChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKTogdm9pZFxufVxuXG4vLyBMUlUgY2FjaGUgaW5zcGlyZWQgZnJvbSBoYXNobHJ1IChodHRwczovL2dpdGh1Yi5jb20vZG9taW5pY3RhcnIvaGFzaGxydS9ibG9iL3YxLjAuNC9pbmRleC5qcykgYnV0IG9iamVjdCByZXBsYWNlZCB3aXRoIE1hcCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG5leHBvcnQgY29uc3QgY3JlYXRlTHJ1Q2FjaGUgPSA8S2V5LCBWYWx1ZT4obWF4Q2FjaGVTaXplOiBudW1iZXIpOiBMcnVDYWNoZTxLZXksIFZhbHVlPiA9PiB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA8IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgc2V0OiAoKSA9PiB7fSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjYWNoZVNpemUgPSAwXG4gICAgbGV0IGNhY2hlID0gbmV3IE1hcDxLZXksIFZhbHVlPigpXG4gICAgbGV0IHByZXZpb3VzQ2FjaGUgPSBuZXcgTWFwPEtleSwgVmFsdWU+KClcblxuICAgIGNvbnN0IHVwZGF0ZSA9IChrZXk6IEtleSwgdmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIGNhY2hlLnNldChrZXksIHZhbHVlKVxuICAgICAgICBjYWNoZVNpemUrK1xuXG4gICAgICAgIGlmIChjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpIHtcbiAgICAgICAgICAgIGNhY2hlU2l6ZSA9IDBcbiAgICAgICAgICAgIHByZXZpb3VzQ2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgY2FjaGUgPSBuZXcgTWFwKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGdldChrZXkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChrZXkpXG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHZhbHVlID0gcHJldmlvdXNDYWNoZS5nZXQoa2V5KSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuc2V0KGtleSwgdmFsdWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZShrZXksIHZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IElNUE9SVEFOVF9NT0RJRklFUiA9ICchJ1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUGFyc2VDbGFzc05hbWUgPSAoY29uZmlnOiBHZW5lcmljQ29uZmlnKSA9PiB7XG4gICAgY29uc3QgeyBzZXBhcmF0b3IsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIH0gPSBjb25maWdcbiAgICBjb25zdCBpc1NlcGFyYXRvclNpbmdsZUNoYXJhY3RlciA9IHNlcGFyYXRvci5sZW5ndGggPT09IDFcbiAgICBjb25zdCBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciA9IHNlcGFyYXRvclswXVxuICAgIGNvbnN0IHNlcGFyYXRvckxlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGhcblxuICAgIC8vIHBhcnNlQ2xhc3NOYW1lIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGxhYnMvdGFpbHdpbmRjc3MvYmxvYi92My4yLjIvc3JjL3V0aWwvc3BsaXRBdFRvcExldmVsT25seS5qc1xuICAgIGNvbnN0IHBhcnNlQ2xhc3NOYW1lID0gKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IFtdXG5cbiAgICAgICAgbGV0IGJyYWNrZXREZXB0aCA9IDBcbiAgICAgICAgbGV0IG1vZGlmaWVyU3RhcnQgPSAwXG4gICAgICAgIGxldCBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkXG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNsYXNzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50Q2hhcmFjdGVyID0gY2xhc3NOYW1lW2luZGV4XVxuXG4gICAgICAgICAgICBpZiAoYnJhY2tldERlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcmFjdGVyID09PSBmaXJzdFNlcGFyYXRvckNoYXJhY3RlciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZS5zbGljZShpbmRleCwgaW5kZXggKyBzZXBhcmF0b3JMZW5ndGgpID09PSBzZXBhcmF0b3IpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycy5wdXNoKGNsYXNzTmFtZS5zbGljZShtb2RpZmllclN0YXJ0LCBpbmRleCkpXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyU3RhcnQgPSBpbmRleCArIHNlcGFyYXRvckxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhcmFjdGVyID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zdGZpeE1vZGlmaWVyUG9zaXRpb24gPSBpbmRleFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aCsrXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRDaGFyYWN0ZXIgPT09ICddJykge1xuICAgICAgICAgICAgICAgIGJyYWNrZXREZXB0aC0tXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIG1vZGlmaWVycy5sZW5ndGggPT09IDAgPyBjbGFzc05hbWUgOiBjbGFzc05hbWUuc3Vic3RyaW5nKG1vZGlmaWVyU3RhcnQpXG4gICAgICAgIGNvbnN0IGhhc0ltcG9ydGFudE1vZGlmaWVyID1cbiAgICAgICAgICAgIGJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIuc3RhcnRzV2l0aChJTVBPUlRBTlRfTU9ESUZJRVIpXG4gICAgICAgIGNvbnN0IGJhc2VDbGFzc05hbWUgPSBoYXNJbXBvcnRhbnRNb2RpZmllclxuICAgICAgICAgICAgPyBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgOiBiYXNlQ2xhc3NOYW1lV2l0aEltcG9ydGFudE1vZGlmaWVyXG5cbiAgICAgICAgY29uc3QgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA9XG4gICAgICAgICAgICBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiAmJiBwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiA+IG1vZGlmaWVyU3RhcnRcbiAgICAgICAgICAgICAgICA/IHBvc3RmaXhNb2RpZmllclBvc2l0aW9uIC0gbW9kaWZpZXJTdGFydFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1vZGlmaWVycyxcbiAgICAgICAgICAgIGhhc0ltcG9ydGFudE1vZGlmaWVyLFxuICAgICAgICAgICAgYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgICAgIG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24sXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIChjbGFzc05hbWU6IHN0cmluZykgPT4gZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUoeyBjbGFzc05hbWUsIHBhcnNlQ2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3NOYW1lXG59XG5cbi8qKlxuICogU29ydHMgbW9kaWZpZXJzIGFjY29yZGluZyB0byBmb2xsb3dpbmcgc2NoZW1hOlxuICogLSBQcmVkZWZpbmVkIG1vZGlmaWVycyBhcmUgc29ydGVkIGFscGhhYmV0aWNhbGx5XG4gKiAtIFdoZW4gYW4gYXJiaXRyYXJ5IHZhcmlhbnQgYXBwZWFycywgaXQgbXVzdCBiZSBwcmVzZXJ2ZWQgd2hpY2ggbW9kaWZpZXJzIGFyZSBiZWZvcmUgYW5kIGFmdGVyIGl0XG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0TW9kaWZpZXJzID0gKG1vZGlmaWVyczogc3RyaW5nW10pID0+IHtcbiAgICBpZiAobW9kaWZpZXJzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiBtb2RpZmllcnNcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cbiAgICBsZXQgdW5zb3J0ZWRNb2RpZmllcnM6IHN0cmluZ1tdID0gW11cblxuICAgIG1vZGlmaWVycy5mb3JFYWNoKChtb2RpZmllcikgPT4ge1xuICAgICAgICBjb25zdCBpc0FyYml0cmFyeVZhcmlhbnQgPSBtb2RpZmllclswXSA9PT0gJ1snXG5cbiAgICAgICAgaWYgKGlzQXJiaXRyYXJ5VmFyaWFudCkge1xuICAgICAgICAgICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpLCBtb2RpZmllcilcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuc29ydGVkTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgc29ydGVkTW9kaWZpZXJzLnB1c2goLi4udW5zb3J0ZWRNb2RpZmllcnMuc29ydCgpKVxuXG4gICAgcmV0dXJuIHNvcnRlZE1vZGlmaWVyc1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUNsYXNzR3JvdXBVdGlscyB9IGZyb20gJy4vY2xhc3MtZ3JvdXAtdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMcnVDYWNoZSB9IGZyb20gJy4vbHJ1LWNhY2hlJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VDbGFzc05hbWUgfSBmcm9tICcuL3BhcnNlLWNsYXNzLW5hbWUnXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbmZpZ1V0aWxzID0gKGNvbmZpZzogR2VuZXJpY0NvbmZpZykgPT4gKHtcbiAgICBjYWNoZTogY3JlYXRlTHJ1Q2FjaGU8c3RyaW5nLCBzdHJpbmc+KGNvbmZpZy5jYWNoZVNpemUpLFxuICAgIHBhcnNlQ2xhc3NOYW1lOiBjcmVhdGVQYXJzZUNsYXNzTmFtZShjb25maWcpLFxuICAgIC4uLmNyZWF0ZUNsYXNzR3JvdXBVdGlscyhjb25maWcpLFxufSlcbiIsICJpbXBvcnQgeyBDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgSU1QT1JUQU5UX01PRElGSUVSLCBzb3J0TW9kaWZpZXJzIH0gZnJvbSAnLi9wYXJzZS1jbGFzcy1uYW1lJ1xuXG5jb25zdCBTUExJVF9DTEFTU0VTX1JFR0VYID0gL1xccysvXG5cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzTGlzdCA9IChjbGFzc0xpc3Q6IHN0cmluZywgY29uZmlnVXRpbHM6IENvbmZpZ1V0aWxzKSA9PiB7XG4gICAgY29uc3QgeyBwYXJzZUNsYXNzTmFtZSwgZ2V0Q2xhc3NHcm91cElkLCBnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMgfSA9IGNvbmZpZ1V0aWxzXG5cbiAgICAvKipcbiAgICAgKiBTZXQgb2YgY2xhc3NHcm91cElkcyBpbiBmb2xsb3dpbmcgZm9ybWF0OlxuICAgICAqIGB7aW1wb3J0YW50TW9kaWZpZXJ9e3ZhcmlhbnRNb2RpZmllcnN9e2NsYXNzR3JvdXBJZH1gXG4gICAgICogQGV4YW1wbGUgJ2Zsb2F0J1xuICAgICAqIEBleGFtcGxlICdob3Zlcjpmb2N1czpiZy1jb2xvcidcbiAgICAgKiBAZXhhbXBsZSAnbWQ6IXByJ1xuICAgICAqL1xuICAgIGNvbnN0IGNsYXNzR3JvdXBzSW5Db25mbGljdDogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBjbGFzc0xpc3QudHJpbSgpLnNwbGl0KFNQTElUX0NMQVNTRVNfUkVHRVgpXG5cbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGluZGV4ID0gY2xhc3NOYW1lcy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtPSAxKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQ2xhc3NOYW1lID0gY2xhc3NOYW1lc1tpbmRleF0hXG5cbiAgICAgICAgY29uc3QgeyBtb2RpZmllcnMsIGhhc0ltcG9ydGFudE1vZGlmaWVyLCBiYXNlQ2xhc3NOYW1lLCBtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uIH0gPVxuICAgICAgICAgICAgcGFyc2VDbGFzc05hbWUob3JpZ2luYWxDbGFzc05hbWUpXG5cbiAgICAgICAgbGV0IGhhc1Bvc3RmaXhNb2RpZmllciA9IEJvb2xlYW4obWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgbGV0IGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChcbiAgICAgICAgICAgIGhhc1Bvc3RmaXhNb2RpZmllclxuICAgICAgICAgICAgICAgID8gYmFzZUNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbilcbiAgICAgICAgICAgICAgICA6IGJhc2VDbGFzc05hbWUsXG4gICAgICAgIClcblxuICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgaWYgKCFoYXNQb3N0Zml4TW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBOb3QgYSBUYWlsd2luZCBjbGFzc1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNsYXNzR3JvdXBJZCA9IGdldENsYXNzR3JvdXBJZChiYXNlQ2xhc3NOYW1lKVxuXG4gICAgICAgICAgICBpZiAoIWNsYXNzR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIC8vIE5vdCBhIFRhaWx3aW5kIGNsYXNzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gb3JpZ2luYWxDbGFzc05hbWUgKyAocmVzdWx0Lmxlbmd0aCA+IDAgPyAnICcgKyByZXN1bHQgOiByZXN1bHQpXG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzUG9zdGZpeE1vZGlmaWVyID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhcmlhbnRNb2RpZmllciA9IHNvcnRNb2RpZmllcnMobW9kaWZpZXJzKS5qb2luKCc6JylcblxuICAgICAgICBjb25zdCBtb2RpZmllcklkID0gaGFzSW1wb3J0YW50TW9kaWZpZXJcbiAgICAgICAgICAgID8gdmFyaWFudE1vZGlmaWVyICsgSU1QT1JUQU5UX01PRElGSUVSXG4gICAgICAgICAgICA6IHZhcmlhbnRNb2RpZmllclxuXG4gICAgICAgIGNvbnN0IGNsYXNzSWQgPSBtb2RpZmllcklkICsgY2xhc3NHcm91cElkXG5cbiAgICAgICAgaWYgKGNsYXNzR3JvdXBzSW5Db25mbGljdC5pbmNsdWRlcyhjbGFzc0lkKSkge1xuICAgICAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgb21pdHRlZCBkdWUgdG8gY29uZmxpY3RcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjbGFzc0dyb3Vwc0luQ29uZmxpY3QucHVzaChjbGFzc0lkKVxuXG4gICAgICAgIGNvbnN0IGNvbmZsaWN0R3JvdXBzID0gZ2V0Q29uZmxpY3RpbmdDbGFzc0dyb3VwSWRzKGNsYXNzR3JvdXBJZCwgaGFzUG9zdGZpeE1vZGlmaWVyKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZsaWN0R3JvdXBzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGNvbmZsaWN0R3JvdXBzW2ldIVxuICAgICAgICAgICAgY2xhc3NHcm91cHNJbkNvbmZsaWN0LnB1c2gobW9kaWZpZXJJZCArIGdyb3VwKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGFpbHdpbmQgY2xhc3Mgbm90IGluIGNvbmZsaWN0XG4gICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsQ2xhc3NOYW1lICsgKHJlc3VsdC5sZW5ndGggPiAwID8gJyAnICsgcmVzdWx0IDogcmVzdWx0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbn1cbiIsICIvKipcbiAqIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbHVrZWVkL2Nsc3ggYW5kIG1vZGlmaWVkIHRvIHN1aXQgdGhlIG5lZWRzIG9mIHRhaWx3aW5kLW1lcmdlIGJldHRlci5cbiAqXG4gKiBTcGVjaWZpY2FsbHk6XG4gKiAtIFJ1bnRpbWUgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9zcmMvaW5kZXguanNcbiAqIC0gVHlwZVNjcmlwdCB0eXBlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQvY2xzeC9ibG9iL3YxLjIuMS9jbHN4LmQudHNcbiAqXG4gKiBPcmlnaW5hbCBjb2RlIGhhcyBNSVQgbGljZW5zZTogQ29weXJpZ2h0IChjKSBMdWtlIEVkd2FyZHMgPGx1a2UuZWR3YXJkczA1QGdtYWlsLmNvbT4gKGx1a2VlZC5jb20pXG4gKi9cblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lVmFsdWUgPSBDbGFzc05hbWVBcnJheSB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCAwIHwgMG4gfCBmYWxzZVxudHlwZSBDbGFzc05hbWVBcnJheSA9IENsYXNzTmFtZVZhbHVlW11cblxuZXhwb3J0IGZ1bmN0aW9uIHR3Sm9pbiguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKTogc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gdHdKb2luKCkge1xuICAgIGxldCBpbmRleCA9IDBcbiAgICBsZXQgYXJndW1lbnQ6IENsYXNzTmFtZVZhbHVlXG4gICAgbGV0IHJlc29sdmVkVmFsdWU6IHN0cmluZ1xuICAgIGxldCBzdHJpbmcgPSAnJ1xuXG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAoKGFyZ3VtZW50ID0gYXJndW1lbnRzW2luZGV4KytdKSkge1xuICAgICAgICAgICAgaWYgKChyZXNvbHZlZFZhbHVlID0gdG9WYWx1ZShhcmd1bWVudCkpKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICYmIChzdHJpbmcgKz0gJyAnKVxuICAgICAgICAgICAgICAgIHN0cmluZyArPSByZXNvbHZlZFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ1xufVxuXG5jb25zdCB0b1ZhbHVlID0gKG1peDogQ2xhc3NOYW1lQXJyYXkgfCBzdHJpbmcpID0+IHtcbiAgICBpZiAodHlwZW9mIG1peCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG1peFxuICAgIH1cblxuICAgIGxldCByZXNvbHZlZFZhbHVlOiBzdHJpbmdcbiAgICBsZXQgc3RyaW5nID0gJydcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgIGlmIChtaXhba10pIHtcbiAgICAgICAgICAgIGlmICgocmVzb2x2ZWRWYWx1ZSA9IHRvVmFsdWUobWl4W2tdIGFzIENsYXNzTmFtZUFycmF5IHwgc3RyaW5nKSkpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgJiYgKHN0cmluZyArPSAnICcpXG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IHJlc29sdmVkVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmdcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVDb25maWdVdGlscyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJ1xuaW1wb3J0IHsgbWVyZ2VDbGFzc0xpc3QgfSBmcm9tICcuL21lcmdlLWNsYXNzbGlzdCdcbmltcG9ydCB7IENsYXNzTmFtZVZhbHVlLCB0d0pvaW4gfSBmcm9tICcuL3R3LWpvaW4nXG5pbXBvcnQgeyBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxudHlwZSBDcmVhdGVDb25maWdGaXJzdCA9ICgpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcbnR5cGUgVGFpbHdpbmRNZXJnZSA9ICguLi5jbGFzc0xpc3RzOiBDbGFzc05hbWVWYWx1ZVtdKSA9PiBzdHJpbmdcbnR5cGUgQ29uZmlnVXRpbHMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVDb25maWdVdGlscz5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhaWx3aW5kTWVyZ2UoXG4gICAgY3JlYXRlQ29uZmlnRmlyc3Q6IENyZWF0ZUNvbmZpZ0ZpcnN0LFxuICAgIC4uLmNyZWF0ZUNvbmZpZ1Jlc3Q6IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnRbXVxuKTogVGFpbHdpbmRNZXJnZSB7XG4gICAgbGV0IGNvbmZpZ1V0aWxzOiBDb25maWdVdGlsc1xuICAgIGxldCBjYWNoZUdldDogQ29uZmlnVXRpbHNbJ2NhY2hlJ11bJ2dldCddXG4gICAgbGV0IGNhY2hlU2V0OiBDb25maWdVdGlsc1snY2FjaGUnXVsnc2V0J11cbiAgICBsZXQgZnVuY3Rpb25Ub0NhbGwgPSBpbml0VGFpbHdpbmRNZXJnZVxuXG4gICAgZnVuY3Rpb24gaW5pdFRhaWx3aW5kTWVyZ2UoY2xhc3NMaXN0OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY3JlYXRlQ29uZmlnUmVzdC5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldmlvdXNDb25maWcsIGNyZWF0ZUNvbmZpZ0N1cnJlbnQpID0+IGNyZWF0ZUNvbmZpZ0N1cnJlbnQocHJldmlvdXNDb25maWcpLFxuICAgICAgICAgICAgY3JlYXRlQ29uZmlnRmlyc3QoKSBhcyBHZW5lcmljQ29uZmlnLFxuICAgICAgICApXG5cbiAgICAgICAgY29uZmlnVXRpbHMgPSBjcmVhdGVDb25maWdVdGlscyhjb25maWcpXG4gICAgICAgIGNhY2hlR2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuZ2V0XG4gICAgICAgIGNhY2hlU2V0ID0gY29uZmlnVXRpbHMuY2FjaGUuc2V0XG4gICAgICAgIGZ1bmN0aW9uVG9DYWxsID0gdGFpbHdpbmRNZXJnZVxuXG4gICAgICAgIHJldHVybiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0YWlsd2luZE1lcmdlKGNsYXNzTGlzdDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlR2V0KGNsYXNzTGlzdClcblxuICAgICAgICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBtZXJnZUNsYXNzTGlzdChjbGFzc0xpc3QsIGNvbmZpZ1V0aWxzKVxuICAgICAgICBjYWNoZVNldChjbGFzc0xpc3QsIHJlc3VsdClcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxUYWlsd2luZE1lcmdlKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub0NhbGwodHdKb2luLmFwcGx5KG51bGwsIGFyZ3VtZW50cyBhcyBhbnkpKVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBEZWZhdWx0VGhlbWVHcm91cElkcywgTm9JbmZlciwgVGhlbWVHZXR0ZXIsIFRoZW1lT2JqZWN0IH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGNvbnN0IGZyb21UaGVtZSA9IDxcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuICAgIERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgZXh0ZW5kcyBzdHJpbmcgPSBEZWZhdWx0VGhlbWVHcm91cElkcyxcbj4oa2V5OiBOb0luZmVyPERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pOiBUaGVtZUdldHRlciA9PiB7XG4gICAgY29uc3QgdGhlbWVHZXR0ZXIgPSAodGhlbWU6IFRoZW1lT2JqZWN0PERlZmF1bHRUaGVtZUdyb3VwSWRzSW5uZXIgfCBBZGRpdGlvbmFsVGhlbWVHcm91cElkcz4pID0+XG4gICAgICAgIHRoZW1lW2tleV0gfHwgW11cblxuICAgIHRoZW1lR2V0dGVyLmlzVGhlbWVHZXR0ZXIgPSB0cnVlIGFzIGNvbnN0XG5cbiAgICByZXR1cm4gdGhlbWVHZXR0ZXJcbn1cbiIsICJjb25zdCBhcmJpdHJhcnlWYWx1ZVJlZ2V4ID0gL15cXFsoPzooW2Etei1dKyk6KT8oLispXFxdJC9pXG5jb25zdCBmcmFjdGlvblJlZ2V4ID0gL15cXGQrXFwvXFxkKyQvXG5jb25zdCBzdHJpbmdMZW5ndGhzID0gbmV3IFNldChbJ3B4JywgJ2Z1bGwnLCAnc2NyZWVuJ10pXG5jb25zdCB0c2hpcnRVbml0UmVnZXggPSAvXihcXGQrKFxcLlxcZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvXG5jb25zdCBsZW5ndGhVbml0UmVnZXggPVxuICAgIC9cXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcXGIoY2FsY3xtaW58bWF4fGNsYW1wKVxcKC4rXFwpfF4wJC9cbmNvbnN0IGNvbG9yRnVuY3Rpb25SZWdleCA9IC9eKHJnYmE/fGhzbGE/fGh3Ynwob2spPyhsYWJ8bGNoKSlcXCguK1xcKSQvXG4vLyBTaGFkb3cgYWx3YXlzIGJlZ2lucyB3aXRoIHggYW5kIHkgb2Zmc2V0IHNlcGFyYXRlZCBieSB1bmRlcnNjb3JlIG9wdGlvbmFsbHkgcHJlcGVuZGVkIGJ5IGluc2V0XG5jb25zdCBzaGFkb3dSZWdleCA9IC9eKGluc2V0Xyk/LT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MClfLT8oKFxcZCspP1xcLj8oXFxkKylbYS16XSt8MCkvXG5jb25zdCBpbWFnZVJlZ2V4ID1cbiAgICAvXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVxcKC4rXFwpJC9cblxuZXhwb3J0IGNvbnN0IGlzTGVuZ3RoID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgaXNOdW1iZXIodmFsdWUpIHx8IHN0cmluZ0xlbmd0aHMuaGFzKHZhbHVlKSB8fCBmcmFjdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUxlbmd0aCA9ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgIGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsICdsZW5ndGgnLCBpc0xlbmd0aE9ubHkpXG5cbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBCb29sZWFuKHZhbHVlKSAmJiAhTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeU51bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBnZXRJc0FyYml0cmFyeVZhbHVlKHZhbHVlLCAnbnVtYmVyJywgaXNOdW1iZXIpXG5cbmV4cG9ydCBjb25zdCBpc0ludGVnZXIgPSAodmFsdWU6IHN0cmluZykgPT4gQm9vbGVhbih2YWx1ZSkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodmFsdWUpKVxuXG5leHBvcnQgY29uc3QgaXNQZXJjZW50ID0gKHZhbHVlOiBzdHJpbmcpID0+IHZhbHVlLmVuZHNXaXRoKCclJykgJiYgaXNOdW1iZXIodmFsdWUuc2xpY2UoMCwgLTEpKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiBhcmJpdHJhcnlWYWx1ZVJlZ2V4LnRlc3QodmFsdWUpXG5cbmV4cG9ydCBjb25zdCBpc1RzaGlydFNpemUgPSAodmFsdWU6IHN0cmluZykgPT4gdHNoaXJ0VW5pdFJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IHNpemVMYWJlbHMgPSBuZXcgU2V0KFsnbGVuZ3RoJywgJ3NpemUnLCAncGVyY2VudGFnZSddKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaXplID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIHNpemVMYWJlbHMsIGlzTmV2ZXIpXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeVBvc2l0aW9uID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJ3Bvc2l0aW9uJywgaXNOZXZlcilcblxuY29uc3QgaW1hZ2VMYWJlbHMgPSBuZXcgU2V0KFsnaW1hZ2UnLCAndXJsJ10pXG5cbmV4cG9ydCBjb25zdCBpc0FyYml0cmFyeUltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGdldElzQXJiaXRyYXJ5VmFsdWUodmFsdWUsIGltYWdlTGFiZWxzLCBpc0ltYWdlKVxuXG5leHBvcnQgY29uc3QgaXNBcmJpdHJhcnlTaGFkb3cgPSAodmFsdWU6IHN0cmluZykgPT4gZ2V0SXNBcmJpdHJhcnlWYWx1ZSh2YWx1ZSwgJycsIGlzU2hhZG93KVxuXG5leHBvcnQgY29uc3QgaXNBbnkgPSAoKSA9PiB0cnVlXG5cbmNvbnN0IGdldElzQXJiaXRyYXJ5VmFsdWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBsYWJlbDogc3RyaW5nIHwgU2V0PHN0cmluZz4sXG4gICAgdGVzdFZhbHVlOiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbixcbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFyYml0cmFyeVZhbHVlUmVnZXguZXhlYyh2YWx1ZSlcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdFsxXSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgPyByZXN1bHRbMV0gPT09IGxhYmVsIDogbGFiZWwuaGFzKHJlc3VsdFsxXSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0ZXN0VmFsdWUocmVzdWx0WzJdISlcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuY29uc3QgaXNMZW5ndGhPbmx5ID0gKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgLy8gYGNvbG9yRnVuY3Rpb25SZWdleGAgY2hlY2sgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgY29sb3IgZnVuY3Rpb25zIGNhbiBoYXZlIHBlcmNlbnRhZ2VzIGluIHRoZW0gd2hpY2ggd2hpY2ggd291bGQgYmUgaW5jb3JyZWN0bHkgY2xhc3NpZmllZCBhcyBsZW5ndGhzLlxuICAgIC8vIEZvciBleGFtcGxlLCBgaHNsKDAgMCUgMCUpYCB3b3VsZCBiZSBjbGFzc2lmaWVkIGFzIGEgbGVuZ3RoIHdpdGhvdXQgdGhpcyBjaGVjay5cbiAgICAvLyBJIGNvdWxkIGFsc28gdXNlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uIGluIGBsZW5ndGhVbml0UmVnZXhgIGJ1dCB0aGF0IGlzbid0IHN1cHBvcnRlZCB3aWRlbHkgZW5vdWdoLlxuICAgIGxlbmd0aFVuaXRSZWdleC50ZXN0KHZhbHVlKSAmJiAhY29sb3JGdW5jdGlvblJlZ2V4LnRlc3QodmFsdWUpXG5cbmNvbnN0IGlzTmV2ZXIgPSAoKSA9PiBmYWxzZVxuXG5jb25zdCBpc1NoYWRvdyA9ICh2YWx1ZTogc3RyaW5nKSA9PiBzaGFkb3dSZWdleC50ZXN0KHZhbHVlKVxuXG5jb25zdCBpc0ltYWdlID0gKHZhbHVlOiBzdHJpbmcpID0+IGltYWdlUmVnZXgudGVzdCh2YWx1ZSlcbiIsICJpbXBvcnQgeyBmcm9tVGhlbWUgfSBmcm9tICcuL2Zyb20tdGhlbWUnXG5pbXBvcnQgeyBDb25maWcsIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICAgIGlzQW55LFxuICAgIGlzQXJiaXRyYXJ5SW1hZ2UsXG4gICAgaXNBcmJpdHJhcnlMZW5ndGgsXG4gICAgaXNBcmJpdHJhcnlOdW1iZXIsXG4gICAgaXNBcmJpdHJhcnlQb3NpdGlvbixcbiAgICBpc0FyYml0cmFyeVNoYWRvdyxcbiAgICBpc0FyYml0cmFyeVNpemUsXG4gICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICBpc0ludGVnZXIsXG4gICAgaXNMZW5ndGgsXG4gICAgaXNOdW1iZXIsXG4gICAgaXNQZXJjZW50LFxuICAgIGlzVHNoaXJ0U2l6ZSxcbn0gZnJvbSAnLi92YWxpZGF0b3JzJ1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdENvbmZpZyA9ICgpID0+IHtcbiAgICBjb25zdCBjb2xvcnMgPSBmcm9tVGhlbWUoJ2NvbG9ycycpXG4gICAgY29uc3Qgc3BhY2luZyA9IGZyb21UaGVtZSgnc3BhY2luZycpXG4gICAgY29uc3QgYmx1ciA9IGZyb21UaGVtZSgnYmx1cicpXG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IGZyb21UaGVtZSgnYnJpZ2h0bmVzcycpXG4gICAgY29uc3QgYm9yZGVyQ29sb3IgPSBmcm9tVGhlbWUoJ2JvcmRlckNvbG9yJylcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBmcm9tVGhlbWUoJ2JvcmRlclJhZGl1cycpXG4gICAgY29uc3QgYm9yZGVyU3BhY2luZyA9IGZyb21UaGVtZSgnYm9yZGVyU3BhY2luZycpXG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBmcm9tVGhlbWUoJ2JvcmRlcldpZHRoJylcbiAgICBjb25zdCBjb250cmFzdCA9IGZyb21UaGVtZSgnY29udHJhc3QnKVxuICAgIGNvbnN0IGdyYXlzY2FsZSA9IGZyb21UaGVtZSgnZ3JheXNjYWxlJylcbiAgICBjb25zdCBodWVSb3RhdGUgPSBmcm9tVGhlbWUoJ2h1ZVJvdGF0ZScpXG4gICAgY29uc3QgaW52ZXJ0ID0gZnJvbVRoZW1lKCdpbnZlcnQnKVxuICAgIGNvbnN0IGdhcCA9IGZyb21UaGVtZSgnZ2FwJylcbiAgICBjb25zdCBncmFkaWVudENvbG9yU3RvcHMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wcycpXG4gICAgY29uc3QgZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnMgPSBmcm9tVGhlbWUoJ2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zJylcbiAgICBjb25zdCBpbnNldCA9IGZyb21UaGVtZSgnaW5zZXQnKVxuICAgIGNvbnN0IG1hcmdpbiA9IGZyb21UaGVtZSgnbWFyZ2luJylcbiAgICBjb25zdCBvcGFjaXR5ID0gZnJvbVRoZW1lKCdvcGFjaXR5JylcbiAgICBjb25zdCBwYWRkaW5nID0gZnJvbVRoZW1lKCdwYWRkaW5nJylcbiAgICBjb25zdCBzYXR1cmF0ZSA9IGZyb21UaGVtZSgnc2F0dXJhdGUnKVxuICAgIGNvbnN0IHNjYWxlID0gZnJvbVRoZW1lKCdzY2FsZScpXG4gICAgY29uc3Qgc2VwaWEgPSBmcm9tVGhlbWUoJ3NlcGlhJylcbiAgICBjb25zdCBza2V3ID0gZnJvbVRoZW1lKCdza2V3JylcbiAgICBjb25zdCBzcGFjZSA9IGZyb21UaGVtZSgnc3BhY2UnKVxuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IGZyb21UaGVtZSgndHJhbnNsYXRlJylcblxuICAgIGNvbnN0IGdldE92ZXJzY3JvbGwgPSAoKSA9PiBbJ2F1dG8nLCAnY29udGFpbicsICdub25lJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRPdmVyZmxvdyA9ICgpID0+IFsnYXV0bycsICdoaWRkZW4nLCAnY2xpcCcsICd2aXNpYmxlJywgJ3Njcm9sbCddIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSA9ICgpID0+IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSA9ICgpID0+IFsnJywgaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5ID0gKCkgPT4gWydhdXRvJywgaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0UG9zaXRpb25zID0gKCkgPT5cbiAgICAgICAgW1xuICAgICAgICAgICAgJ2JvdHRvbScsXG4gICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICdsZWZ0JyxcbiAgICAgICAgICAgICdsZWZ0LWJvdHRvbScsXG4gICAgICAgICAgICAnbGVmdC10b3AnLFxuICAgICAgICAgICAgJ3JpZ2h0JyxcbiAgICAgICAgICAgICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICAgJ3JpZ2h0LXRvcCcsXG4gICAgICAgICAgICAndG9wJyxcbiAgICAgICAgXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldExpbmVTdHlsZXMgPSAoKSA9PiBbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ25vbmUnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJsZW5kTW9kZXMgPSAoKSA9PlxuICAgICAgICBbXG4gICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICdtdWx0aXBseScsXG4gICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICdvdmVybGF5JyxcbiAgICAgICAgICAgICdkYXJrZW4nLFxuICAgICAgICAgICAgJ2xpZ2h0ZW4nLFxuICAgICAgICAgICAgJ2NvbG9yLWRvZGdlJyxcbiAgICAgICAgICAgICdjb2xvci1idXJuJyxcbiAgICAgICAgICAgICdoYXJkLWxpZ2h0JyxcbiAgICAgICAgICAgICdzb2Z0LWxpZ2h0JyxcbiAgICAgICAgICAgICdkaWZmZXJlbmNlJyxcbiAgICAgICAgICAgICdleGNsdXNpb24nLFxuICAgICAgICAgICAgJ2h1ZScsXG4gICAgICAgICAgICAnc2F0dXJhdGlvbicsXG4gICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgJ2x1bWlub3NpdHknLFxuICAgICAgICBdIGFzIGNvbnN0XG4gICAgY29uc3QgZ2V0QWxpZ24gPSAoKSA9PlxuICAgICAgICBbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnYmV0d2VlbicsICdhcm91bmQnLCAnZXZlbmx5JywgJ3N0cmV0Y2gnXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldFplcm9BbmRFbXB0eSA9ICgpID0+IFsnJywgJzAnLCBpc0FyYml0cmFyeVZhbHVlXSBhcyBjb25zdFxuICAgIGNvbnN0IGdldEJyZWFrcyA9ICgpID0+XG4gICAgICAgIFsnYXV0bycsICdhdm9pZCcsICdhbGwnLCAnYXZvaWQtcGFnZScsICdwYWdlJywgJ2xlZnQnLCAncmlnaHQnLCAnY29sdW1uJ10gYXMgY29uc3RcbiAgICBjb25zdCBnZXROdW1iZXJBbmRBcmJpdHJhcnkgPSAoKSA9PiBbaXNOdW1iZXIsIGlzQXJiaXRyYXJ5VmFsdWVdXG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYWNoZVNpemU6IDUwMCxcbiAgICAgICAgc2VwYXJhdG9yOiAnOicsXG4gICAgICAgIHRoZW1lOiB7XG4gICAgICAgICAgICBjb2xvcnM6IFtpc0FueV0sXG4gICAgICAgICAgICBzcGFjaW5nOiBbaXNMZW5ndGgsIGlzQXJiaXRyYXJ5TGVuZ3RoXSxcbiAgICAgICAgICAgIGJsdXI6IFsnbm9uZScsICcnLCBpc1RzaGlydFNpemUsIGlzQXJiaXRyYXJ5VmFsdWVdLFxuICAgICAgICAgICAgYnJpZ2h0bmVzczogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogW2NvbG9yc10sXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFsnbm9uZScsICcnLCAnZnVsbCcsIGlzVHNoaXJ0U2l6ZSwgaXNBcmJpdHJhcnlWYWx1ZV0sXG4gICAgICAgICAgICBib3JkZXJTcGFjaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGdldExlbmd0aFdpdGhFbXB0eUFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgY29udHJhc3Q6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JheXNjYWxlOiBnZXRaZXJvQW5kRW1wdHkoKSxcbiAgICAgICAgICAgIGh1ZVJvdGF0ZTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBpbnZlcnQ6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgZ2FwOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgZ3JhZGllbnRDb2xvclN0b3BzOiBbY29sb3JzXSxcbiAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zOiBbaXNQZXJjZW50LCBpc0FyYml0cmFyeUxlbmd0aF0sXG4gICAgICAgICAgICBpbnNldDogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBtYXJnaW46IGdldFNwYWNpbmdXaXRoQXV0b0FuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgb3BhY2l0eTogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBwYWRkaW5nOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2F0dXJhdGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2NhbGU6IGdldE51bWJlckFuZEFyYml0cmFyeSgpLFxuICAgICAgICAgICAgc2VwaWE6IGdldFplcm9BbmRFbXB0eSgpLFxuICAgICAgICAgICAgc2tldzogZ2V0TnVtYmVyQW5kQXJiaXRyYXJ5KCksXG4gICAgICAgICAgICBzcGFjZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NHcm91cHM6IHtcbiAgICAgICAgICAgIC8vIExheW91dFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBc3BlY3QgUmF0aW9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hc3BlY3QtcmF0aW9cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXNwZWN0OiBbeyBhc3BlY3Q6IFsnYXV0bycsICdzcXVhcmUnLCAndmlkZW8nLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udGFpbmVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGFpbmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRhaW5lcjogWydjb250YWluZXInXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbHVtbnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY29sdW1uczogW3sgY29sdW1uczogW2lzVHNoaXJ0U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEFmdGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYnJlYWstYWZ0ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWFmdGVyJzogW3sgJ2JyZWFrLWFmdGVyJzogZ2V0QnJlYWtzKCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJyZWFrIEJlZm9yZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyZWFrLWJlZm9yZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYnJlYWstYmVmb3JlJzogW3sgJ2JyZWFrLWJlZm9yZSc6IGdldEJyZWFrcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCcmVhayBJbnNpZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9icmVhay1pbnNpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JyZWFrLWluc2lkZSc6IFt7ICdicmVhay1pbnNpZGUnOiBbJ2F1dG8nLCAnYXZvaWQnLCAnYXZvaWQtcGFnZScsICdhdm9pZC1jb2x1bW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm94IERlY29yYXRpb24gQnJlYWtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtZGVjb3JhdGlvbi1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm94LWRlY29yYXRpb24nOiBbeyAnYm94LWRlY29yYXRpb24nOiBbJ3NsaWNlJywgJ2Nsb25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaXppbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2l6aW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveDogW3sgYm94OiBbJ2JvcmRlcicsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpc3BsYXlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXNwbGF5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGRpc3BsYXk6IFtcbiAgICAgICAgICAgICAgICAnYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICdpbmxpbmUnLFxuICAgICAgICAgICAgICAgICdmbGV4JyxcbiAgICAgICAgICAgICAgICAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgICd0YWJsZScsXG4gICAgICAgICAgICAgICAgJ2lubGluZS10YWJsZScsXG4gICAgICAgICAgICAgICAgJ3RhYmxlLWNhcHRpb24nLFxuICAgICAgICAgICAgICAgICd0YWJsZS1jZWxsJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uJyxcbiAgICAgICAgICAgICAgICAndGFibGUtY29sdW1uLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtZm9vdGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtaGVhZGVyLWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93LWdyb3VwJyxcbiAgICAgICAgICAgICAgICAndGFibGUtcm93JyxcbiAgICAgICAgICAgICAgICAnZmxvdy1yb290JyxcbiAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgJ2lubGluZS1ncmlkJyxcbiAgICAgICAgICAgICAgICAnY29udGVudHMnLFxuICAgICAgICAgICAgICAgICdsaXN0LWl0ZW0nLFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxvYXRzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxvYXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxvYXQ6IFt7IGZsb2F0OiBbJ3JpZ2h0JywgJ2xlZnQnLCAnbm9uZScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2xlYXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjbGVhcjogW3sgY2xlYXI6IFsnbGVmdCcsICdyaWdodCcsICdib3RoJywgJ25vbmUnLCAnc3RhcnQnLCAnZW5kJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElzb2xhdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2lzb2xhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpc29sYXRpb246IFsnaXNvbGF0ZScsICdpc29sYXRpb24tYXV0byddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPYmplY3QgRml0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb2JqZWN0LWZpdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LWZpdCc6IFt7IG9iamVjdDogWydjb250YWluJywgJ2NvdmVyJywgJ2ZpbGwnLCAnbm9uZScsICdzY2FsZS1kb3duJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9iamVjdCBQb3NpdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL29iamVjdC1wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb2JqZWN0LXBvc2l0aW9uJzogW3sgb2JqZWN0OiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJmbG93OiBbeyBvdmVyZmxvdzogZ2V0T3ZlcmZsb3coKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcmZsb3cgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL292ZXJmbG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdvdmVyZmxvdy14JzogW3sgJ292ZXJmbG93LXgnOiBnZXRPdmVyZmxvdygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdmVyZmxvdyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcmZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ292ZXJmbG93LXknOiBbeyAnb3ZlcmZsb3cteSc6IGdldE92ZXJmbG93KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE92ZXJzY3JvbGwgQmVoYXZpb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vdmVyc2Nyb2xsLWJlaGF2aW9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG92ZXJzY3JvbGw6IFt7IG92ZXJzY3JvbGw6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC14JzogW3sgJ292ZXJzY3JvbGwteCc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3ZlcnNjcm9sbCBCZWhhdmlvciBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3ZlcnNjcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3ZlcnNjcm9sbC15JzogW3sgJ292ZXJzY3JvbGwteSc6IGdldE92ZXJzY3JvbGwoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb3NpdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwb3NpdGlvbjogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvcCAvIFJpZ2h0IC8gQm90dG9tIC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbnNldDogW3sgaW5zZXQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpZ2h0IC8gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnaW5zZXQteCc6IFt7ICdpbnNldC14JzogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wIC8gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdpbnNldC15JzogW3sgJ2luc2V0LXknOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzdGFydDogW3sgc3RhcnQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBlbmQ6IFt7IGVuZDogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG9wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvcDogW3sgdG9wOiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICByaWdodDogW3sgcmlnaHQ6IFtpbnNldF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBib3R0b206IFt7IGJvdHRvbTogW2luc2V0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RvcC1yaWdodC1ib3R0b20tbGVmdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZWZ0OiBbeyBsZWZ0OiBbaW5zZXRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWaXNpYmlsaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdmlzaWJpbGl0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBbJ3Zpc2libGUnLCAnaW52aXNpYmxlJywgJ2NvbGxhcHNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFotSW5kZXhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy96LWluZGV4XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHo6IFt7IHo6IFsnYXV0bycsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBGbGV4Ym94IGFuZCBHcmlkXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggQmFzaXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LWJhc2lzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJhc2lzOiBbeyBiYXNpczogZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggRGlyZWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmxleC1kaXJlY3Rpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogW3sgZmxleDogWydyb3cnLCAncm93LXJldmVyc2UnLCAnY29sJywgJ2NvbC1yZXZlcnNlJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggV3JhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtd3JhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZmxleC13cmFwJzogW3sgZmxleDogWyd3cmFwJywgJ3dyYXAtcmV2ZXJzZScsICdub3dyYXAnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmxleDogW3sgZmxleDogWycxJywgJ2F1dG8nLCAnaW5pdGlhbCcsICdub25lJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZsZXggR3Jvd1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZsZXgtZ3Jvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBncm93OiBbeyBncm93OiBnZXRaZXJvQW5kRW1wdHkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxleCBTaHJpbmtcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mbGV4LXNocmlua1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzaHJpbms6IFt7IHNocmluazogZ2V0WmVyb0FuZEVtcHR5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9yZGVyXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3JkZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3JkZXI6IFt7IG9yZGVyOiBbJ2ZpcnN0JywgJ2xhc3QnLCAnbm9uZScsIGlzSW50ZWdlciwgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgVGVtcGxhdGUgQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtdGVtcGxhdGUtY29sdW1uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JpZC1jb2xzJzogW3sgJ2dyaWQtY29scyc6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIFN0YXJ0IC8gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1jb2x1bW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2NvbC1zdGFydC1lbmQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2w6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3BhbjogWydmdWxsJywgaXNJbnRlZ2VyLCBpc0FyYml0cmFyeVZhbHVlXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBDb2x1bW4gU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWNvbHVtblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnY29sLXN0YXJ0JzogW3sgJ2NvbC1zdGFydCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQ29sdW1uIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtY29sdW1uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjb2wtZW5kJzogW3sgJ2NvbC1lbmQnOiBnZXROdW1iZXJXaXRoQXV0b0FuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFRlbXBsYXRlIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLXRlbXBsYXRlLXJvd3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtcm93cyc6IFt7ICdncmlkLXJvd3MnOiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydCAvIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQtZW5kJzogW1xuICAgICAgICAgICAgICAgIHsgcm93OiBbJ2F1dG8nLCB7IHNwYW46IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH0sIGlzQXJiaXRyYXJ5VmFsdWVdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIFJvdyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtcm93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3ctc3RhcnQnOiBbeyAncm93LXN0YXJ0JzogZ2V0TnVtYmVyV2l0aEF1dG9BbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBSb3cgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1yb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jvdy1lbmQnOiBbeyAncm93LWVuZCc6IGdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyaWQgQXV0byBGbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JpZC1hdXRvLWZsb3dcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2dyaWQtZmxvdyc6IFt7ICdncmlkLWZsb3cnOiBbJ3JvdycsICdjb2wnLCAnZGVuc2UnLCAncm93LWRlbnNlJywgJ2NvbC1kZW5zZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmlkIEF1dG8gQ29sdW1uc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dyaWQtYXV0by1jb2x1bW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhdXRvLWNvbHMnOiBbeyAnYXV0by1jb2xzJzogWydhdXRvJywgJ21pbicsICdtYXgnLCAnZnInLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JpZCBBdXRvIFJvd3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmlkLWF1dG8tcm93c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYXV0by1yb3dzJzogW3sgJ2F1dG8tcm93cyc6IFsnYXV0bycsICdtaW4nLCAnbWF4JywgJ2ZyJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBnYXA6IFt7IGdhcDogW2dhcF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdhcCBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ2FwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdnYXAteCc6IFt7ICdnYXAteCc6IFtnYXBdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHYXAgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2dhcFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ2FwLXknOiBbeyAnZ2FwLXknOiBbZ2FwXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1jb250ZW50XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBbeyBqdXN0aWZ5OiBbJ25vcm1hbCcsIC4uLmdldEFsaWduKCldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBKdXN0aWZ5IEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1pdGVtc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnanVzdGlmeS1pdGVtcyc6IFt7ICdqdXN0aWZ5LWl0ZW1zJzogWydzdGFydCcsICdlbmQnLCAnY2VudGVyJywgJ3N0cmV0Y2gnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSnVzdGlmeSBTZWxmXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdGlmeS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdqdXN0aWZ5LXNlbGYnOiBbeyAnanVzdGlmeS1zZWxmJzogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbGlnbiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24tY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYWxpZ24tY29udGVudCc6IFt7IGNvbnRlbnQ6IFsnbm9ybWFsJywgLi4uZ2V0QWxpZ24oKSwgJ2Jhc2VsaW5lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIEl0ZW1zXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWxpZ24taXRlbXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2FsaWduLWl0ZW1zJzogW3sgaXRlbXM6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsaWduIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9hbGlnbi1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdhbGlnbi1zZWxmJzogW3sgc2VsZjogWydhdXRvJywgJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInLCAnc3RyZXRjaCcsICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGxhY2UtY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncGxhY2UtY29udGVudCc6IFt7ICdwbGFjZS1jb250ZW50JzogWy4uLmdldEFsaWduKCksICdiYXNlbGluZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZSBJdGVtc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlLWl0ZW1zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1pdGVtcyc6IFt7ICdwbGFjZS1pdGVtcyc6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdiYXNlbGluZScsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBsYWNlIFNlbGZcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wbGFjZS1zZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZS1zZWxmJzogW3sgJ3BsYWNlLXNlbGYnOiBbJ2F1dG8nLCAnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdzdHJldGNoJ10gfV0sXG4gICAgICAgICAgICAvLyBTcGFjaW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHA6IFt7IHA6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweDogW3sgcHg6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBweTogW3sgcHk6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcHM6IFt7IHBzOiBbcGFkZGluZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhZGRpbmcgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwZTogW3sgcGU6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHB0OiBbeyBwdDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBwcjogW3sgcHI6IFtwYWRkaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFkZGluZyBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBiOiBbeyBwYjogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYWRkaW5nIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBsOiBbeyBwbDogW3BhZGRpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbTogW3sgbTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG14OiBbeyBteDogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG15OiBbeyBteTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBtczogW3sgbXM6IFttYXJnaW5dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXJnaW4gRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1lOiBbeyBtZTogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbXQ6IFt7IG10OiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG1yOiBbeyBtcjogW21hcmdpbl0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1hcmdpbiBCb3R0b21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWI6IFt7IG1iOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFyZ2luIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbWw6IFt7IG1sOiBbbWFyZ2luXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3BhY2UgQmV0d2VlbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgnOiBbeyAnc3BhY2UteCc6IFtzcGFjZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWCBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NwYWNlLXgtcmV2ZXJzZSc6IFsnc3BhY2UteC1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNwYWNlIEJldHdlZW4gWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15JzogW3sgJ3NwYWNlLXknOiBbc3BhY2VdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTcGFjZSBCZXR3ZWVuIFkgUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzcGFjZS15LXJldmVyc2UnOiBbJ3NwYWNlLXktcmV2ZXJzZSddLFxuICAgICAgICAgICAgLy8gU2l6aW5nXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdzogW1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2dycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZ3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdncnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1pbi1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21pbi13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLXcnOiBbeyAnbWluLXcnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1XaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL21heC13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAnbWF4LXcnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmdWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21heCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IHNjcmVlbjogW2lzVHNoaXJ0U2l6ZV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVHNoaXJ0U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGg6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ21pbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWF4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdmaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3N2aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbHZoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkdmgnLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNaW4tSGVpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbWluLWhlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWluLWgnOiBbXG4gICAgICAgICAgICAgICAgeyAnbWluLWgnOiBbaXNBcmJpdHJhcnlWYWx1ZSwgc3BhY2luZywgJ21pbicsICdtYXgnLCAnZml0JywgJ3N2aCcsICdsdmgnLCAnZHZoJ10gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heC1IZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9tYXgtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdtYXgtaCc6IFtcbiAgICAgICAgICAgICAgICB7ICdtYXgtaCc6IFtpc0FyYml0cmFyeVZhbHVlLCBzcGFjaW5nLCAnbWluJywgJ21heCcsICdmaXQnLCAnc3ZoJywgJ2x2aCcsICdkdmgnXSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc2l6ZTogW3sgc2l6ZTogW2lzQXJiaXRyYXJ5VmFsdWUsIHNwYWNpbmcsICdhdXRvJywgJ21pbicsICdtYXgnLCAnZml0J10gfV0sXG4gICAgICAgICAgICAvLyBUeXBvZ3JhcGh5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zaXplJzogW3sgdGV4dDogWydiYXNlJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgU21vb3RoaW5nXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zbW9vdGhpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2ZvbnQtc21vb3RoaW5nJzogWydhbnRpYWxpYXNlZCcsICdzdWJwaXhlbC1hbnRpYWxpYXNlZCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC1zdHlsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IFsnaXRhbGljJywgJ25vdC1pdGFsaWMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBXZWlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXdlaWdodFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC13ZWlnaHQnOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhpbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW1pYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm9sZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZXh0cmFib2xkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdibGFjaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBGYW1pbHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LWZhbWlseVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9udC1mYW1pbHknOiBbeyBmb250OiBbaXNBbnldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tbm9ybWFsJzogWydub3JtYWwtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tb3JkaW5hbCc6IFsnb3JkaW5hbCddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydzbGFzaGVkLXplcm8nXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRm9udCBWYXJpYW50IE51bWVyaWNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9mb250LXZhcmlhbnQtbnVtZXJpY1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnbGluaW5nLW51bXMnLCAnb2xkc3R5bGUtbnVtcyddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb250IFZhcmlhbnQgTnVtZXJpY1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZvbnQtdmFyaWFudC1udW1lcmljXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdmdm4tc3BhY2luZyc6IFsncHJvcG9ydGlvbmFsLW51bXMnLCAndGFidWxhci1udW1zJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZvbnQgVmFyaWFudCBOdW1lcmljXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9udC12YXJpYW50LW51bWVyaWNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2Z2bi1mcmFjdGlvbic6IFsnZGlhZ29uYWwtZnJhY3Rpb25zJywgJ3N0YWNrZWQtZnJhY3RvbnMnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGV0dGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9sZXR0ZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFja2luZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2lkZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpbmUgQ2xhbXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saW5lLWNsYW1wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaW5lLWNsYW1wJzogW3sgJ2xpbmUtY2xhbXAnOiBbJ25vbmUnLCBpc051bWJlciwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMaW5lIEhlaWdodFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRpbmc6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc251ZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdyZWxheGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdsb29zZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LWltYWdlJzogW3sgJ2xpc3QtaW1hZ2UnOiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTGlzdCBTdHlsZSBUeXBlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvbGlzdC1zdHlsZS10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXR5cGUnOiBbeyBsaXN0OiBbJ25vbmUnLCAnZGlzYycsICdkZWNpbWFsJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExpc3QgU3R5bGUgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9saXN0LXN0eWxlLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdsaXN0LXN0eWxlLXBvc2l0aW9uJzogW3sgbGlzdDogWydpbnNpZGUnLCAnb3V0c2lkZSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQbGFjZWhvbGRlciBDb2xvclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdwbGFjZWhvbGRlci1jb2xvcic6IFt7IHBsYWNlaG9sZGVyOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGxhY2Vob2xkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3BsYWNlaG9sZGVyLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyLW9wYWNpdHknOiBbeyAncGxhY2Vob2xkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBBbGlnbm1lbnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWFsaWdubWVudCc6IFt7IHRleHQ6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAnanVzdGlmeScsICdzdGFydCcsICdlbmQnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RleHQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtY29sb3InOiBbeyB0ZXh0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LW9wYWNpdHknOiBbeyAndGV4dC1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LWRlY29yYXRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IFsndW5kZXJsaW5lJywgJ292ZXJsaW5lJywgJ2xpbmUtdGhyb3VnaCcsICduby11bmRlcmxpbmUnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnOiBbeyBkZWNvcmF0aW9uOiBbLi4uZ2V0TGluZVN0eWxlcygpLCAnd2F2eSddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IERlY29yYXRpb24gVGhpY2tuZXNzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyc6IFtcbiAgICAgICAgICAgICAgICB7IGRlY29yYXRpb246IFsnYXV0bycsICdmcm9tLWZvbnQnLCBpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IFVuZGVybGluZSBPZmZzZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXVuZGVybGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3VuZGVybGluZS1vZmZzZXQnOiBbeyAndW5kZXJsaW5lLW9mZnNldCc6IFsnYXV0bycsIGlzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBEZWNvcmF0aW9uIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1kZWNvcmF0aW9uLWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LWRlY29yYXRpb24tY29sb3InOiBbeyBkZWNvcmF0aW9uOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBUcmFuc2Zvcm1cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90ZXh0LXRyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXh0IE92ZXJmbG93XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1vdmVyZmxvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndGV4dC1vdmVyZmxvdyc6IFsndHJ1bmNhdGUnLCAndGV4dC1lbGxpcHNpcycsICd0ZXh0LWNsaXAnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGV4dCBXcmFwXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC13cmFwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0ZXh0LXdyYXAnOiBbeyB0ZXh0OiBbJ3dyYXAnLCAnbm93cmFwJywgJ2JhbGFuY2UnLCAncHJldHR5J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRleHQgSW5kZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGV4dC1pbmRlbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW5kZW50OiBbeyBpbmRlbnQ6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZlcnRpY2FsIEFsaWdubWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3ZlcnRpY2FsLWFsaWduXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd2ZXJ0aWNhbC1hbGlnbic6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmFzZWxpbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbWlkZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtdG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWJvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc3ViJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGl0ZXNwYWNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd2hpdGVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB3aGl0ZXNwYWNlOiBbXG4gICAgICAgICAgICAgICAgeyB3aGl0ZXNwYWNlOiBbJ25vcm1hbCcsICdub3dyYXAnLCAncHJlJywgJ3ByZS1saW5lJywgJ3ByZS13cmFwJywgJ2JyZWFrLXNwYWNlcyddIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXb3JkIEJyZWFrXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvd29yZC1icmVha1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBicmVhazogW3sgYnJlYWs6IFsnbm9ybWFsJywgJ3dvcmRzJywgJ2FsbCcsICdrZWVwJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEh5cGhlbnNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9oeXBoZW5zXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGh5cGhlbnM6IFt7IGh5cGhlbnM6IFsnbm9uZScsICdtYW51YWwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250ZW50XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvY29udGVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb250ZW50OiBbeyBjb250ZW50OiBbJ25vbmUnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8vIEJhY2tncm91bmRzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgQXR0YWNobWVudFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtYXR0YWNobWVudFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctYXR0YWNobWVudCc6IFt7IGJnOiBbJ2ZpeGVkJywgJ2xvY2FsJywgJ3Njcm9sbCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENsaXBcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWNsaXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JnLWNsaXAnOiBbeyAnYmctY2xpcCc6IFsnYm9yZGVyJywgJ3BhZGRpbmcnLCAnY29udGVudCcsICd0ZXh0J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgT3BhY2l0eVxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3BhY2l0eVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctb3BhY2l0eSc6IFt7ICdiZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIE9yaWdpblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1vcmlnaW4nOiBbeyAnYmctb3JpZ2luJzogWydib3JkZXInLCAncGFkZGluZycsICdjb250ZW50J10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLXBvc2l0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1wb3NpdGlvbic6IFt7IGJnOiBbLi4uZ2V0UG9zaXRpb25zKCksIGlzQXJiaXRyYXJ5UG9zaXRpb25dIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIFJlcGVhdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtcmVwZWF0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1yZXBlYXQnOiBbeyBiZzogWyduby1yZXBlYXQnLCB7IHJlcGVhdDogWycnLCAneCcsICd5JywgJ3JvdW5kJywgJ3NwYWNlJ10gfV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgU2l6ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tncm91bmQtc2l6ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctc2l6ZSc6IFt7IGJnOiBbJ2F1dG8nLCAnY292ZXInLCAnY29udGFpbicsIGlzQXJiaXRyYXJ5U2l6ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tncm91bmQgSW1hZ2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZ3JvdW5kLWltYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1pbWFnZSc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJnOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB7ICdncmFkaWVudC10byc6IFsndCcsICd0cicsICdyJywgJ2JyJywgJ2InLCAnYmwnLCAnbCcsICd0bCddIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeUltYWdlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZ3JvdW5kIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmctY29sb3InOiBbeyBiZzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb20gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbS1wb3MnOiBbeyBmcm9tOiBbZ3JhZGllbnRDb2xvclN0b3BQb3NpdGlvbnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWEgUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhLXBvcyc6IFt7IHZpYTogW2dyYWRpZW50Q29sb3JTdG9wUG9zaXRpb25zXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG8gUG9zaXRpb25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8tcG9zJzogW3sgdG86IFtncmFkaWVudENvbG9yU3RvcFBvc2l0aW9uc10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdyYWRpZW50IENvbG9yIFN0b3BzIEZyb21cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtZnJvbSc6IFt7IGZyb206IFtncmFkaWVudENvbG9yU3RvcHNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHcmFkaWVudCBDb2xvciBTdG9wcyBWaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdmlhJzogW3sgdmlhOiBbZ3JhZGllbnRDb2xvclN0b3BzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JhZGllbnQgQ29sb3IgU3RvcHMgVG9cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ncmFkaWVudC1jb2xvci1zdG9wc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZ3JhZGllbnQtdG8nOiBbeyB0bzogW2dyYWRpZW50Q29sb3JTdG9wc10gfV0sXG4gICAgICAgICAgICAvLyBCb3JkZXJzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJvdW5kZWQ6IFt7IHJvdW5kZWQ6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1zJzogW3sgJ3JvdW5kZWQtcyc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtZSc6IFt7ICdyb3VuZGVkLWUnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbeyAncm91bmRlZC10JzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXInOiBbeyAncm91bmRlZC1yJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1iJzogW3sgJ3JvdW5kZWQtYic6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgUmFkaXVzIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbeyAncm91bmRlZC1sJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgU3RhcnQgU3RhcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNzJzogW3sgJ3JvdW5kZWQtc3MnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBTdGFydCBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXNlJzogW3sgJ3JvdW5kZWQtc2UnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBFbmQgRW5kXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lZSc6IFt7ICdyb3VuZGVkLWVlJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgRW5kIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncm91bmRlZC1lcyc6IFt7ICdyb3VuZGVkLWVzJzogW2JvcmRlclJhZGl1c10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBSYWRpdXMgVG9wIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRsJzogW3sgJ3JvdW5kZWQtdGwnOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBUb3AgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLXRyJzogW3sgJ3JvdW5kZWQtdHInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyb3VuZGVkLWJyJzogW3sgJ3JvdW5kZWQtYnInOiBbYm9yZGVyUmFkaXVzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFJhZGl1cyBCb3R0b20gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1yYWRpdXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JvdW5kZWQtYmwnOiBbeyAncm91bmRlZC1ibCc6IFtib3JkZXJSYWRpdXNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13JzogW3sgYm9yZGVyOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFt7ICdib3JkZXIteCc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1zJzogW3sgJ2JvcmRlci1zJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXctZSc6IFt7ICdib3JkZXItZSc6IFtib3JkZXJXaWR0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBXaWR0aCBUb3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LXInOiBbeyAnYm9yZGVyLXInOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgV2lkdGggQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItdy1iJzogW3sgJ2JvcmRlci1iJzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFdpZHRoIExlZnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci13LWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItb3BhY2l0eSc6IFt7ICdib3JkZXItb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFN0eWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXN0eWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItc3R5bGUnOiBbeyBib3JkZXI6IFsuLi5nZXRMaW5lU3R5bGVzKCksICdoaWRkZW4nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS14JzogW3sgJ2RpdmlkZS14JzogW2JvcmRlcldpZHRoXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGl2aWRlIFdpZHRoIFggUmV2ZXJzZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXgtcmV2ZXJzZSc6IFsnZGl2aWRlLXgtcmV2ZXJzZSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2RpdmlkZS13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZGl2aWRlLXknOiBbeyAnZGl2aWRlLXknOiBbYm9yZGVyV2lkdGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgV2lkdGggWSBSZXZlcnNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdkaXZpZGUteS1yZXZlcnNlJzogWydkaXZpZGUteS1yZXZlcnNlJ10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERpdmlkZSBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZGl2aWRlLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1vcGFjaXR5JzogW3sgJ2RpdmlkZS1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgU3R5bGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1zdHlsZSc6IFt7IGRpdmlkZTogZ2V0TGluZVN0eWxlcygpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvcic6IFt7IGJvcmRlcjogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogW3sgJ2JvcmRlci14JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogW3sgJ2JvcmRlci15JzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLXQnOiBbeyAnYm9yZGVyLXQnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJzogW3sgJ2JvcmRlci1yJzogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbG9yIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInOiBbeyAnYm9yZGVyLWInOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgQ29sb3IgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JvcmRlci1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWwnOiBbeyAnYm9yZGVyLWwnOiBbYm9yZGVyQ29sb3JdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEaXZpZGUgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kaXZpZGUtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2RpdmlkZS1jb2xvcic6IFt7IGRpdmlkZTogW2JvcmRlckNvbG9yXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBTdHlsZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtc3R5bGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtc3R5bGUnOiBbeyBvdXRsaW5lOiBbJycsIC4uLmdldExpbmVTdHlsZXMoKV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE91dGxpbmUgT2Zmc2V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1vZmZzZXRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtb2Zmc2V0JzogW3sgJ291dGxpbmUtb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT3V0bGluZSBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL291dGxpbmUtd2lkdGhcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ291dGxpbmUtdyc6IFt7IG91dGxpbmU6IFtpc0xlbmd0aCwgaXNBcmJpdHJhcnlMZW5ndGhdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBPdXRsaW5lIENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvb3V0bGluZS1jb2xvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnb3V0bGluZS1jb2xvcic6IFt7IG91dGxpbmU6IFtjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy13aWR0aFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncmluZy13JzogW3sgcmluZzogZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgV2lkdGggSW5zZXRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yaW5nLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLXctaW5zZXQnOiBbJ3JpbmctaW5zZXQnXSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBDb2xvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3JpbmctY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3JpbmctY29sb3InOiBbeyByaW5nOiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmluZyBPcGFjaXR5XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9wYWNpdHknOiBbeyAncmluZy1vcGFjaXR5JzogW29wYWNpdHldIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSaW5nIE9mZnNldCBXaWR0aFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Jpbmctb2Zmc2V0LXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdyaW5nLW9mZnNldC13JzogW3sgJ3Jpbmctb2Zmc2V0JzogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aF0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJpbmcgT2Zmc2V0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvcmluZy1vZmZzZXQtY29sb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Jpbmctb2Zmc2V0LWNvbG9yJzogW3sgJ3Jpbmctb2Zmc2V0JzogW2NvbG9yc10gfV0sXG4gICAgICAgICAgICAvLyBFZmZlY3RzXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNoYWRvdzogW3sgc2hhZG93OiBbJycsICdpbm5lcicsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVNoYWRvd10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJveCBTaGFkb3cgQ29sb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3gtc2hhZG93LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzaGFkb3ctY29sb3InOiBbeyBzaGFkb3c6IFtpc0FueV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9wYWNpdHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9vcGFjaXR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9wYWNpdHk6IFt7IG9wYWNpdHk6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWl4IEJsZW5kIE1vZGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9taXgtYmxlbmQtbW9kZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnbWl4LWJsZW5kJzogW3sgJ21peC1ibGVuZCc6IFsuLi5nZXRCbGVuZE1vZGVzKCksICdwbHVzLWxpZ2h0ZXInLCAncGx1cy1kYXJrZXInXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2dyb3VuZCBCbGVuZCBNb2RlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYmFja2dyb3VuZC1ibGVuZC1tb2RlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiZy1ibGVuZCc6IFt7ICdiZy1ibGVuZCc6IGdldEJsZW5kTW9kZXMoKSB9XSxcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsdGVyXG4gICAgICAgICAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSBUYWlsd2luZCBDU1MgdjMuMC4wXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZmlsdGVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZpbHRlcjogW3sgZmlsdGVyOiBbJycsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJsdXJcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ibHVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJsdXI6IFt7IGJsdXI6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYnJpZ2h0bmVzczogW3sgYnJpZ2h0bmVzczogW2JyaWdodG5lc3NdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb250cmFzdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NvbnRyYXN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnRyYXN0OiBbeyBjb250cmFzdDogW2NvbnRyYXN0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRHJvcCBTaGFkb3dcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9kcm9wLXNoYWRvd1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZHJvcC1zaGFkb3cnOiBbeyAnZHJvcC1zaGFkb3cnOiBbJycsICdub25lJywgaXNUc2hpcnRTaXplLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR3JheXNjYWxlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZ3JheXNjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdyYXlzY2FsZTogW3sgZ3JheXNjYWxlOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2h1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2h1ZS1yb3RhdGUnOiBbeyAnaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaW52ZXJ0OiBbeyBpbnZlcnQ6IFtpbnZlcnRdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTYXR1cmF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NhdHVyYXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNhdHVyYXRlOiBbeyBzYXR1cmF0ZTogW3NhdHVyYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2VwaWFcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zZXBpYVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzZXBpYTogW3sgc2VwaWE6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJhY2tkcm9wIEZpbHRlclxuICAgICAgICAgICAgICogQGRlcHJlY2F0ZWQgc2luY2UgVGFpbHdpbmQgQ1NTIHYzLjAuMFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWZpbHRlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtZmlsdGVyJzogW3sgJ2JhY2tkcm9wLWZpbHRlcic6IFsnJywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQmx1clxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJsdXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXInOiBbeyAnYmFja2Ryb3AtYmx1cic6IFtibHVyXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQnJpZ2h0bmVzc1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWJyaWdodG5lc3NcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWJyaWdodG5lc3MnOiBbeyAnYmFja2Ryb3AtYnJpZ2h0bmVzcyc6IFticmlnaHRuZXNzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgQ29udHJhc3RcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1jb250cmFzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3AtY29udHJhc3QnOiBbeyAnYmFja2Ryb3AtY29udHJhc3QnOiBbY29udHJhc3RdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBHcmF5c2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1ncmF5c2NhbGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWdyYXlzY2FsZSc6IFt7ICdiYWNrZHJvcC1ncmF5c2NhbGUnOiBbZ3JheXNjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgSHVlIFJvdGF0ZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLWh1ZS1yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWh1ZS1yb3RhdGUnOiBbeyAnYmFja2Ryb3AtaHVlLXJvdGF0ZSc6IFtodWVSb3RhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBJbnZlcnRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1pbnZlcnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLWludmVydCc6IFt7ICdiYWNrZHJvcC1pbnZlcnQnOiBbaW52ZXJ0XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgT3BhY2l0eVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLW9wYWNpdHlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JhY2tkcm9wLW9wYWNpdHknOiBbeyAnYmFja2Ryb3Atb3BhY2l0eSc6IFtvcGFjaXR5XSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQmFja2Ryb3AgU2F0dXJhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9iYWNrZHJvcC1zYXR1cmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbeyAnYmFja2Ryb3Atc2F0dXJhdGUnOiBbc2F0dXJhdGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNrZHJvcCBTZXBpYVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2JhY2tkcm9wLXNlcGlhXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdiYWNrZHJvcC1zZXBpYSc6IFt7ICdiYWNrZHJvcC1zZXBpYSc6IFtzZXBpYV0gfV0sXG4gICAgICAgICAgICAvLyBUYWJsZXNcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIENvbGxhcHNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLWNvbGxhcHNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdib3JkZXItY29sbGFwc2UnOiBbeyBib3JkZXI6IFsnY29sbGFwc2UnLCAnc2VwYXJhdGUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQm9yZGVyIFNwYWNpbmdcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcnOiBbeyAnYm9yZGVyLXNwYWNpbmcnOiBbYm9yZGVyU3BhY2luZ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJvcmRlciBTcGFjaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9ib3JkZXItc3BhY2luZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnYm9yZGVyLXNwYWNpbmcteCc6IFt7ICdib3JkZXItc3BhY2luZy14JzogW2JvcmRlclNwYWNpbmddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCb3JkZXIgU3BhY2luZyBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYm9yZGVyLXNwYWNpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nLXknOiBbeyAnYm9yZGVyLXNwYWNpbmcteSc6IFtib3JkZXJTcGFjaW5nXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGFibGUgTGF5b3V0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdGFibGUtbGF5b3V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0YWJsZS1sYXlvdXQnOiBbeyB0YWJsZTogWydhdXRvJywgJ2ZpeGVkJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcHRpb24gU2lkZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2NhcHRpb24tc2lkZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjYXB0aW9uOiBbeyBjYXB0aW9uOiBbJ3RvcCcsICdib3R0b20nXSB9XSxcbiAgICAgICAgICAgIC8vIFRyYW5zaXRpb25zIGFuZCBBbmltYXRpb25cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbmlzaXRpb24gUHJvcGVydHlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2l0aW9uLXByb3BlcnR5XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdvcGFjaXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzaGFkb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FyYml0cmFyeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIER1cmF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBkdXJhdGlvbjogW3sgZHVyYXRpb246IGdldE51bWJlckFuZEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2l0aW9uIFRpbWluZyBGdW5jdGlvblxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGVhc2U6IFt7IGVhc2U6IFsnbGluZWFyJywgJ2luJywgJ291dCcsICdpbi1vdXQnLCBpc0FyYml0cmFyeVZhbHVlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNpdGlvbiBEZWxheVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zaXRpb24tZGVsYXlcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZGVsYXk6IFt7IGRlbGF5OiBnZXROdW1iZXJBbmRBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQW5pbWF0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYW5pbWF0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFuaW1hdGU6IFt7IGFuaW1hdGU6IFsnbm9uZScsICdzcGluJywgJ3BpbmcnLCAncHVsc2UnLCAnYm91bmNlJywgaXNBcmJpdHJhcnlWYWx1ZV0gfV0sXG4gICAgICAgICAgICAvLyBUcmFuc2Zvcm1zXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zZm9ybVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0cmFuc2Zvcm06IFt7IHRyYW5zZm9ybTogWycnLCAnZ3B1JywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzY2FsZTogW3sgc2NhbGU6IFtzY2FsZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjYWxlIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY2FsZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2NhbGUteCc6IFt7ICdzY2FsZS14JzogW3NjYWxlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2NhbGUgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NjYWxlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY2FsZS15JzogW3sgJ3NjYWxlLXknOiBbc2NhbGVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSb3RhdGVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yb3RhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcm90YXRlOiBbeyByb3RhdGU6IFtpc0ludGVnZXIsIGlzQXJiaXRyYXJ5VmFsdWVdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUcmFuc2xhdGUgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3RyYW5zbGF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAndHJhbnNsYXRlLXgnOiBbeyAndHJhbnNsYXRlLXgnOiBbdHJhbnNsYXRlXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhbnNsYXRlIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2xhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3RyYW5zbGF0ZS15JzogW3sgJ3RyYW5zbGF0ZS15JzogW3RyYW5zbGF0ZV0gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteCc6IFt7ICdza2V3LXgnOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNrZXcgWVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3NrZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NrZXcteSc6IFt7ICdza2V3LXknOiBbc2tld10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRyYW5zZm9ybSBPcmlnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy90cmFuc2Zvcm0tb3JpZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvcC1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2JvdHRvbS1yaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdib3R0b20tbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBcmJpdHJhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIC8vIEludGVyYWN0aXZpdHlcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZW50IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYWNjZW50LWNvbG9yXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFjY2VudDogW3sgYWNjZW50OiBbJ2F1dG8nLCBjb2xvcnNdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBcHBlYXJhbmNlXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvYXBwZWFyYW5jZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBbeyBhcHBlYXJhbmNlOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDdXJzb3JcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9jdXJzb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgY3Vyc29yOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd3YWl0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdtb3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdoZWxwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdub3QtYWxsb3dlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29udGV4dC1tZW51JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3Jvc3NoYWlyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ0aWNhbC10ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdhbGlhcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY29weScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbm8tZHJvcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYicsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JhYmJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbC1zY3JvbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbC1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ24tcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdlLXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAncy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3ctcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ253LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2UtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdy1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2V3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbnMtcmVzaXplJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXN3LXJlc2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnbndzZS1yZXNpemUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20taW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3pvb20tb3V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQXJiaXRyYXJ5VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhcmV0IENvbG9yXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvanVzdC1pbi10aW1lLW1vZGUjY2FyZXQtY29sb3ItdXRpbGl0aWVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdjYXJldC1jb2xvcic6IFt7IGNhcmV0OiBbY29sb3JzXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUG9pbnRlciBFdmVudHNcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9wb2ludGVyLWV2ZW50c1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAncG9pbnRlci1ldmVudHMnOiBbeyAncG9pbnRlci1ldmVudHMnOiBbJ25vbmUnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXNpemVcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9yZXNpemVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzaXplOiBbeyByZXNpemU6IFsnbm9uZScsICd5JywgJ3gnLCAnJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBCZWhhdmlvclxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1iZWhhdmlvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLWJlaGF2aW9yJzogW3sgc2Nyb2xsOiBbJ2F1dG8nLCAnc21vb3RoJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW5cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbSc6IFt7ICdzY3JvbGwtbSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gWFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1teCc6IFt7ICdzY3JvbGwtbXgnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtbWFyZ2luXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbeyAnc2Nyb2xsLW15JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIE1hcmdpbiBTdGFydFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tcyc6IFt7ICdzY3JvbGwtbXMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIEVuZFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tZSc6IFt7ICdzY3JvbGwtbWUnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tdCc6IFt7ICdzY3JvbGwtbXQnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgTWFyZ2luIFJpZ2h0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1yJzogW3sgJ3Njcm9sbC1tcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gQm90dG9tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLW1hcmdpblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLW1iJzogW3sgJ3Njcm9sbC1tYic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBNYXJnaW4gTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1tYXJnaW5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1tbCc6IFt7ICdzY3JvbGwtbWwnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZ1xuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFt7ICdzY3JvbGwtcCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFhcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogW3sgJ3Njcm9sbC1weCc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFlcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogW3sgJ3Njcm9sbC1weSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFN0YXJ0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2Nyb2xsLXBhZGRpbmdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3Njcm9sbC1wcyc6IFt7ICdzY3JvbGwtcHMnOiBnZXRTcGFjaW5nV2l0aEFyYml0cmFyeSgpIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgUGFkZGluZyBFbmRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXBlJzogW3sgJ3Njcm9sbC1wZSc6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIFRvcFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcHQnOiBbeyAnc2Nyb2xsLXB0JzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtcGFkZGluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc2Nyb2xsLXByJzogW3sgJ3Njcm9sbC1wcic6IGdldFNwYWNpbmdXaXRoQXJiaXRyYXJ5KCkgfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBQYWRkaW5nIEJvdHRvbVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGInOiBbeyAnc2Nyb2xsLXBiJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFBhZGRpbmcgTGVmdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1wYWRkaW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzY3JvbGwtcGwnOiBbeyAnc2Nyb2xsLXBsJzogZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkoKSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgQWxpZ25cbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1hbGlnblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnc25hcC1hbGlnbic6IFt7IHNuYXA6IFsnc3RhcnQnLCAnZW5kJywgJ2NlbnRlcicsICdhbGlnbi1ub25lJ10gfV0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcm9sbCBTbmFwIFN0b3BcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC1zdG9wXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0b3AnOiBbeyBzbmFwOiBbJ25vcm1hbCcsICdhbHdheXMnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2Nyb2xsIFNuYXAgVHlwZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3Njcm9sbC1zbmFwLXR5cGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJ3NuYXAtdHlwZSc6IFt7IHNuYXA6IFsnbm9uZScsICd4JywgJ3knLCAnYm90aCddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTY3JvbGwgU25hcCBUeXBlIFN0cmljdG5lc3NcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zY3JvbGwtc25hcC10eXBlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzbmFwLXN0cmljdG5lc3MnOiBbeyBzbmFwOiBbJ21hbmRhdG9yeScsICdwcm94aW1pdHknXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVG91Y2ggQWN0aW9uXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRvdWNoOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0b3VjaDogWydhdXRvJywgJ25vbmUnLCAnbWFuaXB1bGF0aW9uJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBYXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC14JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneCcsICdsZWZ0JywgJ3JpZ2h0J10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBZXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC15JzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJ3RvdWNoLXBhbic6IFsneScsICd1cCcsICdkb3duJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRvdWNoIEFjdGlvbiBQaW5jaCBab29tXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvdG91Y2gtYWN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd0b3VjaC1weic6IFsndG91Y2gtcGluY2gtem9vbSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVc2VyIFNlbGVjdFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3VzZXItc2VsZWN0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNlbGVjdDogW3sgc2VsZWN0OiBbJ25vbmUnLCAndGV4dCcsICdhbGwnLCAnYXV0byddIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaWxsIENoYW5nZVxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL3dpbGwtY2hhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICd3aWxsLWNoYW5nZSc6IFtcbiAgICAgICAgICAgICAgICB7ICd3aWxsLWNoYW5nZSc6IFsnYXV0bycsICdzY3JvbGwnLCAnY29udGVudHMnLCAndHJhbnNmb3JtJywgaXNBcmJpdHJhcnlWYWx1ZV0gfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTVkdcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmlsbFxuICAgICAgICAgICAgICogQHNlZSBodHRwczovL3RhaWx3aW5kY3NzLmNvbS9kb2NzL2ZpbGxcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsbDogW3sgZmlsbDogW2NvbG9ycywgJ25vbmUnXSB9XSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU3Ryb2tlIFdpZHRoXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc3Ryb2tlLXdpZHRoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICdzdHJva2Utdyc6IFt7IHN0cm9rZTogW2lzTGVuZ3RoLCBpc0FyYml0cmFyeUxlbmd0aCwgaXNBcmJpdHJhcnlOdW1iZXJdIH1dLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTdHJva2VcbiAgICAgICAgICAgICAqIEBzZWUgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20vZG9jcy9zdHJva2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3Ryb2tlOiBbeyBzdHJva2U6IFtjb2xvcnMsICdub25lJ10gfV0sXG4gICAgICAgICAgICAvLyBBY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNjcmVlbiBSZWFkZXJzXG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3Mvc2NyZWVuLXJlYWRlcnNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgc3I6IFsnc3Itb25seScsICdub3Qtc3Itb25seSddLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGb3JjZWQgQ29sb3IgQWRqdXN0XG4gICAgICAgICAgICAgKiBAc2VlIGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tL2RvY3MvZm9yY2VkLWNvbG9yLWFkanVzdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnZm9yY2VkLWNvbG9yLWFkanVzdCc6IFt7ICdmb3JjZWQtY29sb3ItYWRqdXN0JzogWydhdXRvJywgJ25vbmUnXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmxpY3RpbmdDbGFzc0dyb3Vwczoge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IFsnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICAgICAgICAgICBvdmVyc2Nyb2xsOiBbJ292ZXJzY3JvbGwteCcsICdvdmVyc2Nyb2xsLXknXSxcbiAgICAgICAgICAgIGluc2V0OiBbJ2luc2V0LXgnLCAnaW5zZXQteScsICdzdGFydCcsICdlbmQnLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10sXG4gICAgICAgICAgICAnaW5zZXQteCc6IFsncmlnaHQnLCAnbGVmdCddLFxuICAgICAgICAgICAgJ2luc2V0LXknOiBbJ3RvcCcsICdib3R0b20nXSxcbiAgICAgICAgICAgIGZsZXg6IFsnYmFzaXMnLCAnZ3JvdycsICdzaHJpbmsnXSxcbiAgICAgICAgICAgIGdhcDogWydnYXAteCcsICdnYXAteSddLFxuICAgICAgICAgICAgcDogWydweCcsICdweScsICdwcycsICdwZScsICdwdCcsICdwcicsICdwYicsICdwbCddLFxuICAgICAgICAgICAgcHg6IFsncHInLCAncGwnXSxcbiAgICAgICAgICAgIHB5OiBbJ3B0JywgJ3BiJ10sXG4gICAgICAgICAgICBtOiBbJ214JywgJ215JywgJ21zJywgJ21lJywgJ210JywgJ21yJywgJ21iJywgJ21sJ10sXG4gICAgICAgICAgICBteDogWydtcicsICdtbCddLFxuICAgICAgICAgICAgbXk6IFsnbXQnLCAnbWInXSxcbiAgICAgICAgICAgIHNpemU6IFsndycsICdoJ10sXG4gICAgICAgICAgICAnZm9udC1zaXplJzogWydsZWFkaW5nJ10sXG4gICAgICAgICAgICAnZnZuLW5vcm1hbCc6IFtcbiAgICAgICAgICAgICAgICAnZnZuLW9yZGluYWwnLFxuICAgICAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZpZ3VyZScsXG4gICAgICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJyxcbiAgICAgICAgICAgICAgICAnZnZuLWZyYWN0aW9uJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnZnZuLW9yZGluYWwnOiBbJ2Z2bi1ub3JtYWwnXSxcbiAgICAgICAgICAgICdmdm4tc2xhc2hlZC16ZXJvJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZpZ3VyZSc6IFsnZnZuLW5vcm1hbCddLFxuICAgICAgICAgICAgJ2Z2bi1zcGFjaW5nJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnZnZuLWZyYWN0aW9uJzogWydmdm4tbm9ybWFsJ10sXG4gICAgICAgICAgICAnbGluZS1jbGFtcCc6IFsnZGlzcGxheScsICdvdmVyZmxvdyddLFxuICAgICAgICAgICAgcm91bmRlZDogW1xuICAgICAgICAgICAgICAgICdyb3VuZGVkLXMnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXQnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWwnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLXNzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1zZScsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtZWUnLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWVzJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC10bCcsXG4gICAgICAgICAgICAgICAgJ3JvdW5kZWQtdHInLFxuICAgICAgICAgICAgICAgICdyb3VuZGVkLWJyJyxcbiAgICAgICAgICAgICAgICAncm91bmRlZC1ibCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcyc6IFsncm91bmRlZC1zcycsICdyb3VuZGVkLWVzJ10sXG4gICAgICAgICAgICAncm91bmRlZC1lJzogWydyb3VuZGVkLXNlJywgJ3JvdW5kZWQtZWUnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLXQnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC10ciddLFxuICAgICAgICAgICAgJ3JvdW5kZWQtcic6IFsncm91bmRlZC10cicsICdyb3VuZGVkLWJyJ10sXG4gICAgICAgICAgICAncm91bmRlZC1iJzogWydyb3VuZGVkLWJyJywgJ3JvdW5kZWQtYmwnXSxcbiAgICAgICAgICAgICdyb3VuZGVkLWwnOiBbJ3JvdW5kZWQtdGwnLCAncm91bmRlZC1ibCddLFxuICAgICAgICAgICAgJ2JvcmRlci1zcGFjaW5nJzogWydib3JkZXItc3BhY2luZy14JywgJ2JvcmRlci1zcGFjaW5nLXknXSxcbiAgICAgICAgICAgICdib3JkZXItdyc6IFtcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcycsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWUnLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy10JyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLXctcicsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci13LWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItdy1sJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnYm9yZGVyLXcteCc6IFsnYm9yZGVyLXctcicsICdib3JkZXItdy1sJ10sXG4gICAgICAgICAgICAnYm9yZGVyLXcteSc6IFsnYm9yZGVyLXctdCcsICdib3JkZXItdy1iJ10sXG4gICAgICAgICAgICAnYm9yZGVyLWNvbG9yJzogW1xuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItdCcsXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1jb2xvci1yJyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWNvbG9yLWInLFxuICAgICAgICAgICAgICAgICdib3JkZXItY29sb3ItbCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci14JzogWydib3JkZXItY29sb3ItcicsICdib3JkZXItY29sb3ItbCddLFxuICAgICAgICAgICAgJ2JvcmRlci1jb2xvci15JzogWydib3JkZXItY29sb3ItdCcsICdib3JkZXItY29sb3ItYiddLFxuICAgICAgICAgICAgJ3Njcm9sbC1tJzogW1xuICAgICAgICAgICAgICAgICdzY3JvbGwtbXgnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXknLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXMnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWUnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXQnLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbXInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWInLFxuICAgICAgICAgICAgICAgICdzY3JvbGwtbWwnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXgnOiBbJ3Njcm9sbC1tcicsICdzY3JvbGwtbWwnXSxcbiAgICAgICAgICAgICdzY3JvbGwtbXknOiBbJ3Njcm9sbC1tdCcsICdzY3JvbGwtbWInXSxcbiAgICAgICAgICAgICdzY3JvbGwtcCc6IFtcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB4JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB5JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBzJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBlJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXB0JyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXByJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBiJyxcbiAgICAgICAgICAgICAgICAnc2Nyb2xsLXBsJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAnc2Nyb2xsLXB4JzogWydzY3JvbGwtcHInLCAnc2Nyb2xsLXBsJ10sXG4gICAgICAgICAgICAnc2Nyb2xsLXB5JzogWydzY3JvbGwtcHQnLCAnc2Nyb2xsLXBiJ10sXG4gICAgICAgICAgICB0b3VjaDogWyd0b3VjaC14JywgJ3RvdWNoLXknLCAndG91Y2gtcHonXSxcbiAgICAgICAgICAgICd0b3VjaC14JzogWyd0b3VjaCddLFxuICAgICAgICAgICAgJ3RvdWNoLXknOiBbJ3RvdWNoJ10sXG4gICAgICAgICAgICAndG91Y2gtcHonOiBbJ3RvdWNoJ10sXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczoge1xuICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IFsnbGVhZGluZyddLFxuICAgICAgICB9LFxuICAgIH0gYXMgY29uc3Qgc2F0aXNmaWVzIENvbmZpZzxEZWZhdWx0Q2xhc3NHcm91cElkcywgRGVmYXVsdFRoZW1lR3JvdXBJZHM+XG59XG4iLCAiaW1wb3J0IHsgQ29uZmlnRXh0ZW5zaW9uLCBHZW5lcmljQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuLyoqXG4gKiBAcGFyYW0gYmFzZUNvbmZpZyBDb25maWcgd2hlcmUgb3RoZXIgY29uZmlnIHdpbGwgYmUgbWVyZ2VkIGludG8uIFRoaXMgb2JqZWN0IHdpbGwgYmUgbXV0YXRlZC5cbiAqIEBwYXJhbSBjb25maWdFeHRlbnNpb24gUGFydGlhbCBjb25maWcgdG8gbWVyZ2UgaW50byB0aGUgYGJhc2VDb25maWdgLlxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VDb25maWdzID0gPENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcsIFRoZW1lR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcj4oXG4gICAgYmFzZUNvbmZpZzogR2VuZXJpY0NvbmZpZyxcbiAgICB7XG4gICAgICAgIGNhY2hlU2l6ZSxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lLFxuICAgICAgICBleHRlbmQgPSB7fSxcbiAgICAgICAgb3ZlcnJpZGUgPSB7fSxcbiAgICB9OiBDb25maWdFeHRlbnNpb248Q2xhc3NHcm91cElkcywgVGhlbWVHcm91cElkcz4sXG4pID0+IHtcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdjYWNoZVNpemUnLCBjYWNoZVNpemUpXG4gICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlQ29uZmlnLCAncHJlZml4JywgcHJlZml4KVxuICAgIG92ZXJyaWRlUHJvcGVydHkoYmFzZUNvbmZpZywgJ3NlcGFyYXRvcicsIHNlcGFyYXRvcilcbiAgICBvdmVycmlkZVByb3BlcnR5KGJhc2VDb25maWcsICdleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZScsIGV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lKVxuXG4gICAgZm9yIChjb25zdCBjb25maWdLZXkgaW4gb3ZlcnJpZGUpIHtcbiAgICAgICAgb3ZlcnJpZGVDb25maWdQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgYmFzZUNvbmZpZ1tjb25maWdLZXkgYXMga2V5b2YgdHlwZW9mIG92ZXJyaWRlXSxcbiAgICAgICAgICAgIG92ZXJyaWRlW2NvbmZpZ0tleSBhcyBrZXlvZiB0eXBlb2Ygb3ZlcnJpZGVdLFxuICAgICAgICApXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXh0ZW5kKSB7XG4gICAgICAgIG1lcmdlQ29uZmlnUHJvcGVydGllcyhcbiAgICAgICAgICAgIGJhc2VDb25maWdba2V5IGFzIGtleW9mIHR5cGVvZiBleHRlbmRdLFxuICAgICAgICAgICAgZXh0ZW5kW2tleSBhcyBrZXlvZiB0eXBlb2YgZXh0ZW5kXSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBiYXNlQ29uZmlnXG59XG5cbmNvbnN0IG92ZXJyaWRlUHJvcGVydHkgPSA8VCBleHRlbmRzIG9iamVjdCwgSyBleHRlbmRzIGtleW9mIFQ+KFxuICAgIGJhc2VPYmplY3Q6IFQsXG4gICAgb3ZlcnJpZGVLZXk6IEssXG4gICAgb3ZlcnJpZGVWYWx1ZTogVFtLXSB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYmFzZU9iamVjdFtvdmVycmlkZUtleV0gPSBvdmVycmlkZVZhbHVlXG4gICAgfVxufVxuXG5jb25zdCBvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMgPSAoXG4gICAgYmFzZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PixcbiAgICBvdmVycmlkZU9iamVjdDogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSB1bmtub3duW10+PiB8IHVuZGVmaW5lZCxcbikgPT4ge1xuICAgIGlmIChvdmVycmlkZU9iamVjdCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvdmVycmlkZU9iamVjdCkge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBrZXksIG92ZXJyaWRlT2JqZWN0W2tleV0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IG1lcmdlQ29uZmlnUHJvcGVydGllcyA9IChcbiAgICBiYXNlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+LFxuICAgIG1lcmdlT2JqZWN0OiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IHVua25vd25bXT4+IHwgdW5kZWZpbmVkLFxuKSA9PiB7XG4gICAgaWYgKG1lcmdlT2JqZWN0KSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1lcmdlT2JqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZVZhbHVlID0gbWVyZ2VPYmplY3Rba2V5XVxuXG4gICAgICAgICAgICBpZiAobWVyZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZU9iamVjdFtrZXldID0gKGJhc2VPYmplY3Rba2V5XSB8fCBbXSkuY29uY2F0KG1lcmdlVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlVGFpbHdpbmRNZXJnZSB9IGZyb20gJy4vY3JlYXRlLXRhaWx3aW5kLW1lcmdlJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnXG5pbXBvcnQgeyBtZXJnZUNvbmZpZ3MgfSBmcm9tICcuL21lcmdlLWNvbmZpZ3MnXG5pbXBvcnQgeyBDb25maWdFeHRlbnNpb24sIERlZmF1bHRDbGFzc0dyb3VwSWRzLCBEZWZhdWx0VGhlbWVHcm91cElkcywgR2VuZXJpY0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbnR5cGUgQ3JlYXRlQ29uZmlnU3Vic2VxdWVudCA9IChjb25maWc6IEdlbmVyaWNDb25maWcpID0+IEdlbmVyaWNDb25maWdcblxuZXhwb3J0IGNvbnN0IGV4dGVuZFRhaWx3aW5kTWVyZ2UgPSA8XG4gICAgQWRkaXRpb25hbENsYXNzR3JvdXBJZHMgZXh0ZW5kcyBzdHJpbmcgPSBuZXZlcixcbiAgICBBZGRpdGlvbmFsVGhlbWVHcm91cElkcyBleHRlbmRzIHN0cmluZyA9IG5ldmVyLFxuPihcbiAgICBjb25maWdFeHRlbnNpb246XG4gICAgICAgIHwgQ29uZmlnRXh0ZW5zaW9uPFxuICAgICAgICAgICAgICBEZWZhdWx0Q2xhc3NHcm91cElkcyB8IEFkZGl0aW9uYWxDbGFzc0dyb3VwSWRzLFxuICAgICAgICAgICAgICBEZWZhdWx0VGhlbWVHcm91cElkcyB8IEFkZGl0aW9uYWxUaGVtZUdyb3VwSWRzXG4gICAgICAgICAgPlxuICAgICAgICB8IENyZWF0ZUNvbmZpZ1N1YnNlcXVlbnQsXG4gICAgLi4uY3JlYXRlQ29uZmlnOiBDcmVhdGVDb25maWdTdWJzZXF1ZW50W11cbikgPT5cbiAgICB0eXBlb2YgY29uZmlnRXh0ZW5zaW9uID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY3JlYXRlVGFpbHdpbmRNZXJnZShnZXREZWZhdWx0Q29uZmlnLCBjb25maWdFeHRlbnNpb24sIC4uLmNyZWF0ZUNvbmZpZylcbiAgICAgICAgOiBjcmVhdGVUYWlsd2luZE1lcmdlKFxuICAgICAgICAgICAgICAoKSA9PiBtZXJnZUNvbmZpZ3MoZ2V0RGVmYXVsdENvbmZpZygpLCBjb25maWdFeHRlbnNpb24pLFxuICAgICAgICAgICAgICAuLi5jcmVhdGVDb25maWcsXG4gICAgICAgICAgKVxuIiwgImltcG9ydCB7IGNyZWF0ZVRhaWx3aW5kTWVyZ2UgfSBmcm9tICcuL2NyZWF0ZS10YWlsd2luZC1tZXJnZSdcbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJ1xuXG5leHBvcnQgY29uc3QgdHdNZXJnZSA9IGNyZWF0ZVRhaWx3aW5kTWVyZ2UoZ2V0RGVmYXVsdENvbmZpZylcbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZSBDb2x1bW5EZWYgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJJY29uLCBNYXhpbWl6ZSwgTWluaW1pemUsIFBhbmVsTGVmdENsb3NlLCBQYW5lbExlZnRPcGVuLCBSZWZyZXNoQ3cgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlTnVtYmVyIH0gZnJvbSBcIm1vdGlvbi1wbHVzL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b2FzdCB9IGZyb20gXCJzb25uZXJcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpZ0ludFN0cmluZywgTnVtZXJpY1N0cmluZyB9IGZyb20gXCIuLi8uLi9kYXRhL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IEJhZGdlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvYmFkZ2VcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2J1dHRvblwiO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJUcmlnZ2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvcG9wb3ZlclwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVJbnNlcnQgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1pbnNlcnRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlUXVlcnkgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS1xdWVyeVwiO1xuaW1wb3J0IHsgdXNlQWN0aXZlVGFibGVVcGRhdGUgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS10YWJsZS11cGRhdGVcIjtcbmltcG9ydCB7IHVzZUZpbHRlcmluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtZmlsdGVyaW5nXCI7XG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyB1c2VQYWdpbmF0aW9uIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1wYWdpbmF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlLXNlbGVjdGlvblwiO1xuaW1wb3J0IHsgdXNlU29ydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2Utc29ydGluZ1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vbGliL3V0aWxzXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IGdldENlbGwgfSBmcm9tIFwiLi9jZWxsL2dldC1jZWxsXCI7XG5pbXBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsLCBTZWxlY3RIZWFkZXJDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL1NlbGVjdEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IFNlbGVjdFJvd0NlbGwsIFNlbGVjdFJvd0NlbGxQcm9wcyB9IGZyb20gXCIuL2NlbGwvU2VsZWN0Um93Q2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgRmlsdGVyVHJlZSB9IGZyb20gXCIuL0ZpbHRlclRyZWVcIjtcbmltcG9ydCB7IERhdGFHcmlkIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZFwiO1xuaW1wb3J0IHsgRGF0YUdyaWRIZWFkZXJDZWxsIH0gZnJvbSBcIi4vZ3JpZC9EYXRhR3JpZEhlYWRlckNlbGxcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5pbXBvcnQgeyBTdGFnZWRSb3dzIH0gZnJvbSBcIi4vU3RhZ2VkUm93c1wiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRhYmxlVmlld1Byb3BzIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3RpdmVUYWJsZVZpZXcoX3Byb3BzOiBBY3RpdmVUYWJsZVZpZXdQcm9wcykge1xuICBjb25zdCBpc011dGF0aW5nID0gQm9vbGVhbih1c2VJc011dGF0aW5nKCkpO1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yLCBpc0Z1bGxzY3JlZW4sIHRvZ2dsZUZ1bGxzY3JlZW4sIHRvZ2dsZU5hdmlnYXRpb24sIGlzTmF2aWdhdGlvbk9wZW4gfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IHNvcnRpbmdTdGF0ZSwgc2V0U29ydGluZ1N0YXRlIH0gPSB1c2VTb3J0aW5nKCk7XG4gIGNvbnN0IHsgcGFnaW5hdGlvblN0YXRlLCBzZXRQYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3N0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4oW10pO1xuICBjb25zdCB7IGFwcGxpZWRGaWx0ZXIsIHNldEFwcGxpZWRGaWx0ZXIsIGVkaXRpbmdGaWx0ZXIsIHNldEVkaXRpbmdGaWx0ZXIsIHRvdGFsRWRpdGluZ0ZpbHRlcnMgfSA9IHVzZUZpbHRlcmluZygpO1xuXG4gIGNvbnN0IHsgZGF0YSwgaXNGZXRjaGluZywgcmVmZXRjaCB9ID0gdXNlQWN0aXZlVGFibGVRdWVyeSh7XG4gICAgLi4ucGFnaW5hdGlvblN0YXRlLFxuICAgIHNvcnRPcmRlcjogc29ydGluZ1N0YXRlLFxuICAgIGZpbHRlcjogYXBwbGllZEZpbHRlcixcbiAgfSk7XG4gIGNvbnN0IHsgZGVsZXRlU2VsZWN0aW9uLCBpc1NlbGVjdGluZywgcm93U2VsZWN0aW9uU3RhdGUsIHNldFJvd1NlbGVjdGlvblN0YXRlIH0gPSB1c2VTZWxlY3Rpb24oZGF0YSk7XG5cbiAgY29uc3QgcmVhZG9ubHkgPSAhT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkuc29tZSgoY29sdW1uKSA9PiBjb2x1bW4uaXNJblByaW1hcnlLZXkpO1xuICBjb25zdCBpc0luc2VydGluZyA9IHVzZUlzSW5zZXJ0aW5nKCk7XG4gIGNvbnN0IGluc2VydCA9IHVzZUFjdGl2ZVRhYmxlSW5zZXJ0KCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHVzZUFjdGl2ZVRhYmxlVXBkYXRlKCk7XG5cbiAgLy8gcmVzZXQgaW5zZXJ0Um93cyB3aGVuIGFjdGl2ZVRhYmxlIGNoYW5nZXNcbiAgdXNlRWZmZWN0KCgpID0+IHNldFN0YWdlZFJvd3MoW10pLCBbYWN0aXZlVGFibGVdKTtcblxuICBpZiAoIWFjdGl2ZVRhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlU3RhZ2VkUm93cygpIHtcbiAgICBpbnNlcnQubXV0YXRlKHN0YWdlZFJvd3MsIHtcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoXCJSb3dzIGluc2VydGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U3RhZ2VkUm93KCkge1xuICAgIC8vIFRPRE86IHRoZSBuZXcgb2JqZWN0IHNob3VsZCBoYXZlIHNvbWUgdGhpbmdzIHNldCB0byBudWxsIGlmIHRoZXkncmUgbnVsbGFibGUgb3IgaGF2ZSBhIGRlZmF1bHQgdmFsdWU/XG4gICAgc2V0U3RhZ2VkUm93cygob2xkKSA9PiBbLi4ub2xkLCB7fV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZHJvcFN0YWdlZFJvd3MoKSB7XG4gICAgc2V0U3RhZ2VkUm93cyhbXSk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDZWxsSW5wdXRTdWJtaXQodmFsdWU6IHVua25vd24sIGNvbHVtbjogQ29sdW1uLCByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdXBkYXRlLm11dGF0ZSh7XG4gICAgICBkZXRhaWxzOiB7IGNoYW5nZXM6IHsgW2NvbHVtbi5uYW1lXTogdmFsdWUgfSwgcm93LCB0YWJsZTogYWN0aXZlVGFibGUhIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRmlsdGVyT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRydWUpIHtcbiAgICAgIHNldEVkaXRpbmdGaWx0ZXIoYXBwbGllZEZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEFwcGxpZWRGaWx0ZXIoZWRpdGluZ0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVhbCBjb2x1bW4gZGVmaW5pdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIGRhdGFiYXNlIGNvbHVtbnNcbiAgY29uc3QgY29uY3JldGVDb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVUYWJsZT8uY29sdW1ucyA/PyB7fSkubWFwKChjb2x1bW4pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNvbHVtbi5uYW1lLFxuICAgICAgYWNjZXNzb3JLZXk6IGNvbHVtbi5uYW1lLFxuICAgICAgbWV0YTogY29sdW1uLFxuICAgICAgaGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH0pO1xuICAgICAgfSxcbiAgICAgIGNlbGwoeyBjZWxsIH0pIHtcbiAgICAgICAgcmV0dXJuIChwcm9wczogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW4sIHByb3BzIH0pfVxuICAgICAgICAgICAgaW5wdXRDb21wb25lbnQ9e2dldElucHV0KHtcbiAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlQ2VsbElucHV0U3VibWl0KHZhbHVlLCBjb2x1bW4sIGNlbGwucm93Lm9yaWdpbmFsKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENvbHVtbkRlZjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIH0pO1xuXG4gIC8vIHRoZXNlIGFyZSBjb2x1bW5zIHRoYXQgZXhpc3QgdmlydHVhbGx5IGFuZCBhcmUgbm90IGRiIGNvbHVtbnNcbiAgY29uc3QgdmlydHVhbENvbHVtbkRlZnMgPSBbXG4gICAge1xuICAgICAgaWQ6IFwiX19wc19zZWxlY3RcIixcbiAgICAgIGFjY2Vzc29yS2V5OiBcIl9fcHNfc2VsZWN0XCIsXG4gICAgICBlbmFibGVQaW5uaW5nOiB0cnVlLFxuICAgICAgZW5hYmxlUmVzaXppbmc6IGZhbHNlLFxuICAgICAgZW5hYmxlU29ydGluZzogZmFsc2UsXG4gICAgICBkaXNhYmxlRHJhZ2dpbmc6IHRydWUsXG4gICAgICBzaXplOiA1MCxcbiAgICAgIG1pblNpemU6IDUwLFxuICAgICAgaGVhZGVyKHsgdGFibGUgfSkge1xuICAgICAgICByZXR1cm4gKHByb3BzOiBPbWl0PFNlbGVjdEhlYWRlckNlbGxQcm9wcywgXCJ0YWJsZVwiIHwgXCJyZWFkb25seVwiPikgPT4gKFxuICAgICAgICAgIDxTZWxlY3RIZWFkZXJDZWxsIHRhYmxlPXt0YWJsZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgY2VsbCh7IHJvdyB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8U2VsZWN0Um93Q2VsbFByb3BzLCBcInJvd1wiIHwgXCJyZWFkb25seVwiPikgPT4ge1xuICAgICAgICAgIHJldHVybiA8U2VsZWN0Um93Q2VsbCByb3c9e3Jvd30gcmVhZG9ubHk9e3JlYWRvbmx5fSB7Li4ucHJvcHN9IC8+O1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdIHNhdGlzZmllcyAoQ29sdW1uRGVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiAmIHsgZGlzYWJsZURyYWdnaW5nPzogYm9vbGVhbiB9KVtdO1xuXG4gIGNvbnN0IGNvbHVtbkRlZnMgPSBbLi4uY29uY3JldGVDb2x1bW5EZWZzLCAuLi52aXJ0dWFsQ29sdW1uRGVmc10uc29ydChkZWZhdWx0Q29sdW1uU29ydGluZyk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1iZy1zdHVkaW8taGVhZGVyLWJhY2tncm91bmQgcHMtZmxleCBwcy13LWZ1bGwgcHMtcC0yIHBzLXB5LTMgcHMtYm9yZGVyLWIgcHMtYmctY2FyZCBwcy1yb3VuZGVkLXQtbGdcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtdy1mdWxsIHBzLWdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtZ3JvdyBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXt0b2dnbGVOYXZpZ2F0aW9ufT5cbiAgICAgICAgICAgICAgICB7aXNOYXZpZ2F0aW9uT3BlbiA/IDxQYW5lbExlZnRDbG9zZSAvPiA6IDxQYW5lbExlZnRPcGVuIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPFBvcG92ZXIgb25PcGVuQ2hhbmdlPXtvbkZpbHRlck9wZW5DaGFuZ2V9PlxuICAgICAgICAgICAgICAgIDxQb3BvdmVyVHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT17Y24odG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgXCJwcy1ib3JkZXItcHJpbWFyeVwiKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZpbHRlckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7dG90YWxFZGl0aW5nRmlsdGVycyA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QW5pbWF0ZU51bWJlciB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0b3RhbEVkaXRpbmdGaWx0ZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FuaW1hdGVOdW1iZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlclRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJDb250ZW50IGFsaWduPVwic3RhcnRcIiBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwicHMtdy1taW4gcHMtbWF4LWgtWzUyMHB4XSBwcy1vdmVyZmxvdy15LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUcmVlXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcj17ZWRpdGluZ0ZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyPXtzZXRFZGl0aW5nRmlsdGVyfVxuICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RWRpdGluZ0ZpbHRlcihmaWx0ZXIpOyAvLyBVcGRhdGUgdGhlIGVkaXRpbmcgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBsaWVkRmlsdGVyKGZpbHRlcik7IC8vIFVwZGF0ZSB0aGUgYXBwbGllZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB0YWJsZT17YWN0aXZlVGFibGV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUG9wb3ZlckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e25ld1N0YWdlZFJvd30gZGlzYWJsZWQ9e2lzSW5zZXJ0aW5nID4gMH0+XG4gICAgICAgICAgICAgICAgSW5zZXJ0IHJvd1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAge3N0YWdlZFJvd3MubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInNlY29uZGFyeVwiIHNpemU9XCJzbVwiIG9uQ2xpY2s9e3NhdmVTdGFnZWRSb3dzfT5cbiAgICAgICAgICAgICAgICAgICAgU2F2ZVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICB7LyogTmVlZHMgc29tZSBpbXByb3ZlbWVudCAqL31cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cImdob3N0XCIgc2l6ZT1cInNtXCIgb25DbGljaz17ZHJvcFN0YWdlZFJvd3N9PlxuICAgICAgICAgICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNTZWxlY3RpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBzaXplPVwic21cIiBvbkNsaWNrPXtkZWxldGVTZWxlY3Rpb259PlxuICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIHNpemU9XCJpY29uXCIgb25DbGljaz17KCkgPT4gdm9pZCByZWZldGNoKCl9IGRpc2FibGVkPXtpc0ZldGNoaW5nfT5cbiAgICAgICAgICAgICAgICA8UmVmcmVzaEN3IGNsYXNzTmFtZT17Y24oXCJwcy1oLTQgcHMtdy00XCIsIGlzRmV0Y2hpbmcgJiYgXCJwcy1hbmltYXRlLXNwaW5cIil9IC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgc2l6ZT1cImljb25cIiBvbkNsaWNrPXt0b2dnbGVGdWxsc2NyZWVufT5cbiAgICAgICAgICAgICAgICB7aXNGdWxsc2NyZWVuID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPERhdGFHcmlkXG4gICAgICAgIGNvbHVtbkRlZnM9e2NvbHVtbkRlZnN9XG4gICAgICAgIGdldEJlZm9yZVJvd3M9eyh0YWJsZSkgPT4gPFN0YWdlZFJvd3Mgey4uLnsgdGFibGUsIHN0YWdlZFJvd3MsIHNldFN0YWdlZFJvd3MgfX0gLz59XG4gICAgICAgIGlzTG9hZGluZz17aXNGZXRjaGluZ31cbiAgICAgICAgaXNQcm9jZXNzaW5nPXtpc011dGF0aW5nfVxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U9e3NldFBhZ2luYXRpb25TdGF0ZX1cbiAgICAgICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2U9e3NldFJvd1NlbGVjdGlvblN0YXRlfVxuICAgICAgICBvblNvcnRpbmdDaGFuZ2U9e3NldFNvcnRpbmdTdGF0ZX1cbiAgICAgICAgcGFnZUNvdW50PXtnZXRQYWdlQ291bnQoZGF0YT8uZmlsdGVyZWRSb3dDb3VudCA/PyBJbmZpbml0eSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplKX1cbiAgICAgICAgcGFnaW5hdGlvblN0YXRlPXtwYWdpbmF0aW9uU3RhdGV9XG4gICAgICAgIHJvd3M9e2RhdGE/LnJvd3MgPz8gW119XG4gICAgICAgIHJvd1NlbGVjdGlvblN0YXRlPXtyb3dTZWxlY3Rpb25TdGF0ZX1cbiAgICAgICAgc29ydGluZ1N0YXRlPXtzb3J0aW5nU3RhdGV9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYWdlQ291bnQocm93Q291bnQ6IG51bWJlciB8IGJpZ2ludCB8IE51bWVyaWNTdHJpbmcgfCBCaWdJbnRTdHJpbmcsIHBhZ2VTaXplOiBudW1iZXIpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBpZiAocm93Q291bnQgPT09IEluZmluaXR5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFnZUNvdW50ID0gTnVtYmVyKChCaWdJbnQocm93Q291bnQpICsgQmlnSW50KHBhZ2VTaXplKSAtIEJpZ0ludCgxKSkgLyBCaWdJbnQocGFnZVNpemUpKTtcblxuICByZXR1cm4gTnVtYmVyLmlzU2FmZUludGVnZXIocGFnZUNvdW50KSA/IHBhZ2VDb3VudCA6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29sdW1uU29ydGluZyhhOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBiOiBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIGNvbnN0IGFNZXRhID0gYS5tZXRhIGFzIENvbHVtbiB8IHVuZGVmaW5lZDtcbiAgY29uc3QgYk1ldGEgPSBiLm1ldGEgYXMgQ29sdW1uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChhLmlkID09PSBcIl9fcHNfc2VsZWN0XCIgfHwgYi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoYU1ldGEgPT09IHVuZGVmaW5lZCB8fCBiTWV0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDA7IC8vIGNhbid0IGJlIGNvbXBhcmVkLCBzaG91bGRuJ3QgaGFwcGVuXG4gIH1cblxuICBpZiAoYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgIWJNZXRhLmlzSW5QcmltYXJ5S2V5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICghYU1ldGEuaXNJblByaW1hcnlLZXkgJiYgYk1ldGEuaXNJblByaW1hcnlLZXkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiBhTWV0YS5uYW1lLmxvY2FsZUNvbXBhcmUoYk1ldGEubmFtZSk7XG59XG4iLCAiaW1wb3J0IHsgQ2FtZWxUb1Bhc2NhbCB9IGZyb20gJy4vdXRpbGl0eS10eXBlcyc7XG5cbi8qKlxuICogQ29udmVydHMgc3RyaW5nIHRvIGtlYmFiIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIGtlYmFiaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZzogc3RyaW5nKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBzdHJpbmcgdG8gY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgY2FtZWxpemVkIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgdG9DYW1lbENhc2UgPSA8VCBleHRlbmRzIHN0cmluZz4oc3RyaW5nOiBUKSA9PlxuICBzdHJpbmcucmVwbGFjZSgvXihbQS1aXSl8W1xccy1fXSsoXFx3KS9nLCAobWF0Y2gsIHAxLCBwMikgPT5cbiAgICBwMiA/IHAyLnRvVXBwZXJDYXNlKCkgOiBwMS50b0xvd2VyQ2FzZSgpLFxuICApO1xuXG4vKipcbiAqIENvbnZlcnRzIHN0cmluZyB0byBwYXNjYWwgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcGFzY2FsaXplZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHRvUGFzY2FsQ2FzZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihzdHJpbmc6IFQpOiBDYW1lbFRvUGFzY2FsPFQ+ID0+IHtcbiAgY29uc3QgY2FtZWxDYXNlID0gdG9DYW1lbENhc2Uoc3RyaW5nKTtcblxuICByZXR1cm4gKGNhbWVsQ2FzZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNhbWVsQ2FzZS5zbGljZSgxKSkgYXMgQ2FtZWxUb1Bhc2NhbDxUPjtcbn07XG5cbi8qKlxuICogTWVyZ2VzIGNsYXNzZXMgaW50byBhIHNpbmdsZSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSBjbGFzc2VzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHN0cmluZyBvZiBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZUNsYXNzZXMgPSA8Q2xhc3NUeXBlID0gc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbD4oLi4uY2xhc3NlczogQ2xhc3NUeXBlW10pID0+XG4gIGNsYXNzZXNcbiAgICAuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgQm9vbGVhbihjbGFzc05hbWUpICYmXG4gICAgICAgIChjbGFzc05hbWUgYXMgc3RyaW5nKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgIGFycmF5LmluZGV4T2YoY2xhc3NOYW1lKSA9PT0gaW5kZXhcbiAgICAgICk7XG4gICAgfSlcbiAgICAuam9pbignICcpXG4gICAgLnRyaW0oKTtcbiIsICJleHBvcnQgZGVmYXVsdCB7XG4gIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICB3aWR0aDogMjQsXG4gIGhlaWdodDogMjQsXG4gIHZpZXdCb3g6ICcwIDAgMjQgMjQnLFxuICBmaWxsOiAnbm9uZScsXG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBzdHJva2VMaW5lY2FwOiAncm91bmQnLFxuICBzdHJva2VMaW5lam9pbjogJ3JvdW5kJyxcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzJztcbmltcG9ydCB7IEljb25Ob2RlLCBMdWNpZGVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuXG5pbnRlcmZhY2UgSWNvbkNvbXBvbmVudFByb3BzIGV4dGVuZHMgTHVjaWRlUHJvcHMge1xuICBpY29uTm9kZTogSWNvbk5vZGU7XG59XG5cbi8qKlxuICogTHVjaWRlIGljb24gY29tcG9uZW50XG4gKlxuICogQGNvbXBvbmVudCBJY29uXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wcy5jb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtudW1iZXJ9IHByb3BzLnN0cm9rZVdpZHRoIC0gVGhlIHN0cm9rZSB3aWR0aCBvZiB0aGUgaWNvblxuICogQHBhcmFtIHtib29sZWFufSBwcm9wcy5hYnNvbHV0ZVN0cm9rZVdpZHRoIC0gV2hldGhlciB0byB1c2UgYWJzb2x1dGUgc3Ryb2tlIHdpZHRoXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcHMuY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGljb25cbiAqIEBwYXJhbSB7SWNvbk5vZGV9IHByb3BzLmNoaWxkcmVuIC0gVGhlIGNoaWxkcmVuIG9mIHRoZSBpY29uXG4gKiBAcGFyYW0ge0ljb25Ob2RlfSBwcm9wcy5pY29uTm9kZSAtIFRoZSBpY29uIG5vZGUgb2YgdGhlIGljb25cbiAqXG4gKiBAcmV0dXJucyB7Rm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudH0gTHVjaWRlSWNvblxuICovXG5jb25zdCBJY29uID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uQ29tcG9uZW50UHJvcHM+KFxuICAoXG4gICAge1xuICAgICAgY29sb3IgPSAnY3VycmVudENvbG9yJyxcbiAgICAgIHNpemUgPSAyNCxcbiAgICAgIHN0cm9rZVdpZHRoID0gMixcbiAgICAgIGFic29sdXRlU3Ryb2tlV2lkdGgsXG4gICAgICBjbGFzc05hbWUgPSAnJyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaWNvbk5vZGUsXG4gICAgICAuLi5yZXN0XG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3N2ZycsXG4gICAgICB7XG4gICAgICAgIHJlZixcbiAgICAgICAgLi4uZGVmYXVsdEF0dHJpYnV0ZXMsXG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBhYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCkgLyBOdW1iZXIoc2l6ZSkgOiBzdHJva2VXaWR0aCxcbiAgICAgICAgY2xhc3NOYW1lOiBtZXJnZUNsYXNzZXMoJ2x1Y2lkZScsIGNsYXNzTmFtZSksXG4gICAgICAgIC4uLnJlc3QsXG4gICAgICB9LFxuICAgICAgW1xuICAgICAgICAuLi5pY29uTm9kZS5tYXAoKFt0YWcsIGF0dHJzXSkgPT4gY3JlYXRlRWxlbWVudCh0YWcsIGF0dHJzKSksXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuIDogW2NoaWxkcmVuXSksXG4gICAgICBdLFxuICAgICk7XG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBJY29uO1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH0gZnJvbSAnQGx1Y2lkZS9zaGFyZWQnO1xuaW1wb3J0IHsgSWNvbk5vZGUsIEx1Y2lkZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24nO1xuXG4vKipcbiAqIENyZWF0ZSBhIEx1Y2lkZSBpY29uIGNvbXBvbmVudFxuICogQHBhcmFtIHtzdHJpbmd9IGljb25OYW1lXG4gKiBAcGFyYW0ge2FycmF5fSBpY29uTm9kZVxuICogQHJldHVybnMge0ZvcndhcmRSZWZFeG90aWNDb21wb25lbnR9IEx1Y2lkZUljb25cbiAqL1xuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZTogc3RyaW5nLCBpY29uTm9kZTogSWNvbk5vZGUpID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBMdWNpZGVQcm9wcz4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+XG4gICAgY3JlYXRlRWxlbWVudChJY29uLCB7XG4gICAgICByZWYsXG4gICAgICBpY29uTm9kZSxcbiAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKGBsdWNpZGUtJHt0b0tlYmFiQ2FzZShpY29uTmFtZSl9YCwgY2xhc3NOYW1lKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLFxuICApO1xuXG4gIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2ljb25OYW1lfWA7XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUx1Y2lkZUljb247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd0Rvd25XaWRlTmFycm93XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNeUF4TmlBMElEUWdOQzAwSWlBdlBnb2dJRHh3WVhSb0lHUTlJazAzSURJd1ZqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJRFJvTVRBaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElEaG9OeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb05DSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9hcnJvdy1kb3duLXdpZGUtbmFycm93XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQXJyb3dEb3duV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93RG93bldpZGVOYXJyb3cnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20zIDE2IDQgNCA0LTQnLCBrZXk6ICcxY282d2onIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyAyMFY0Jywga2V5OiAnMXlveGVjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDRoMTAnLCBrZXk6ICcxdzg3Z2MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgOGg3Jywga2V5OiAnZGp5ZTM0JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDQnLCBrZXk6ICdxOHRpaDQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFycm93RG93bldpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBBcnJvd1VwV2lkZU5hcnJvd1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TXlBNElEUXROQ0EwSURRaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRjZ05IWXhOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVEVnTVRKb01UQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXhJREUyYURjaUlDOCtDaUFnUEhCaGRHZ2daRDBpVFRFeElESXdhRFFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvYXJyb3ctdXAtd2lkZS1uYXJyb3dcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBBcnJvd1VwV2lkZU5hcnJvdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Fycm93VXBXaWRlTmFycm93JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMyA4IDQtNCA0IDQnLCBrZXk6ICcxMXdsN3UnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNyA0djE2Jywga2V5OiAnMWdsZmN4JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDEyaDEwJywga2V5OiAnMTQzOGppJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTExIDE2aDcnLCBrZXk6ICd1b3Npc3YnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTEgMjBoNCcsIGtleTogJzFrcmMzMicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQXJyb3dVcFdpZGVOYXJyb3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDYWxlbmRhclxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeWRqUWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURTJJREoyTkNJZ0x6NEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpRaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB6SURFd2FERTRJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jYWxlbmRhclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENhbGVuZGFyID0gY3JlYXRlTHVjaWRlSWNvbignQ2FsZW5kYXInLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDJ2NCcsIGtleTogJzFjbXB5bScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAydjQnLCBrZXk6ICc0bTgxdmsnIH1dLFxuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTgnLCBoZWlnaHQ6ICcxOCcsIHg6ICczJywgeTogJzQnLCByeDogJzInLCBrZXk6ICcxaG9wY3knIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxMGgxOCcsIGtleTogJzh0b2VuOCcgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGVja1xuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpBZ05pQTVJREUzYkMwMUxUVWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGVja1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZWNrID0gY3JlYXRlTHVjaWRlSWNvbignQ2hlY2snLCBbWydwYXRoJywgeyBkOiAnTTIwIDYgOSAxN2wtNS01Jywga2V5OiAnMWdtZjJjJyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVjaztcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25Eb3duXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnROaUE1SURZZ05pQTJMVFlpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbi1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvbkRvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgOSA2IDYgNi02Jywga2V5OiAncXJ1bnNsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uRG93bjtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25MZWZ0XG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSnRNVFVnTVRndE5pMDJJRFl0TmlJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tbGVmdFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENoZXZyb25MZWZ0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbkxlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xNSAxOC02LTYgNi02Jywga2V5OiAnMXduZmczJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25SaWdodFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0T1NBeE9DQTJMVFl0TmkwMklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb24tcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uUmlnaHQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uUmlnaHQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ205IDE4IDYtNi02LTYnLCBrZXk6ICdtdGhod3EnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25SaWdodDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25VcFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0p0TVRnZ01UVXROaTAyTFRZZ05pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaGV2cm9uLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2hldnJvblVwID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvblVwJywgW1sncGF0aCcsIHsgZDogJ20xOCAxNS02LTYtNiA2Jywga2V5OiAnMTUzdWR6JyB9XV0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGV2cm9uVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaGV2cm9uc0xlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1URWdNVGN0TlMwMUlEVXROU0lnTHo0S0lDQThjR0YwYUNCa1BTSnRNVGdnTVRjdE5TMDFJRFV0TlNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2NoZXZyb25zLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc0xlZnQgPSBjcmVhdGVMdWNpZGVJY29uKCdDaGV2cm9uc0xlZnQnLCBbXG4gIFsncGF0aCcsIHsgZDogJ20xMSAxNy01LTUgNS01Jywga2V5OiAnMTN6aGFmJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTE4IDE3LTUtNSA1LTUnLCBrZXk6ICdoOGE4ZXQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENoZXZyb25zUmlnaHRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE5pQXhOeUExTFRVdE5TMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHhNeUF4TnlBMUxUVXROUzAxSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2hldnJvbnMtcmlnaHRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDaGV2cm9uc1JpZ2h0ID0gY3JlYXRlTHVjaWRlSWNvbignQ2hldnJvbnNSaWdodCcsIFtcbiAgWydwYXRoJywgeyBkOiAnbTYgMTcgNS01LTUtNScsIGtleTogJ3huandxJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnbTEzIDE3IDUtNS01LTUnLCBrZXk6ICcxN3htbWYnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENoZXZyb25zUmlnaHQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBDaXJjbGVIZWxwXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5PUzR3T1NBNVlUTWdNeUF3SURBZ01TQTFMamd6SURGak1DQXlMVE1nTXkweklETWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRURXlJREUzYUM0d01TSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9jaXJjbGUtaGVscFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENpcmNsZUhlbHAgPSBjcmVhdGVMdWNpZGVJY29uKCdDaXJjbGVIZWxwJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMnLCBrZXk6ICcxdTc3M3MnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTdoLjAxJywga2V5OiAncDMycDA1JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaXJjbGVIZWxwO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ2lyY2xlXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0l4TWlJZ1kzazlJakV5SWlCeVBTSXhNQ0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY2lyY2xlXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgQ2lyY2xlID0gY3JlYXRlTHVjaWRlSWNvbignQ2lyY2xlJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICcxMicsIGN5OiAnMTInLCByOiAnMTAnLCBrZXk6ICcxbWdsYXknIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IENpcmNsZTtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIENvcHlcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNtVmpkQ0IzYVdSMGFEMGlNVFFpSUdobGFXZG9kRDBpTVRRaUlIZzlJamdpSUhrOUlqZ2lJSEo0UFNJeUlpQnllVDBpTWlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTkNBeE5tTXRNUzR4SURBdE1pMHVPUzB5TFRKV05HTXdMVEV1TVM0NUxUSWdNaTB5YURFd1l6RXVNU0F3SURJZ0xqa2dNaUF5SWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvY29weVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IENvcHkgPSBjcmVhdGVMdWNpZGVJY29uKCdDb3B5JywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMTQnLCBoZWlnaHQ6ICcxNCcsIHg6ICc4JywgeTogJzgnLCByeDogJzInLCByeTogJzInLCBrZXk6ICcxN2p5ZWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNNCAxNmMtMS4xIDAtMi0uOS0yLTJWNGMwLTEuMS45LTIgMi0yaDEwYzEuMSAwIDIgLjkgMiAyJywga2V5OiAneml4OXVmJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5O1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgQ29ybmVyRG93bkxlZnRcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHOXNlV3hwYm1VZ2NHOXBiblJ6UFNJNUlERXdJRFFnTVRVZ09TQXlNQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakFnTkhZM1lUUWdOQ0F3SURBZ01TMDBJRFJJTkNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2Nvcm5lci1kb3duLWxlZnRcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBDb3JuZXJEb3duTGVmdCA9IGNyZWF0ZUx1Y2lkZUljb24oJ0Nvcm5lckRvd25MZWZ0JywgW1xuICBbJ3BvbHlsaW5lJywgeyBwb2ludHM6ICc5IDEwIDQgMTUgOSAyMCcsIGtleTogJ3IzanBydicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMCA0djdhNCA0IDAgMCAxLTQgNEg0Jywga2V5OiAnNm81YjdsJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBDb3JuZXJEb3duTGVmdDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIEZpbHRlclxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0c5c2VXZHZiaUJ3YjJsdWRITTlJakl5SURNZ01pQXpJREV3SURFeUxqUTJJREV3SURFNUlERTBJREl4SURFMElERXlMalEySURJeUlETWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9maWx0ZXJcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBGaWx0ZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdGaWx0ZXInLCBbXG4gIFsncG9seWdvbicsIHsgcG9pbnRzOiAnMjIgMyAyIDMgMTAgMTIuNDYgMTAgMTkgMTQgMjEgMTQgMTIuNDYgMjIgMycsIGtleTogJzF5Zzc3ZicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgR3JpcFZlcnRpY2FsXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThZMmx5WTJ4bElHTjRQU0k1SWlCamVUMGlNVElpSUhJOUlqRWlJQzgrQ2lBZ1BHTnBjbU5zWlNCamVEMGlPU0lnWTNrOUlqVWlJSEk5SWpFaUlDOCtDaUFnUEdOcGNtTnNaU0JqZUQwaU9TSWdZM2s5SWpFNUlpQnlQU0l4SWlBdlBnb2dJRHhqYVhKamJHVWdZM2c5SWpFMUlpQmplVDBpTVRJaUlISTlJakVpSUM4K0NpQWdQR05wY21Oc1pTQmplRDBpTVRVaUlHTjVQU0kxSWlCeVBTSXhJaUF2UGdvZ0lEeGphWEpqYkdVZ1kzZzlJakUxSWlCamVUMGlNVGtpSUhJOUlqRWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9ncmlwLXZlcnRpY2FsXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgR3JpcFZlcnRpY2FsID0gY3JlYXRlTHVjaWRlSWNvbignR3JpcFZlcnRpY2FsJywgW1xuICBbJ2NpcmNsZScsIHsgY3g6ICc5JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXZjdGdmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnNScsIHI6ICcxJywga2V5OiAnaHAwdGNmJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnOScsIGN5OiAnMTknLCByOiAnMScsIGtleTogJ2ZrampmNicgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxMicsIHI6ICcxJywga2V5OiAnMXRtYWlqJyB9XSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTUnLCBjeTogJzUnLCByOiAnMScsIGtleTogJzE5bDI4ZScgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzE1JywgY3k6ICcxOScsIHI6ICcxJywga2V5OiAnZjR6b2ozJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBHcmlwVmVydGljYWw7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBIYXNoXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThiR2x1WlNCNE1UMGlOQ0lnZURJOUlqSXdJaUI1TVQwaU9TSWdlVEk5SWpraUlDOCtDaUFnUEd4cGJtVWdlREU5SWpRaUlIZ3lQU0l5TUNJZ2VURTlJakUxSWlCNU1qMGlNVFVpSUM4K0NpQWdQR3hwYm1VZ2VERTlJakV3SWlCNE1qMGlPQ0lnZVRFOUlqTWlJSGt5UFNJeU1TSWdMejRLSUNBOGJHbHVaU0I0TVQwaU1UWWlJSGd5UFNJeE5DSWdlVEU5SWpNaUlIa3lQU0l5TVNJZ0x6NEtQQzl6ZG1jK0NnPT0pIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2hhc2hcbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBIYXNoID0gY3JlYXRlTHVjaWRlSWNvbignSGFzaCcsIFtcbiAgWydsaW5lJywgeyB4MTogJzQnLCB4MjogJzIwJywgeTE6ICc5JywgeTI6ICc5Jywga2V5OiAnNGxodGN0JyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzQnLCB4MjogJzIwJywgeTE6ICcxNScsIHkyOiAnMTUnLCBrZXk6ICd2eXUwa2QnIH1dLFxuICBbJ2xpbmUnLCB7IHgxOiAnMTAnLCB4MjogJzgnLCB5MTogJzMnLCB5MjogJzIxJywga2V5OiAnMWdncDhvJyB9XSxcbiAgWydsaW5lJywgeyB4MTogJzE2JywgeDI6ICcxNCcsIHkxOiAnMycsIHkyOiAnMjEnLCBrZXk6ICd3ZXljZ3AnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IEhhc2g7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBLZXlSb3VuZFxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWk0MU9EWWdNVGN1TkRFMFFUSWdNaUF3SURBZ01DQXlJREU0TGpneU9GWXlNV0V4SURFZ01DQXdJREFnTVNBeGFETmhNU0F4SURBZ01DQXdJREV0TVhZdE1XRXhJREVnTUNBd0lERWdNUzB4YURGaE1TQXhJREFnTUNBd0lERXRNWFl0TVdFeElERWdNQ0F3SURFZ01TMHhhQzR4TnpKaE1pQXlJREFnTUNBd0lERXVOREUwTFM0MU9EWnNMamd4TkMwdU9ERTBZVFl1TlNBMkxqVWdNQ0F4SURBdE5DMDBlaUlnTHo0S0lDQThZMmx5WTJ4bElHTjRQU0l4Tmk0MUlpQmplVDBpTnk0MUlpQnlQU0l1TlNJZ1ptbHNiRDBpWTNWeWNtVnVkRU52Ykc5eUlpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL2tleS1yb3VuZFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IEtleVJvdW5kID0gY3JlYXRlTHVjaWRlSWNvbignS2V5Um91bmQnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yLjU4NiAxNy40MTRBMiAyIDAgMCAwIDIgMTguODI4VjIxYTEgMSAwIDAgMCAxIDFoM2ExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMSAxLTFoLjE3MmEyIDIgMCAwIDAgMS40MTQtLjU4NmwuODE0LS44MTRhNi41IDYuNSAwIDEgMC00LTR6JyxcbiAgICAgIGtleTogJzFzNnQ3dCcsXG4gICAgfSxcbiAgXSxcbiAgWydjaXJjbGUnLCB7IGN4OiAnMTYuNScsIGN5OiAnNy41JywgcjogJy41JywgZmlsbDogJ2N1cnJlbnRDb2xvcicsIGtleTogJ3cwZWtwZycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgS2V5Um91bmQ7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBLZXlcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKdE1UVXVOU0EzTGpVZ01pNHpJREl1TTJFeElERWdNQ0F3SURBZ01TNDBJREJzTWk0eExUSXVNV0V4SURFZ01DQXdJREFnTUMweExqUk1NVGtnTkNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0p0TWpFZ01pMDVMallnT1M0MklpQXZQZ29nSUR4amFYSmpiR1VnWTNnOUlqY3VOU0lnWTNrOUlqRTFMalVpSUhJOUlqVXVOU0lnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMva2V5XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgS2V5ID0gY3JlYXRlTHVjaWRlSWNvbignS2V5JywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdtMTUuNSA3LjUgMi4zIDIuM2ExIDEgMCAwIDAgMS40IDBsMi4xLTIuMWExIDEgMCAwIDAgMC0xLjRMMTkgNCcsIGtleTogJ2cwZmxkaycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20yMSAyLTkuNiA5LjYnLCBrZXk6ICcxajBobzgnIH1dLFxuICBbJ2NpcmNsZScsIHsgY3g6ICc3LjUnLCBjeTogJzE1LjUnLCByOiAnNS41Jywga2V5OiAneXFiM2hyJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBLZXk7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNYWlsXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTWpBaUlHaGxhV2RvZEQwaU1UWWlJSGc5SWpJaUlIazlJalFpSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlNaUEzTFRndU9UY2dOUzQzWVRFdU9UUWdNUzQ1TkNBd0lEQWdNUzB5TGpBMklEQk1NaUEzSWlBdlBnbzhMM04yWno0SykgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbWFpbFxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1haWwgPSBjcmVhdGVMdWNpZGVJY29uKCdNYWlsJywgW1xuICBbJ3JlY3QnLCB7IHdpZHRoOiAnMjAnLCBoZWlnaHQ6ICcxNicsIHg6ICcyJywgeTogJzQnLCByeDogJzInLCBrZXk6ICcxOG4zazEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMjIgNy04Ljk3IDUuN2ExLjk0IDEuOTQgMCAwIDEtMi4wNiAwTDIgNycsIGtleTogJzFvY3JnMycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWFpbDtcbiIsICJpbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uJztcblxuLyoqXG4gKiBAY29tcG9uZW50IEBuYW1lIE1heGltaXplXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5PQ0F6U0RWaE1pQXlJREFnTUNBd0xUSWdNbll6SWlBdlBnb2dJRHh3WVhSb0lHUTlJazB5TVNBNFZqVmhNaUF5SURBZ01DQXdMVEl0TW1ndE15SWdMejRLSUNBOGNHRjBhQ0JrUFNKTk15QXhObll6WVRJZ01pQXdJREFnTUNBeUlESm9NeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVFlnTWpGb00yRXlJRElnTUNBd0lEQWdNaTB5ZGkweklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL21heGltaXplXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTWF4aW1pemUgPSBjcmVhdGVMdWNpZGVJY29uKCdNYXhpbWl6ZScsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggM0g1YTIgMiAwIDAgMC0yIDJ2MycsIGtleTogJzFkY21pdCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00yMSA4VjVhMiAyIDAgMCAwLTItMmgtMycsIGtleTogJzFlNGd0MycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00zIDE2djNhMiAyIDAgMCAwIDIgMmgzJywga2V5OiAnd3NsNXNjJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTE2IDIxaDNhMiAyIDAgMCAwIDItMnYtMycsIGtleTogJzE4dHJlaycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTWF4aW1pemU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNaW5pbWl6ZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOT0NBemRqTmhNaUF5SURBZ01DQXhMVElnTWtneklpQXZQZ29nSUR4d1lYUm9JR1E5SWsweU1TQTRhQzB6WVRJZ01pQXdJREFnTVMweUxUSldNeUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NeUF4Tm1nellUSWdNaUF3SURBZ01TQXlJREoyTXlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRZZ01qRjJMVE5oTWlBeUlEQWdNQ0F4SURJdE1tZ3pJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9taW5pbWl6ZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IE1pbmltaXplID0gY3JlYXRlTHVjaWRlSWNvbignTWluaW1pemUnLCBbXG4gIFsncGF0aCcsIHsgZDogJ004IDN2M2EyIDIgMCAwIDEtMiAySDMnLCBrZXk6ICdob2hidHInIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgOGgtM2EyIDIgMCAwIDEtMi0yVjMnLCBrZXk6ICc1ancxZjMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2MycsIGtleTogJzE5OHR2cicgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNiAyMXYtM2EyIDIgMCAwIDEgMi0yaDMnLCBrZXk6ICdwaDhteHAnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IE1pbmltaXplO1xuIiwgImltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24nO1xuXG4vKipcbiAqIEBjb21wb25lbnQgQG5hbWUgTW92ZURvd25cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQXhPRXd4TWlBeU1rd3hOaUF4T0NJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRJZ01sWXlNaUlnTHo0S1BDOXpkbWMrQ2c9PSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvbW92ZS1kb3duXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZURvd24gPSBjcmVhdGVMdWNpZGVJY29uKCdNb3ZlRG93bicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTggMThMMTIgMjJMMTYgMTgnLCBrZXk6ICdjc2t2ZnYnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMlYyMicsIGtleTogJ3I4OXJ6aycgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgTW92ZURvd247XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBNb3ZlVXBcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9DQTJUREV5SURKTU1UWWdOaUlnTHo0S0lDQThjR0YwYUNCa1BTSk5NVElnTWxZeU1pSWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9tb3ZlLXVwXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgTW92ZVVwID0gY3JlYXRlTHVjaWRlSWNvbignTW92ZVVwJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNOCA2TDEyIDJMMTYgNicsIGtleTogJzF5dmt5eCcgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xMiAyVjIyJywga2V5OiAncjg5cnprJyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBNb3ZlVXA7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRDbG9zZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y21WamRDQjNhV1IwYUQwaU1UZ2lJR2hsYVdkb2REMGlNVGdpSUhnOUlqTWlJSGs5SWpNaUlISjRQU0l5SWlBdlBnb2dJRHh3WVhSb0lHUTlJazA1SUROMk1UZ2lJQzgrQ2lBZ1BIQmhkR2dnWkQwaWJURTJJREUxTFRNdE15QXpMVE1pSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcGFuZWwtbGVmdC1jbG9zZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBhbmVsTGVmdENsb3NlID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0Q2xvc2UnLCBbXG4gIFsncmVjdCcsIHsgd2lkdGg6ICcxOCcsIGhlaWdodDogJzE4JywgeDogJzMnLCB5OiAnMycsIHJ4OiAnMicsIGtleTogJ2FmaXR2NycgfV0sXG4gIFsncGF0aCcsIHsgZDogJ005IDN2MTgnLCBrZXk6ICdmaDNocWEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMTYgMTUtMy0zIDMtMycsIGtleTogJzE0eTk5eicgfV0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGFuZWxMZWZ0Q2xvc2U7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQYW5lbExlZnRPcGVuXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjbVZqZENCM2FXUjBhRDBpTVRnaUlHaGxhV2RvZEQwaU1UZ2lJSGc5SWpNaUlIazlJak1pSUhKNFBTSXlJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMDVJRE4yTVRnaUlDOCtDaUFnUEhCaGRHZ2daRDBpYlRFMElEa2dNeUF6TFRNZ015SWdMejRLUEM5emRtYytDZz09KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9wYW5lbC1sZWZ0LW9wZW5cbiAqIEBzZWUgaHR0cHM6Ly9sdWNpZGUuZGV2L2d1aWRlL3BhY2thZ2VzL2x1Y2lkZS1yZWFjdCAtIERvY3VtZW50YXRpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgLSBMdWNpZGUgaWNvbnMgcHJvcHMgYW5kIGFueSB2YWxpZCBTVkcgYXR0cmlidXRlXG4gKiBAcmV0dXJucyB7SlNYLkVsZW1lbnR9IEpTWCBFbGVtZW50XG4gKlxuICovXG5jb25zdCBQYW5lbExlZnRPcGVuID0gY3JlYXRlTHVjaWRlSWNvbignUGFuZWxMZWZ0T3BlbicsIFtcbiAgWydyZWN0JywgeyB3aWR0aDogJzE4JywgaGVpZ2h0OiAnMTgnLCB4OiAnMycsIHk6ICczJywgcng6ICcyJywga2V5OiAnYWZpdHY3JyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTkgM3YxOCcsIGtleTogJ2ZoM2hxYScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ20xNCA5IDMgMy0zIDMnLCBrZXk6ICc4MDEwZWUnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsTGVmdE9wZW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaG9uZVxuICogQGRlc2NyaXB0aW9uIEx1Y2lkZSBTVkcgaWNvbiBjb21wb25lbnQsIHJlbmRlcnMgU1ZHIEVsZW1lbnQgd2l0aCBjaGlsZHJlbi5cbiAqXG4gKiBAcHJldmlldyAhW2ltZ10oZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlBZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWdvZ0lIZHBaSFJvUFNJeU5DSUtJQ0JvWldsbmFIUTlJakkwSWdvZ0lIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSUtJQ0JtYVd4c1BTSnViMjVsSWdvZ0lITjBjbTlyWlQwaUl6QXdNQ0lnYzNSNWJHVTlJbUpoWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05tWm1ZN0lHSnZjbVJsY2kxeVlXUnBkWE02SURKd2VDSUtJQ0J6ZEhKdmEyVXRkMmxrZEdnOUlqSWlDaUFnYzNSeWIydGxMV3hwYm1WallYQTlJbkp2ZFc1a0lnb2dJSE4wY205clpTMXNhVzVsYW05cGJqMGljbTkxYm1RaUNqNEtJQ0E4Y0dGMGFDQmtQU0pOTWpJZ01UWXVPVEoyTTJFeUlESWdNQ0F3SURFdE1pNHhPQ0F5SURFNUxqYzVJREU1TGpjNUlEQWdNQ0F4TFRndU5qTXRNeTR3TnlBeE9TNDFJREU1TGpVZ01DQXdJREV0TmkwMklERTVMamM1SURFNUxqYzVJREFnTUNBeExUTXVNRGN0T0M0Mk4wRXlJRElnTUNBd0lERWdOQzR4TVNBeWFETmhNaUF5SURBZ01DQXhJRElnTVM0M01pQXhNaTQ0TkNBeE1pNDROQ0F3SURBZ01DQXVOeUF5TGpneElESWdNaUF3SURBZ01TMHVORFVnTWk0eE1VdzRMakE1SURrdU9URmhNVFlnTVRZZ01DQXdJREFnTmlBMmJERXVNamN0TVM0eU4yRXlJRElnTUNBd0lERWdNaTR4TVMwdU5EVWdNVEl1T0RRZ01USXVPRFFnTUNBd0lEQWdNaTQ0TVM0M1FUSWdNaUF3SURBZ01TQXlNaUF4Tmk0NU1ub2lJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waG9uZVxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBob25lID0gY3JlYXRlTHVjaWRlSWNvbignUGhvbmUnLCBbXG4gIFtcbiAgICAncGF0aCcsXG4gICAge1xuICAgICAgZDogJ00yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyeicsXG4gICAgICBrZXk6ICdmb2lxcjUnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IGRlZmF1bHQgUGhvbmU7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5PZmZcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOTVRVZ09TNHpORlkzWVRFZ01TQXdJREFnTVNBeExURWdNaUF5SURBZ01DQXdJREF0TkVnM0xqZzVJaUF2UGdvZ0lEeHdZWFJvSUdROUltMHlJRElnTWpBZ01qQWlJQzgrQ2lBZ1BIQmhkR2dnWkQwaVRUa2dPWFl4TGpjMllUSWdNaUF3SURBZ01TMHhMakV4SURFdU56bHNMVEV1TnpndU9VRXlJRElnTUNBd0lEQWdOU0F4TlM0eU5GWXhObUV4SURFZ01DQXdJREFnTVNBeGFERXhJaUF2UGdvOEwzTjJaejRLKSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy9waW4tb2ZmXG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgUGluT2ZmID0gY3JlYXRlTHVjaWRlSWNvbignUGluT2ZmJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTIgMTd2NScsIGtleTogJ2JiMWR1OScgfV0sXG4gIFsncGF0aCcsIHsgZDogJ00xNSA5LjM0VjdhMSAxIDAgMCAxIDEtMSAyIDIgMCAwIDAgMC00SDcuODknLCBrZXk6ICd6bnduenEnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtMiAyIDIwIDIwJywga2V5OiAnMW9vZXd5JyB9XSxcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgOXYxLjc2YTIgMiAwIDAgMS0xLjExIDEuNzlsLTEuNzguOUEyIDIgMCAwIDAgNSAxNS4yNFYxNmExIDEgMCAwIDAgMSAxaDExJyxcbiAgICAgIGtleTogJ2M5cWhtMicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW5PZmY7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBQaW5cbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk1USWdNVGQyTlNJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT1NBeE1DNDNObUV5SURJZ01DQXdJREV0TVM0eE1TQXhMamM1YkMweExqYzRMamxCTWlBeUlEQWdNQ0F3SURVZ01UVXVNalJXTVRaaE1TQXhJREFnTUNBd0lERWdNV2d4TW1FeElERWdNQ0F3SURBZ01TMHhkaTB1TnpaaE1pQXlJREFnTUNBd0xURXVNVEV0TVM0M09Xd3RNUzQzT0MwdU9VRXlJRElnTUNBd0lERWdNVFVnTVRBdU56WldOMkV4SURFZ01DQXdJREVnTVMweElESWdNaUF3SURBZ01DQXdMVFJJT0dFeUlESWdNQ0F3SURBZ01DQTBJREVnTVNBd0lEQWdNU0F4SURGNklpQXZQZ284TDNOMlp6NEspIC0gaHR0cHM6Ly9sdWNpZGUuZGV2L2ljb25zL3BpblxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFBpbiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1BpbicsIFtcbiAgWydwYXRoJywgeyBkOiAnTTEyIDE3djUnLCBrZXk6ICdiYjFkdTknIH1dLFxuICBbXG4gICAgJ3BhdGgnLFxuICAgIHtcbiAgICAgIGQ6ICdNOSAxMC43NmEyIDIgMCAwIDEtMS4xMSAxLjc5bC0xLjc4LjlBMiAyIDAgMCAwIDUgMTUuMjRWMTZhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0uNzZhMiAyIDAgMCAwLTEuMTEtMS43OWwtMS43OC0uOUEyIDIgMCAwIDEgMTUgMTAuNzZWN2ExIDEgMCAwIDEgMS0xIDIgMiAwIDAgMCAwLTRIOGEyIDIgMCAwIDAgMCA0IDEgMSAwIDAgMSAxIDF6JyxcbiAgICAgIGtleTogJzFua3o4YicsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBQaW47XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBSZWZyZXNoQ3dcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk15QXhNbUU1SURrZ01DQXdJREVnT1MwNUlEa3VOelVnT1M0M05TQXdJREFnTVNBMkxqYzBJREl1TnpSTU1qRWdPQ0lnTHo0S0lDQThjR0YwYUNCa1BTSk5NakVnTTNZMWFDMDFJaUF2UGdvZ0lEeHdZWFJvSUdROUlrMHlNU0F4TW1FNUlEa2dNQ0F3SURFdE9TQTVJRGt1TnpVZ09TNDNOU0F3SURBZ01TMDJMamMwTFRJdU56Uk1NeUF4TmlJZ0x6NEtJQ0E4Y0dGMGFDQmtQU0pOT0NBeE5rZ3pkalVpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvcmVmcmVzaC1jd1xuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFJlZnJlc2hDdyA9IGNyZWF0ZUx1Y2lkZUljb24oJ1JlZnJlc2hDdycsIFtcbiAgWydwYXRoJywgeyBkOiAnTTMgMTJhOSA5IDAgMCAxIDktOSA5Ljc1IDkuNzUgMCAwIDEgNi43NCAyLjc0TDIxIDgnLCBrZXk6ICd2OWg1dmMnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdNMjEgM3Y1aC01Jywga2V5OiAnMXE3dG8wJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTIxIDEyYTkgOSAwIDAgMS05IDkgOS43NSA5Ljc1IDAgMCAxLTYuNzQtMi43NEwzIDE2Jywga2V5OiAnM3VpZmwzJyB9XSxcbiAgWydwYXRoJywgeyBkOiAnTTggMTZIM3Y1Jywga2V5OiAnMWN2Njc4JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBSZWZyZXNoQ3c7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBUYWJsZTJcbiAqIEBkZXNjcmlwdGlvbiBMdWNpZGUgU1ZHIGljb24gY29tcG9uZW50LCByZW5kZXJzIFNWRyBFbGVtZW50IHdpdGggY2hpbGRyZW4uXG4gKlxuICogQHByZXZpZXcgIVtpbWddKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklnb2dJSGRwWkhSb1BTSXlOQ0lLSUNCb1pXbG5hSFE5SWpJMElnb2dJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lLSUNCbWFXeHNQU0p1YjI1bElnb2dJSE4wY205clpUMGlJekF3TUNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNObVptWTdJR0p2Y21SbGNpMXlZV1JwZFhNNklESndlQ0lLSUNCemRISnZhMlV0ZDJsa2RHZzlJaklpQ2lBZ2MzUnliMnRsTFd4cGJtVmpZWEE5SW5KdmRXNWtJZ29nSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpY205MWJtUWlDajRLSUNBOGNHRjBhQ0JrUFNKTk9TQXpTRFZoTWlBeUlEQWdNQ0F3TFRJZ01uWTBiVFl0Tm1neE1HRXlJRElnTUNBd0lERWdNaUF5ZGpSTk9TQXpkakU0YlRBZ01HZ3hNR0V5SURJZ01DQXdJREFnTWkweVZqbE5PU0F5TVVnMVlUSWdNaUF3SURBZ01TMHlMVEpXT1cwd0lEQm9NVGdpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdGFibGUtMlxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFRhYmxlMiA9IGNyZWF0ZUx1Y2lkZUljb24oJ1RhYmxlMicsIFtcbiAgW1xuICAgICdwYXRoJyxcbiAgICB7XG4gICAgICBkOiAnTTkgM0g1YTIgMiAwIDAgMC0yIDJ2NG02LTZoMTBhMiAyIDAgMCAxIDIgMnY0TTkgM3YxOG0wIDBoMTBhMiAyIDAgMCAwIDItMlY5TTkgMjFINWEyIDIgMCAwIDEtMi0yVjltMCAwaDE4JyxcbiAgICAgIGtleTogJ2d1Z2o4MycsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBUYWJsZTI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBVc2VyXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGtnTWpGMkxUSmhOQ0EwSURBZ01DQXdMVFF0TkVnNVlUUWdOQ0F3SURBZ01DMDBJRFIyTWlJZ0x6NEtJQ0E4WTJseVkyeGxJR040UFNJeE1pSWdZM2s5SWpjaUlISTlJalFpSUM4K0Nqd3ZjM1puUGdvPSkgLSBodHRwczovL2x1Y2lkZS5kZXYvaWNvbnMvdXNlclxuICogQHNlZSBodHRwczovL2x1Y2lkZS5kZXYvZ3VpZGUvcGFja2FnZXMvbHVjaWRlLXJlYWN0IC0gRG9jdW1lbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIEx1Y2lkZSBpY29ucyBwcm9wcyBhbmQgYW55IHZhbGlkIFNWRyBhdHRyaWJ1dGVcbiAqIEByZXR1cm5zIHtKU1guRWxlbWVudH0gSlNYIEVsZW1lbnRcbiAqXG4gKi9cbmNvbnN0IFVzZXIgPSBjcmVhdGVMdWNpZGVJY29uKCdVc2VyJywgW1xuICBbJ3BhdGgnLCB7IGQ6ICdNMTkgMjF2LTJhNCA0IDAgMCAwLTQtNEg5YTQgNCAwIDAgMC00IDR2MicsIGtleTogJzk3NWtlbCcgfV0sXG4gIFsnY2lyY2xlJywgeyBjeDogJzEyJywgY3k6ICc3JywgcjogJzQnLCBrZXk6ICcxN3lzMGQnIH1dLFxuXSk7XG5cbmV4cG9ydCBkZWZhdWx0IFVzZXI7XG4iLCAiaW1wb3J0IGNyZWF0ZUx1Y2lkZUljb24gZnJvbSAnLi4vY3JlYXRlTHVjaWRlSWNvbic7XG5cbi8qKlxuICogQGNvbXBvbmVudCBAbmFtZSBYXG4gKiBAZGVzY3JpcHRpb24gTHVjaWRlIFNWRyBpY29uIGNvbXBvbmVudCwgcmVuZGVycyBTVkcgRWxlbWVudCB3aXRoIGNoaWxkcmVuLlxuICpcbiAqIEBwcmV2aWV3ICFbaW1nXShkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUFnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JZ29nSUhkcFpIUm9QU0l5TkNJS0lDQm9aV2xuYUhROUlqSTBJZ29nSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJS0lDQm1hV3hzUFNKdWIyNWxJZ29nSUhOMGNtOXJaVDBpSXpBd01DSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTm1abVk3SUdKdmNtUmxjaTF5WVdScGRYTTZJREp3ZUNJS0lDQnpkSEp2YTJVdGQybGtkR2c5SWpJaUNpQWdjM1J5YjJ0bExXeHBibVZqWVhBOUluSnZkVzVrSWdvZ0lITjBjbTlyWlMxc2FXNWxhbTlwYmowaWNtOTFibVFpQ2o0S0lDQThjR0YwYUNCa1BTSk5NVGdnTmlBMklERTRJaUF2UGdvZ0lEeHdZWFJvSUdROUltMDJJRFlnTVRJZ01USWlJQzgrQ2p3dmMzWm5QZ289KSAtIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucy94XG4gKiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9ndWlkZS9wYWNrYWdlcy9sdWNpZGUtcmVhY3QgLSBEb2N1bWVudGF0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gTHVjaWRlIGljb25zIHByb3BzIGFuZCBhbnkgdmFsaWQgU1ZHIGF0dHJpYnV0ZVxuICogQHJldHVybnMge0pTWC5FbGVtZW50fSBKU1ggRWxlbWVudFxuICpcbiAqL1xuY29uc3QgWCA9IGNyZWF0ZUx1Y2lkZUljb24oJ1gnLCBbXG4gIFsncGF0aCcsIHsgZDogJ00xOCA2IDYgMTgnLCBrZXk6ICcxYmw1ZjgnIH1dLFxuICBbJ3BhdGgnLCB7IGQ6ICdtNiA2IDEyIDEyJywga2V5OiAnZDhiazZ2JyB9XSxcbl0pO1xuXG5leHBvcnQgZGVmYXVsdCBYO1xuIiwgImltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgYmFkZ2VWYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtcHgtMi41IHBzLXB5LTAuNSBwcy10ZXh0LXhzIHBzLWZvbnQtc2VtaWJvbGQgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMiBmb2N1czpwcy1yaW5nLXJpbmcgZm9jdXM6cHMtcmluZy1vZmZzZXQtMlwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1ib3JkZXItdHJhbnNwYXJlbnQgcHMtYmctcHJpbWFyeSBwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZCBwcy1zaGFkb3cgaG92ZXI6cHMtYmctcHJpbWFyeS84MFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwicHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIGhvdmVyOnBzLWJnLXNlY29uZGFyeS84MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTpcbiAgICAgICAgICBcInBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy1kZXN0cnVjdGl2ZSBwcy10ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgcHMtc2hhZG93IGhvdmVyOnBzLWJnLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgIG91dGxpbmU6IFwicHMtdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZVByb3BzIGV4dGVuZHMgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBWYXJpYW50UHJvcHM8dHlwZW9mIGJhZGdlVmFyaWFudHM+IHt9XG5cbmZ1bmN0aW9uIEJhZGdlKHsgY2xhc3NOYW1lLCB2YXJpYW50LCAuLi5wcm9wcyB9OiBCYWRnZVByb3BzKSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y24oYmFkZ2VWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCB7IEJhZGdlLCBiYWRnZVZhcmlhbnRzIH07XG4iLCAiaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gXCJjbGFzcy12YXJpYW5jZS1hdXRob3JpdHlcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJwcy1pbmxpbmUtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtZ2FwLTIgcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6cHMtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0xIGZvY3VzLXZpc2libGU6cHMtcmluZy1yaW5nIGRpc2FibGVkOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6cHMtb3BhY2l0eS01MCBbJl9zdmddOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpwcy1zaXplLTQgWyZfc3ZnXTpwcy1zaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1iZy1wcmltYXJ5IHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdyBob3Zlcjpwcy1iZy1wcmltYXJ5LzkwXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcInBzLWJnLWRlc3RydWN0aXZlIHBzLXRleHQtZGVzdHJ1Y3RpdmUtZm9yZWdyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcInBzLWJvcmRlciBwcy1ib3JkZXItaW5wdXQgcHMtYmctYmFja2dyb3VuZCBwcy1zaGFkb3ctc20gaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgc2Vjb25kYXJ5OiBcInBzLWJnLXNlY29uZGFyeSBwcy10ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1zbSBob3Zlcjpwcy1iZy1zZWNvbmRhcnkvODBcIixcbiAgICAgICAgZ2hvc3Q6IFwiaG92ZXI6cHMtYmctYWNjZW50IGhvdmVyOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgbGluazogXCJwcy10ZXh0LXByaW1hcnkgcHMtdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnBzLXVuZGVybGluZVwiLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgZGVmYXVsdDogXCJwcy1oLTkgcHMtcHgtNCBwcy1weS0yXCIsXG4gICAgICAgIHhzOiBcInBzLWgtNiBwcy1yb3VuZGVkLW1kIHBzLXB4LTIgcHMtdGV4dC14c1wiLFxuICAgICAgICBzbTogXCJwcy1oLTggcHMtcm91bmRlZC1tZCBwcy1weC0zIHBzLXRleHQteHNcIixcbiAgICAgICAgbGc6IFwicHMtaC0xMCBwcy1yb3VuZGVkLW1kIHBzLXB4LThcIixcbiAgICAgICAgaWNvbjogXCJwcy1oLTkgcHMtdy05XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvblByb3BzXG4gIGV4dGVuZHMgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LFxuICAgIFZhcmlhbnRQcm9wczx0eXBlb2YgYnV0dG9uVmFyaWFudHM+IHtcbiAgYXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IEJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQsIEJ1dHRvblByb3BzPihcbiAgKHsgY2xhc3NOYW1lLCB2YXJpYW50LCBzaXplLCBhc0NoaWxkID0gZmFsc2UsIC4uLnByb3BzIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIDxDb21wIGNsYXNzTmFtZT17Y24oYnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplLCBjbGFzc05hbWUgfSkpfSByZWY9e3JlZn0gey4uLnByb3BzfSAvPjtcbiAgfSxcbik7XG5CdXR0b24uZGlzcGxheU5hbWUgPSBcIkJ1dHRvblwiO1xuXG5leHBvcnQgeyBCdXR0b24sIGJ1dHRvblZhcmlhbnRzIH07XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBQb3BvdmVyID0gUG9wb3ZlclByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBQb3BvdmVyVHJpZ2dlciA9IFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgUG9wb3ZlckFuY2hvciA9IFBvcG92ZXJQcmltaXRpdmUuQW5jaG9yO1xuXG5jb25zdCBQb3BvdmVyQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy16LTUwIHBzLXctNzIgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy1wLTQgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIHBzLW91dGxpbmUtbm9uZSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LXBvcG92ZXItY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvUG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcblBvcG92ZXJDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgeyBQb3BvdmVyLCBQb3BvdmVyVHJpZ2dlciwgUG9wb3ZlckNvbnRlbnQsIFBvcG92ZXJBbmNob3IgfTtcbiIsICJpbXBvcnQgeyBRdWVyeUtleSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG5pbXBvcnQgeyBBZGFwdGVyUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IGFkZFJvd0lkVG9SZXN1bHQgfSBmcm9tIFwiLi91dGlscy9hZGQtcm93LWlkLXRvLXJlc3VsdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVJbnNlcnQoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImluc2VydFwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuaW5zZXJ0KHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFkZFJvd0lkVG9SZXN1bHQocmVzdWx0LCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzKG5ld0RhdGEpIHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhPEFkYXB0ZXJRdWVyeVJlc3VsdD4oXG4gICAgICAgIHtcbiAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgLy8gaGVyZSB3ZSBwYXJ0aWFsbHkgbWF0Y2ggdGhlIHF1ZXJ5IGtleSB0byBnZXQgdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICAgIHF1ZXJ5S2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcInF1ZXJ5XCJdIGFzIG5ldmVyIGFzIFF1ZXJ5S2V5LFxuICAgICAgICB9LFxuICAgICAgICAob2xkRGF0YSkgPT4ge1xuICAgICAgICAgIGlmIChvbGREYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvbGREYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5vbGREYXRhLFxuICAgICAgICAgICAgcm93czogWy4uLm5ld0RhdGEucm93cywgLi4ub2xkRGF0YS5yb3dzXSxcbiAgICAgICAgICB9IHNhdGlzZmllcyBBZGFwdGVyUXVlcnlSZXN1bHQ7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBpbmZlclJvd0ZpbHRlciwgVGFibGUgfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmZ1bmN0aW9uIGdldFJvd0lkKHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCBpZCA9IHtcbiAgICBmaWx0ZXI6IGluZmVyUm93RmlsdGVyKHJvdywgdGFibGUuY29sdW1ucyksXG4gICAgdGFibGU6IGAke3RhYmxlLnNjaGVtYX0uJHt0YWJsZS5uYW1lfWAsXG4gIH07XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlkKTtcbn1cblxuZnVuY3Rpb24gYWRkUm93SWRUb1Jvdyhyb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0YWJsZTogVGFibGUpIHtcbiAgcmV0dXJuIHsgLi4ucm93LCBfX3BzX3Jvd2lkOiBnZXRSb3dJZChyb3csIHRhYmxlKSB9O1xufVxuXG50eXBlIEFkYXB0ZXJSZXN1bHQgPSB7XG4gIHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByb3dzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRSb3dJZFRvUmVzdWx0PFQgZXh0ZW5kcyBBZGFwdGVyUmVzdWx0PihyZXN1bHQ6IFQsIHRhYmxlOiBUYWJsZSkge1xuICBjb25zdCB7IHJvdywgcm93cyB9ID0gcmVzdWx0O1xuXG4gIGlmIChyb3cgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93OiBhZGRSb3dJZFRvUm93KHJvdywgdGFibGUpIH07XG4gIH1cbiAgaWYgKHJvd3MgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IC4uLnJlc3VsdCwgcm93czogcm93cy5tYXAoKHJvdykgPT4gYWRkUm93SWRUb1Jvdyhyb3csIHRhYmxlKSkgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgdXNlUXVlcnkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBGaWx0ZXJHcm91cCwgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuaW1wb3J0IHsgYWRkUm93SWRUb1Jlc3VsdCB9IGZyb20gXCIuL3V0aWxzL2FkZC1yb3ctaWQtdG8tcmVzdWx0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzIHtcbiAgcGFnZUluZGV4OiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHNvcnRPcmRlcjogU29ydE9yZGVySXRlbVtdO1xuICBmaWx0ZXI6IEZpbHRlckdyb3VwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVRdWVyeShwcm9wczogVXNlQWN0aXZlVGFibGVRdWVyeVByb3BzKSB7XG4gIGNvbnN0IHsgcGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydE9yZGVyLCBmaWx0ZXIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuXG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgZW5hYmxlZDogQm9vbGVhbihhY3RpdmVUYWJsZSksXG4gICAgZ2NUaW1lOiAwLFxuICAgIHBsYWNlaG9sZGVyRGF0YShwcmV2aW91c0RhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCwgcHJldmlvdXNRdWVyeSkge1xuICAgICAgY29uc3QgWywgc2NoZW1hLCAsIHRhYmxlXSA9IHByZXZpb3VzUXVlcnk/LnF1ZXJ5S2V5IHx8IFtdO1xuXG4gICAgICBpZiAoc2NoZW1hICE9PSBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IHRhYmxlICE9PSBhY3RpdmVUYWJsZT8ubmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c0RhdGE7XG4gICAgfSxcbiAgICBhc3luYyBxdWVyeUZuKHsgc2lnbmFsIH0pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0c10gPSBhd2FpdCBhZGFwdGVyLnF1ZXJ5KFxuICAgICAgICB7IHBhZ2VJbmRleCwgcGFnZVNpemUsIHNvcnRPcmRlciwgdGFibGU6IGFjdGl2ZVRhYmxlISwgZmlsdGVyIH0sXG4gICAgICAgIHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9LFxuICAgICAgKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWRkUm93SWRUb1Jlc3VsdChyZXN1bHRzLCBhY3RpdmVUYWJsZSEpO1xuICAgIH0sXG4gICAgcXVlcnlLZXk6IFtcbiAgICAgIFwic2NoZW1hXCIsXG4gICAgICBhY3RpdmVUYWJsZT8uc2NoZW1hIHx8IG51bGwsXG4gICAgICBcInRhYmxlXCIsXG4gICAgICBhY3RpdmVUYWJsZT8ubmFtZSB8fCBudWxsLFxuICAgICAgXCJxdWVyeVwiLFxuICAgICAgXCJzb3J0T3JkZXJcIixcbiAgICAgIHNvcnRPcmRlci5tYXAoKGl0ZW0pID0+IGAke2l0ZW0uY29sdW1ufToke2l0ZW0uZGlyZWN0aW9ufWApLmpvaW4oXCIsXCIpIHx8IFwibmF0dXJhbFwiLFxuICAgICAgXCJwYWdlSW5kZXhcIixcbiAgICAgIHBhZ2VJbmRleCxcbiAgICAgIFwicGFnZVNpemVcIixcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgXCJmaWx0ZXJcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KGZpbHRlciksXG4gICAgXSxcbiAgICBzdGFsZVRpbWU6IEluZmluaXR5LFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIFF1ZXJ5Q2xpZW50LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlclF1ZXJ5UmVzdWx0LCBBZGFwdGVyVXBkYXRlRGV0YWlscywgQWRhcHRlclVwZGF0ZU9wdGlvbnMsIFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgaW5mZXJSb3dGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vZGF0YS9xdWVyeVwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQWN0aXZlVGFibGVVcGRhdGVQYXJhbXMge1xuICBkZXRhaWxzOiBBZGFwdGVyVXBkYXRlRGV0YWlscztcbiAgb3B0aW9uczogQWRhcHRlclVwZGF0ZU9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBY3RpdmVUYWJsZVVwZGF0ZSgpIHtcbiAgY29uc3QgeyBhY3RpdmVUYWJsZSwgYWRhcHRlciwgb25FcnJvciB9ID0gdXNlU3R1ZGlvKCk7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICBjb25zdCBxdWVyeUtleVByZWZpeCA9IFtcInNjaGVtYVwiLCBhY3RpdmVUYWJsZT8uc2NoZW1hID8/IG51bGwsIFwidGFibGVcIiwgYWN0aXZlVGFibGU/Lm5hbWUgPz8gbnVsbF0gYXMgY29uc3Q7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAocGFyYW1zOiBVc2VBY3RpdmVUYWJsZVVwZGF0ZVBhcmFtcykgPT4ge1xuICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgYWRhcHRlci51cGRhdGUocGFyYW1zLmRldGFpbHMsIHBhcmFtcy5vcHRpb25zKTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgbXV0YXRpb25LZXk6IFsuLi5xdWVyeUtleVByZWZpeCwgXCJ1cGRhdGVcIl0sXG4gICAgb25FcnJvcihlcnJvciwgcGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGNoYW5nZXMsIHJvdyB9ID0gcGFyYW1zLmRldGFpbHM7XG5cbiAgICAgIG9uRXJyb3IoZXJyb3IpO1xuXG4gICAgICBvdmVyd3JpdGVDYWNoZWRSb3coe1xuICAgICAgICBnZXRGaW5kZXJGbigpIHtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkUm93ID0geyAuLi5yb3csIC4uLmNoYW5nZXMgfTtcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKGNoYW5nZWRSb3csIGFjdGl2ZVRhYmxlIS5jb2x1bW5zKTtcblxuICAgICAgICAgIHJldHVybiAoY2FjaGVkUm93KSA9PiByb3dGaWx0ZXIuZXZlcnkoKFtjb2x1bW5OYW1lLCB2YWx1ZV0pID0+IGNhY2hlZFJvd1tjb2x1bW5OYW1lXSA9PT0gdmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBxdWVyeUNsaWVudCxcbiAgICAgICAgdGFibGU6IGFjdGl2ZVRhYmxlISxcbiAgICAgICAgdXBkYXRlckZuOiBmdW5jdGlvbiByZXZlcnRDaGFuZ2VzKGNhY2hlZFJvdykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jYWNoZWRSb3csXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhjaGFuZ2VzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChvcmlnaW5hbFZhbHVlcywgY29sdW1uTmFtZSkgPT4gKHsgLi4ub3JpZ2luYWxWYWx1ZXMsIFtjb2x1bW5OYW1lXTogcm93W2NvbHVtbk5hbWVdIH0pLFxuICAgICAgICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgb25NdXRhdGUocGFyYW1zKSB7XG4gICAgICBjb25zdCB7IGRldGFpbHMgfSA9IHBhcmFtcztcblxuICAgICAgb3ZlcndyaXRlQ2FjaGVkUm93KHtcbiAgICAgICAgZ2V0RmluZGVyRm4oKSB7XG4gICAgICAgICAgY29uc3QgeyByb3c6IHVuY2hhbmdlZFJvdyB9ID0gZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IHJvd0ZpbHRlciA9IGluZmVyUm93RmlsdGVyKHVuY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5Q2hhbmdlcyhjYWNoZWRSb3cpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jYWNoZWRSb3csIC4uLmRldGFpbHMuY2hhbmdlcyB9O1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3MocmVzdWx0LCBwYXJhbXMpIHtcbiAgICAgIG92ZXJ3cml0ZUNhY2hlZFJvdyh7XG4gICAgICAgIGdldEZpbmRlckZuKCkge1xuICAgICAgICAgIGNvbnN0IHsgY2hhbmdlcywgcm93IH0gPSBwYXJhbXMuZGV0YWlscztcblxuICAgICAgICAgIGNvbnN0IGNoYW5nZWRSb3cgPSB7IC4uLnJvdywgLi4uY2hhbmdlcyB9O1xuXG4gICAgICAgICAgY29uc3Qgcm93RmlsdGVyID0gaW5mZXJSb3dGaWx0ZXIoY2hhbmdlZFJvdywgYWN0aXZlVGFibGUhLmNvbHVtbnMpO1xuXG4gICAgICAgICAgcmV0dXJuIChjYWNoZWRSb3cpID0+IHJvd0ZpbHRlci5ldmVyeSgoW2NvbHVtbk5hbWUsIHZhbHVlXSkgPT4gY2FjaGVkUm93W2NvbHVtbk5hbWVdID09PSB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXJ5Q2xpZW50LFxuICAgICAgICB0YWJsZTogYWN0aXZlVGFibGUhLFxuICAgICAgICB1cGRhdGVyRm46IGZ1bmN0aW9uIGFwcGx5UmVhbERhdGFXaGVuRnJlc2hlcihjYWNoZWRSb3cpIHtcbiAgICAgICAgICBjb25zdCB7IF9fcHNfdXBkYXRlZF9hdF9fIH0gPSBjYWNoZWRSb3c7XG4gICAgICAgICAgY29uc3QgeyByb3cgfSA9IHJlc3VsdDtcblxuICAgICAgICAgIC8vIHJlc3VsdCByb3cgaXMgc3RhbGUuXG4gICAgICAgICAgaWYgKF9fcHNfdXBkYXRlZF9hdF9fICE9IG51bGwgJiYgcm93Ll9fcHNfdXBkYXRlZF9hdF9fIDw9IF9fcHNfdXBkYXRlZF9hdF9fKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkUm93O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IC4uLmNhY2hlZFJvdywgLi4ucm93IH07XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJldHJ5OiBmYWxzZSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG92ZXJ3cml0ZUNhY2hlZFJvdyhwYXJhbXM6IHtcbiAgZ2V0RmluZGVyRm46ICgpID0+IChjYWNoZWRSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBib29sZWFuO1xuICB0YWJsZTogVGFibGU7XG4gIHVwZGF0ZXJGbjogKGNhY2hlZFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeUNsaWVudDogUXVlcnlDbGllbnQ7XG59KSB7XG4gIGNvbnN0IHsgZ2V0RmluZGVyRm4sIHF1ZXJ5Q2xpZW50LCB0YWJsZSwgdXBkYXRlckZuIH0gPSBwYXJhbXM7XG5cbiAgbGV0IGZpbmRlcjogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0RmluZGVyRm4+O1xuXG4gIHF1ZXJ5Q2xpZW50LnNldFF1ZXJpZXNEYXRhKFxuICAgIHsgZXhhY3Q6IGZhbHNlLCBxdWVyeUtleTogW1wic2NoZW1hXCIsIHRhYmxlLnNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZS5uYW1lLCBcInF1ZXJ5XCJdIH0sXG4gICAgKGNhY2hlZFJlc3VsdDogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkKTogQWRhcHRlclF1ZXJ5UmVzdWx0IHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IHsgcm93czogY2FjaGVkUm93cyA9IFtdIH0gPSBjYWNoZWRSZXN1bHQgfHwge307XG5cbiAgICAgIGlmIChjYWNoZWRSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZWRSb3dJbmRleCA9IGNhY2hlZFJvd3MuZmluZEluZGV4KChmaW5kZXIgPz89IGdldEZpbmRlckZuKCkpKTtcblxuICAgICAgaWYgKGNhY2hlZFJvd0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdSb3cgPSB1cGRhdGVyRm4oY2FjaGVkUm93c1tjYWNoZWRSb3dJbmRleF0hKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY2FjaGVkUmVzdWx0ISxcbiAgICAgICAgcm93czogWy4uLmNhY2hlZFJvd3Muc2xpY2UoMCwgY2FjaGVkUm93SW5kZXgpLCBuZXdSb3csIC4uLmNhY2hlZFJvd3Muc2xpY2UoY2FjaGVkUm93SW5kZXggKyAxKV0sXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyB1c2VRdWVyeVN0YXRlIH0gZnJvbSBcIi4vbnVxc1wiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbHRlcjogRmlsdGVyR3JvdXAgPSB7XG4gIGtpbmQ6IFwiRmlsdGVyR3JvdXBcIixcbiAgZmlsdGVyczogW10sXG4gIGFmdGVyOiBcImFuZFwiLFxuICBpZDogc2hvcnQuZ2VuZXJhdGUoKSxcbn07XG5cbmNvbnN0IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZSA9IChmaWx0ZXJHcm91cDogRmlsdGVyR3JvdXApOiBudW1iZXIgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBmaWx0ZXJHcm91cC5maWx0ZXJzKSB7XG4gICAgaWYgKGZpbHRlci5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgICAvLyBPbmx5IGNvdW50IGZpbHRlcnMgdGhhdCBoYXZlIGEgbm9uLWVtcHR5IGNvbHVtbiBzZWxlY3RlZFxuICAgICAgaWYgKGZpbHRlci5jb2x1bW4udHJpbSgpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIua2luZCA9PT0gXCJGaWx0ZXJHcm91cFwiKSB7XG4gICAgICBjb3VudCArPSBjb3VudEZpbHRlcnNSZWN1cnNpdmUoZmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbHRlcmluZygpIHtcbiAgY29uc3QgW2ZpbHRlclBhcmFtLCBzZXRGaWx0ZXJQYXJhbV0gPSB1c2VRdWVyeVN0YXRlKFwiZmlsdGVyXCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmF1bHRGaWx0ZXIpLFxuICB9KTtcblxuICBjb25zdCBhcHBsaWVkRmlsdGVyID0gdXNlTWVtbygoKSA9PiBKU09OLnBhcnNlKGZpbHRlclBhcmFtKSBhcyBGaWx0ZXJHcm91cCwgW2ZpbHRlclBhcmFtXSk7XG4gIGNvbnN0IHNldEFwcGxpZWRGaWx0ZXIgPSAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZCBzZXRGaWx0ZXJQYXJhbShKU09OLnN0cmluZ2lmeShmaWx0ZXIpKTtcblxuICBjb25zdCBbZWRpdGluZ0ZpbHRlciwgc2V0RWRpdGluZ0ZpbHRlcl0gPSB1c2VTdGF0ZTxGaWx0ZXJHcm91cD4oYXBwbGllZEZpbHRlcik7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRFZGl0aW5nRmlsdGVyKGFwcGxpZWRGaWx0ZXIpO1xuICB9LCBbYXBwbGllZEZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvdGFsRWRpdGluZ0ZpbHRlcnMgPSB1c2VNZW1vKCgpID0+IGNvdW50RmlsdGVyc1JlY3Vyc2l2ZShlZGl0aW5nRmlsdGVyKSwgW2VkaXRpbmdGaWx0ZXJdKTtcblxuICByZXR1cm4ge1xuICAgIGFwcGxpZWRGaWx0ZXIsXG4gICAgc2V0QXBwbGllZEZpbHRlcixcbiAgICBlZGl0aW5nRmlsdGVyLFxuICAgIHNldEVkaXRpbmdGaWx0ZXIsXG4gICAgdG90YWxFZGl0aW5nRmlsdGVycyxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VJc011dGF0aW5nIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xuXG4vKipcbiAqIEhvb2sgdG8ga25vdyB3aGV0aGVyIGFuIGluc2VydCBpcyBjdXJyZW50bHkgb25nb2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzSW5zZXJ0aW5nKCkge1xuICByZXR1cm4gdXNlSXNNdXRhdGluZyh7XG4gICAgcHJlZGljYXRlKHsgb3B0aW9uczogeyBtdXRhdGlvbktleSB9IH0pIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbktleT8uWzRdID09PSBcImluc2VydFwiO1xuICAgIH0sXG4gIH0pO1xufVxuIiwgImltcG9ydCB0eXBlIHsgT25DaGFuZ2VGbiwgUGFnaW5hdGlvblN0YXRlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsga2V5TWFwLCBwYXJzZUFzSW5kZXgsIHBhcnNlQXNJbnRlZ2VyLCB1c2VRdWVyeVN0YXRlcyB9IGZyb20gXCIuL251cXNcIjtcblxuLy8gVE9ETzogZXZlbnR1YWxseSBjb25maWd1cmFibGUgLyBjb250cm9sbGVkIGJ5IHVzZXIuIGJhYnkgc3RlcHMuLlxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSAyNTtcblxuY29uc3QgcGFnaW5hdGlvblBhcnNlcnMgPSBrZXlNYXAoe1xuICBwYWdlSW5kZXg6IHBhcnNlQXNJbmRleC53aXRoRGVmYXVsdCgwKSwgLy8gemVyby1iYXNlZFxuICBwYWdlU2l6ZTogcGFyc2VBc0ludGVnZXIud2l0aERlZmF1bHQoREVGQVVMVF9QQUdFX1NJWkUpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uKCkge1xuICBjb25zdCBbeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sIHNldFBhZ2luYXRpb25dID0gdXNlUXVlcnlTdGF0ZXMocGFnaW5hdGlvblBhcnNlcnMpO1xuXG4gIC8vIENvbXBhdGlibGUgd2l0aCBUYW5TdGFjayBUYWJsZSdzIE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPlxuICBjb25zdCBzZXRQYWdpbmF0aW9uU3RhdGU6IE9uQ2hhbmdlRm48UGFnaW5hdGlvblN0YXRlPiA9IHVzZUNhbGxiYWNrKFxuICAgICh1cGRhdGVyT3JWYWx1ZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbigob2xkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyT3JWYWx1ZShvbGQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IG5ld1N0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgc2V0UGFnaW5hdGlvbih7XG4gICAgICAgICAgcGFnZUluZGV4OiB1cGRhdGVyT3JWYWx1ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgcGFnZVNpemU6IHVwZGF0ZXJPclZhbHVlLnBhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRQYWdpbmF0aW9uXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIHBhZ2luYXRpb25TdGF0ZTogeyBwYWdlSW5kZXgsIHBhZ2VTaXplIH0sXG4gICAgc2V0UGFnaW5hdGlvblN0YXRlLFxuICB9O1xufVxuIiwgImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWRhcHRlclF1ZXJ5UmVzdWx0IH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyB1c2VTdHVkaW8gfSBmcm9tIFwiLi4vc3R1ZGlvL2NvbnRleHRcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlRGVsZXRlIH0gZnJvbSBcIi4vdXNlLWFjdGl2ZS10YWJsZS1kZWxldGVcIjtcbmltcG9ydCB7IHVzZVBhZ2luYXRpb24gfSBmcm9tIFwiLi91c2UtcGFnaW5hdGlvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0aW9uKGRhdGE6IEFkYXB0ZXJRdWVyeVJlc3VsdCB8IHVuZGVmaW5lZCkge1xuICBjb25zdCB7IGFjdGl2ZVRhYmxlLCBvbkVycm9yIH0gPSB1c2VTdHVkaW8oKTtcbiAgY29uc3QgeyBwYWdpbmF0aW9uU3RhdGUgfSA9IHVzZVBhZ2luYXRpb24oKTtcbiAgY29uc3QgW3Jvd1NlbGVjdGlvblN0YXRlLCBzZXRSb3dTZWxlY3Rpb25TdGF0ZV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuICBjb25zdCBpc1NlbGVjdGluZyA9IE9iamVjdC5rZXlzKHJvd1NlbGVjdGlvblN0YXRlKS5sZW5ndGggIT09IDA7XG4gIGNvbnN0IHsgbXV0YXRlIH0gPSB1c2VBY3RpdmVUYWJsZURlbGV0ZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSksIFthY3RpdmVUYWJsZSwgcGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleF0pO1xuXG4gIGZ1bmN0aW9uIGRlbGV0ZVNlbGVjdGlvbigpIHtcbiAgICBjb25zdCByb3dzID0gZGF0YT8ucm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgcmV0dXJuIHJvd1NlbGVjdGlvblN0YXRlW3Jvdy5fX3BzX3Jvd2lkIGFzIHN0cmluZ107XG4gICAgfSk7XG5cbiAgICBtdXRhdGUocm93cyA/PyBbXSwge1xuICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25TdGF0ZSh7fSk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVsZXRlU2VsZWN0aW9uLFxuICAgIHNldFJvd1NlbGVjdGlvblN0YXRlLFxuICAgIHJvd1NlbGVjdGlvblN0YXRlLFxuICAgIGlzU2VsZWN0aW5nLFxuICB9O1xufVxuIiwgImltcG9ydCB7IFF1ZXJ5S2V5LCB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XG5cbmltcG9ydCB7IHVzZVN0dWRpbyB9IGZyb20gXCIuLi9zdHVkaW8vY29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGVEZWxldGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIGFkYXB0ZXIgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG4gIGNvbnN0IHsgc2NoZW1hID0gbnVsbCwgbmFtZTogdGFibGUgPSBudWxsIH0gPSBhY3RpdmVUYWJsZSA/PyB7fTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uS2V5OiBbXCJzY2hlbWFcIiwgc2NoZW1hLCBcInRhYmxlXCIsIHRhYmxlLCBcImRlbGV0ZVwiXSxcbiAgICBhc3luYyBtdXRhdGlvbkZuKHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pIHtcbiAgICAgIGNvbnN0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IGFkYXB0ZXIuZGVsZXRlKHsgcm93cywgdGFibGU6IGFjdGl2ZVRhYmxlISB9LCB7fSk7XG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIGFzeW5jIG9uU3VjY2VzcygpIHtcbiAgICAgIGF3YWl0IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHtcbiAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICBxdWVyeUtleTogW1wic2NoZW1hXCIsIHNjaGVtYSwgXCJ0YWJsZVwiLCB0YWJsZSwgXCJxdWVyeVwiXSBhcyBuZXZlciBhcyBRdWVyeUtleSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcmV0cnk6IGZhbHNlLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgU29ydE9yZGVySXRlbSB9IGZyb20gXCIuLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IHVzZVF1ZXJ5U3RhdGUgfSBmcm9tIFwiLi9udXFzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTb3J0aW5nKCkge1xuICAvLyBVc2UgbnVxcyB0byBtYW5hZ2Ugc29ydGluZyBzdGF0ZSBpbiBVUkxcbiAgY29uc3QgW3NvcnRQYXJhbSwgc2V0U29ydFBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGUoXCJzb3J0XCIsIHtcbiAgICBkZWZhdWx0VmFsdWU6IFwiXCIsXG4gIH0pO1xuXG4gIC8vIFBhcnNlIHNvcnRpbmcgZnJvbSBVUkwgcGFyYW1ldGVyXG4gIGNvbnN0IHBhcnNlU29ydGluZyA9IChzb3J0UGFyYW06IHN0cmluZyB8IG51bGwpOiBTb3J0T3JkZXJJdGVtW10gPT4ge1xuICAgIGlmICghc29ydFBhcmFtKSByZXR1cm4gW107XG5cbiAgICB0cnkge1xuICAgICAgLy8gRm9ybWF0OiBjb2x1bW46ZGlyZWN0aW9uLGNvbHVtbjpkaXJlY3Rpb25cbiAgICAgIHJldHVybiBzb3J0UGFyYW1cbiAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2NvbHVtbiwgZGlyZWN0aW9uXSA9IGl0ZW0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgIGlmICghY29sdW1uIHx8ICFkaXJlY3Rpb24gfHwgIVtcImFzY1wiLCBcImRlc2NcIl0uaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7IGNvbHVtbiwgZGlyZWN0aW9uOiBkaXJlY3Rpb24gYXMgXCJhc2NcIiB8IFwiZGVzY1wiIH07XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgU29ydE9yZGVySXRlbVtdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcGFyc2Ugc29ydGluZyBwYXJhbWV0ZXI6XCIsIGUpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvLyBDcmVhdGUgYSBzdGFibGUgc29ydGluZyBzdGF0ZSB0aGF0J3MgZGVyaXZlZCBmcm9tIFVSTCBwYXJhbWV0ZXJzXG4gIGNvbnN0IFtzb3J0aW5nU3RhdGUsIHNldFNvcnRpbmdTdGF0ZV0gPSB1c2VTdGF0ZSgoKSA9PiBwYXJzZVNvcnRpbmcoc29ydFBhcmFtKSk7XG5cbiAgLy8gS2VlcCBpbnRlcm5hbCBzdGF0ZSBzeW5jaHJvbml6ZWQgd2l0aCBVUkwgcGFyYW1ldGVyc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5ld1NvcnRpbmdTdGF0ZSA9IHBhcnNlU29ydGluZyhzb3J0UGFyYW0pO1xuICAgIHNldFNvcnRpbmdTdGF0ZShuZXdTb3J0aW5nU3RhdGUpO1xuICB9LCBbc29ydFBhcmFtXSk7XG5cbiAgLy8gVXBkYXRlIFVSTCB3aGVuIHNvcnRpbmcgY2hhbmdlcyBmcm9tIHRoZSBVSVxuICBjb25zdCBoYW5kbGVTb3J0aW5nQ2hhbmdlID0gKG5ld1N0YXRlOiBTb3J0T3JkZXJJdGVtW10gfCAoKG9sZDogU29ydE9yZGVySXRlbVtdKSA9PiBTb3J0T3JkZXJJdGVtW10pKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHR5cGVvZiBuZXdTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gbmV3U3RhdGUoc29ydGluZ1N0YXRlKSA6IG5ld1N0YXRlO1xuICAgIHNldFNvcnRpbmdTdGF0ZShyZXNvbHZlZFN0YXRlKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBzb3J0aW5nIHN0YXRlIHRvIFVSTCBwYXJhbWV0ZXJcbiAgICBjb25zdCBzb3J0U3RyaW5nID1cbiAgICAgIHJlc29sdmVkU3RhdGUubGVuZ3RoID4gMCA/IHJlc29sdmVkU3RhdGUubWFwKChpdGVtKSA9PiBgJHtpdGVtLmNvbHVtbn06JHtpdGVtLmRpcmVjdGlvbn1gKS5qb2luKFwiLFwiKSA6IG51bGw7XG5cbiAgICB2b2lkIHNldFNvcnRQYXJhbShzb3J0U3RyaW5nKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHNvcnRpbmdTdGF0ZSxcbiAgICBzZXRTb3J0aW5nU3RhdGU6IGhhbmRsZVNvcnRpbmdDaGFuZ2UsXG4gIH07XG59XG4iLCAiaW1wb3J0IHsgQ2VsbCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGlzT2JqZWN0VHlwZSB9IGZyb20gXCJyZW1lZGFcIjtcblxuaW1wb3J0IHR5cGUgeyBDb2x1bW4gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBCb29sZWFuQ2VsbCB9IGZyb20gXCIuL0Jvb2xlYW5DZWxsXCI7XG5pbXBvcnQgdHlwZSB7IENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcbmltcG9ydCB7IERhdGVDZWxsIH0gZnJvbSBcIi4vRGF0ZUNlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL0VtcHR5Q2VsbFwiO1xuaW1wb3J0IHsgRW51bUNlbGwgfSBmcm9tIFwiLi9FbnVtQ2VsbFwiO1xuaW1wb3J0IHsgSlNPTkNlbGwgfSBmcm9tIFwiLi9KU09OQ2VsbFwiO1xuaW1wb3J0IHsgTnVsbENlbGwgfSBmcm9tIFwiLi9OdWxsQ2VsbFwiO1xuaW1wb3J0IHsgTnVtZXJpY0NlbGwgfSBmcm9tIFwiLi9OdW1lcmljQ2VsbFwiO1xuaW1wb3J0IHsgUmF3Q2VsbCB9IGZyb20gXCIuL1Jhd0NlbGxcIjtcbmltcG9ydCB7IFRpbWVDZWxsIH0gZnJvbSBcIi4vVGltZUNlbGxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENlbGwoe1xuICBjZWxsLFxuICBjb2x1bW4sXG4gIHByb3BzLFxufToge1xuICBjZWxsOiBDZWxsPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB1bmtub3duPjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHByb3BzOiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59KSB7XG4gIGNvbnN0IHZhbHVlID0gY2VsbC5nZXRWYWx1ZSgpO1xuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIDxFbXB0eUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiA8TnVsbENlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZ3JvdXAsIG9wdGlvbnMsIGlzQXJyYXkgfSA9IGNvbHVtbi5kYXRhdHlwZTtcblxuICBpZiAoZ3JvdXAgPT09IFwianNvblwiIHx8IGlzQXJyYXkpIHtcbiAgICByZXR1cm4gPEpTT05DZWxsIGNvbnRhaW5lclByb3BzPXtwcm9wc30gdmFsdWU9e3ZhbHVlIGFzIG5ldmVyfSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gb3B0aW9ucz17b3B0aW9uc30gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgcmV0dXJuIDxCb29sZWFuQ2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZSBhcyBuZXZlcn0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZGF0ZXRpbWVcIikge1xuICAgIHJldHVybiA8RGF0ZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0NlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInJhd1wiKSB7XG4gICAgaWYgKGlzT2JqZWN0VHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiA8SlNPTkNlbGwgY29udGFpbmVyUHJvcHM9e3Byb3BzfSB2YWx1ZT17dmFsdWUgYXMgbmV2ZXJ9IC8+O1xuICAgIH1cblxuICAgIHJldHVybiA8UmF3Q2VsbCBjb250YWluZXJQcm9wcz17cHJvcHN9IHZhbHVlPXt2YWx1ZX0gLz47XG4gIH1cblxuICBncm91cCBzYXRpc2ZpZXMgbmV2ZXI7XG4gIHRocm93IG5ldyBFcnJvcihgRGF0YXR5cGUgZ3JvdXAgXCIke2dyb3VwIGFzIHN0cmluZ31cIiB3YXMgbm90IGhhbmRsZWQgaW4gJy9jZWxsL2dldC1jZWxsLnRzeCdgKTtcbn1cbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5DZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IEJvb2xlYW5DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEJvb2xlYW5DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJib29sZWFuXCI+e1N0cmluZyhCb29sZWFuKHZhbHVlKSl9PC9kaXY+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5Cb29sZWFuQ2VsbC5kaXNwbGF5TmFtZSA9IFwiQm9vbGVhbkNlbGxcIjtcblxuZXhwb3J0IHsgQm9vbGVhbkNlbGwgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgVGFibGUgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXJlbGF0aXZlIHBzLXctZnVsbCBwcy1vdmVyZmxvdy1hdXRvIHBzLWZsZXggcHMtaXRlbXMtc3RhcnQgcHMtaC1mdWxsXCI+XG4gICAgICA8dGFibGUgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy13LWZ1bGwgcHMtY2FwdGlvbi1ib3R0b20gcHMtdGV4dC1zbVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICAgPC9kaXY+XG4gICksXG4pO1xuVGFibGUuZGlzcGxheU5hbWUgPSBcIlRhYmxlXCI7XG5cbmNvbnN0IFRhYmxlSGVhZGVyID0gUmVhY3QuZm9yd2FyZFJlZjxIVE1MVGFibGVTZWN0aW9uRWxlbWVudCwgUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0aGVhZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlSGVhZGVyLmRpc3BsYXlOYW1lID0gXCJUYWJsZUhlYWRlclwiO1xuXG5jb25zdCBUYWJsZUJvZHkgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MVGFibGVTZWN0aW9uRWxlbWVudD4+KFxuICAoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICAgIDx0Ym9keSByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOnBzLWJvcmRlci0wXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUJvZHkuZGlzcGxheU5hbWUgPSBcIlRhYmxlQm9keVwiO1xuXG5jb25zdCBUYWJsZUZvb3RlciA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRmb290XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1ib3JkZXItdCBwcy1iZy1tdXRlZC81MCBwcy1mb250LW1lZGl1bSBbJj50cl06bGFzdDpwcy1ib3JkZXItYi0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKSxcbik7XG5UYWJsZUZvb3Rlci5kaXNwbGF5TmFtZSA9IFwiVGFibGVGb290ZXJcIjtcblxuY29uc3QgVGFibGVSb3cgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZVJvd0VsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgICA8dHJcbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1ib3JkZXItYiBwcy10cmFuc2l0aW9uLWNvbG9ycyBob3Zlcjpwcy1iZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06cHMtYmctbXV0ZWRcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlUm93LmRpc3BsYXlOYW1lID0gXCJUYWJsZVJvd1wiO1xuXG5jb25zdCBUYWJsZUhlYWQgPSBSZWFjdC5mb3J3YXJkUmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBSZWFjdC5UaEhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPHRoXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1oLTEwIHBzLXB4LTIgcHMtdGV4dC1sZWZ0IHBzLWFsaWduLW1pZGRsZSBwcy1mb250LW1lZGl1bSBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApLFxuKTtcblRhYmxlSGVhZC5kaXNwbGF5TmFtZSA9IFwiVGFibGVIZWFkXCI7XG5cbmNvbnN0IFRhYmxlQ2VsbCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQsIFJlYWN0LlRkSFRNTEF0dHJpYnV0ZXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+PihcbiAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IDx0ZCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbihcInBzLWFsaWduLW1pZGRsZVwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+LFxuKTtcblRhYmxlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGFibGVDZWxsXCI7XG5cbmNvbnN0IFRhYmxlQ2FwdGlvbiA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQsIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pj4oXG4gICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gICAgPGNhcHRpb24gcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy1tdC00IHBzLXRleHQtc20gcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz5cbiAgKSxcbik7XG5UYWJsZUNhcHRpb24uZGlzcGxheU5hbWUgPSBcIlRhYmxlQ2FwdGlvblwiO1xuXG5leHBvcnQgeyBUYWJsZSwgVGFibGVIZWFkZXIsIFRhYmxlQm9keSwgVGFibGVGb290ZXIsIFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCwgVGFibGVDYXB0aW9uIH07XG4iLCAiaW1wb3J0IHsgQ29weSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50LCB0eXBlIFByb3BzV2l0aENoaWxkcmVuLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb250ZXh0TWVudSwgQ29udGV4dE1lbnVDb250ZW50LCBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51VHJpZ2dlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2NvbnRleHQtbWVudVwiO1xuXG5leHBvcnQgdHlwZSBEYXRhR3JpZENlbGxDb250ZXh0TWVudVByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48b2JqZWN0PjtcblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBpbnZlcnNpZmllZCAtIHRvIG1ha2UgaXQgZXh0ZW5zaWJsZSwgYW5kIGFkYXB0YWJsZSB0byBkaWZmZXJlbnQgc2l0dWF0aW9ucy5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZENlbGxDb250ZXh0TWVudShwcm9wczogRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVQcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0TWVudT5cbiAgICAgIDxDb250ZXh0TWVudVRyaWdnZXIgY2xhc3NOYW1lPVwicHMtYmxvY2sgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtdGV4dC14cyBwcy1mb250LW1vbm8gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXRleHQtZWxsaXBzaXNcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250ZXh0TWVudVRyaWdnZXI+XG4gICAgICA8Q29udGV4dE1lbnVDb250ZW50PlxuICAgICAgICA8Q29udGV4dE1lbnVJdGVtXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGV4dHJhY3RUZXh0Q29udGVudChjaGlsZHJlbik7XG4gICAgICAgICAgICB2b2lkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbnRlbnQpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNvcHkgdG8gY2xpcGJvYXJkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDb3B5IHNpemU9ezEyfSAvPlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9Db250ZXh0TWVudUl0ZW0+XG4gICAgICA8L0NvbnRleHRNZW51Q29udGVudD5cbiAgICA8L0NvbnRleHRNZW51PlxuICApO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VGV4dENvbnRlbnQobm9kZTogUmVhY3ROb2RlKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBub2RlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBub2RlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBub2RlID09PSBcImJvb2xlYW5cIikge1xuICAgIHJldHVybiBTdHJpbmcobm9kZSk7XG4gIH1cblxuICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xuICAgIGNvbnN0IHByb3BzID0gbm9kZS5wcm9wcyBhcyB7IHRleHQ/OiBzdHJpbmc7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICAvLyBIYW5kbGUgUmV2ZWFsVGV4dCBjb21wb25lbnQgc3BlY2lmaWNhbGx5XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiUmV2ZWFsVGV4dFwiKSB7XG4gICAgICByZXR1cm4gcHJvcHMudGV4dCB8fCBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBOdWxsVmFsdWUgY29tcG9uZW50XG4gICAgaWYgKG5vZGUudHlwZSAmJiB0eXBlb2Ygbm9kZS50eXBlID09PSBcImZ1bmN0aW9uXCIgJiYgbm9kZS50eXBlLm5hbWUgPT09IFwiTnVsbFZhbHVlXCIpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9XG5cbiAgICAvLyBSZWN1cnNpdmVseSBleHRyYWN0IHRleHQgZnJvbSBjaGlsZHJlblxuICAgIGlmIChwcm9wcy5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGV4dHJhY3RUZXh0Q29udGVudChwcm9wcy5jaGlsZHJlbiBhcyBSZWFjdE5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5tYXAoZXh0cmFjdFRleHRDb250ZW50KS5qb2luKFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG4iLCAiaW1wb3J0ICogYXMgQ29udGV4dE1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0LW1lbnVcIjtcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENpcmNsZSB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBDb250ZXh0TWVudSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IENvbnRleHRNZW51VHJpZ2dlciA9IENvbnRleHRNZW51UHJpbWl0aXZlLlRyaWdnZXI7XG5cbmNvbnN0IENvbnRleHRNZW51R3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Hcm91cDtcblxuY29uc3QgQ29udGV4dE1lbnVQb3J0YWwgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IENvbnRleHRNZW51U3ViID0gQ29udGV4dE1lbnVQcmltaXRpdmUuU3ViO1xuXG5jb25zdCBDb250ZXh0TWVudVJhZGlvR3JvdXAgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YlRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgY2hpbGRyZW4sIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgIGluc2V0ICYmIFwicHMtcGwtOFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAge2NoaWxkcmVufVxuICAgIDxDaGV2cm9uUmlnaHQgY2xhc3NOYW1lPVwicHMtbWwtYXV0byBwcy1oLTQgcHMtdy00XCIgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Db250ZXh0TWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVN1YkNvbnRlbnQuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBDb250ZXh0TWVudUNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuUG9ydGFsPlxuICAgIDxDb250ZXh0TWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1jb250ZXh0LW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtcC0xIHBzLXRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIHBzLXNoYWRvdy1tZCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWNvbnRleHQtbWVudS1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4pKTtcbkNvbnRleHRNZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IENvbnRleHRNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW0+ICYge1xuICAgIGluc2V0PzogYm9vbGVhbjtcbiAgfVxuPigoeyBjbGFzc05hbWUsIGluc2V0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuQ29udGV4dE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gQ29udGV4dE1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtYWJzb2x1dGUgcHMtbGVmdC0yIHBzLWZsZXggcHMtaC0zLjUgcHMtdy0zLjUgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8Q29udGV4dE1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPlxuKSk7XG5Db250ZXh0TWVudUNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVSYWRpb0l0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxDb250ZXh0TWVudVByaW1pdGl2ZS5SYWRpb0l0ZW1cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgXCJwcy1yZWxhdGl2ZSBwcy1mbGV4IHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC04IHBzLXByLTIgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPENvbnRleHRNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+XG4gICAgICAgIDxDaXJjbGUgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1maWxsLWN1cnJlbnRcIiAvPlxuICAgICAgPC9Db250ZXh0TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvQ29udGV4dE1lbnVQcmltaXRpdmUuUmFkaW9JdGVtPlxuKSk7XG5Db250ZXh0TWVudVJhZGlvSXRlbS5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q29udGV4dE1lbnVQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkIHBzLXRleHQtZm9yZWdyb3VuZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkNvbnRleHRNZW51TGFiZWwuZGlzcGxheU5hbWUgPSBDb250ZXh0TWVudVByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDb250ZXh0TWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctYm9yZGVyXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5Db250ZXh0TWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IENvbnRleHRNZW51UHJpbWl0aXZlLlNlcGFyYXRvci5kaXNwbGF5TmFtZTtcblxuY29uc3QgQ29udGV4dE1lbnVTaG9ydGN1dCA9ICh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxzcGFuIGNsYXNzTmFtZT17Y24oXCJwcy1tbC1hdXRvIHBzLXRleHQteHMgcHMtdHJhY2tpbmctd2lkZXN0IHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9IC8+XG4gICk7XG59O1xuQ29udGV4dE1lbnVTaG9ydGN1dC5kaXNwbGF5TmFtZSA9IFwiQ29udGV4dE1lbnVTaG9ydGN1dFwiO1xuXG5leHBvcnQge1xuICBDb250ZXh0TWVudSxcbiAgQ29udGV4dE1lbnVUcmlnZ2VyLFxuICBDb250ZXh0TWVudUNvbnRlbnQsXG4gIENvbnRleHRNZW51SXRlbSxcbiAgQ29udGV4dE1lbnVDaGVja2JveEl0ZW0sXG4gIENvbnRleHRNZW51UmFkaW9JdGVtLFxuICBDb250ZXh0TWVudUxhYmVsLFxuICBDb250ZXh0TWVudVNlcGFyYXRvcixcbiAgQ29udGV4dE1lbnVTaG9ydGN1dCxcbiAgQ29udGV4dE1lbnVHcm91cCxcbiAgQ29udGV4dE1lbnVQb3J0YWwsXG4gIENvbnRleHRNZW51U3ViLFxuICBDb250ZXh0TWVudVN1YkNvbnRlbnQsXG4gIENvbnRleHRNZW51U3ViVHJpZ2dlcixcbiAgQ29udGV4dE1lbnVSYWRpb0dyb3VwLFxufTtcbiIsICJpbXBvcnQgeyB0eXBlIENTU1Byb3BlcnRpZXMsIERldGFpbGVkSFRNTFByb3BzLCB0eXBlIFByb3BzV2l0aENoaWxkcmVuIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3RhYmxlXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcbmltcG9ydCB7IERhdGFHcmlkQ2VsbENvbnRleHRNZW51IH0gZnJvbSBcIi4uL2dyaWQvRGF0YUdyaWRDZWxsQ29udGV4dE1lbnVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDZWxsUHJvcHMgZXh0ZW5kcyBQcm9wc1dpdGhDaGlsZHJlbiwgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8dW5rbm93bj4sIHVua25vd24+IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDZWxsKHByb3BzOiBDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8VGFibGVDZWxsXG4gICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXAtMCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgIC8vIFRPRE86IEtlZXBpbmcgdGhpcyB0ZW1wb3JhcmlseTsgbWlnaHQgbmVlZCBpdCBsYXRlciBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZXNcbiAgICAgICAgLy8gXCJkYXRhLVtmb2N1cz10cnVlXTpwcy1yaW5nLTIgZGF0YS1bZm9jdXM9dHJ1ZV06cHMtcmluZy1pbmRpZ28tNDAwIGRhdGEtW2ZvY3VzPXRydWVdOnBzLXJpbmctaW5zZXRcIixcbiAgICAgICAgXCJwcy1jdXJzb3ItcG9pbnRlclwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgPlxuICAgICAgPERhdGFHcmlkQ2VsbENvbnRleHRNZW51PntjaGlsZHJlbn08L0RhdGFHcmlkQ2VsbENvbnRleHRNZW51PlxuICAgIDwvVGFibGVDZWxsPlxuICApO1xufVxuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgRGF0ZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogRGF0ZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5EYXRlQ2VsbC5kaXNwbGF5TmFtZSA9IFwiRGF0ZUNlbGxcIjtcblxuZXhwb3J0IHsgRGF0ZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5Q2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG59XG5cbmNvbnN0IEVtcHR5Q2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBFbXB0eUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfSAvPjtcbn0pO1xuRW1wdHlDZWxsLmRpc3BsYXlOYW1lID0gXCJFbXB0eUNlbGxcIjtcblxuZXhwb3J0IHsgRW1wdHlDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG59XG5cbmNvbnN0IEVudW1DZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IEVudW1DZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgb3B0aW9ucywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIHtTdHJpbmcodmFsdWUpfVxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuRW51bUNlbGwuZGlzcGxheU5hbWUgPSBcIkVudW1DZWxsXCI7XG5cbmV4cG9ydCB7IEVudW1DZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKU09OQ2VsbFByb3BzIHtcbiAgY29udGFpbmVyUHJvcHM/OiBPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj47XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVua25vd25bXTtcbn1cblxuY29uc3QgSlNPTkNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogSlNPTkNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcbkpTT05DZWxsLmRpc3BsYXlOYW1lID0gXCJKU09OQ2VsbFwiO1xuXG5leHBvcnQgeyBKU09OQ2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVsbENlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xufVxuXG5jb25zdCBOdWxsQ2VsbCA9IGZvcndhcmRSZWYoKHByb3BzOiBOdWxsQ2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxjb2RlIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MFwiPk5VTEw8L2NvZGU+XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5OdWxsQ2VsbC5kaXNwbGF5TmFtZSA9IFwiTnVsbENlbGxcIjtcblxuZXhwb3J0IHsgTnVsbENlbGwgfTtcbiIsICJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENlbGwsIHR5cGUgQ2VsbFByb3BzIH0gZnJvbSBcIi4vQ2VsbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWVyaWNDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE51bWVyaWNDZWxsID0gZm9yd2FyZFJlZigocHJvcHM6IE51bWVyaWNDZWxsUHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IGNvbnRhaW5lclByb3BzLCB2YWx1ZSwgLi4uZm9yd2FyZGVkUHJvcHMgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPENlbGwgey4uLmZvcndhcmRlZFByb3BzfSB7Li4uY29udGFpbmVyUHJvcHN9IHJlZj17cmVmfT5cbiAgICAgIDxkaXYgZGF0YS1jZWxsLXR5cGU9XCJudW1lcmljXCI+e3ZhbHVlID09PSBudWxsID8gXCJOVUxMXCIgOiBTdHJpbmcodmFsdWUpfTwvZGl2PlxuICAgIDwvQ2VsbD5cbiAgKTtcbn0pO1xuTnVtZXJpY0NlbGwuZGlzcGxheU5hbWUgPSBcIk51bWVyaWNDZWxsXCI7XG5cbmV4cG9ydCB7IE51bWVyaWNDZWxsIH07XG4iLCAiaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDZWxsLCB0eXBlIENlbGxQcm9wcyB9IGZyb20gXCIuL0NlbGxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdDZWxsUHJvcHMge1xuICBjb250YWluZXJQcm9wcz86IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IFJhd0NlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogUmF3Q2VsbFByb3BzLCByZWYpID0+IHtcbiAgY29uc3QgeyBjb250YWluZXJQcm9wcywgdmFsdWUsIC4uLmZvcndhcmRlZFByb3BzIH0gPSBwcm9wcztcblxuICByZXR1cm4gKFxuICAgIDxDZWxsIHsuLi5mb3J3YXJkZWRQcm9wc30gey4uLmNvbnRhaW5lclByb3BzfSByZWY9e3JlZn0+XG4gICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICA8L0NlbGw+XG4gICk7XG59KTtcblJhd0NlbGwuZGlzcGxheU5hbWUgPSBcIlJhd0NlbGxcIjtcblxuZXhwb3J0IHsgUmF3Q2VsbCB9O1xuIiwgImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2VsbCwgdHlwZSBDZWxsUHJvcHMgfSBmcm9tIFwiLi9DZWxsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUNlbGxQcm9wcyB7XG4gIGNvbnRhaW5lclByb3BzPzogT21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+O1xuICB2YWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcjtcbn1cblxuY29uc3QgVGltZUNlbGwgPSBmb3J3YXJkUmVmKChwcm9wczogVGltZUNlbGxQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyUHJvcHMsIHZhbHVlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8Q2VsbCB7Li4uZm9yd2FyZGVkUHJvcHN9IHsuLi5jb250YWluZXJQcm9wc30gcmVmPXtyZWZ9PlxuICAgICAge1N0cmluZyh2YWx1ZSl9XG4gICAgPC9DZWxsPlxuICApO1xufSk7XG5UaW1lQ2VsbC5kaXNwbGF5TmFtZSA9IFwiVGltZUNlbGxcIjtcblxuZXhwb3J0IHsgVGltZUNlbGwgfTtcbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tIFwiQC91aS9jb21wb25lbnRzL3VpL2NoZWNrYm94XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SGVhZGVyQ2VsbFByb3BzIHtcbiAgdGFibGU6IFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICByZWFkb25seTogYm9vbGVhbjtcbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xufVxuXG5jb25zdCBTZWxlY3RIZWFkZXJDZWxsID0gZm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudCwgU2VsZWN0SGVhZGVyQ2VsbFByb3BzPigocHJvcHMsIHJlZikgPT4ge1xuICBjb25zdCB7IHRhYmxlLCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfSB7Li4ucmVzdH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXctZnVsbFwiPlxuICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICBjaGVja2VkPXt0YWJsZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpfVxuICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17KHZhbHVlKSA9PiB0YWJsZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQoISF2YWx1ZSl9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuU2VsZWN0SGVhZGVyQ2VsbC5kaXNwbGF5TmFtZSA9IFwiU2VsZWN0SGVhZGVyQ2VsbFwiO1xuXG5leHBvcnQgeyBTZWxlY3RIZWFkZXJDZWxsIH07XG4iLCAiaW1wb3J0ICogYXMgQ2hlY2tib3hQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jaGVja2JveFwiO1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBDaGVja2JveFByaW1pdGl2ZS5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8Q2hlY2tib3hQcmltaXRpdmUuUm9vdFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXBlZXIgcHMtaC00IHBzLXctNCBwcy1zaHJpbmstMCBwcy1yb3VuZGVkLXNtIHBzLWJvcmRlciBwcy1ib3JkZXItcHJpbWFyeSBwcy1zaGFkb3cgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtYmctcHJpbWFyeSBkYXRhLVtzdGF0ZT1jaGVja2VkXTpwcy10ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICA+XG4gICAgPENoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvciBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtdGV4dC1jdXJyZW50XCIpfT5cbiAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy00XCIgLz5cbiAgICA8L0NoZWNrYm94UHJpbWl0aXZlLkluZGljYXRvcj5cbiAgPC9DaGVja2JveFByaW1pdGl2ZS5Sb290PlxuKSk7XG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENoZWNrYm94UHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IENoZWNrYm94IH07XG4iLCAiaW1wb3J0IHsgUm93IH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gXCJAL3VpL2NvbXBvbmVudHMvdWkvY2hlY2tib3hcIjtcblxuaW1wb3J0IHsgU2VsZWN0Q2VsbCB9IGZyb20gXCIuL1NlbGVjdENlbGxcIjtcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Um93Q2VsbFByb3BzIHtcbiAgcm93OiBSb3c8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG59XG5cbmNvbnN0IFNlbGVjdFJvd0NlbGwgPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBTZWxlY3RSb3dDZWxsUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgcm93LCByZWFkb25seSwgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0Q2VsbCByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXtzdHlsZX0gey4uLnJlc3R9PlxuICAgICAgPENoZWNrYm94XG4gICAgICAgIGNoZWNrZWQ9e3Jvdy5nZXRJc1NlbGVjdGVkKCl9XG4gICAgICAgIGRpc2FibGVkPXshcm93LmdldENhblNlbGVjdCgpIHx8IHJlYWRvbmx5fVxuICAgICAgICBvbkNoZWNrZWRDaGFuZ2U9e3Jvdy5nZXRUb2dnbGVTZWxlY3RlZEhhbmRsZXIoKX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3RDZWxsPlxuICApO1xufSk7XG5cblNlbGVjdFJvd0NlbGwuZGlzcGxheU5hbWUgPSBcIlNlbGVjdFJvd0NlbGxcIjtcblxuZXhwb3J0IHsgU2VsZWN0Um93Q2VsbCB9O1xuIiwgImltcG9ydCB7IHR5cGUgQ1NTUHJvcGVydGllcywgRGV0YWlsZWRIVE1MUHJvcHMsIHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgVGFibGVDZWxsLCBUYWJsZUhlYWQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS90YWJsZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Q2VsbFByb3BzIGV4dGVuZHMgUHJvcHNXaXRoQ2hpbGRyZW4sIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPHVua25vd24+LCB1bmtub3duPiB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpc0hlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3RDZWxsKHByb3BzOiBTZWxlY3RDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCByZWYsIHN0eWxlLCBpc0hlYWRlciA9IGZhbHNlLCAuLi5mb3J3YXJkZWRQcm9wcyB9ID0gcHJvcHM7XG5cbiAgY29uc3Qgc2VsZWN0Q2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcC0wIHBzLWJvcmRlci1yIHBzLWJvcmRlci1iIHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtdy1mdWxsIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV0gcHMtbGVhZGluZy1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV1cIixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNIZWFkZXIgPyAoXG4gICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICB7Li4uZm9yd2FyZGVkUHJvcHN9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbihzZWxlY3RDbGFzc2VzLCBcInBzLWgtMTAgcHMtYmctdGFibGUtaGVhZCBwcy16LTMwIHBzLXN0aWNreSBwcy10b3AtMCBwcy1sZWZ0LTBcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICByZWY9e3JlZiBhcyBuZXZlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9UYWJsZUhlYWQ+XG4gICAgICApIDogKFxuICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgey4uLmZvcndhcmRlZFByb3BzfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oc2VsZWN0Q2xhc3NlcywgXCJwcy16LTEwIHBzLWgtWzM5cHhdXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgcmVmPXtyZWYgYXMgbmV2ZXJ9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0ICogYXMgUG9wb3ZlclByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5pbnRlcmZhY2UgUG9wb3ZlckNlbGxDb250ZXh0VmFsdWUge1xuICBvcGVuOiBib29sZWFuO1xuICBzZXRPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgUG9wb3ZlckNlbGxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxQb3BvdmVyQ2VsbENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBQb3BvdmVyQ2VsbCA9ICh7IGNoaWxkcmVuLCAuLi5wcm9wcyB9OiBQb3BvdmVyUHJpbWl0aXZlLlBvcG92ZXJQcm9wcykgPT4ge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW4sIHNldE9wZW4gfX0+XG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5Sb290IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0gey4uLnByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Qb3BvdmVyUHJpbWl0aXZlLlJvb3Q+XG4gICAgPC9Qb3BvdmVyQ2VsbENvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59O1xuUG9wb3ZlckNlbGwuZGlzcGxheU5hbWUgPSBcIlBvcG92ZXJDZWxsXCI7XG5cbmludGVyZmFjZSBQb3BvdmVyQ2VsbFRyaWdnZXJQcm9wcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyPiB7XG4gIG9uRG91YmxlQ2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBQb3BvdmVyQ2VsbFRyaWdnZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj4sIFBvcG92ZXJDZWxsVHJpZ2dlclByb3BzPihcbiAgKHsgY2hpbGRyZW4sIG9uRG91YmxlQ2xpY2ssIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgLy8gY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcbiAgICAvLyBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSBSZWFjdC51c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuXG4gICAgLy8gVE9ETzogS2VlcGluZyB0aGlzIHRlbXBvcmFyaWx5OyBtaWdodCBuZWVkIGl0IGxhdGVyIGRlcGVuZGluZyBvbiBpbnB1dCB0eXBlc1xuICAgIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBoYW5kbGVEb2N1bWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgLy8gICAgIGlmICh0cmlnZ2VyUmVmLmN1cnJlbnQgJiYgIXRyaWdnZXJSZWYuY3VycmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgLy8gICAgICAgLy8gY29uc29sZS5sb2coXCJPdXRzaWRlIGNsaWNrIC0gcmVtb3ZpbmcgZm9jdXNcIik7XG4gICAgLy8gICAgICAgc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfTtcblxuICAgIC8vICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZURvY3VtZW50Q2xpY2spO1xuICAgIC8vICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVEb2N1bWVudENsaWNrKTtcbiAgICAvLyB9LCBbXSk7XG5cbiAgICAvLyBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgLy8gICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgLy8gICBzZXRJc0ZvY3VzZWQodHJ1ZSk7XG4gICAgLy8gICBjb250ZXh0Py5zZXRPcGVuKHRydWUpO1xuXG4gICAgLy8gICBpZiAoZS5kZXRhaWwgPT09IDIgJiYgb25Eb3VibGVDbGljaykge1xuICAgIC8vICAgICBvbkRvdWJsZUNsaWNrKCk7XG4gICAgLy8gICB9XG4gICAgLy8gfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UG9wb3ZlclByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgICAgIHJlZj17KG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYobm9kZSk7XG4gICAgICAgICAgZWxzZSBpZiAocmVmKSByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZFxuICAgICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH19XG4gICAgICAgIC8vIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAvLyBkYXRhLWZvY3VzPXtpc0ZvY3VzZWQudG9TdHJpbmcoKX1cbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBoLWZ1bGwgY3Vyc29yLXBvaW50ZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1BvcG92ZXJQcmltaXRpdmUuVHJpZ2dlcj5cbiAgICApO1xuICB9LFxuKTtcblBvcG92ZXJDZWxsVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiUG9wb3ZlckNlbGxUcmlnZ2VyXCI7XG5cbmNvbnN0IFBvcG92ZXJDZWxsQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcG92ZXJQcmltaXRpdmUuQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIGFsaWduID0gXCJjZW50ZXJcIiwgc2lkZU9mZnNldCA9IDQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8UG9wb3ZlclByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFBvcG92ZXJQcmltaXRpdmUuQ29udGVudFxuICAgICAgcmVmPXtyZWZ9XG4gICAgICBhbGlnbj17YWxpZ259XG4gICAgICBzaWRlT2Zmc2V0PXtzaWRlT2Zmc2V0fVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yIHBzLXotNTAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYmctcG9wb3ZlciBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWQgcHMtb3V0bGluZS1ub25lIGRhdGEtW3N0YXRlPW9wZW5dOmFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOmZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06em9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMlwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgLy8gd2UgYXJlIGhhbmRsaW5nIHRoaXMgb3Vyc2VsdmVzLCBkbyBub3QgbGV0IHJhZGl4IHRha2Ugb3ZlclxuICAgICAgb25Fc2NhcGVLZXlEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Qb3BvdmVyUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuUG9wb3ZlckNlbGxDb250ZW50LmRpc3BsYXlOYW1lID0gUG9wb3ZlclByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wb3ZlckFjdGlvbnMoYWN0aW9uczoge1xuICBvblNhdmU/OiAoKSA9PiBib29sZWFuIHwgdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoUG9wb3ZlckNlbGxDb250ZXh0KTtcblxuICBjb25zdCBoYW5kbGVTYXZlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhY3Rpb25zLnJlYWRvbmx5KSB7XG4gICAgICBjb250ZXh0Py5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKGFjdGlvbnMub25TYXZlKSB7XG4gICAgICBhY3Rpb25zLm9uU2F2ZSgpO1xuICAgIH1cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5zZXRPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0sIFthY3Rpb25zLm9uU2F2ZSwgY29udGV4dF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWN0aW9ucy5yZWFkb25seSkge1xuICAgICAgY29udGV4dD8uc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICAgIGlmIChhY3Rpb25zLm9uQ2FuY2VsKSB7XG4gICAgICBhY3Rpb25zLm9uQ2FuY2VsKCk7XG4gICAgfVxuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb250ZXh0LnNldE9wZW4oZmFsc2UpO1xuICAgIH1cbiAgfSwgW2FjdGlvbnMub25DYW5jZWwsIGNvbnRleHRdKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIC8vIGNoZWNrIGlmIGVudGVyIGlzIHByZXNzZWQgYW5kIHByZXNzZWQgd2l0aG91dCBzaGlmdFxuICAgICAgaWYgKChldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fCBldmVudC5rZXkgPT09IFwiUmV0dXJuXCIpICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICBoYW5kbGVTYXZlKCk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XG4gIH0sIFtoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWxdKTtcblxuICByZXR1cm4geyBoYW5kbGVTYXZlLCBoYW5kbGVDYW5jZWwgfTtcbn1cblxuZXhwb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsVHJpZ2dlciwgUG9wb3ZlckNlbGxDb250ZW50IH07XG4iLCAiaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgUG9wb3ZlckNlbGwsIFBvcG92ZXJDZWxsQ29udGVudCwgUG9wb3ZlckNlbGxUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi8uLi9saWIvdXRpbHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZWFibGVDZWxsUHJvcHMge1xuICBjZWxsQ29tcG9uZW50OiBSZWFjdE5vZGU7XG4gIGlucHV0Q29tcG9uZW50OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXcml0ZWFibGVDZWxsKHByb3BzOiBXcml0ZWFibGVDZWxsUHJvcHMpIHtcbiAgY29uc3QgeyBjZWxsQ29tcG9uZW50LCBpbnB1dENvbXBvbmVudCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8UG9wb3ZlckNlbGw+XG4gICAgICA8UG9wb3ZlckNlbGxUcmlnZ2VyIGFzQ2hpbGQ+e2NlbGxDb21wb25lbnR9PC9Qb3BvdmVyQ2VsbFRyaWdnZXI+XG4gICAgICA8UG9wb3ZlckNlbGxDb250ZW50XG4gICAgICAgIGFsaWduPVwic3RhcnRcIlxuICAgICAgICBhbGlnbk9mZnNldD17LTF9XG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJwcy1yb3VuZGVkLW5vbmUgcHMtYmctbXV0ZWRcIixcbiAgICAgICAgICBcInBzLXAtMCBwcy16LTMwIHBzLWdhcC0wIHBzLWJvcmRlci1wcmltYXJ5XCIsXG4gICAgICAgICAgXCJwcy13LVtjYWxjKHZhcigtLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aClfK18xcHgpXSBwcy1tYXgtdy03MiBwcy1taW4tdy1bMjAwcHhdXCIsXG4gICAgICAgICl9XG4gICAgICAgIHNpZGVPZmZzZXQ9ey00MH1cbiAgICAgID5cbiAgICAgICAge2lucHV0Q29tcG9uZW50fVxuICAgICAgPC9Qb3BvdmVyQ2VsbENvbnRlbnQ+XG4gICAgPC9Qb3BvdmVyQ2VsbD5cbiAgKTtcbn1cbiIsICJpbXBvcnQge1xuICBjbG9zZXN0Q2VudGVyLFxuICBEbmRDb250ZXh0LFxuICB0eXBlIERyYWdFbmRFdmVudCxcbiAgRHJhZ092ZXJsYXksXG4gIHR5cGUgRHJhZ1N0YXJ0RXZlbnQsXG4gIEtleWJvYXJkU2Vuc29yLFxuICBQb2ludGVyU2Vuc29yLFxuICB0eXBlIFVuaXF1ZUlkZW50aWZpZXIsXG4gIHVzZVNlbnNvcixcbiAgdXNlU2Vuc29ycyxcbn0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7XG4gIGFycmF5TW92ZSxcbiAgU29ydGFibGVDb250ZXh0LFxuICBzb3J0YWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMsXG4gIHVzZVNvcnRhYmxlLFxuICB2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3ksXG59IGZyb20gXCJAZG5kLWtpdC9zb3J0YWJsZVwiO1xuaW1wb3J0IHsgQ1NTIH0gZnJvbSBcIkBkbmQta2l0L3V0aWxpdGllc1wiO1xuaW1wb3J0IHsgQ2hldnJvbkRvd24sIENoZXZyb25SaWdodCwgR3JpcFZlcnRpY2FsLCBIZWxwQ2lyY2xlLCBYIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiO1xuaW1wb3J0IHsgbW90aW9uIH0gZnJvbSBcIm1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgQW5pbWF0ZU51bWJlciB9IGZyb20gXCJtb3Rpb24tcGx1cy9yZWFjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHNob3J0IGZyb20gXCJzaG9ydC11dWlkXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uRmlsdGVyLCBGaWx0ZXJHcm91cCwgRmlsdGVyT3BlcmF0b3IsIFRhYmxlIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBjb2VyY2VUb1N0cmluZywgY29lcmNlVG9WYWx1ZSB9IGZyb20gXCIuLi8uLi9saWIvY29udmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2JhZGdlXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudSwgRHJvcGRvd25NZW51Q29udGVudCwgRHJvcGRvd25NZW51VHJpZ2dlciB9IGZyb20gXCIuLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0Q29udGVudCwgU2VsZWN0SXRlbSwgU2VsZWN0VHJpZ2dlciwgU2VsZWN0VmFsdWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy91aS9zZWxlY3RcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL2xpYi91dGlsc1wiO1xuXG5jb25zdCBMZWFkaW5nT3BlcmF0b3JTZWxlY3QgPSAoe1xuICB2YWx1ZSxcbiAgb25WYWx1ZUNoYW5nZSxcbiAgZGlzYWJsZWQsXG4gIHRyaWdnZXJDbGFzc05hbWUgPSBcInBzLXctMjAgcHMtdGV4dC14cyBwcy1oLThcIixcbn06IHtcbiAgdmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvblZhbHVlQ2hhbmdlOiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgdHJpZ2dlckNsYXNzTmFtZT86IHN0cmluZztcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0IHZhbHVlPXt2YWx1ZX0gb25WYWx1ZUNoYW5nZT17b25WYWx1ZUNoYW5nZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT17dHJpZ2dlckNsYXNzTmFtZX0+XG4gICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIkxvZ2ljXCIgLz5cbiAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImFuZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZm9udC1zZW1pYm9sZFwiPkFORDwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwib3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj5PUjwvZGl2PlxuICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgPC9TZWxlY3Q+XG4gICk7XG59O1xuXG4vLyBSZW5kZXJzIHRoZSBwcmV2aWV3IG9mIHRoZSBpdGVtIGJlaW5nIGRyYWdnZWQgaW4gdGhlIERyYWdPdmVybGF5LlxuY29uc3QgRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgPSAoe1xuICBhY3RpdmVJZCxcbiAgaXRlbXMsXG4gIHRhYmxlLFxufToge1xuICBhY3RpdmVJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgdGFibGU6IFRhYmxlO1xufSkgPT4ge1xuICBjb25zdCBhY3RpdmVJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuICBpZiAoIWFjdGl2ZUl0ZW0pIHJldHVybiBudWxsO1xuXG4gIGxldCBsZWFkaW5nT3BlcmF0b3JWYWx1ZTogXCJhbmRcIiB8IFwib3JcIiA9IFwiYW5kXCI7IC8vIERlZmF1bHRcbiAgbGV0IHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gZmFsc2U7XG4gIGNvbnN0IGFjdGl2ZUl0ZW1JbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gYWN0aXZlSWQpO1xuXG4gIGlmIChhY3RpdmVJdGVtSW5kZXggPiAwKSB7XG4gICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbXNbYWN0aXZlSXRlbUluZGV4IC0gMV07XG4gICAgaWYgKHByZXZpb3VzSXRlbSkge1xuICAgICAgLy8gJ2FmdGVyJyBmcm9tIHRoZSBwcmV2aW91cyBpdGVtIGRldGVybWluZXMgdGhlIG9wZXJhdG9yIGxlYWRpbmcgaW50byB0aGUgY3VycmVudCBpdGVtXG4gICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSA9IHByZXZpb3VzSXRlbS5hZnRlcjtcbiAgICAgIHNob3dMZWFkaW5nT3BGb3JPdmVybGF5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoYWN0aXZlSXRlbS5raW5kID09PSBcIkNvbHVtbkZpbHRlclwiKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgZmlsdGVyPXthY3RpdmVJdGVtfVxuICAgICAgICBvblVwZGF0ZT17KCkgPT4ge319IC8vIE92ZXJsYXkgaXMgbm9uLWludGVyYWN0aXZlIGZvciB1cGRhdGVzXG4gICAgICAgIG9uRGVsZXRlPXsoKSA9PiB7fX0gLy8gT3ZlcmxheSBpcyBub24taW50ZXJhY3RpdmUgZm9yIGRlbGV0ZXNcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319IC8vIE5vbi1pbnRlcmFjdGl2ZVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnRcbiAgICAgICAgZ3JvdXA9e2FjdGl2ZUl0ZW19XG4gICAgICAgIG9uVXBkYXRlPXsoKSA9PiB7fX1cbiAgICAgICAgb25EZWxldGU9eygpID0+IHt9fVxuICAgICAgICBpc1Jvb3Q9e2ZhbHNlfSAvLyBEcmFnZ2VkIGl0ZW0gaW4gb3ZlcmxheSBpcyBub3QgdGhlIHJvb3RcbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wRm9yT3ZlcmxheX1cbiAgICAgICAgbGVhZGluZ09wZXJhdG9yVmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17KCkgPT4ge319XG4gICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17ZmFsc2V9IC8vIE5vbi1pbnRlcmFjdGl2ZSBmb3IgcHJldmlld1xuICAgICAgLz5cbiAgICApO1xuICB9XG59O1xuXG4vLyBNYW5hZ2VzIERORCBjb250ZXh0IGFuZCByZW5kZXJpbmcgb2Ygc29ydGFibGUgZmlsdGVyIGl0ZW1zIGZvciBhIGdyb3VwLlxuY29uc3QgRmlsdGVyTGlzdEl0ZW1zID0gKHtcbiAgaXRlbXMsXG4gIHBhcmVudEdyb3VwSWQsXG4gIHRhYmxlLFxuICBvblVwZGF0ZUl0ZW0sXG4gIG9uRGVsZXRlSXRlbSxcbiAgb25SZW9yZGVySXRlbXMsXG4gIGFjdGl2ZURyYWdJZCxcbiAgb25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZFNpZ25hbCxcbn06IHtcbiAgaXRlbXM6IEFycmF5PENvbHVtbkZpbHRlciB8IEZpbHRlckdyb3VwPjtcbiAgcGFyZW50R3JvdXBJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBvblVwZGF0ZUl0ZW06IChpbmRleDogbnVtYmVyLCB1cGRhdGVkSXRlbTogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlSXRlbTogKGluZGV4OiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uUmVvcmRlckl0ZW1zOiAob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgYWN0aXZlRHJhZ0lkOiBVbmlxdWVJZGVudGlmaWVyIHwgbnVsbDtcbiAgb25EcmFnU3RhcnQ6IChldmVudDogRHJhZ1N0YXJ0RXZlbnQpID0+IHZvaWQ7XG4gIG9uRHJhZ0VuZFNpZ25hbDogKCkgPT4gdm9pZDsgLy8gQ2FsbGJhY2sgdG8gc2lnbmFsIGRyYWcgb3BlcmF0aW9uIGNvbXBsZXRpb25cbn0pID0+IHtcbiAgY29uc3Qgc29ydGFibGVJdGVtSWRzID0gdXNlTWVtbygoKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaWQpLCBbaXRlbXNdKTtcbiAgY29uc3Qgc2Vuc29ycyA9IHVzZVNlbnNvcnMoXG4gICAgdXNlU2Vuc29yKFBvaW50ZXJTZW5zb3IsIHsgYWN0aXZhdGlvbkNvbnN0cmFpbnQ6IHsgZGlzdGFuY2U6IDggfSB9KSxcbiAgICB1c2VTZW5zb3IoS2V5Ym9hcmRTZW5zb3IsIHsgY29vcmRpbmF0ZUdldHRlcjogc29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIH0pLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUludGVybmFsRHJhZ0VuZCA9IChldmVudDogRHJhZ0VuZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmUsIG92ZXIgfSA9IGV2ZW50O1xuICAgIGlmIChvdmVyICYmIGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgY29uc3Qgb2xkSW5kZXggPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGFjdGl2ZS5pZCk7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IGl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3Zlci5pZCk7XG4gICAgICBpZiAob2xkSW5kZXggIT09IC0xICYmIG5ld0luZGV4ICE9PSAtMSkge1xuICAgICAgICBvblJlb3JkZXJJdGVtcyhvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkRyYWdFbmRTaWduYWwoKTsgLy8gU2lnbmFsIHRvIHBhcmVudCB0aGF0IGRyYWcgaGFzIGVuZGVkIChlLmcuLCB0byBjbGVhciBhY3RpdmVEcmFnSWQpXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RG5kQ29udGV4dFxuICAgICAgc2Vuc29ycz17c2Vuc29yc31cbiAgICAgIGNvbGxpc2lvbkRldGVjdGlvbj17Y2xvc2VzdENlbnRlcn1cbiAgICAgIG9uRHJhZ1N0YXJ0PXtvbkRyYWdTdGFydH1cbiAgICAgIG9uRHJhZ0VuZD17aGFuZGxlSW50ZXJuYWxEcmFnRW5kfVxuICAgID5cbiAgICAgIDxTb3J0YWJsZUNvbnRleHQgaXRlbXM9e3NvcnRhYmxlSXRlbUlkc30gc3RyYXRlZ3k9e3ZlcnRpY2FsTGlzdFNvcnRpbmdTdHJhdGVneX0+XG4gICAgICAgIHtpdGVtcy5tYXAoKGN1cnJlbnRGaWx0ZXJJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGxldCBzaG93TGVhZGluZ09wID0gZmFsc2U7XG4gICAgICAgICAgbGV0IGxlYWRpbmdPcFZhbDogXCJhbmRcIiB8IFwib3JcIiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgb25MZWFkaW5nT3BDaGFuZ2VGbjogKCh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgc2hvd0xlYWRpbmdPcCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBwcmV2SXRlbSA9IGl0ZW1zW2luZGV4IC0gMV0hO1xuICAgICAgICAgICAgbGVhZGluZ09wVmFsID0gcHJldkl0ZW0uYWZ0ZXI7XG4gICAgICAgICAgICBvbkxlYWRpbmdPcENoYW5nZUZuID0gKG5ld1ZhbHVlOiBcImFuZFwiIHwgXCJvclwiKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRQcmV2SXRlbSA9IHsgLi4ucHJldkl0ZW0sIGFmdGVyOiBuZXdWYWx1ZSB9O1xuICAgICAgICAgICAgICBvblVwZGF0ZUl0ZW0oaW5kZXggLSAxLCB1cGRhdGVkUHJldkl0ZW0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlzTGVhZGluZ09wVGFyZ2V0TGFzdCA9IGluZGV4IC0gMSA9PT0gaXRlbXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNvcnRhYmxlRmlsdGVySXRlbVxuICAgICAgICAgICAgICBrZXk9e2N1cnJlbnRGaWx0ZXJJdGVtLmlkfVxuICAgICAgICAgICAgICBmaWx0ZXI9e2N1cnJlbnRGaWx0ZXJJdGVtfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17KHVwZGF0ZWRGaWx0ZXIpID0+IG9uVXBkYXRlSXRlbShpbmRleCwgdXBkYXRlZEZpbHRlcil9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXsoKSA9PiBvbkRlbGV0ZUl0ZW0oaW5kZXgpfVxuICAgICAgICAgICAgICBwYXJlbnREbmRJZD17cGFyZW50R3JvdXBJZH1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgICBzaG93TGVhZGluZ09wZXJhdG9yPXtzaG93TGVhZGluZ09wfVxuICAgICAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wVmFsfVxuICAgICAgICAgICAgICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT17b25MZWFkaW5nT3BDaGFuZ2VGbn1cbiAgICAgICAgICAgICAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PXtpc0xlYWRpbmdPcFRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRleHQ+XG4gICAgICB7Y3JlYXRlUG9ydGFsKFxuICAgICAgICA8RHJhZ092ZXJsYXk+XG4gICAgICAgICAge2FjdGl2ZURyYWdJZCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtb3BhY2l0eS04MFwiPlxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXcgYWN0aXZlSWQ9e2FjdGl2ZURyYWdJZH0gaXRlbXM9e2l0ZW1zfSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9EcmFnT3ZlcmxheT4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgIDwvRG5kQ29udGV4dD5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzb3J0YWJsZSBmaWx0ZXIgaXRlbVxuY29uc3QgU29ydGFibGVGaWx0ZXJJdGVtID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIHBhcmVudERuZElkLFxuICB0YWJsZSxcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcixcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWUsXG4gIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlLFxuICBpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3QsXG59OiB7XG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXA7XG4gIG9uVXBkYXRlOiAodXBkYXRlZEZpbHRlcjogQ29sdW1uRmlsdGVyIHwgRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBwYXJlbnREbmRJZDogVW5pcXVlSWRlbnRpZmllcjtcbiAgdGFibGU6IFRhYmxlO1xuICBzaG93TGVhZGluZ09wZXJhdG9yPzogYm9vbGVhbjtcbiAgbGVhZGluZ09wZXJhdG9yVmFsdWU/OiBcImFuZFwiIHwgXCJvclwiO1xuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZT86ICh2YWx1ZTogXCJhbmRcIiB8IFwib3JcIikgPT4gdm9pZDtcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogZmlsdGVyLmtpbmQsXG4gICAgICBwYXJlbnRJZDogcGFyZW50RG5kSWQsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgc3R5bGUgPSB7XG4gICAgdHJhbnNmb3JtOiBDU1MuVHJhbnNmb3JtLnRvU3RyaW5nKHRyYW5zZm9ybSksXG4gICAgdHJhbnNpdGlvbixcbiAgICBvcGFjaXR5OiBpc0RyYWdnaW5nID8gMC41IDogMSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgcmVmPXtzZXROb2RlUmVmfSBzdHlsZT17c3R5bGV9IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLWdhcC0yXCI+XG4gICAgICB7ZmlsdGVyLmtpbmQgPT09IFwiQ29sdW1uRmlsdGVyXCIgPyAoXG4gICAgICAgIDxGaWx0ZXJDb25kaXRpb25cbiAgICAgICAgICBmaWx0ZXI9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEZpbHRlckdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgZ3JvdXA9e2ZpbHRlcn1cbiAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgb25EZWxldGU9e29uRGVsZXRlfVxuICAgICAgICAgIGRyYWdIYW5kbGVQcm9wcz17eyAuLi5hdHRyaWJ1dGVzLCAuLi5saXN0ZW5lcnMgfX1cbiAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgc2hvd0xlYWRpbmdPcGVyYXRvcj17c2hvd0xlYWRpbmdPcGVyYXRvcn1cbiAgICAgICAgICBsZWFkaW5nT3BlcmF0b3JWYWx1ZT17bGVhZGluZ09wZXJhdG9yVmFsdWV9XG4gICAgICAgICAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U9e29uTGVhZGluZ09wZXJhdG9yQ2hhbmdlfVxuICAgICAgICAgIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCBmb3IgYSBzaW5nbGUgZmlsdGVyIGNvbmRpdGlvblxuY29uc3QgRmlsdGVyQ29uZGl0aW9uID0gKHtcbiAgZmlsdGVyLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgdGFibGUsXG4gIHNob3dMZWFkaW5nT3BlcmF0b3IsXG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlLFxuICBvbkxlYWRpbmdPcGVyYXRvckNoYW5nZSxcbiAgaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0LFxufToge1xuICBmaWx0ZXI6IENvbHVtbkZpbHRlcjtcbiAgb25VcGRhdGU6ICh1cGRhdGVkRmlsdGVyOiBDb2x1bW5GaWx0ZXIpID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IGhhbmRsZUNvbHVtbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIGNvbHVtbjogdmFsdWUgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlcmF0b3JDaGFuZ2UgPSAodmFsdWU6IEZpbHRlck9wZXJhdG9yKSA9PiB7XG4gICAgb25VcGRhdGUoeyAuLi5maWx0ZXIsIG9wZXJhdG9yOiB2YWx1ZSB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWx1ZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgY29sdW1uSW5mbyA9IHRhYmxlLmNvbHVtbnNbZmlsdGVyLmNvbHVtbl07XG5cbiAgICBpZiAoY29sdW1uSW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZVRvVmFsdWUoY29sdW1uSW5mbywgZmlsdGVyLm9wZXJhdG9yLCByYXdWYWx1ZSk7XG5cbiAgICAgIG9uVXBkYXRlKHsgLi4uZmlsdGVyLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFtlZGl0ZWRWYWx1ZSwgc2V0RWRpdGVkVmFsdWVdID0gdXNlU3RhdGUoXG4gICAgY29lcmNlVG9TdHJpbmcodGFibGUuY29sdW1uc1tmaWx0ZXIuY29sdW1uXSwgZmlsdGVyLm9wZXJhdG9yLCBmaWx0ZXIudmFsdWUpLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXZcbiAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXctZnVsbFwiXG4gICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgZXhpdD17eyBvcGFjaXR5OiAwIH19XG4gICAgICB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiB7Li4uZHJhZ0hhbmRsZVByb3BzfSBjbGFzc05hbWU9XCJwcy1jdXJzb3ItZ3JhYlwiPlxuICAgICAgICAgIDxHcmlwVmVydGljYWwgY2xhc3NOYW1lPVwicHMtdGV4dC1ncmF5LTUwMFwiIHNpemU9ezE2fSAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAge3Nob3dMZWFkaW5nT3BlcmF0b3IgJiYgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UgPyAoXG4gICAgICAgICAgICA8TGVhZGluZ09wZXJhdG9yU2VsZWN0XG4gICAgICAgICAgICAgIHZhbHVlPXtsZWFkaW5nT3BlcmF0b3JWYWx1ZX1cbiAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xlYWRpbmdPcGVyYXRvclRhcmdldExhc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLmNvbHVtbn0gb25WYWx1ZUNoYW5nZT17aGFuZGxlQ29sdW1uQ2hhbmdlfT5cbiAgICAgICAgICAgIDxTZWxlY3RUcmlnZ2VyIGNsYXNzTmFtZT1cInBzLXctMjggcHMtdGV4dC14cyBwcy1oLThcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFZhbHVlIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNvbHVtblwiIC8+XG4gICAgICAgICAgICA8L1NlbGVjdFRyaWdnZXI+XG4gICAgICAgICAgICA8U2VsZWN0Q29udGVudD5cbiAgICAgICAgICAgICAge09iamVjdC5rZXlzKHRhYmxlLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0ga2V5PXtjb2x1bW59IHZhbHVlPXtjb2x1bW59PlxuICAgICAgICAgICAgICAgICAge2NvbHVtbn1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TZWxlY3RDb250ZW50PlxuICAgICAgICAgIDwvU2VsZWN0PlxuXG4gICAgICAgICAgPFNlbGVjdCB2YWx1ZT17ZmlsdGVyLm9wZXJhdG9yfSBvblZhbHVlQ2hhbmdlPXsodmFsdWUpID0+IGhhbmRsZU9wZXJhdG9yQ2hhbmdlKHZhbHVlIGFzIEZpbHRlck9wZXJhdG9yKX0+XG4gICAgICAgICAgICA8U2VsZWN0VHJpZ2dlciBjbGFzc05hbWU9XCJwcy13LTIwIHBzLXRleHQteHMgcHMtaC04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RWYWx1ZSBwbGFjZWhvbGRlcj1cIk9wZXJhdG9yXCIgLz5cbiAgICAgICAgICAgIDwvU2VsZWN0VHJpZ2dlcj5cbiAgICAgICAgICAgIDxTZWxlY3RDb250ZW50PlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIj1cIj49PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIiE9XCI+IT08L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPlwiPiZndDs8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiPj1cIj4mZ3Q7PTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8XCI+Jmx0OzwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCI8PVwiPiZsdDs9PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImlzXCI+aXM8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaXMgbm90XCI+aXMgbm90PC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cImxpa2VcIj5saWtlPC9TZWxlY3RJdGVtPlxuICAgICAgICAgICAgICA8U2VsZWN0SXRlbSB2YWx1ZT1cIm5vdCBsaWtlXCI+bm90IGxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICAgIDxTZWxlY3RJdGVtIHZhbHVlPVwiaWxpa2VcIj5pbGlrZTwvU2VsZWN0SXRlbT5cbiAgICAgICAgICAgICAgPFNlbGVjdEl0ZW0gdmFsdWU9XCJub3QgaWxpa2VcIj5ub3QgaWxpa2U8L1NlbGVjdEl0ZW0+XG4gICAgICAgICAgICA8L1NlbGVjdENvbnRlbnQ+XG4gICAgICAgICAgPC9TZWxlY3Q+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIHZhbHVlPXtlZGl0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICBzZXRFZGl0ZWRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtdy0yNCBwcy10ZXh0LXhzIHBzLWgtOFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMlwiPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L21vdGlvbi5kaXY+XG4gICk7XG59O1xuXG4vLyBDb21wb25lbnQgZm9yIGEgZmlsdGVyIGdyb3VwIChBTkQvT1IpXG5jb25zdCBGaWx0ZXJHcm91cENvbXBvbmVudCA9ICh7XG4gIGdyb3VwLFxuICBvblVwZGF0ZSxcbiAgb25EZWxldGUsXG4gIGRyYWdIYW5kbGVQcm9wcyxcbiAgaXNSb290ID0gZmFsc2UsXG4gIHRhYmxlLFxuICBzaG93TGVhZGluZ09wZXJhdG9yLFxuICBsZWFkaW5nT3BlcmF0b3JWYWx1ZSxcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UsXG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdCxcbn06IHtcbiAgZ3JvdXA6IEZpbHRlckdyb3VwO1xuICBvblVwZGF0ZTogKHVwZGF0ZWRHcm91cDogRmlsdGVyR3JvdXApID0+IHZvaWQ7XG4gIG9uRGVsZXRlOiAoKSA9PiB2b2lkO1xuICBkcmFnSGFuZGxlUHJvcHM/OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG4gIGlzUm9vdD86IGJvb2xlYW47XG4gIHRhYmxlOiBUYWJsZTtcbiAgc2hvd0xlYWRpbmdPcGVyYXRvcj86IGJvb2xlYW47XG4gIGxlYWRpbmdPcGVyYXRvclZhbHVlPzogXCJhbmRcIiB8IFwib3JcIjtcbiAgb25MZWFkaW5nT3BlcmF0b3JDaGFuZ2U/OiAodmFsdWU6IFwiYW5kXCIgfCBcIm9yXCIpID0+IHZvaWQ7XG4gIGlzTGVhZGluZ09wZXJhdG9yVGFyZ2V0TGFzdD86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbYWN0aXZlRHJhZ0lkLCBzZXRBY3RpdmVEcmFnSWRdID0gdXNlU3RhdGU8VW5pcXVlSWRlbnRpZmllciB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUFkZEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXI6IENvbHVtbkZpbHRlciA9IHtcbiAgICAgIGlkOiBzaG9ydC5nZW5lcmF0ZSgpLFxuICAgICAga2luZDogXCJDb2x1bW5GaWx0ZXJcIixcbiAgICAgIGNvbHVtbjogT2JqZWN0LmtleXModGFibGUuY29sdW1ucylbMF0gPz8gXCJcIiwgLy8gQWx3YXlzIHNlbGVjdCBmaXJzdCBjb2xcbiAgICAgIG9wZXJhdG9yOiBcIj1cIixcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBhZnRlcjogXCJhbmRcIixcbiAgICB9O1xuXG4gICAgb25VcGRhdGUoeyAuLi5ncm91cCwgZmlsdGVyczogWy4uLmdyb3VwLmZpbHRlcnMsIG5ld0ZpbHRlcl0gfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQWRkR3JvdXAgPSAoKSA9PiB7XG4gICAgY29uc3QgbmV3R3JvdXA6IEZpbHRlckdyb3VwID0ge1xuICAgICAgaWQ6IHNob3J0LmdlbmVyYXRlKCksXG4gICAgICBraW5kOiBcIkZpbHRlckdyb3VwXCIsXG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIGFmdGVyOiBcImFuZFwiLFxuICAgIH07XG5cbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBbLi4uZ3JvdXAuZmlsdGVycywgbmV3R3JvdXBdIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUl0ZW1Jbkdyb3VwID0gKGluZGV4OiBudW1iZXIsIHVwZGF0ZWRGaWx0ZXJPckdyb3VwOiBDb2x1bW5GaWx0ZXIgfCBGaWx0ZXJHcm91cCkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVyc1tpbmRleF0gPSB1cGRhdGVkRmlsdGVyT3JHcm91cDtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiBuZXdGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IGRlbGV0ZUl0ZW1Gcm9tR3JvdXAgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBbLi4uZ3JvdXAuZmlsdGVyc107XG4gICAgbmV3RmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIG9uVXBkYXRlKHsgLi4uZ3JvdXAsIGZpbHRlcnM6IG5ld0ZpbHRlcnMgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4ge1xuICAgIHNldEFjdGl2ZURyYWdJZChldmVudC5hY3RpdmUuaWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmRTaWduYWwgPSAoKSA9PiB7XG4gICAgc2V0QWN0aXZlRHJhZ0lkKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVJlb3JkZXJJdGVtcyA9IChvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKG9sZEluZGV4ID09PSBuZXdJbmRleCkgcmV0dXJuO1xuICAgIGNvbnN0IHJlb3JkZXJlZEZpbHRlcnMgPSBhcnJheU1vdmUoZ3JvdXAuZmlsdGVycywgb2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICBvblVwZGF0ZSh7IC4uLmdyb3VwLCBmaWx0ZXJzOiByZW9yZGVyZWRGaWx0ZXJzIH0pO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckdyb3VwQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHJldHVybiBudWxsO1xuICAgIGlmICghZ3JvdXAuZmlsdGVycyB8fCBncm91cC5maWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wbC02IHBzLXRleHQtc20gcHMtdGV4dC1uZXV0cmFsLTUwMCBwcy1pdGFsaWNcIj5cbiAgICAgICAgICBUaGlzIGdyb3VwIGlzIGVtcHR5LiBBZGQgYSBmaWx0ZXIgb3IgYW5vdGhlciBncm91cC5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8bW90aW9uLmRpdiB0cmFuc2l0aW9uPXt7IGxheW91dDogeyBkdXJhdGlvbjogMC4xMiB9IH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlIHBzLWdhcC0yXCIsIGlzUm9vdCA/IFwiXCIgOiBcInBzLXBiLTJcIil9PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SXRlbXNcbiAgICAgICAgICAgIGl0ZW1zPXtncm91cC5maWx0ZXJzfVxuICAgICAgICAgICAgcGFyZW50R3JvdXBJZD17Z3JvdXAuaWR9XG4gICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICBvblVwZGF0ZUl0ZW09e3VwZGF0ZUl0ZW1Jbkdyb3VwfVxuICAgICAgICAgICAgb25EZWxldGVJdGVtPXtkZWxldGVJdGVtRnJvbUdyb3VwfVxuICAgICAgICAgICAgb25SZW9yZGVySXRlbXM9e2hhbmRsZVJlb3JkZXJJdGVtc31cbiAgICAgICAgICAgIGFjdGl2ZURyYWdJZD17YWN0aXZlRHJhZ0lkfVxuICAgICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICAgIG9uRHJhZ0VuZFNpZ25hbD17aGFuZGxlRHJhZ0VuZFNpZ25hbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbW90aW9uLmRpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPG1vdGlvbi5kaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsXCIgdHJhbnNpdGlvbj17eyBsYXlvdXQ6IHsgZHVyYXRpb246IDAuMTIgfSB9fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtZmxleC1jb2wgcHMtdy1mdWxsXCIsIGlzRXhwYW5kZWQgPyBcInBzLWdhcC0yXCIgOiBcIlwiKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1iZXR3ZWVuIHBzLXctZnVsbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgIHshaXNSb290ICYmIChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9uc1xuICAgICAgICAgICAgICA8ZGl2IHsuLi5kcmFnSGFuZGxlUHJvcHN9IGNsYXNzTmFtZT1cInBzLWN1cnNvci1ncmFiXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPENoZXZyb25Eb3duIHNpemU9ezE2fSAvPiA6IDxDaGV2cm9uUmlnaHQgc2l6ZT17MTZ9IC8+fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtzaG93TGVhZGluZ09wZXJhdG9yICYmIG9uTGVhZGluZ09wZXJhdG9yQ2hhbmdlICYmICFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPExlYWRpbmdPcGVyYXRvclNlbGVjdFxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2xlYWRpbmdPcGVyYXRvclZhbHVlfVxuICAgICAgICAgICAgICAgICAgb25WYWx1ZUNoYW5nZT17b25MZWFkaW5nT3BlcmF0b3JDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFkZEZpbHRlcn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIG92ZXJmbG93LWhpZGRlbiBwcy10cmFuc2l0aW9uLWFsbFwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRkIEZpbHRlclxuICAgICAgICAgICAgICB7Z3JvdXAuZmlsdGVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8QmFkZ2UgY2xhc3NOYW1lPVwicHMtdHJhbnNpdGlvbi1hbGxcIj5cbiAgICAgICAgICAgICAgICAgIDxBbmltYXRlTnVtYmVyIHRyYW5zaXRpb249e3sgbGF5b3V0OiB7IGR1cmF0aW9uOiAwLjEyIH0gfX0+e2dyb3VwLmZpbHRlcnMubGVuZ3RofTwvQW5pbWF0ZU51bWJlcj5cbiAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21cIiBvbkNsaWNrPXtoYW5kbGVBZGRHcm91cH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgQWRkIEdyb3VwXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICB7aXNSb290ICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51VHJpZ2dlciBhc0NoaWxkPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwiZ2hvc3RcIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgPEhlbHBDaXJjbGUgY2xhc3NOYW1lPVwicHMtc2l6ZS00XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51VHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51Q29udGVudCBhbGlnbj1cImNlbnRlclwiIGNsYXNzTmFtZT1cInBzLXctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAge2dyb3VwLmZpbHRlcnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXAtNCBwcy10ZXh0LWNlbnRlciBwcy10ZXh0LXNtIHBzLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICBObyBmaWx0ZXJzIGFwcGxpZWQgeWV0LiBBZGQgZmlsdGVycyB0byBwcmV2aWV3IHlvdXIgcXVlcnkuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1wLTIgcHMtdGV4dC1jZW50ZXIgcHMtdGV4dC1zbSBwcy1iZy1uZXV0cmFsLTEwMCBwcy1yb3VuZGVkLXNtIHBzLWZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtncm91cH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgeyFpc1Jvb3QgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJ4c1wiIG9uQ2xpY2s9e29uRGVsZXRlfT5cbiAgICAgICAgICAgICAgICA8WCBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NuKGlzUm9vdCA/IFwiXCIgOiBcInBzLW1sLTZcIil9PntyZW5kZXJHcm91cENvbnRlbnQoKX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbW90aW9uLmRpdj5cbiAgKTtcbn07XG5cbi8vIENvbXBvbmVudCB0byB2aXN1YWxpemUgdGhlIHF1ZXJ5IHN0cmluZ1xuY29uc3QgUXVlcnlWaXN1YWxpemVyID0gKHsgZmlsdGVyIH06IHsgZmlsdGVyOiBGaWx0ZXJHcm91cCB9KTogUmVhY3ROb2RlID0+IHtcbiAgbGV0IGlzQW5kR3JvdXBPcGVuID0gMDtcblxuICBpZiAoZmlsdGVyLmZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIoIClcIjtcblxuICBjb25zdCBncm91cCA9IGZpbHRlci5maWx0ZXJzLm1hcCgoZiwgaSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IFJlYWN0Tm9kZTtcbiAgICBjb25zdCBpc0xhc3QgPSBmaWx0ZXIuZmlsdGVycy5sZW5ndGggLSAxID09PSBpO1xuXG4gICAgaWYgKGlzQW5kR3JvdXBPcGVuID09PSAtMSkge1xuICAgICAgaXNBbmRHcm91cE9wZW4gPSAwO1xuICAgIH1cblxuICAgIGlmIChmLmFmdGVyID09PSBcImFuZFwiICYmICFpc0xhc3QpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuICs9IDE7XG4gICAgfVxuICAgIGlmIChpc0FuZEdyb3VwT3BlbiAmJiAoaXNMYXN0IHx8IGYuYWZ0ZXIgPT09IFwib3JcIikpIHtcbiAgICAgIGlzQW5kR3JvdXBPcGVuID0gLTE7XG4gICAgfVxuXG4gICAgaWYgKGYua2luZCA9PT0gXCJDb2x1bW5GaWx0ZXJcIikge1xuICAgICAgY29uc3QgeyBjb2x1bW4sIG9wZXJhdG9yIH0gPSBmO1xuXG4gICAgICByZXN1bHQgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPHNwYW4+IHtjb2x1bW59IDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj4ge29wZXJhdG9yfSA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+ID8gPC9zcGFuPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IDxRdWVyeVZpc3VhbGl6ZXIgZmlsdGVyPXtmfSAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZyYWdtZW50IGtleT17Zi5pZH0+XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gMSA/IDxzcGFuIGNsYXNzTmFtZT1cInBzLWZvbnQtc2VtaWJvbGRcIj4oPC9zcGFuPiA6IFwiXCJ9XG4gICAgICAgIHtyZXN1bHR9XG4gICAgICAgIHtpc0FuZEdyb3VwT3BlbiA9PT0gLTEgPyA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LXNlbWlib2xkXCI+KTwvc3Bhbj4gOiBcIlwifVxuICAgICAgICB7IWlzTGFzdCAmJiA8c3BhbiBjbGFzc05hbWU9XCJwcy11cHBlcmNhc2UgcHMtdGV4dC1ibHVlLTUwMCBwcy1mb250LXNlbWlib2xkXCI+IHtmLmFmdGVyfSA8L3NwYW4+fVxuICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICB9KTtcblxuICByZXR1cm4gPHNwYW4+e2dyb3VwfTwvc3Bhbj47XG59O1xuXG4vLyBNYWluIGNvbXBvbmVudFxuZXhwb3J0IGZ1bmN0aW9uIEZpbHRlclRyZWUoe1xuICBmaWx0ZXIsXG4gIHNldEZpbHRlcixcbiAgc2V0QXBwbGllZEZpbHRlcixcbiAgdGFibGUsXG59OiB7XG4gIGZpbHRlcjogRmlsdGVyR3JvdXA7XG4gIHNldEZpbHRlcjogKHVwZGF0ZWRGaWx0ZXI6IEZpbHRlckdyb3VwKSA9PiB2b2lkO1xuICBzZXRBcHBsaWVkRmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXJHcm91cCkgPT4gdm9pZDtcbiAgdGFibGU6IFRhYmxlO1xufSkge1xuICBjb25zdCBoYW5kbGVBcHBseUZpbHRlcnMgPSAoKSA9PiB7XG4gICAgc2V0QXBwbGllZEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC00XCI+XG4gICAgICA8RmlsdGVyR3JvdXBDb21wb25lbnQgZ3JvdXA9e2ZpbHRlcn0gb25VcGRhdGU9e3NldEZpbHRlcn0gb25EZWxldGU9eygpID0+IHt9fSBpc1Jvb3Q9e3RydWV9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgIDxCdXR0b24gdmFyaWFudD1cImRlZmF1bHRcIiBzaXplPVwic21cIiBjbGFzc05hbWU9XCJwcy1zZWxmLWVuZFwiIG9uQ2xpY2s9e2hhbmRsZUFwcGx5RmlsdGVyc30+XG4gICAgICAgIEFwcGx5IEZpbHRlcnNcbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQ29sdW1uLCBGaWx0ZXJPcGVyYXRvciB9IGZyb20gXCJAL2RhdGFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZVRvVmFsdWUoY29sdW1uOiBDb2x1bW4gfCB1bmRlZmluZWQsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkYXRhVHlwZUdyb3VwID0gY29sdW1uPy5kYXRhdHlwZS5ncm91cDtcblxuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09IFwiaXNcIiB8fCBvcGVyYXRvciA9PT0gXCJpcyBub3RcIikge1xuICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcIm51bGxcIiA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHZhbHVlID09PSBcInRydWVcIjtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIHZhbHVlO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJlbnVtXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwicmF3XCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwidGltZVwiKSByZXR1cm4gdmFsdWU7XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwianNvblwiKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKSBhcyB1bmtub3duO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlVG9TdHJpbmcoXG4gIGNvbHVtbjogQ29sdW1uIHwgdW5kZWZpbmVkLFxuICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IgfCB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGF0YVR5cGVHcm91cCA9IGNvbHVtbj8uZGF0YXR5cGUuZ3JvdXA7XG5cbiAgaWYgKG9wZXJhdG9yICYmIChvcGVyYXRvciA9PT0gXCJpc1wiIHx8IG9wZXJhdG9yID09PSBcImlzIG5vdFwiKSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwiZGF0ZXRpbWVcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImVudW1cIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcIm51bWVyaWNcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcInJhd1wiKSByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgaWYgKGRhdGFUeXBlR3JvdXAgPT09IFwic3RyaW5nXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICBpZiAoZGF0YVR5cGVHcm91cCA9PT0gXCJ0aW1lXCIpIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4gIGlmIChkYXRhVHlwZUdyb3VwID09PSBcImpzb25cIikge1xuICAgIGlmICh2YWx1ZSA9PT0gXCJcIikgcmV0dXJuIFwiXCI7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiIsICJpbXBvcnQgKiBhcyBEcm9wZG93bk1lbnVQcmltaXRpdmUgZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kcm9wZG93bi1tZW51XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvblJpZ2h0LCBDaXJjbGUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25NZW51ID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJvb3Q7XG5cbmNvbnN0IERyb3Bkb3duTWVudVRyaWdnZXIgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgRHJvcGRvd25NZW51R3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbCA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YiA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWI7XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvR3JvdXAgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9Hcm91cDtcblxuY29uc3QgRHJvcGRvd25NZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTIgcHMtcm91bmRlZC1zbSBwcy1weC0yIHBzLXB5LTEuNSBwcy10ZXh0LXNtIHBzLW91dGxpbmUtbm9uZSBmb2N1czpwcy1iZy1hY2NlbnQgZGF0YS1bc3RhdGU9b3Blbl06cHMtYmctYWNjZW50IFsmX3N2Z106cHMtcG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnBzLXNpemUtNCBbJl9zdmddOnBzLXNocmluay0wXCIsXG4gICAgICBpbnNldCAmJiBcInBzLXBsLThcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgICA8Q2hldnJvblJpZ2h0IGNsYXNzTmFtZT1cInBzLW1sLWF1dG9cIiAvPlxuICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJUcmlnZ2VyPlxuKSk7XG5Ecm9wZG93bk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVN1YkNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuU3ViQ29udGVudFxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXotNTAgcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbGcgZGF0YS1bc3RhdGU9b3Blbl06cHMtYW5pbWF0ZS1pbiBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWFuaW1hdGUtb3V0IGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtZmFkZS1vdXQtMCBkYXRhLVtzdGF0ZT1vcGVuXTpwcy1mYWRlLWluLTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzdGF0ZT1vcGVuXTpwcy16b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpwcy1zbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06cHMtc2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnBzLXNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpwcy1zbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHBzLW9yaWdpbi1bLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbikpO1xuRHJvcGRvd25NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TdWJDb250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50PlxuPigoeyBjbGFzc05hbWUsIHNpZGVPZmZzZXQgPSA0LCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtbWF4LWgtW3ZhcigtLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KV0gcHMtbWluLXctWzhyZW1dIHBzLW92ZXJmbG93LXktYXV0byBwcy1vdmVyZmxvdy14LWhpZGRlbiBwcy1yb3VuZGVkLW1kIHBzLWJvcmRlciBwcy1iZy1wb3BvdmVyIHBzLXAtMSBwcy10ZXh0LXBvcG92ZXItZm9yZWdyb3VuZCBwcy1zaGFkb3ctbWRcIixcbiAgICAgICAgXCJkYXRhLVtzdGF0ZT1vcGVuXTpwcy1hbmltYXRlLWluIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtYW5pbWF0ZS1vdXQgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1mYWRlLW91dC0wIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWZhZGUtaW4tMCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLXpvb20tb3V0LTk1IGRhdGEtW3N0YXRlPW9wZW5dOnBzLXpvb20taW4tOTUgZGF0YS1bc2lkZT1ib3R0b21dOnBzLXNsaWRlLWluLWZyb20tdG9wLTIgZGF0YS1bc2lkZT1sZWZ0XTpwcy1zbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1yaWdodF06cHMtc2xpZGUtaW4tZnJvbS1sZWZ0LTIgZGF0YS1bc2lkZT10b3BdOnBzLXNsaWRlLWluLWZyb20tYm90dG9tLTIgcHMtb3JpZ2luLVstLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXVwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuRHJvcGRvd25NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5Db250ZW50LmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkl0ZW0+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtPiAmIHtcbiAgICBpbnNldD86IGJvb2xlYW47XG4gIH1cbj4oKHsgY2xhc3NOYW1lLCBpbnNldCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtc2VsZWN0LW5vbmUgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yIHBzLXJvdW5kZWQtc20gcHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgcHMtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTAgWyY+c3ZnXTpwcy1zaXplLTQgWyY+c3ZnXTpwcy1zaHJpbmstMFwiLFxuICAgICAgaW5zZXQgJiYgXCJwcy1wbC04XCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgY2hlY2tlZCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLWxlZnQtMiBwcy1mbGV4IHBzLWgtMy41IHBzLXctMy41IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPERyb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbT5cbikpO1xuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkNoZWNrYm94SXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuUmFkaW9JdGVtXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1zZWxlY3Qtbm9uZSBwcy1pdGVtcy1jZW50ZXIgcHMtcm91bmRlZC1zbSBwcy1weS0xLjUgcHMtcGwtOCBwcy1wci0yIHBzLXRleHQtc20gcHMtb3V0bGluZS1ub25lIHBzLXRyYW5zaXRpb24tY29sb3JzIGZvY3VzOnBzLWJnLWFjY2VudCBmb2N1czpwcy10ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtW2Rpc2FibGVkXTpwcy1wb2ludGVyLWV2ZW50cy1ub25lIGRhdGEtW2Rpc2FibGVkXTpwcy1vcGFjaXR5LTUwXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSBwcy1sZWZ0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxEcm9wZG93bk1lbnVQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENpcmNsZSBjbGFzc05hbWU9XCJwcy1oLTIgcHMtdy0yIHBzLWZpbGwtY3VycmVudFwiIC8+XG4gICAgICA8L0Ryb3Bkb3duTWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yPlxuICAgIDwvc3Bhbj5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbT5cbikpO1xuRHJvcGRvd25NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLlJhZGlvSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgRHJvcGRvd25NZW51TGFiZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuTGFiZWw+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERyb3Bkb3duTWVudVByaW1pdGl2ZS5MYWJlbD4gJiB7XG4gICAgaW5zZXQ/OiBib29sZWFuO1xuICB9XG4+KCh7IGNsYXNzTmFtZSwgaW5zZXQsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLXB4LTIgcHMtcHktMS41IHBzLXRleHQtc20gcHMtZm9udC1zZW1pYm9sZFwiLCBpbnNldCAmJiBcInBzLXBsLThcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gRHJvcGRvd25NZW51UHJpbWl0aXZlLkxhYmVsLmRpc3BsYXlOYW1lO1xuXG5jb25zdCBEcm9wZG93bk1lbnVTZXBhcmF0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBEcm9wZG93bk1lbnVQcmltaXRpdmUuU2VwYXJhdG9yPlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8RHJvcGRvd25NZW51UHJpbWl0aXZlLlNlcGFyYXRvclxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pKTtcbkRyb3Bkb3duTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IERyb3Bkb3duTWVudVByaW1pdGl2ZS5TZXBhcmF0b3IuZGlzcGxheU5hbWU7XG5cbmNvbnN0IERyb3Bkb3duTWVudVNob3J0Y3V0ID0gKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NuKFwicHMtbWwtYXV0byBwcy10ZXh0LXhzIHBzLXRyYWNraW5nLXdpZGVzdCBwcy1vcGFjaXR5LTYwXCIsIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30gLz47XG59O1xuRHJvcGRvd25NZW51U2hvcnRjdXQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNob3J0Y3V0XCI7XG5cbmV4cG9ydCB7XG4gIERyb3Bkb3duTWVudSxcbiAgRHJvcGRvd25NZW51VHJpZ2dlcixcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51SXRlbSxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLFxuICBEcm9wZG93bk1lbnVSYWRpb0l0ZW0sXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVTZXBhcmF0b3IsXG4gIERyb3Bkb3duTWVudVNob3J0Y3V0LFxuICBEcm9wZG93bk1lbnVHcm91cCxcbiAgRHJvcGRvd25NZW51UG9ydGFsLFxuICBEcm9wZG93bk1lbnVTdWIsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG59O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBJbnB1dCA9IFJlYWN0LmZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJpbnB1dFwiPj4oXG4gICh7IGNsYXNzTmFtZSwgdHlwZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1pbnB1dCBwcy1iZy10cmFuc3BhcmVudCBwcy1weC0zIHBzLXB5LTEgcHMtc2hhZG93LXNtIHBzLXRyYW5zaXRpb24tY29sb3JzIGZpbGU6cHMtYm9yZGVyLTAgZmlsZTpwcy1iZy10cmFuc3BhcmVudCBmaWxlOnBzLXRleHQtc20gZmlsZTpwcy1mb250LW1lZGl1bSBmaWxlOnBzLXRleHQtZm9yZWdyb3VuZCBwbGFjZWhvbGRlcjpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpwcy1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLTEgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICl9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4pO1xuSW5wdXQuZGlzcGxheU5hbWUgPSBcIklucHV0XCI7XG5cbmV4cG9ydCB7IElucHV0IH07XG4iLCAiaW1wb3J0ICogYXMgU2VsZWN0UHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2VsZWN0XCI7XG5pbXBvcnQgeyBDaGVjaywgQ2hldnJvbkRvd24sIENoZXZyb25VcCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBTZWxlY3QgPSBTZWxlY3RQcmltaXRpdmUuUm9vdDtcblxuY29uc3QgU2VsZWN0R3JvdXAgPSBTZWxlY3RQcmltaXRpdmUuR3JvdXA7XG5cbmNvbnN0IFNlbGVjdFZhbHVlID0gU2VsZWN0UHJpbWl0aXZlLlZhbHVlO1xuXG5jb25zdCBTZWxlY3RUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXI+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuPigoeyBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtZmxleCBwcy1oLTkgcHMtdy1mdWxsIHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW4gcHMtd2hpdGVzcGFjZS1ub3dyYXAgcHMtcm91bmRlZC1tZCBwcy1ib3JkZXIgcHMtYm9yZGVyLWlucHV0IHBzLWJnLXRyYW5zcGFyZW50IHBzLXB4LTMgcHMtcHktMiBwcy10ZXh0LXNtIHBzLXNoYWRvdy1zbSBwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRhdGEtW3BsYWNlaG9sZGVyXTpwcy10ZXh0LW11dGVkLWZvcmVncm91bmQgZm9jdXM6cHMtb3V0bGluZS1ub25lIGZvY3VzOnBzLXJpbmctMSBmb2N1czpwcy1yaW5nLXJpbmcgZGlzYWJsZWQ6cHMtY3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOnBzLW9wYWNpdHktNTAgWyY+c3Bhbl06cHMtbGluZS1jbGFtcC0xXCIsXG4gICAgICBjbGFzc05hbWUsXG4gICAgKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JY29uIGFzQ2hpbGQ+XG4gICAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNCBwcy1vcGFjaXR5LTUwXCIgLz5cbiAgICA8L1NlbGVjdFByaW1pdGl2ZS5JY29uPlxuICA8L1NlbGVjdFByaW1pdGl2ZS5UcmlnZ2VyPlxuKSk7XG5TZWxlY3RUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdFNjcm9sbFVwQnV0dG9uID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b24+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuU2Nyb2xsVXBCdXR0b25cbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtZmxleCBwcy1jdXJzb3ItZGVmYXVsdCBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXIgcHMtcHktMVwiLCBjbGFzc05hbWUpfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxDaGV2cm9uVXAgY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uPlxuKSk7XG5TZWxlY3RTY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uXG4gICAgcmVmPXtyZWZ9XG4gICAgY2xhc3NOYW1lPXtjbihcInBzLWZsZXggcHMtY3Vyc29yLWRlZmF1bHQgcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktY2VudGVyIHBzLXB5LTFcIiwgY2xhc3NOYW1lKX1cbiAgICB7Li4ucHJvcHN9XG4gID5cbiAgICA8Q2hldnJvbkRvd24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNFwiIC8+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24+XG4pKTtcblNlbGVjdFNjcm9sbERvd25CdXR0b24uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2Nyb2xsRG93bkJ1dHRvbi5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5Db250ZW50PixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgcG9zaXRpb24gPSBcInBvcHBlclwiLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5Qb3J0YWw+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcmVsYXRpdmUgcHMtei01MCBwcy1tYXgtaC1bLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XSBwcy1taW4tdy1bOHJlbV0gcHMtb3ZlcmZsb3cteS1hdXRvIHBzLW92ZXJmbG93LXgtaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJnLXBvcG92ZXIgcHMtdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgcHMtc2hhZG93LW1kIGRhdGEtW3N0YXRlPW9wZW5dOnBzLWFuaW1hdGUtaW4gZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9b3Blbl06cHMtZmFkZS1pbi0wIGRhdGEtW3N0YXRlPWNsb3NlZF06cHMtem9vbS1vdXQtOTUgZGF0YS1bc3RhdGU9b3Blbl06cHMtem9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbl1cIixcbiAgICAgICAgcG9zaXRpb24gPT09IFwicG9wcGVyXCIgJiZcbiAgICAgICAgICBcImRhdGEtW3NpZGU9Ym90dG9tXTpwcy10cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06cHMtLXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06cHMtdHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06cHMtLXRyYW5zbGF0ZS15LTFcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHBvc2l0aW9uPXtwb3NpdGlvbn1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U2VsZWN0U2Nyb2xsVXBCdXR0b24gLz5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuVmlld3BvcnRcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgICBcInBzLXAtMVwiLFxuICAgICAgICAgIHBvc2l0aW9uID09PSBcInBvcHBlclwiICYmXG4gICAgICAgICAgICBcInBzLWgtW3ZhcigtLXJhZGl4LXNlbGVjdC10cmlnZ2VyLWhlaWdodCldIHBzLXctZnVsbCBwcy1taW4tdy1bdmFyKC0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgpXVwiLFxuICAgICAgICApfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1NlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydD5cbiAgICAgIDxTZWxlY3RTY3JvbGxEb3duQnV0dG9uIC8+XG4gICAgPC9TZWxlY3RQcmltaXRpdmUuQ29udGVudD5cbiAgPC9TZWxlY3RQcmltaXRpdmUuUG9ydGFsPlxuKSk7XG5TZWxlY3RDb250ZW50LmRpc3BsYXlOYW1lID0gU2VsZWN0UHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmNvbnN0IFNlbGVjdExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLkxhYmVsPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuTGFiZWw+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuTGFiZWxcbiAgICByZWY9e3JlZn1cbiAgICBjbGFzc05hbWU9e2NuKFwicHMtcHgtMiBwcy1weS0xLjUgcHMtdGV4dC1zbSBwcy1mb250LXNlbWlib2xkXCIsIGNsYXNzTmFtZSl9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKSk7XG5TZWxlY3RMYWJlbC5kaXNwbGF5TmFtZSA9IFNlbGVjdFByaW1pdGl2ZS5MYWJlbC5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFNlbGVjdFByaW1pdGl2ZS5JdGVtPixcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBTZWxlY3RQcmltaXRpdmUuSXRlbT5cbj4oKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxTZWxlY3RQcmltaXRpdmUuSXRlbVxuICAgIHJlZj17cmVmfVxuICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICBcInBzLXJlbGF0aXZlIHBzLWZsZXggcHMtdy1mdWxsIHBzLWN1cnNvci1kZWZhdWx0IHBzLXNlbGVjdC1ub25lIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLXNtIHBzLXB5LTEuNSBwcy1wbC0yIHBzLXByLTggcHMtdGV4dC1zbSBwcy1vdXRsaW5lLW5vbmUgZm9jdXM6cHMtYmctYWNjZW50IGZvY3VzOnBzLXRleHQtYWNjZW50LWZvcmVncm91bmQgZGF0YS1bZGlzYWJsZWRdOnBzLXBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBzLW9wYWNpdHktNTBcIixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICApfVxuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWFic29sdXRlIHBzLXJpZ2h0LTIgcHMtZmxleCBwcy1oLTMuNSBwcy13LTMuNSBwcy1pdGVtcy1jZW50ZXIgcHMtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDxTZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInBzLWgtNCBwcy13LTRcIiAvPlxuICAgICAgPC9TZWxlY3RQcmltaXRpdmUuSXRlbUluZGljYXRvcj5cbiAgICA8L3NwYW4+XG4gICAgPFNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dD57Y2hpbGRyZW59PC9TZWxlY3RQcmltaXRpdmUuSXRlbVRleHQ+XG4gIDwvU2VsZWN0UHJpbWl0aXZlLkl0ZW0+XG4pKTtcblNlbGVjdEl0ZW0uZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuSXRlbS5kaXNwbGF5TmFtZTtcblxuY29uc3QgU2VsZWN0U2VwYXJhdG9yID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2VsZWN0UHJpbWl0aXZlLlNlcGFyYXRvcj5cbj4oKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IChcbiAgPFNlbGVjdFByaW1pdGl2ZS5TZXBhcmF0b3IgcmVmPXtyZWZ9IGNsYXNzTmFtZT17Y24oXCJwcy0tbXgtMSBwcy1teS0xIHBzLWgtcHggcHMtYmctbXV0ZWRcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5TZWxlY3RTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTZWxlY3RQcmltaXRpdmUuU2VwYXJhdG9yLmRpc3BsYXlOYW1lO1xuXG5leHBvcnQge1xuICBTZWxlY3QsXG4gIFNlbGVjdEdyb3VwLFxuICBTZWxlY3RWYWx1ZSxcbiAgU2VsZWN0VHJpZ2dlcixcbiAgU2VsZWN0Q29udGVudCxcbiAgU2VsZWN0TGFiZWwsXG4gIFNlbGVjdEl0ZW0sXG4gIFNlbGVjdFNlcGFyYXRvcixcbiAgU2VsZWN0U2Nyb2xsVXBCdXR0b24sXG4gIFNlbGVjdFNjcm9sbERvd25CdXR0b24sXG59O1xuIiwgImltcG9ydCB7IERuZENvbnRleHQsIHR5cGUgRHJhZ0VuZEV2ZW50LCBNb3VzZVNlbnNvciwgdXNlU2Vuc29yLCB1c2VTZW5zb3JzIH0gZnJvbSBcIkBkbmQta2l0L2NvcmVcIjtcbmltcG9ydCB7IGFycmF5TW92ZSwgaG9yaXpvbnRhbExpc3RTb3J0aW5nU3RyYXRlZ3ksIFNvcnRhYmxlQ29udGV4dCwgdXNlU29ydGFibGUgfSBmcm9tIFwiQGRuZC1raXQvc29ydGFibGVcIjtcbmltcG9ydCB7IENTUyB9IGZyb20gXCJAZG5kLWtpdC91dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgQWNjZXNzb3JLZXlDb2x1bW5EZWZCYXNlLCBSb3dTZWxlY3Rpb25TdGF0ZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29sdW1uUGlubmluZ1N0YXRlLFxuICB0eXBlIENvbHVtblNpemluZ1N0YXRlLFxuICBnZXRDb3JlUm93TW9kZWwsXG4gIHR5cGUgSGVhZGVyLFxuICB0eXBlIE9uQ2hhbmdlRm4sXG4gIHR5cGUgUGFnaW5hdGlvblN0YXRlLFxuICB0eXBlIFNvcnRpbmdTdGF0ZSxcbiAgdHlwZSBUYWJsZSBhcyBSZWFjdFRhYmxlLFxuICB1c2VSZWFjdFRhYmxlLFxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBSZWFjdFRhYmxlRGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlLWRldnRvb2xzXCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIHR5cGUgQ1NTUHJvcGVydGllcyxcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IFNvcnRPcmRlckl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZGF0YS9hZGFwdGVyXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3NrZWxldG9uXCI7XG5pbXBvcnQgeyBUYWJsZSwgVGFibGVCb2R5LCBUYWJsZUNlbGwsIFRhYmxlSGVhZCwgVGFibGVIZWFkZXIsIFRhYmxlUm93IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdGFibGVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi4vY2VsbC9DZWxsXCI7XG5pbXBvcnQgeyBEYXRhR3JpZEhlYWRlciB9IGZyb20gXCIuL0RhdGFHcmlkSGVhZGVyXCI7XG5pbXBvcnQgeyBEYXRhR3JpZExvYWRpbmdCYXIgfSBmcm9tIFwiLi9EYXRhR3JpZExvYWRpbmdCYXJcIjtcbmltcG9ydCB7IERhdGFHcmlkUGFnaW5hdGlvbiB9IGZyb20gXCIuL0RhdGFHcmlkUGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2ZlYXR1cmVzL2NvbHVtbi1waW5uaW5nXCI7XG5cbi8vIEFkZCB0aGlzIG5ldyBjb21wb25lbnQgZm9yIGRyYWdnYWJsZSBoZWFkZXIgY2VsbHNcbnR5cGUgRHJhZ2dhYmxlSGVhZGVyQ2VsbFByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgaGVhZGVyOiBIZWFkZXI8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHVua25vd24+O1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbiAgdGFibGU6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJlYWN0VGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+Pjtcbn0+O1xuXG5jb25zdCBEcmFnZ2FibGVIZWFkZXJDZWxsID0gKHByb3BzOiBEcmFnZ2FibGVIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBoZWFkZXIsIHN0eWxlOiBjb21tb25TdHlsZSB9ID0gcHJvcHM7XG4gIGNvbnN0IGRpc2FibGVEcmFnZ2luZyA9IFwiZGlzYWJsZURyYWdnaW5nXCIgaW4gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWY7XG5cbiAgY29uc3QgeyBhdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgc2V0Tm9kZVJlZiwgaXNEcmFnZ2luZyB9ID0gdXNlU29ydGFibGUoe1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gIH0pO1xuXG4gIGNvbnN0IGRyYWdTdHlsZSA9IHtcbiAgICAuLi5jb21tb25TdHlsZSxcbiAgICBjdXJzb3I6IFwiZ3JhYlwiLFxuICAgIHRvdWNoQWN0aW9uOiBcIm5vbmVcIixcbiAgICB0cmFuc2Zvcm06IENTUy5UcmFuc2Zvcm0udG9TdHJpbmcodHJhbnNmb3JtKSxcbiAgICB0cmFuc2l0aW9uLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG5cbiAgY29uc3QgY29tbW9uQ2xhc3MgPSBjbihjbGFzc05hbWUsIFwicHMtc2VsZWN0LW5vbmUgcHMtdG91Y2gtbm9uZSBwcy1zdGlja3kgcHMtdG9wLTAgcHMtYmctdGFibGUtaGVhZFwiKTtcbiAgY29uc3QgZHJhZ0NsYXNzID0gY24oY29tbW9uQ2xhc3MsIGlzRHJhZ2dpbmcgJiYgXCIhcHMtei01MCBwcy1ib3JkZXItMiBwcy1ib3JkZXItdmlvbGV0LTUwMFwiKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUhlYWRcbiAgICAgIHJlZj17c2V0Tm9kZVJlZn1cbiAgICAgIHsuLi5hdHRyaWJ1dGVzfVxuICAgICAgey4uLmxpc3RlbmVyc31cbiAgICAgIHN0eWxlPXtkaXNhYmxlRHJhZ2dpbmcgPyBjb21tb25TdHlsZSA6IGRyYWdTdHlsZX1cbiAgICAgIGNsYXNzTmFtZT17ZGlzYWJsZURyYWdnaW5nID8gY29tbW9uQ2xhc3MgOiBkcmFnQ2xhc3N9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9UYWJsZUhlYWQ+XG4gICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUHJvcHMge1xuICBjb2x1bW5EZWZzOiBBY2Nlc3NvcktleUNvbHVtbkRlZkJhc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+W107XG4gIGdldEJlZm9yZVJvd3M/KHRoaXM6IHZvaWQsIHRhYmxlOiBSZWFjdFRhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pik6IFJlYWN0Tm9kZTtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW47XG4gIG9uUGFnaW5hdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxQYWdpbmF0aW9uU3RhdGU+O1xuICBvblJvd1NlbGVjdGlvbkNoYW5nZTogT25DaGFuZ2VGbjxSb3dTZWxlY3Rpb25TdGF0ZT47XG4gIG9uU29ydGluZ0NoYW5nZT86IE9uQ2hhbmdlRm48U29ydE9yZGVySXRlbVtdPjtcbiAgcGFnZUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICByb3dTZWxlY3Rpb25TdGF0ZTogUm93U2VsZWN0aW9uU3RhdGU7XG4gIHNvcnRpbmdTdGF0ZT86IFNvcnRPcmRlckl0ZW1bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGFHcmlkKHByb3BzOiBEYXRhR3JpZFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjb2x1bW5EZWZzLFxuICAgIGdldEJlZm9yZVJvd3MsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzUHJvY2Vzc2luZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlLFxuICAgIHBhZ2VDb3VudCxcbiAgICBwYWdpbmF0aW9uU3RhdGUsXG4gICAgcm93cyxcbiAgICByb3dTZWxlY3Rpb25TdGF0ZSxcbiAgICBzb3J0aW5nU3RhdGUsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBbY29sdW1uT3JkZXIsIHNldENvbHVtbk9yZGVyXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XG4gIGNvbnN0IFtjb2x1bW5QaW5uaW5nLCBzZXRDb2x1bW5QaW5uaW5nXSA9IHVzZVN0YXRlPENvbHVtblBpbm5pbmdTdGF0ZT4oeyBsZWZ0OiBbXCJfX3BzX3NlbGVjdFwiXSwgcmlnaHQ6IFtdIH0pO1xuICBjb25zdCBbY29sdW1uU2l6aW5nLCBzZXRDb2x1bW5TaXppbmddID0gdXNlU3RhdGU8Q29sdW1uU2l6aW5nU3RhdGU+KHt9KTtcbiAgY29uc3Qgc29ydGluZyA9IHVzZU1lbW8oKCkgPT4gdG9Tb3J0aW5nU3RhdGUoc29ydGluZ1N0YXRlKSwgW3NvcnRpbmdTdGF0ZV0pO1xuICBjb25zdCBkaXNwbGF5TG9hZGVyID0gaXNMb2FkaW5nIHx8IGlzUHJvY2Vzc2luZztcblxuICAvLyBSZXNldCBjb2x1bW4gb3JkZXIsIHBpbm5pbmcsIGFuZCBzaXppbmcgd2hlbiBjb2x1bW5EZWZzIGNoYW5nZSAod2hpY2ggaGFwcGVucyB3aGVuIHRhYmxlIGNoYW5nZXMpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Q29sdW1uT3JkZXIoY29sdW1uRGVmcy5tYXAoKHsgYWNjZXNzb3JLZXkgfSkgPT4gYWNjZXNzb3JLZXkpKTtcbiAgICBzZXRDb2x1bW5QaW5uaW5nKHsgbGVmdDogW1wiX19wc19zZWxlY3RcIl0sIHJpZ2h0OiBbXSB9KTtcbiAgICBzZXRDb2x1bW5TaXppbmcoe30pO1xuICB9LCBbY29sdW1uRGVmc10pO1xuXG4gIC8vIGhhbmRsZXMgbW92aW5nIGFuZCByZS1vcmRlcmluZyBvZiB0aGUgY29sdW1ucyBhbmQgc3RhdGVcbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZSwgb3ZlciB9OiBEcmFnRW5kRXZlbnQpIHtcbiAgICBpZiAob3ZlciAmJiBhY3RpdmUuaWQgIT09IG92ZXIuaWQpIHtcbiAgICAgIHNldENvbHVtbk9yZGVyKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IG9yZGVyLmluZGV4T2YoYWN0aXZlLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IG92ZXJJbmRleCA9IG9yZGVyLmluZGV4T2Yob3Zlci5pZCBhcyBzdHJpbmcpO1xuICAgICAgICByZXR1cm4gYXJyYXlNb3ZlKG9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSB0aGUgbW91c2Ugc2Vuc29yIGZvciBkcmFnIGFuZCBkcm9wXG4gIGNvbnN0IG1vdXNlU2Vuc29yID0gdXNlU2Vuc29yKE1vdXNlU2Vuc29yLCB7XG4gICAgLy8gUmVxdWlyZSB0aGUgbW91c2UgdG8gbW92ZSBieSAxMCBwaXhlbHMgYmVmb3JlIGFjdGl2YXRpbmdcbiAgICBhY3RpdmF0aW9uQ29uc3RyYWludDoge1xuICAgICAgZGlzdGFuY2U6IDEwLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBzZW5zb3JzID0gdXNlU2Vuc29ycyhtb3VzZVNlbnNvcik7XG5cbiAgY29uc3QgdGFibGUgPSB1c2VSZWFjdFRhYmxlKHtcbiAgICBjb2x1bW5SZXNpemVNb2RlOiBcIm9uQ2hhbmdlXCIsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBkYXRhOiByb3dzLFxuICAgIGRlZmF1bHRDb2x1bW46IHsgc2l6ZTogMjAwLCBtaW5TaXplOiA1MCwgbWF4U2l6ZTogNTAwIH0sXG4gICAgZW5hYmxlQ29sdW1uUGlubmluZzogdHJ1ZSxcbiAgICBlbmFibGVDb2x1bW5SZXNpemluZzogdHJ1ZSxcbiAgICBlbmFibGVSb3dTZWxlY3Rpb246IHRydWUsXG4gICAgZW5hYmxlU29ydGluZzogQm9vbGVhbihvblNvcnRpbmdDaGFuZ2UgJiYgc29ydGluZ1N0YXRlKSxcbiAgICBnZXRDb3JlUm93TW9kZWw6IGdldENvcmVSb3dNb2RlbCgpLFxuICAgIGdldFJvd0lkOiAoeyBfX3BzX3Jvd2lkIH0pID0+IF9fcHNfcm93aWQgYXMgc3RyaW5nLFxuICAgIG1hbnVhbFBhZ2luYXRpb246IHRydWUsXG4gICAgbWFudWFsU29ydGluZzogdHJ1ZSxcbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlOiBzZXRDb2x1bW5PcmRlcixcbiAgICBvbkNvbHVtblBpbm5pbmdDaGFuZ2U6IHNldENvbHVtblBpbm5pbmcsXG4gICAgb25Db2x1bW5TaXppbmdDaGFuZ2U6IHNldENvbHVtblNpemluZyxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2UsXG4gICAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UsXG4gICAgb25Tb3J0aW5nQ2hhbmdlOiAodXBkYXRlck9yVmFsdWUpID0+XG4gICAgICBvblNvcnRpbmdDaGFuZ2U/Ligob2xkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlck9yVmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHVwZGF0ZXJPclZhbHVlID0gdXBkYXRlck9yVmFsdWUodG9Tb3J0aW5nU3RhdGUob2xkKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9Tb3J0T3JkZXJJdGVtcyh1cGRhdGVyT3JWYWx1ZSk7XG4gICAgICB9KSxcbiAgICBwYWdlQ291bnQsXG4gICAgc3RhdGU6IHtcbiAgICAgIGNvbHVtbk9yZGVyLFxuICAgICAgY29sdW1uUGlubmluZyxcbiAgICAgIGNvbHVtblNpemluZyxcbiAgICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25TdGF0ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uU3RhdGUsXG4gICAgICBzb3J0aW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUT0RPOiBwYXRjaCBzbyBpdCBpcyBub3QgYnVuZGxlZCBsaWtlIHJlYWN0LXF1ZXJ5IGRldnRvb2xzLCBvciByZW1vdmUgY29tcGxldGVseSBvbmNlIGRhdGEgZ3JpZCBpcyBzdGFibGUgYW5kIHRlc3RlZC4gKi99XG4gICAgICB7cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbnVsbCA6IDxSZWFjdFRhYmxlRGV2dG9vbHMgdGFibGU9e3RhYmxlfSAvPn1cbiAgICAgIDxkaXYgZGF0YS1zdHVkaW89XCJjb250ZW50XCIgY2xhc3NOYW1lPVwicHMtZmxleC0xIHBzLXctMCBwcy1oLTAgcHMtbWluLXctZnVsbCBwcy1mbGV4IHBzLWZsZXgtY29sIHBzLXJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXY+e2Rpc3BsYXlMb2FkZXIgJiYgPERhdGFHcmlkTG9hZGluZ0JhciBjbGFzc05hbWU9XCJwcy1hYnNvbHV0ZSAtcHMtdG9wLVsxcHhdIHBzLWxlZnQtMCBwcy1yaWdodC0wXCIgLz59PC9kaXY+XG4gICAgICAgIDxEbmRDb250ZXh0IHNlbnNvcnM9e3NlbnNvcnN9IG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH0+XG4gICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT1cInBzLXRhYmxlLWZpeGVkIHBzLWJvcmRlci1zZXBhcmF0ZSBwcy1ib3JkZXItc3BhY2luZy0wIHBzLWJveC1ib3JkZXIgcHMtdy1hdXRvXCI+XG4gICAgICAgICAgICA8VGFibGVIZWFkZXI+XG4gICAgICAgICAgICAgIHt0YWJsZS5nZXRIZWFkZXJHcm91cHMoKS5tYXAoKGhlYWRlckdyb3VwKSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93IGtleT17aGVhZGVyR3JvdXAuaWR9PlxuICAgICAgICAgICAgICAgICAgPFNvcnRhYmxlQ29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpdGVtcz17aGVhZGVyR3JvdXAuaGVhZGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGhlYWRlcikgPT4gIShcImRpc2FibGVEcmFnZ2luZ1wiIGluIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmKSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKChoZWFkZXIpID0+IGhlYWRlci5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXtob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlckdyb3VwLmhlYWRlcnMubWFwKChoZWFkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHNlbGVjdCBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyLmNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGhlYWRlciBmdW5jdGlvbiBkaXJlY3RseSwgd2hpY2ggc2hvdWxkIGJlIFNlbGVjdEhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlckZuID0gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBoZWFkZXJGbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhlYWRlckNvbXBvbmVudCA9IGhlYWRlckZuKGhlYWRlci5nZXRDb250ZXh0KCkpIGFzIHVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIEhlYWRlckNvbXBvbmVudCBpcyBhIGZ1bmN0aW9uIChuZXcgYXBwcm9hY2ggd2l0aCBwcm9wcyBmb3J3YXJkaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEhlYWRlckNvbXBvbmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGlubmluZ1N0eWxlcyA9IGdldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmluZ1N0eWxlcy5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwaW5uaW5nU3R5bGVzLnN0eWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7SGVhZGVyQ29tcG9uZW50KHt9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVIZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSGVhZGVyQ29tcG9uZW50IGlzIGEgZGlyZWN0IEpTWCBlbGVtZW50IChvbGQgYXBwcm9hY2gpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcy1zZWxlY3Qtbm9uZSBwcy10b3VjaC1ub25lIHBzLXN0aWNreSBwcy10b3AtMCBwcy1iZy10YWJsZS1oZWFkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e2dldENvbHVtblBpbm5pbmdTdHlsZXMoaGVhZGVyLmNvbHVtbiwgXCJoZWFkZXJcIikuc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0hlYWRlckNvbXBvbmVudCBhcyBKU1guRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIC8vIFJlZ3VsYXIgY29sdW1ucyB1c2UgdGhlIGRyYWdnYWJsZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERyYWdnYWJsZUhlYWRlckNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXIuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcj17aGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGhlYWRlci5jb2x1bW4sIFwiaGVhZGVyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkZXIgaGVhZGVyPXtoZWFkZXJ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0RyYWdnYWJsZUhlYWRlckNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1NvcnRhYmxlQ29udGV4dD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvVGFibGVIZWFkZXI+XG4gICAgICAgICAgICA8VGFibGVCb2R5PlxuICAgICAgICAgICAgICB7Z2V0QmVmb3JlUm93cz8uKHRhYmxlKX1cbiAgICAgICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIHRhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgICAgICAgICAgIFwicHMtYmctdGFibGUtcm93IHBzLW9kZDpiZy10YWJsZS1yb3ctb2RkIHBzLWdyb3VwIFsmOmxhc3Qtb2YtdHlwZV90ZF06cHMtYm9yZGVyLWItMCBwcy1ncm91cFwiLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBDZWxsID0gQ29tcG9uZW50VHlwZTxPbWl0PENlbGxQcm9wcywgXCJjaGlsZHJlblwiIHwgXCJyZWZcIj4+O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2VsbCA9IGNlbGwuY29sdW1uLmNvbHVtbkRlZi5jZWxsKGNlbGwuZ2V0Q29udGV4dCgpKSBhcyBDZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPENlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldENvbHVtblBpbm5pbmdTdHlsZXMoY2VsbC5jb2x1bW4sIFwiY2VsbFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cC1vZGQ6cHMtYmctbmV1dHJhbC01MCBncm91cC1ldmVuOnBzLWJnLXdoaXRlIGdyb3VwLWhvdmVyOnBzLWJnLW5ldXRyYWwtMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGwga2V5PXtjZWxsLmlkfSB7Li4uZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyhjZWxsLmNvbHVtbiwgXCJjZWxsXCIpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VsbC5nZXRWYWx1ZSgpIGFzIFJlYWN0Tm9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlUm93PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXtjb2x1bW5EZWZzLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicHMtaC0yNCBwcy10ZXh0LWxlZnQgcHMtcC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwicHMtaC00IHBzLXctNC81XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTQgcHMtdy0yLzNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGFibGVCb2R5PlxuICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgeyFwYWdlQ291bnQgfHwgcGFnZUNvdW50IDwgMiA/IG51bGwgOiA8RGF0YUdyaWRQYWdpbmF0aW9uIHRhYmxlPXt0YWJsZX0gdmFyaWFudD1cIm51bWVyaWNcIiAvPn1cblxuICAgICAgICA8QW5pbWF0ZVByZXNlbmNlIG1vZGU9XCJ3YWl0XCI+XG4gICAgICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cz8ubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgJiYgIWlzUHJvY2Vzc2luZyAmJiAoXG4gICAgICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWNlbnRlciBwcy1hYnNvbHV0ZSAtcHMtaW5zZXQtMCBwcy1wb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXNtIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPk5vIHJlc3VsdHMgZm91bmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICBJdCBkb2VzbiZhcG9zO3QgbG9vayBsaWtlIHlvdSBoYXZlIGFueSBkYXRhIGluIHRoaXMgdGFibGUuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59XG5cbmZ1bmN0aW9uIHRvU29ydGluZ1N0YXRlKGZyb206IFNvcnRPcmRlckl0ZW1bXSB8IHVuZGVmaW5lZCk6IFNvcnRpbmdTdGF0ZSB7XG4gIHJldHVybiBmcm9tPy5tYXAoKGl0ZW0pID0+ICh7IGlkOiBpdGVtLmNvbHVtbiwgZGVzYzogaXRlbS5kaXJlY3Rpb24gPT09IFwiZGVzY1wiIH0pKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gdG9Tb3J0T3JkZXJJdGVtcyhmcm9tOiBTb3J0aW5nU3RhdGUpOiBTb3J0T3JkZXJJdGVtW10ge1xuICByZXR1cm4gZnJvbS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgY29sdW1uOiBpdGVtLmlkLFxuICAgIGRpcmVjdGlvbjogaXRlbS5kZXNjID8gXCJkZXNjXCIgOiBcImFzY1wiLFxuICB9KSk7XG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBnZXRJdGVtID0gKGtleTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgaXRlbVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KVxuICAgIGlmICh0eXBlb2YgaXRlbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoaXRlbVZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMb2NhbFN0b3JhZ2U8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZhdWx0VmFsdWU6IFQgfCB1bmRlZmluZWRcbik6IFtUIHwgdW5kZWZpbmVkLCAobmV3VmFsOiBUIHwgKChwcmV2VmFsOiBUKSA9PiBUKSkgPT4gdm9pZF0ge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlPFQ+KClcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldEl0ZW0oa2V5KSBhcyBUIHwgdW5kZWZpbmVkXG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaW5pdGlhbFZhbHVlID09PSBudWxsKSB7XG4gICAgICBzZXRWYWx1ZShcbiAgICAgICAgdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWZhdWx0VmFsdWUsIGtleV0pXG5cbiAgY29uc3Qgc2V0dGVyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZXI6IGFueSkgPT4ge1xuICAgICAgc2V0VmFsdWUob2xkID0+IHtcbiAgICAgICAgbGV0IG5ld1ZhbCA9IHVwZGF0ZXJcblxuICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG5ld1ZhbCA9IHVwZGF0ZXIob2xkKVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxuICAgICAgICB9IGNhdGNoIHt9XG5cbiAgICAgICAgcmV0dXJuIG5ld1ZhbFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtrZXldXG4gIClcblxuICByZXR1cm4gW3ZhbHVlLCBzZXR0ZXJdXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoZW1lID0ge1xuICBiYWNrZ3JvdW5kOiAnIzBiMTUyMScsXG4gIGJhY2tncm91bmRBbHQ6ICcjMTMyMzM3JyxcbiAgZm9yZWdyb3VuZDogJ3doaXRlJyxcbiAgZ3JheTogJyMzZjRlNjAnLFxuICBncmF5QWx0OiAnIzIyMmUzZScsXG4gIGlucHV0QmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gIGlucHV0VGV4dENvbG9yOiAnIzAwMCcsXG4gIHN1Y2Nlc3M6ICcjMDBhYjUyJyxcbiAgZGFuZ2VyOiAnI2ZmMDA4NScsXG4gIGFjdGl2ZTogJyMwMDZiZmYnLFxuICB3YXJuaW5nOiAnI2ZmYjIwMCcsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFRoZW1lID0gdHlwZW9mIGRlZmF1bHRUaGVtZVxuaW50ZXJmYWNlIFByb3ZpZGVyUHJvcHMge1xuICB0aGVtZTogVGhlbWVcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuY29uc3QgVGhlbWVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0VGhlbWUpXG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHsgdGhlbWUsIC4uLnJlc3QgfTogUHJvdmlkZXJQcm9wcykge1xuICByZXR1cm4gPFRoZW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhlbWV9IHsuLi5yZXN0fSAvPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbn1cbiIsICJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU1lZGlhUXVlcnkocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBwcmVmZXJlbmNlIGluIHN0YXRlLCBzdGFydCB3aXRoIHRoZSBjdXJyZW50IG1hdGNoXG4gIGNvbnN0IFtpc01hdGNoLCBzZXRJc01hdGNoXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlc1xuICAgIH1cbiAgfSlcblxuICAvLyBXYXRjaCBmb3IgY2hhbmdlc1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKCF3aW5kb3cubWF0Y2hNZWRpYSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGEgbWF0Y2hlclxuICAgICAgY29uc3QgbWF0Y2hlciA9IHdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KVxuXG4gICAgICAvLyBDcmVhdGUgb3VyIGhhbmRsZXJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gKHsgbWF0Y2hlcyB9OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT5cbiAgICAgICAgc2V0SXNNYXRjaChtYXRjaGVzKVxuXG4gICAgICAvLyBMaXN0ZW4gZm9yIGNoYW5nZXNcbiAgICAgIG1hdGNoZXIuYWRkTGlzdGVuZXIob25DaGFuZ2UpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciBjaGFuZ2VzXG4gICAgICAgIG1hdGNoZXIucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNNYXRjaCwgcXVlcnksIHNldElzTWF0Y2hdKVxuXG4gIHJldHVybiBpc01hdGNoXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBUaGVtZSwgdXNlVGhlbWUgfSBmcm9tICcuL3RoZW1lJ1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSAnLi91c2VNZWRpYVF1ZXJ5J1xuXG5jb25zdCBpc1NlcnZlciA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnXG5cbnR5cGUgU3R5bGVkQ29tcG9uZW50PFQ+ID0gVCBleHRlbmRzICdidXR0b24nXG4gID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgICBIVE1MQnV0dG9uRWxlbWVudFxuICAgID5cbiAgOiBUIGV4dGVuZHMgJ2lucHV0J1xuICAgID8gUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEhUTUxJbnB1dEVsZW1lbnRcbiAgICAgID5cbiAgICA6IFQgZXh0ZW5kcyAnc2VsZWN0J1xuICAgICAgPyBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICAgICAgICBSZWFjdC5TZWxlY3RIVE1MQXR0cmlidXRlczxIVE1MU2VsZWN0RWxlbWVudD4sXG4gICAgICAgICAgSFRNTFNlbGVjdEVsZW1lbnRcbiAgICAgICAgPlxuICAgICAgOiBUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwXG4gICAgICAgID8gUmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdPlxuICAgICAgICA6IG5ldmVyXG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihtYXRjaDogUm91dGVNYXRjaCwgdGhlbWU6IFRoZW1lKSB7XG4vLyAgIHJldHVybiBtYXRjaC5pc0xvYWRpbmdcbi8vICAgICA/IHRoZW1lLmFjdGl2ZVxuLy8gICAgIDogbWF0Y2guc3RhdHVzID09PSAncmVqZWN0ZWQnXG4vLyAgICAgPyB0aGVtZS5kYW5nZXJcbi8vICAgICA6IG1hdGNoLnN0YXR1cyA9PT0gJ3BlbmRpbmcnXG4vLyAgICAgPyB0aGVtZS53YXJuaW5nXG4vLyAgICAgOiB0aGVtZS5zdWNjZXNzXG4vLyB9XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVN0YXR1c0xhYmVsKHF1ZXJ5OiBRdWVyeSkge1xuLy8gICByZXR1cm4gcXVlcnkuc3RhdGUuaXNGZXRjaGluZ1xuLy8gICAgID8gJ2ZldGNoaW5nJ1xuLy8gICAgIDogIXF1ZXJ5LmdldE9ic2VydmVyc0NvdW50KClcbi8vICAgICA/ICdpbmFjdGl2ZSdcbi8vICAgICA6IHF1ZXJ5LmlzU3RhbGUoKVxuLy8gICAgID8gJ3N0YWxlJ1xuLy8gICAgIDogJ2ZyZXNoJ1xuLy8gfVxuXG50eXBlIFN0eWxlcyA9XG4gIHwgUmVhY3QuQ1NTUHJvcGVydGllc1xuICB8ICgocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRoZW1lOiBUaGVtZSkgPT4gUmVhY3QuQ1NTUHJvcGVydGllcylcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlZDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgdHlwZTogVCxcbiAgbmV3U3R5bGVzOiBTdHlsZXMsXG4gIHF1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFN0eWxlcz4gPSB7fVxuKSB7XG4gIHJldHVybiBSZWFjdC5mb3J3YXJkUmVmPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXSwgU3R5bGVkQ29tcG9uZW50PFQ+PihcbiAgICAoeyBzdHlsZSwgLi4ucmVzdCB9LCByZWYpID0+IHtcbiAgICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuXG4gICAgICBjb25zdCBtZWRpYVN0eWxlcyA9IE9iamVjdC5lbnRyaWVzKHF1ZXJpZXMpLnJlZHVjZShcbiAgICAgICAgKGN1cnJlbnQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICAgIHJldHVybiB1c2VNZWRpYVF1ZXJ5KGtleSlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgLi4uKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHJlc3QsIHRoZW1lKSA6IHZhbHVlKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBjdXJyZW50XG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHR5cGUsIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG5ld1N0eWxlcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBuZXdTdHlsZXMocmVzdCwgdGhlbWUpXG4gICAgICAgICAgICA6IG5ld1N0eWxlcyksXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgICAgLi4ubWVkaWFTdHlsZXMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZixcbiAgICAgIH0pXG4gICAgfVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJc01vdW50ZWQoKSB7XG4gIGNvbnN0IG1vdW50ZWRSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1vdW50ZWRSZWYuY3VycmVudCwgW10pXG5cbiAgUmVhY3RbaXNTZXJ2ZXIgPyAndXNlRWZmZWN0JyA6ICd1c2VMYXlvdXRFZmZlY3QnXSgoKSA9PiB7XG4gICAgbW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBtb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfSwgW10pXG5cbiAgcmV0dXJuIGlzTW91bnRlZFxufVxuXG4vKipcbiAqIFRoaXMgaG9vayBpcyBhIHNhZmUgdXNlU3RhdGUgdmVyc2lvbiB3aGljaCBzY2hlZHVsZXMgc3RhdGUgdXBkYXRlcyBpbiBtaWNyb3Rhc2tzXG4gKiB0byBwcmV2ZW50IHVwZGF0aW5nIGEgY29tcG9uZW50IHN0YXRlIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZyBkaWZmZXJlbnQgY29tcG9uZW50c1xuICogb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBtb3VudGVkIGFueW1vcmUuXG4gKi9cbmZ1bmN0aW9uIHVzZVNhZmVTdGF0ZTxUPihpbml0aWFsU3RhdGU6IFQpOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gIGNvbnN0IGlzTW91bnRlZCA9IHVzZUlzTW91bnRlZCgpXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKVxuXG4gIGNvbnN0IHNhZmVTZXRTdGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgICh2YWx1ZTogVCkgPT4ge1xuICAgICAgc2NoZWR1bGVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBpZiAoaXNNb3VudGVkKCkpIHtcbiAgICAgICAgICBzZXRTdGF0ZSh2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtpc01vdW50ZWRdXG4gIClcblxuICByZXR1cm4gW3N0YXRlLCBzYWZlU2V0U3RhdGVdXG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgbWljcm90YXNrLlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHNjaGVkdWxlIHN0YXRlIHVwZGF0ZXMgYWZ0ZXIgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiBzY2hlZHVsZU1pY3JvdGFzayhjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChlcnJvciA9PlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbn1cbiIsICJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgUGFuZWwgPSBzdHlsZWQoXG4gICdkaXYnLFxuICAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgICBmb250U2l6ZTogJ2NsYW1wKDEycHgsIDEuNXZ3LCAxNHB4KScsXG4gICAgZm9udEZhbWlseTogYHNhbnMtc2VyaWZgLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmJhY2tncm91bmQsXG4gICAgY29sb3I6IHRoZW1lLmZvcmVncm91bmQsXG4gIH0pLFxuICB7XG4gICAgJyhtYXgtd2lkdGg6IDcwMHB4KSc6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIH0sXG4gICAgJyhtYXgtd2lkdGg6IDYwMHB4KSc6IHtcbiAgICAgIGZvbnRTaXplOiAnLjllbScsXG4gICAgICAvLyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9LFxuICB9XG4pXG5cbmNvbnN0IEFjdGl2ZVBhbmVsID0gc3R5bGVkKFxuICAnZGl2JyxcbiAgKCkgPT4gKHtcbiAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgfSksXG4gIHtcbiAgICAnKG1heC13aWR0aDogNzAwcHgpJzogKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgICBib3JkZXJUb3A6IGAycHggc29saWQgJHt0aGVtZS5ncmF5fWAsXG4gICAgfSksXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IHN0eWxlZCgnYnV0dG9uJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgYXBwZWFyYW5jZTogJ25vbmUnLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIGJhY2tncm91bmQ6IHRoZW1lLmdyYXksXG4gIGJvcmRlcjogJzAnLFxuICBib3JkZXJSYWRpdXM6ICcuM2VtJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIHBhZGRpbmc6ICcuNWVtJyxcbiAgb3BhY2l0eTogcHJvcHMuZGlzYWJsZWQgPyAnLjUnIDogdW5kZWZpbmVkLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbn0pKVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXlzID0gc3R5bGVkKCdzcGFuJywge1xuLy8gICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbi8vICAgZm9udFNpemU6ICcwLjllbScsXG4vLyB9KVxuXG4vLyBleHBvcnQgY29uc3QgUXVlcnlLZXkgPSBzdHlsZWQoJ3NwYW4nLCB7XG4vLyAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4vLyAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuLy8gICBwYWRkaW5nOiAnLjJlbSAuNGVtJyxcbi8vICAgZm9udFdlaWdodDogJ2JvbGQnLFxuLy8gICB0ZXh0U2hhZG93OiAnMCAwIDEwcHggYmxhY2snLFxuLy8gICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbi8vIH0pXG5cbmNvbnN0IENvZGUgPSBzdHlsZWQoJ2NvZGUnLCB7XG4gIGZvbnRTaXplOiAnLjllbScsXG59KVxuXG5jb25zdCBJbnB1dCA9IHN0eWxlZCgnaW5wdXQnLCAoX3Byb3BzLCB0aGVtZSkgPT4gKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5pbnB1dEJhY2tncm91bmRDb2xvcixcbiAgYm9yZGVyOiAwLFxuICBib3JkZXJSYWRpdXM6ICcuMmVtJyxcbiAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICBmb250U2l6ZTogJy45ZW0nLFxuICBsaW5lSGVpZ2h0OiBgMS4zYCxcbiAgcGFkZGluZzogJy4zZW0gLjRlbScsXG59KSlcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkKFxuICAnc2VsZWN0JyxcbiAgKF9wcm9wcywgdGhlbWUpID0+ICh7XG4gICAgZGlzcGxheTogYGlubGluZS1ibG9ja2AsXG4gICAgZm9udFNpemU6IGAuOWVtYCxcbiAgICBmb250RmFtaWx5OiBgc2Fucy1zZXJpZmAsXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgbGluZUhlaWdodDogYDEuM2AsXG4gICAgcGFkZGluZzogYC4zZW0gMS41ZW0gLjNlbSAuNWVtYCxcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICBib3JkZXI6IDAsXG4gICAgYm9yZGVyUmFkaXVzOiBgLjJlbWAsXG4gICAgYXBwZWFyYW5jZTogYG5vbmVgLFxuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmlucHV0QmFja2dyb3VuZENvbG9yLFxuICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nJTIzNDQ0NDQ0Jz48cG9seWdvbiBwb2ludHM9JzAsMjUgMTAwLDI1IDUwLDc1Jy8+PC9zdmc+XCIpYCxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiBgbm8tcmVwZWF0YCxcbiAgICBiYWNrZ3JvdW5kUG9zaXRpb246IGByaWdodCAuNTVlbSBjZW50ZXJgLFxuICAgIGJhY2tncm91bmRTaXplOiBgLjY1ZW0gYXV0bywgMTAwJWAsXG4gICAgY29sb3I6IHRoZW1lLmlucHV0VGV4dENvbG9yLFxuICB9KSxcbiAge1xuICAgICcobWF4LXdpZHRoOiA1MDBweCknOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgfSxcbiAgfVxuKVxuIiwgIi8vIEB0cy1ub2NoZWNrXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRW50cnkgPSBzdHlsZWQoJ2RpdicsIHtcbiAgZm9udEZhbWlseTogJ01lbmxvLCBtb25vc3BhY2UnLFxuICBmb250U2l6ZTogJzAuN3JlbScsXG4gIGxpbmVIZWlnaHQ6ICcxLjcnLFxuICBvdXRsaW5lOiAnbm9uZScsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufSlcblxuY29uc3QgTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBjb2xvcjogJ3doaXRlJyxcbn0pXG5cbmNvbnN0IFZhbHVlID0gc3R5bGVkKCdzcGFuJywgKHByb3BzLCB0aGVtZSkgPT4gKHtcbiAgY29sb3I6IHRoZW1lLmRhbmdlcixcbn0pKVxuXG5jb25zdCBTdWJFbnRyaWVzID0gc3R5bGVkKCdkaXYnLCB7XG4gIG1hcmdpbkxlZnQ6ICcuMXJlbScsXG4gIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gIGJvcmRlckxlZnQ6ICcycHggc29saWQgcmdiYSgwLDAsMCwuMTUpJyxcbn0pXG5cbmNvbnN0IEluZm8gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIGNvbG9yOiAnZ3JleScsXG4gIGZvbnRTaXplOiAnLjdyZW0nLFxufSlcblxuY29uc3QgRXhwYW5kZXIgPSAoeyBleHBhbmRlZCwgc3R5bGUgPSB7fSwgLi4ucmVzdCB9KSA9PiAoXG4gIDxzcGFuXG4gICAgc3R5bGU9e3tcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgdHJhbnNpdGlvbjogJ2FsbCAuMXMgZWFzZScsXG4gICAgICB0cmFuc2Zvcm06IGByb3RhdGUoJHtleHBhbmRlZCA/IDkwIDogMH1kZWcpICR7c3R5bGUudHJhbnNmb3JtIHx8ICcnfWAsXG4gICAgICAuLi5zdHlsZSxcbiAgICB9fVxuICA+XG4gICAg4pa2XG4gIDwvc3Bhbj5cbilcblxuY29uc3QgRGVmYXVsdFJlbmRlcmVyID0gKHtcbiAgaGFuZGxlRW50cnksXG4gIGxhYmVsLFxuICB2YWx1ZSxcbiAgLy8gcGF0aCxcbiAgc3ViRW50cmllcyxcbiAgc3ViRW50cnlQYWdlcyxcbiAgdHlwZSxcbiAgLy8gZGVwdGgsXG4gIGV4cGFuZGVkLFxuICB0b2dnbGUsXG4gIHBhZ2VTaXplLFxuICByZW5kZXJlcixcbn0pID0+IHtcbiAgY29uc3QgW3ZhbHVlU25hcHNob3QsIHNldFZhbHVlU25hcHNob3RdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKVxuICBjb25zdCBbZXhwYW5kZWRQYWdlcywgc2V0RXhwYW5kZWRQYWdlc10gPSBSZWFjdC51c2VTdGF0ZShbXSlcblxuICBjb25zdCByZWZyZXNoVmFsdWVTbmFwc2hvdCA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZVNuYXBzaG90KHZhbHVlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxFbnRyeSBrZXk9e2xhYmVsfT5cbiAgICAgIHtzdWJFbnRyeVBhZ2VzPy5sZW5ndGggPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsIG9uQ2xpY2s9eygpID0+IHRvZ2dsZSgpfT5cbiAgICAgICAgICAgIDxFeHBhbmRlciBleHBhbmRlZD17ZXhwYW5kZWR9IC8+IHtsYWJlbH17JyAnfVxuICAgICAgICAgICAgPEluZm8+XG4gICAgICAgICAgICAgIHtTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKSA9PT0gJ2l0ZXJhYmxlJyA/ICcoSXRlcmFibGUpICcgOiAnJ31cbiAgICAgICAgICAgICAge3N1YkVudHJpZXMubGVuZ3RofSB7c3ViRW50cmllcy5sZW5ndGggPiAxID8gYGl0ZW1zYCA6IGBpdGVtYH1cbiAgICAgICAgICAgIDwvSW5mbz5cbiAgICAgICAgICA8L0xhYmVsPlxuICAgICAgICAgIHtleHBhbmRlZCA/IChcbiAgICAgICAgICAgIHN1YkVudHJ5UGFnZXMubGVuZ3RoID09PSAxID8gKFxuICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICB7c3ViRW50cmllcy5tYXAoZW50cnkgPT4gaGFuZGxlRW50cnkoZW50cnkpKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFN1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAge3N1YkVudHJ5UGFnZXMubWFwKChlbnRyaWVzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgPEVudHJ5PlxuICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhwYW5kZWRQYWdlcyhvbGQgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQuaW5jbHVkZXMoaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9sZC5maWx0ZXIoZCA9PiBkICE9PSBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWy4uLm9sZCwgaW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSAvPiBbe2luZGV4ICogcGFnZVNpemV9IC4uLnsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggKiBwYWdlU2l6ZSArIHBhZ2VTaXplIC0gMX1dXG4gICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWRQYWdlcy5pbmNsdWRlcyhpbmRleCkgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3ViRW50cmllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge2VudHJpZXMubWFwKGVudHJ5ID0+IGhhbmRsZUVudHJ5KGVudHJ5KSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N1YkVudHJpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIDwvRW50cnk+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdWJFbnRyaWVzPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiB0eXBlID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgcmVuZGVyZXI9e3JlbmRlcmVyfVxuICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e3JlZnJlc2hWYWx1ZVNuYXBzaG90fT5cbiAgICAgICAgICAgICAgICA8TGFiZWw+e2xhYmVsfTwvTGFiZWw+IPCflIR7JyAnfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZVNuYXBzaG90fVxuICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXt7fX1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPExhYmVsPntsYWJlbH06PC9MYWJlbD57JyAnfVxuICAgICAgICAgIDxWYWx1ZT5cbiAgICAgICAgICAgIHtKU09OLnN0cmluZ2lmeSh2YWx1ZSwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0KHZhbHVlKSkpfVxuICAgICAgICAgIDwvVmFsdWU+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0VudHJ5PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEV4cGxvcmVyKHtcbiAgdmFsdWUsXG4gIGRlZmF1bHRFeHBhbmRlZCxcbiAgcmVuZGVyZXIgPSBEZWZhdWx0UmVuZGVyZXIsXG4gIHBhZ2VTaXplID0gMTAwLFxuICBkZXB0aCA9IDAsXG4gIC4uLnJlc3Rcbn0pIHtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0RXhwYW5kZWQpXG5cbiAgY29uc3QgdG9nZ2xlID0gc2V0ID0+IHtcbiAgICBzZXRFeHBhbmRlZChvbGQgPT4gKHR5cGVvZiBzZXQgIT09ICd1bmRlZmluZWQnID8gc2V0IDogIW9sZCkpXG4gIH1cblxuICBjb25zdCBwYXRoID0gW11cblxuICBsZXQgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuICBsZXQgc3ViRW50cmllc1xuICBjb25zdCBzdWJFbnRyeVBhZ2VzID0gW11cblxuICBjb25zdCBtYWtlUHJvcGVydHkgPSBzdWIgPT4ge1xuICAgIGNvbnN0IG5ld1BhdGggPSBwYXRoLmNvbmNhdChzdWIubGFiZWwpXG4gICAgY29uc3Qgc3ViRGVmYXVsdEV4cGFuZGVkID1cbiAgICAgIGRlZmF1bHRFeHBhbmRlZCA9PT0gdHJ1ZVxuICAgICAgICA/IHsgW3N1Yi5sYWJlbF06IHRydWUgfVxuICAgICAgICA6IGRlZmF1bHRFeHBhbmRlZD8uW3N1Yi5sYWJlbF1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgc3ViUGF0aDogc3ViLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIGRlcHRoOiBkZXB0aCArIDEsXG4gICAgICBkZWZhdWx0RXhwYW5kZWQ6IHN1YkRlZmF1bHRFeHBhbmRlZCxcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0eXBlID0gJ2FycmF5J1xuICAgIHN1YkVudHJpZXMgPSB2YWx1ZS5tYXAoKGQsIGkpID0+XG4gICAgICBtYWtlUHJvcGVydHkoe1xuICAgICAgICBsYWJlbDogaSxcbiAgICAgICAgdmFsdWU6IGQsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0eXBlID0gJ0l0ZXJhYmxlJ1xuICAgIHN1YkVudHJpZXMgPSBBcnJheS5mcm9tKHZhbHVlLCAodmFsLCBpKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWw6IGksXG4gICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICB9KVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0eXBlID0gJ2Z1bmN0aW9uJ1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICB0eXBlID0gJ29iamVjdCdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgc3ViRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PlxuICAgICAgbWFrZVByb3BlcnR5KHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpZiAoc3ViRW50cmllcykge1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdWJFbnRyaWVzLmxlbmd0aCkge1xuICAgICAgc3ViRW50cnlQYWdlcy5wdXNoKHN1YkVudHJpZXMuc2xpY2UoaSwgaSArIHBhZ2VTaXplKSlcbiAgICAgIGkgPSBpICsgcGFnZVNpemVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIoe1xuICAgIGhhbmRsZUVudHJ5OiBlbnRyeSA9PiAoXG4gICAgICA8RXhwbG9yZXIga2V5PXtlbnRyeS5sYWJlbH0gcmVuZGVyZXI9e3JlbmRlcmVyfSB7Li4ucmVzdH0gey4uLmVudHJ5fSAvPlxuICAgICksXG4gICAgdHlwZSxcbiAgICBzdWJFbnRyaWVzLFxuICAgIHN1YkVudHJ5UGFnZXMsXG4gICAgZGVwdGgsXG4gICAgdmFsdWUsXG4gICAgcGF0aCxcbiAgICBleHBhbmRlZCxcbiAgICB0b2dnbGUsXG4gICAgcGFnZVNpemUsXG4gICAgLi4ucmVzdCxcbiAgfSlcbn1cbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTG9nbyhwcm9wczogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9XCI0MHB4XCJcbiAgICAgIGhlaWdodD1cIjQwcHhcIlxuICAgICAgdmlld0JveD1cIjAgMCAxOTAgMTkwXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIHN0cm9rZT1cIm5vbmVcIiBzdHJva2VXaWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICA8ZyBpZD1cIm9nLXdoaXRlXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yOC4wMDAwMDAsIC0yMS4wMDAwMDApXCI+XG4gICAgICAgICAgPGcgaWQ9XCJHcm91cC0yXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI4LjAwMDAwMCwgMzEuMDAwMDAwKVwiPlxuICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjAwMDAwMCwgMTAuMDAwMDAwKVwiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMzkuNzIzOTcxMiw1MS4zNDM2MjM3IEMzNi42MzEyMjQsMzYuMzYyODc3IDM1Ljk2NzUxMTIsMjQuODcyNzcyMiAzNy45NjY2MzMxLDE2LjUyOTM1NTEgQzM5LjE1NTU5NjUsMTEuNTY3MTY3OCA0MS4zMjkzMDg4LDcuNTE5MDg0NjIgNDQuNjM0NjA2NCw0LjU5ODQ2MzA1IEM0OC4xMjQxMzk0LDEuNTE1MDQ3NzcgNTIuNTM2MDMyNywwLjAwMjAxMjE2NjA2IDU3LjQ5MzI1NywwLjAwMjAxMjE2NjA2IEM2NS42NzEyMDEzLDAuMDAyMDEyMTY2MDYgNzQuMjY4MjYwMiwzLjcyNzMyMTQzIDgzLjQ1NTcyNDYsMTAuODA0NDI2NCBDODcuMjAzMTIwMywxMy42OTEwNDU4IDkxLjA5MjQzNjYsMTcuMTcwNDExIDk1LjEzMTY1MTUsMjEuMjQ0NDc0NiBDOTUuNDUzMTQwNCwyMC44MzEwMjY1IDk1LjgxNjU0MTYsMjAuNDQxMDQ1MyA5Ni4yMjE0MzAxLDIwLjA4MDYxNTIgQzEwNy42NDA5OCw5LjkxNDk3MTU4IDExNy4yNTUyNDUsMy41OTg5MjcxNiAxMjUuNDc4NDA4LDEuMTYzNjUwNjggQzEzMC4zNjc4OTksLTAuMjg0MzY0MDA1IDEzNC45NTg1MjYsLTAuNDIyMzE3OTc4IDEzOS4xMzg5MzYsMC45ODMwMzEwMjEgQzE0My41NTE2MzEsMi40NjY0Njg0NCAxNDcuMDY3NjYsNS41MzI5NDg4OCAxNDkuNTQ4MzE0LDkuODI4MTA5MTIgQzE1My42NDIyODgsMTYuOTE2NjczNSAxNTQuNzIxOTE4LDI2LjIzMTA5ODMgMTUzLjE5NTU5NSwzNy43MzIwMjQzIEMxNTIuNTczNDUxLDQyLjQxOTkxMTIgMTUxLjUwOTg1LDQ3LjUyNjM4MzEgMTUwLjAwNzA5NCw1My4wNTkzMTUzIEMxNTAuNTc0MDQ1LDUzLjEyNzcwODYgMTUxLjE0MjQxNiw1My4yNTMyODA4IDE1MS43MDUwNDEsNTMuNDM5NTI5NyBDMTY2LjE5MzkzMiw1OC4yMzU4Njc4IDE3Ni40NTM1ODIsNjMuMzkzNzQ2MiAxODIuNjY1MDIxLDY5LjI4ODI4MzkgQzE4Ni4zNjA2NjksNzIuNzk1MzgzMSAxODguNzczOTcyLDc2LjY5OTg0MzQgMTg5LjY0NjM2NSw4MS4wMjE4MjA0IEMxOTAuNTY3MTc2LDg1LjU4MzY3NDYgMTg5LjY2OTMxMyw5MC4xNTkzMzE2IDE4Ny4xOTE1NDgsOTQuNDUxMjk2NyBDMTgzLjEwNTIxMSwxMDEuNTI5NjE0IDE3NS41OTE2NDMsMTA3LjExMjIxIDE2NC44ODc1ODcsMTExLjUzNDAzMSBDMTYwLjU4OTU1MiwxMTMuMzA5NTM5IDE1NS43MjY1NzksMTE0LjkxNzU1OSAxNTAuMjkzMjU5LDExNi4zNjM3NDggQzE1MC41NDExNzYsMTE2LjkyMjkyIDE1MC43MzM1MjEsMTE3LjUxNjc1OSAxNTAuODYyMTM4LDExOC4xMzk3NTggQzE1My45NTQ4ODYsMTMzLjEyMDUwNSAxNTQuNjE4NTk4LDE0NC42MTA2MSAxNTIuNjE5NDc3LDE1Mi45NTQwMjcgQzE1MS40MzA1MTMsMTU3LjkxNjIxNCAxNDkuMjU2ODAxLDE2MS45NjQyOTcgMTQ1Ljk1MTUwMywxNjQuODg0OTE5IEMxNDIuNDYxOTcsMTY3Ljk2ODMzNCAxMzguMDUwMDc3LDE2OS40ODEzNyAxMzMuMDkyODUzLDE2OS40ODEzNyBDMTI0LjkxNDkwOCwxNjkuNDgxMzcgMTE2LjMxNzg1LDE2NS43NTYwNjEgMTA3LjEzMDM4NSwxNTguNjc4OTU2IEMxMDMuMzQzMTA0LDE1NS43NjE2MTMgOTkuNDEwODY1NSwxNTIuMjM4ODM5IDk1LjMyNTQzMzcsMTQ4LjEwODYxOSBDOTQuOTA1MDc1MywxNDguNzY1NDc0IDk0LjM4ODk2ODEsMTQ5LjM3NjAxMSA5My43Nzg1Njk5LDE0OS45MTkzODUgQzgyLjM1OTAxOTgsMTYwLjA4NTAyOCA3Mi43NDQ3NTUsMTY2LjQwMTA3MyA2NC41MjE1OTE1LDE2OC44MzYzNDkgQzU5LjYzMjEwMDksMTcwLjI4NDM2NCA1NS4wNDE0NzM2LDE3MC40MjIzMTggNTAuODYxMDYzNiwxNjkuMDE2OTY5IEM0Ni40NDgzNjg2LDE2Ny41MzM1MzIgNDIuOTMyMzQwNCwxNjQuNDY3MDUxIDQwLjQ1MTY4NjIsMTYwLjE3MTg5MSBDMzYuMzU3NzExNiwxNTMuMDgzMzI3IDM1LjI3ODA4MjMsMTQzLjc2ODkwMiAzNi44MDQ0MDUzLDEzMi4yNjc5NzYgQzM3LjQ0OTAzOCwxMjcuNDEwNjM0IDM4LjU2NzYyLDEyMi4xMDM4OTggNDAuMTU3NTg5MSwxMTYuMzM5MDA5IEMzOS41MzYxMDQxLDExNi4yNzYxMDQgMzguOTEyMDc1NCwxMTYuMTQ0ODE2IDM4LjI5NDk1OTEsMTE1Ljk0MDUyOSBDMjMuODA2MDY4NCwxMTEuMTQ0MTkxIDEzLjU0NjQxODQsMTA1Ljk4NjMxMiA3LjMzNDk3ODkyLDEwMC4wOTE3NzUgQzMuNjM5MzMxMjEsOTYuNTg0Njc1NCAxLjIyNjAyNzUyLDkyLjY4MDIxNTEgMC4zNTM2MzUyMzUsODguMzU4MjM4MSBDLTAuNTY3MTc2MzMzLDgzLjc5NjM4MzkgMC4zMzA2ODY1ODEsNzkuMjIwNzI2OSAyLjgwODQ1MjM2LDc0LjkyODc2MTggQzYuODk0Nzg4NjMsNjcuODUwNDQ0MyAxNC40MDgzNTY1LDYyLjI2Nzg0ODEgMjUuMTEyNDEzMyw1Ny44NDYwMjczIEMyOS41Mzg1MTQzLDU2LjAxNzYxNTQgMzQuNTYzNzIwOCw1NC4zNjY4MjIgNDAuMTkzOTM5NCw1Mi44ODc0Njc0IEMzOS45OTMzMzkzLDUyLjM5NjkxNzEgMzkuODM0OTM3NCw1MS44ODExMjM1IDM5LjcyMzk3MTIsNTEuMzQzNjIzNyBaXCJcbiAgICAgICAgICAgICAgICBpZD1cIlBhdGhcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMDAyQzRCXCJcbiAgICAgICAgICAgICAgICBmaWxsUnVsZT1cIm5vbnplcm9cIlxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg5NS4wMDAwMDAsIDg1LjAwMDAwMCkgc2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtOTUuMDAwMDAwLCAtODUuMDAwMDAwKSBcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNOTEuNzM1LDExMCBMOTEuNzM1LDExNiBMODAuNjMyMjA1MSwxMTYgQzc4Ljg0MTEyODYsMTE2IDc3LjE4Njg2MTQsMTE1LjA0MTk3NSA3Ni4yOTU0NDg5LDExMy40ODg0ODMgTDc0LjI5NCwxMTAgTDkxLjczNSwxMTAgWiBNMTE2LjE4MSwxMTAgTDExNC4xODAyNTYsMTEzLjQ4ODQ4MyBDMTEzLjI4ODg0NCwxMTUuMDQxOTc1IDExMS42MzQ1NzYsMTE2IDEwOS44NDM1LDExNiBMOTguNzM1LDExNiBMOTguNzM1LDExMCBMMTE2LjE4MSwxMTAgWiBNOTEuNzM1LDk2IEw5MS43MzUsMTAzIEw3MC4yNzcsMTAzIEw2Ni4yNiw5NiBMOTEuNzM1LDk2IFogTTEyNC4yMTUsOTYgTDEyMC4xOTgsMTAzIEw5OC43MzUsMTAzIEw5OC43MzUsOTYgTDEyNC4yMTUsOTYgWiBNOTEuNzM1LDgyIEw5MS43MzUsODkgTDYyLjI0NCw4OSBMNjEuNjYzMjQzOCw4Ny45ODg0ODI2IEM2MC43Nzg5MTg3LDg2LjQ0NzM0MTcgNjAuNzc4OTE4Nyw4NC41NTI2NTgzIDYxLjY2MzI0MzgsODMuMDExNTE3NCBMNjIuMjQzLDgyIEw5MS43MzUsODIgWiBNMTI4LjIzMiw4MiBMMTI4LjgxMjQ2MSw4My4wMTE1MTc0IEMxMjkuNjk2Nzg2LDg0LjU1MjY1ODMgMTI5LjY5Njc4Niw4Ni40NDczNDE3IDEyOC44MTI0NjEsODcuOTg4NDgyNiBMMTI4LjIzMSw4OSBMOTguNzM1LDg5IEw5OC43MzUsODIgTDEyOC4yMzIsODIgWiBNOTEuNzM1LDY4IEw5MS43MzUsNzUgTDY2LjI2LDc1IEw3MC4yNzcsNjggTDkxLjczNSw2OCBaIE0xMjAuMTk4LDY4IEwxMjQuMjE1LDc1IEw5OC43MzUsNzUgTDk4LjczNSw2OCBMMTIwLjE5OCw2OCBaIE05MS43MzUsNTUgTDkxLjczNSw2MSBMNzQuMjkzLDYxIEw3Ni4yOTU0NDg5LDU3LjUxMTUxNzQgQzc3LjE4Njg2MTQsNTUuOTU4MDI1IDc4Ljg0MTEyODYsNTUgODAuNjMyMjA1MSw1NSBMOTEuNzM1LDU1IFogTTEwOS44NDM1LDU1IEMxMTEuNjM0NTc2LDU1IDExMy4yODg4NDQsNTUuOTU4MDI1IDExNC4xODAyNTYsNTcuNTExNTE3NCBMMTE2LjE4Miw2MSBMOTguNzM1LDYxIEw5OC43MzUsNTUgTDEwOS44NDM1LDU1IFpcIlxuICAgICAgICAgICAgICAgIGlkPVwiUG9seWdvbi0yXCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRDk0Q1wiXG4gICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01NC44NjAxNzI5LDk4LjM1Nzc1NzggQzU2LjE3MTUyMjQsOTcuNjA4Mjg1NiA1Ny44MzYwMjQ2LDk4LjA3NDYwMTQgNTguNTc3OTQyNCw5OS4zOTkzMDM0IEw1OC41Nzc5NDI0LDk5LjM5OTMwMzQgTDU5LjA1MjU4NDMsMTAwLjI0MzUyIEM2Mi44NTYzMzkyLDEwNi45ODI5OTMgNjYuODE5MDExNiwxMTMuMzgwMTc2IDcwLjk0MDYwMTYsMTE5LjQzNTA2OCBDNzUuODA3ODgwOCwxMjYuNTg1NDI3IDgxLjI4MTg0LDEzMy44MjQxMSA4Ny4zNjI0NzkyLDE0MS4xNTExMTUgQzg4LjMxNjg3NzgsMTQyLjMwMTE0IDg4LjE4NDk0MzcsMTQ0LjAxMTE3NiA4Ny4wNjU2ODYsMTQ0Ljk5NzkzNyBMODcuMDY1Njg2LDE0NC45OTc5MzcgTDg2LjQ1NDIwODUsMTQ1LjUzNDYyNSBDNjYuMzQ2NTM4OSwxNjMuMTAzMzE0IDUzLjI3NzgxODgsMTY2LjYxMjU1MiA0Ny4yNDgwNDgyLDE1Ni4wNjIzNDEgQzQxLjM1MDA2NTIsMTQ1Ljc0MjcxNyA0My40ODQ0OTE1LDEyNi45ODI4ODggNTMuNjUxMzI3NCw5OS43ODI4NTI2IEM1My44NzY4MTgsOTkuMTc5NTgyMSA1NC4zMDQ1ODYxLDk4LjY3NTI5MSA1NC44NjAxNzI5LDk4LjM1Nzc1NzggWiBNMTQwLjUzNDE3NywxMTkuMDQxNTA0IEMxNDEuOTg2MTMxLDExOC43ODUxNzcgMTQzLjM3NTQ5NiwxMTkuNzQyMTM4IDE0My42NTk2MywxMjEuMTk0MjQyIEwxNDMuNjU5NjMsMTIxLjE5NDI0MiBMMTQzLjgxMjgxNSwxMjEuOTg2Mzc2IEMxNDguNzgyMzY1LDE0Ny45OTU0NTkgMTQ1LjI4MzM0OCwxNjEgMTMzLjMxNTc2NCwxNjEgQzEyMS42MDk3NDUsMTYxIDEwNi43MDg3MjQsMTQ5LjkwOTAwNyA4OC42MTI3MDE4LDEyNy43MjcwMjIgQzg4LjIxMTM0OTUsMTI3LjIzNTA0NyA4Ny45OTQ1NzIzLDEyNi42MTczNzEgODgsMTI1Ljk4MTUwOSBDODguMDEzMTU4LDEyNC40ODA2ODYgODkuMjM1Nzg1NCwxMjMuMjc0NjUxIDkwLjczMDkxOCwxMjMuMjg3NzU2IEw5MC43MzA5MTgsMTIzLjI4Nzc1NiBMOTEuNjg0NjU0NCwxMjMuMjk0NTMxIEM5OS4zMDU2OTc5LDEyMy4zMzU5OTQgMTA2LjcxNDM4NywxMjMuMDcxNTkxIDExMy45MTA3MjMsMTIyLjUwMTMyMyBDMTIyLjQwOTAzOSwxMjEuODI3ODggMTMxLjI4MzUyMywxMjAuNjc0NjA3IDE0MC41MzQxNzcsMTE5LjA0MTUwNCBaIE0xNDcuNDA4NzI2LDYzLjgxMTk2NjMgQzE0Ny45MzIxMzksNjIuNDAyNjkwMyAxNDkuNTA4Mzg2LDYxLjY2MzQ1MzcgMTUwLjk1NDU4MSw2Mi4xNDkwMTIgTDE1MC45NTQ1ODEsNjIuMTQ5MDEyIEwxNTEuNzQyNTUyLDYyLjQxNTQ4NTQgQzE3Ny41ODM3NjMsNzEuMjE3OTIyIDE4Ny40MDIzNTYsODAuODkxNjgwNSAxODEuMTk4MzMyLDkxLjQzNjc2MDkgQzE3NS4xMjk5MDQsMTAxLjc1MTM2NiAxNTcuNDg0MzQ3LDEwOS4yNjAzMzkgMTI4LjI2MTY2LDExMy45NjM2NzggQzEyNy42MTM1MjksMTE0LjA2Nzk5NCAxMjYuOTQ4NjQzLDExMy45NDU5NjkgMTI2LjM4MjczNSwxMTMuNjE4ODQzIEMxMjUuMDQ3MDI1LDExMi44NDY3MjkgMTI0LjYwMjA0NiwxMTEuMTU4MjE0IDEyNS4zODg4NDgsMTA5Ljg0NzQzOCBMMTI1LjM4ODg0OCwxMDkuODQ3NDM4IEwxMjUuODg5MzI4LDEwOS4wMTA1IEMxMjkuODc3MTgzLDEwMi4zMTYzMyAxMzMuNDgxMzU4LDk1LjY1NDI2MjEgMTM2LjcwMTg1NCw4OS4wMjQyOTU3IEMxNDAuNTA1MDEsODEuMTk0ODE3OSAxNDQuMDczOTY3LDcyLjc5MDcwODEgMTQ3LjQwODcyNiw2My44MTE5NjYzIFogTTYxLjczODMzOTgsNTYuMDM2MzIxOCBDNjIuMzg2NDcwOCw1NS45MzIwMDYzIDYzLjA1MTM1NjUsNTYuMDU0MDMxNSA2My42MTcyNjQ2LDU2LjM4MTE1NzMgQzY0Ljk1Mjk3NTQsNTcuMTUzMjcxIDY1LjM5Nzk1MzgsNTguODQxNzg2MiA2NC42MTExNTE3LDYwLjE1MjU2MTUgTDY0LjYxMTE1MTcsNjAuMTUyNTYxNSBMNjQuMTEwNjcxOCw2MC45ODk1MDAxIEM2MC4xMjI4MTY4LDY3LjY4MzY2OTkgNTYuNTE4NjQxNiw3NC4zNDU3Mzc5IDUzLjI5ODE0NjIsODAuOTc1NzA0MyBDNDkuNDk0OTksODguODA1MTgyMSA0NS45MjYwMzI4LDk3LjIwOTI5MTkgNDIuNTkxMjc0NCwxMDYuMTg4MDM0IEM0Mi4wNjc4NjA4LDEwNy41OTczMSA0MC40OTE2MTQyLDEwOC4zMzY1NDYgMzkuMDQ1NDE5LDEwNy44NTA5ODggTDM5LjA0NTQxOSwxMDcuODUwOTg4IEwzOC4yNTc0NDc1LDEwNy41ODQ1MTUgQzEyLjQxNjIzNzIsOTguNzgyMDc4IDIuNTk3NjQzOTgsODkuMTA4MzE5NSA4LjgwMTY2Nzg2LDc4LjU2MzIzOTEgQzE0Ljg3MDA5NTcsNjguMjQ4NjMzNSAzMi41MTU2NTMsNjAuNzM5NjYxMSA2MS43MzgzMzk4LDU2LjAzNjMyMTggWiBNMTAzLjU0NTc5MiwyNC40NjUzNzQ2IEMxMjMuNjUzNDYxLDYuODk2Njg2NDEgMTM2LjcyMjE4MSwzLjM4NzQ0Nzc4IDE0Mi43NTE5NTIsMTMuOTM3NjU4NyBDMTQ4LjY0OTkzNSwyNC4yNTcyODI2IDE0Ni41MTU1MDgsNDMuMDE3MTEyMiAxMzYuMzQ4NjczLDcwLjIxNzE0NzQgQzEzNi4xMjMxODIsNzAuODIwNDE3OSAxMzUuNjk1NDE0LDcxLjMyNDcwOSAxMzUuMTM5ODI3LDcxLjY0MjI0MjIgQzEzMy44Mjg0NzgsNzIuMzkxNzE0NCAxMzIuMTYzOTc1LDcxLjkyNTM5ODYgMTMxLjQyMjA1OCw3MC42MDA2OTY2IEwxMzEuNDIyMDU4LDcwLjYwMDY5NjYgTDEzMC45NDc0MTYsNjkuNzU2NDc5OCBDMTI3LjE0MzY2MSw2My4wMTcwMDY1IDEyMy4xODA5ODgsNTYuNjE5ODIzOSAxMTkuMDU5Mzk4LDUwLjU2NDkzMiBDMTE0LjE5MjExOSw0My40MTQ1NzI3IDEwOC43MTgxNiwzNi4xNzU4OTAzIDEwMi42Mzc1MjEsMjguODQ4ODg0NyBDMTAxLjY4MzEyMiwyNy42OTg4NjAyIDEwMS44MTUwNTYsMjUuOTg4ODI0MyAxMDIuOTM0MzE0LDI1LjAwMjA2MjkgTDEwMi45MzQzMTQsMjUuMDAyMDYyOSBaIE01Ny42ODQyMzYxLDggQzY5LjM5MDI1NTEsOCA4NC4yOTEyNzU4LDE5LjA5MDk5MjYgMTAyLjM4NzI5OCw0MS4yNzI5Nzc3IEMxMDIuNzg4NjUxLDQxLjc2NDk1MjcgMTAzLjAwNTQyOCw0Mi4zODI2Mjg4IDEwMyw0My4wMTg0OTExIEMxMDIuOTg2ODQyLDQ0LjUxOTMxNDQgMTAxLjc2NDIxNSw0NS43MjUzNDg5IDEwMC4yNjkwODIsNDUuNzEyMjQ0NSBMMTAwLjI2OTA4Miw0NS43MTIyNDQ1IEw5OS4zMTUzNDU2LDQ1LjcwNTQ2ODkgQzkxLjY5NDMwMjEsNDUuNjY0MDA2MyA4NC4yODU2MTI2LDQ1LjkyODQwOTEgNzcuMDg5Mjc3Miw0Ni40OTg2NzczIEM2OC41OTA5NjEyLDQ3LjE3MjEyIDU5LjcxNjQ3NjcsNDguMzI1MzkzIDUwLjQ2NTgyMzUsNDkuOTU4NDk2MiBDNDkuMDEzODY5MSw1MC4yMTQ4MjMxIDQ3LjYyNDUwNDQsNDkuMjU3ODYxOCA0Ny4zNDAzNjk3LDQ3LjgwNTc1OCBMNDcuMzQwMzY5Nyw0Ny44MDU3NTggTDQ3LjE4NzE4NDYsNDcuMDEzNjIzNSBDNDIuMjE3NjM0NywyMS4wMDQ1NDEyIDQ1LjcxNjY1MTksOCA1Ny42ODQyMzYxLDggWlwiXG4gICAgICAgICAgICAgICAgaWQ9XCJDb21iaW5lZC1TaGFwZVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiNGRjQxNTRcIlxuICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApXG59XG4iLCAiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnXG5cbmltcG9ydCB1c2VMb2NhbFN0b3JhZ2UgZnJvbSAnLi91c2VMb2NhbFN0b3JhZ2UnXG5pbXBvcnQgeyB1c2VJc01vdW50ZWQgfSBmcm9tICcuL3V0aWxzJ1xuXG5pbXBvcnQgeyBQYW5lbCwgQnV0dG9uIH0gZnJvbSAnLi9zdHlsZWRDb21wb25lbnRzJ1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgZGVmYXVsdFRoZW1lIGFzIHRoZW1lIH0gZnJvbSAnLi90aGVtZSdcbi8vIGltcG9ydCB7IGdldFF1ZXJ5U3RhdHVzTGFiZWwsIGdldFF1ZXJ5U3RhdHVzQ29sb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IEV4cGxvcmVyIGZyb20gJy4vRXhwbG9yZXInXG5pbXBvcnQgTG9nbyBmcm9tICcuL0xvZ28nXG5cbmludGVyZmFjZSBEZXZ0b29sc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlYWN0IHRhYmxlIHRvIGF0dGFjaCB0aGUgZGV2dG9vbHMgdG8uXG4gICAqL1xuICB0YWJsZTogYW55XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0cnVlIGlmIHlvdSB3YW50IHRoZSBkZXYgdG9vbHMgdG8gZGVmYXVsdCB0byBiZWluZyBvcGVuXG4gICAqL1xuICBpbml0aWFsSXNPcGVuPzogYm9vbGVhblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSBwYW5lbC4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgZXRjLlxuICAgKi9cbiAgcGFuZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxuICAgIFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcbiAgICBIVE1MRGl2RWxlbWVudFxuICA+XG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBhZGQgcHJvcHMgdG8gdGhlIGNsb3NlIGJ1dHRvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWRkIGNsYXNzTmFtZSwgc3R5bGUgKG1lcmdlIGFuZCBvdmVycmlkZSBkZWZhdWx0IHN0eWxlKSwgb25DbGljayAoZXh0ZW5kIGRlZmF1bHQgaGFuZGxlciksIGV0Yy5cbiAgICovXG4gIGNsb3NlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWRkIHByb3BzIHRvIHRoZSB0b2dnbGUgYnV0dG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhZGQgY2xhc3NOYW1lLCBzdHlsZSAobWVyZ2UgYW5kIG92ZXJyaWRlIGRlZmF1bHQgc3R5bGUpLCBvbkNsaWNrIChleHRlbmQgZGVmYXVsdCBoYW5kbGVyKSwgZXRjLlxuICAgKi9cbiAgdG9nZ2xlQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcbiAgICBSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sXG4gICAgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgPlxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gcmVuZGVyIHRoZSBkZXZ0b29scyBpbnNpZGUgYSBkaWZmZXJlbnQgdHlwZSBvZiBjb250YWluZXIgZWxlbWVudCBmb3IgYTExeSBwdXJwb3Nlcy5cbiAgICogQW55IHN0cmluZyB3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbGlkIGludHJpbnNpYyBKU1ggZWxlbWVudCBpcyBhbGxvd2VkLlxuICAgKiBEZWZhdWx0cyB0byAnZm9vdGVyJy5cbiAgICovXG4gIGNvbnRhaW5lckVsZW1lbnQ/OiBzdHJpbmcgfCBhbnlcbn1cblxuaW50ZXJmYWNlIERldnRvb2xzUGFuZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSByZWFjdCB0YWJsZSB0byBhdHRhY2ggdGhlIGRldnRvb2xzIHRvLlxuICAgKi9cbiAgdGFibGU6IGFueVxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIFJlYWN0IHN0eWxlIG9iamVjdCB1c2VkIHRvIHN0eWxlIGEgY29tcG9uZW50IHdpdGggaW5saW5lIHN0eWxlc1xuICAgKi9cbiAgc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgUmVhY3QgY2xhc3NOYW1lIHByb3BlcnR5IHVzZWQgdG8gc3R5bGUgYSBjb21wb25lbnQgd2l0aCBjbGFzc2VzXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEEgYm9vbGVhbiB2YXJpYWJsZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4gb3IgY2xvc2VkXG4gICAqL1xuICBpc09wZW4/OiBib29sZWFuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xlcyB0aGUgb3BlbiBhbmQgY2xvc2Ugc3RhdGUgb2YgdGhlIHBhbmVsXG4gICAqL1xuICBzZXRJc09wZW46IChpc09wZW46IGJvb2xlYW4pID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlYWN0VGFibGVEZXZ0b29scyh7XG4gIGluaXRpYWxJc09wZW4sXG4gIHRhYmxlLFxuICBwYW5lbFByb3BzID0ge30sXG4gIHRvZ2dsZUJ1dHRvblByb3BzID0ge30sXG4gIGNvbnRhaW5lckVsZW1lbnQ6IENvbnRhaW5lciA9ICdmb290ZXInLFxufTogRGV2dG9vbHNPcHRpb25zKTogUmVhY3QuUmVhY3RFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3RSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHBhbmVsUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICdyZWFjdFRhYmxlRGV2dG9vbHNPcGVuJyxcbiAgICBpbml0aWFsSXNPcGVuXG4gIClcbiAgY29uc3QgaXNNb3VudGVkID0gdXNlSXNNb3VudGVkKClcblxuICBjb25zdCB7IHN0eWxlOiBwYW5lbFN0eWxlID0ge30sIC4uLm90aGVyUGFuZWxQcm9wcyB9ID0gcGFuZWxQcm9wc1xuXG4gIGNvbnN0IHtcbiAgICBzdHlsZTogdG9nZ2xlQnV0dG9uU3R5bGUgPSB7fSxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZUNsaWNrLFxuICAgIC4uLm90aGVyVG9nZ2xlQnV0dG9uUHJvcHNcbiAgfSA9IHRvZ2dsZUJ1dHRvblByb3BzXG5cbiAgLy8gRG8gbm90IHJlbmRlciBvbiB0aGUgc2VydmVyXG4gIGlmICghaXNNb3VudGVkKCkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHJlZj17cm9vdFJlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzXCI+XG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICB7IWlzT3BlbiA/IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHsuLi5vdGhlclRvZ2dsZUJ1dHRvblByb3BzfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk9wZW4gUmVhY3QgVGFibGUgRGV2dG9vbHNcIlxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgICAgICAgICBvblRvZ2dsZUNsaWNrICYmIG9uVG9nZ2xlQ2xpY2soZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgbWFyZ2luOiAnLjVyZW0nLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBmb250U2l6ZTogJzEuNWVtJyxcbiAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICAgICAgICAuLi50b2dnbGVCdXR0b25TdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPExvZ28gYXJpYS1oaWRkZW4gLz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UmVhY3RUYWJsZURldnRvb2xzUGFuZWxcbiAgICAgICAgICAgIHJlZj17cGFuZWxSZWYgYXMgYW55fVxuICAgICAgICAgICAgey4uLm90aGVyUGFuZWxQcm9wc31cbiAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgICAgc2V0SXNPcGVuPXtzZXRJc09wZW59XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgLi4ucGFuZWxTdHlsZSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MRGl2RWxlbWVudCxcbiAgRGV2dG9vbHNQYW5lbE9wdGlvbnNcbj4oZnVuY3Rpb24gUmVhY3RUYWJsZURldnRvb2xzUGFuZWwocHJvcHMsIHJlZik6IFJlYWN0LlJlYWN0RWxlbWVudCB7XG4gIGNvbnN0IHtcbiAgICB0YWJsZSxcbiAgICBpc09wZW4gPSB0cnVlLFxuICAgIHNldElzT3BlbixcbiAgICAuLi5wYW5lbFByb3BzXG4gIH0gPSBwcm9wcyBhcyBEZXZ0b29sc1BhbmVsT3B0aW9ucyAmIHtcbiAgICB0YWJsZTogVGFibGU8YW55PlxuICB9XG5cbiAgLy8gY29uc3QgW2FjdGl2ZU1hdGNoSWQsIHNldEFjdGl2ZVJvdXRlSWRdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAvLyAgICdyZWFjdFRhYmxlRGV2dG9vbHNBY3RpdmVSb3V0ZUlkJyxcbiAgLy8gICAnJyxcbiAgLy8gKVxuXG4gIHJldHVybiAoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxQYW5lbCByZWY9e3JlZn0gY2xhc3NOYW1lPVwiUmVhY3RUYWJsZURldnRvb2xzUGFuZWxcIiB7Li4ucGFuZWxQcm9wc30+XG4gICAgICAgIDxzdHlsZVxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGBcbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqIHtcbiAgICAgICAgICAgICAgc2Nyb2xsYmFyLWNvbG9yOiAke3RoZW1lLmJhY2tncm91bmRBbHR9ICR7dGhlbWUuZ3JheX07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCAqOjotd2Via2l0LXNjcm9sbGJhciwgLlJlYWN0VGFibGVEZXZ0b29sc1BhbmVsIHNjcm9sbGJhciB7XG4gICAgICAgICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdHJhY2sge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuUmVhY3RUYWJsZURldnRvb2xzUGFuZWwgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIsIC5SZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCBzY3JvbGxiYXItdGh1bWIge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3RoZW1lLmdyYXl9O1xuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAuNWVtO1xuICAgICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCAke3RoZW1lLmJhY2tncm91bmRBbHR9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIDUwMHB4JyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogJzQwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmdyYXlBbHR9YCxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmJhY2tncm91bmRBbHQsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMb2dvXG4gICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJ2NsYW1wKC44cmVtLCAydncsIDEuM3JlbSknLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVhY3QgVGFibGV7JyAnfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERldnRvb2xzXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBSZWFjdCBUYWJsZSBEZXZ0b29sc1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSlcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgICAgICAgICBmbGV4OiAnMScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJJbnN0YW5jZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3RhdGVcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTdGF0ZSgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnLjVyZW0nLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEFsbENvbHVtbnMoKX1cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSBhdXRvJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnLjVlbScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29yZSBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldENvcmVSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRmlsdGVyZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTb3J0ZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRTb3J0ZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiR3JvdXBlZCBNb2RlbFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RhYmxlLmdldEdyb3VwZWRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxFeHBsb3JlclxuICAgICAgICAgICAgICAgIGxhYmVsPVwiRXhwYW5kZWQgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRFeHBhbmRlZFJvd01vZGVsKCl9XG4gICAgICAgICAgICAgICAgZGVmYXVsdEV4cGFuZGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey8qIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcuNWVtJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEV4cGxvcmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJSb3cgTW9kZWxcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJsZS5nZXRSb3dNb2RlbCgpfVxuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmRlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj4gKi99XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9QYW5lbD5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gIClcbn0pXG4iLCAiaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuZnVuY3Rpb24gU2tlbGV0b24oeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50Pikge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NuKFwicHMtYW5pbWF0ZS1wdWxzZSBwcy1yb3VuZGVkLW1kIHBzLWJnLWZvcmVncm91bmQvMTBcIiwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IHsgU2tlbGV0b24gfTtcbiIsICJpbXBvcnQgeyBmbGV4UmVuZGVyLCB0eXBlIEhlYWRlciB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IEFycm93RG93bldpZGVOYXJyb3csIEFycm93VXBXaWRlTmFycm93LCBDaGV2cm9uRG93biwgTW92ZURvd24sIE1vdmVVcCwgUGluLCBQaW5PZmYsIFggfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyBBbmltYXRlUHJlc2VuY2UsIG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvYnV0dG9uXCI7XG5pbXBvcnQge1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudUNvbnRlbnQsXG4gIERyb3Bkb3duTWVudUl0ZW0sXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG59IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL2xpYi91dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclByb3BzPFREYXRhPiB7XG4gIGhlYWRlcjogSGVhZGVyPFREYXRhLCB1bmtub3duPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXI8VERhdGE+KHByb3BzOiBIZWFkZXJQcm9wczxURGF0YT4pIHtcbiAgY29uc3QgeyBoZWFkZXIsIGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1qdXN0aWZ5LWJldHdlZW5cIiwgY2xhc3NOYW1lKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy13LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy1mb250LW1vbm8gcHMtdGV4dC14c1wiPlxuICAgICAgICAgIHtoZWFkZXIuaXNQbGFjZWhvbGRlciA/IG51bGwgOiAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLW1pbi13LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtbWluLXctMCBwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LWZvcmVncm91bmQvOTBcIj5cbiAgICAgICAgICAgICAgICB7ZmxleFJlbmRlcihoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIsIGhlYWRlci5nZXRDb250ZXh0KCkpfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtcmVsYXRpdmUgcHMtZmxleCBwcy1zaHJpbmstMCBwcy1nYXAtMVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLW1sLTFcIj5cbiAgICAgICAgICAgIDxBbmltYXRlUHJlc2VuY2UgbW9kZT1cIndhaXRcIj5cbiAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSA9PT0gXCJkZXNjXCIgPyAoXG4gICAgICAgICAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICAgICAgICAgIGtleT1cImRlc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiAtNCB9fVxuICAgICAgICAgICAgICAgICAgYW5pbWF0ZT17eyBvcGFjaXR5OiAxLCB5OiAwIH19XG4gICAgICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAsIHk6IC00IH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjIgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TW92ZURvd24gc2l6ZT17MTR9IGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9tb3Rpb24uZGl2PlxuICAgICAgICAgICAgICApIDogaGVhZGVyLmNvbHVtbi5nZXRJc1NvcnRlZCgpID09PSBcImFzY1wiID8gKFxuICAgICAgICAgICAgICAgIDxtb3Rpb24uZGl2XG4gICAgICAgICAgICAgICAgICBrZXk9XCJhc2NcIlxuICAgICAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwLCB5OiA0IH19XG4gICAgICAgICAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEsIHk6IDAgfX1cbiAgICAgICAgICAgICAgICAgIGV4aXQ9e3sgb3BhY2l0eTogMCwgeTogNCB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1vdmVVcCBzaXplPXsxNH0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L21vdGlvbi5kaXY+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9BbmltYXRlUHJlc2VuY2U+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblBpbigpICYmIGhlYWRlci5jb2x1bW4uaWQgIT09IFwic2VsZWN0XCIgJiYgKFxuICAgICAgICAgICAgPERyb3Bkb3duTWVudT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duTWVudVRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJnaG9zdFwiIHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInBzLXB4LTAgcHMtaC02IHBzLXctNlwiPlxuICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duIHNpemU9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudVRyaWdnZXI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVDb250ZW50PlxuICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldENhblNvcnQoKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXsoKSA9PiBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoKX0+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hlYWRlci5jb2x1bW4uZ2V0TmV4dFNvcnRpbmdPcmRlcigpID09PSBcImRlc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd25XaWRlTmFycm93IHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IGRlc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBoZWFkZXIuY29sdW1uLmdldE5leHRTb3J0aW5nT3JkZXIoKSA9PT0gXCJhc2NcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwV2lkZU5hcnJvdyBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBhc2NlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8WCBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsIHNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51SXRlbT5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxEcm9wZG93bk1lbnVJdGVtIG9uQ2xpY2s9eygpID0+IGhlYWRlci5jb2x1bW4ucGluKGhlYWRlci5jb2x1bW4uZ2V0SXNQaW5uZWQoKSA/IGZhbHNlIDogXCJsZWZ0XCIpfT5cbiAgICAgICAgICAgICAgICAgIHtoZWFkZXIuY29sdW1uLmdldElzUGlubmVkKCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBpbk9mZiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICBVbnBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGluIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duTWVudUl0ZW0+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25NZW51Q29udGVudD5cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAge2hlYWRlci5jb2x1bW4uZ2V0Q2FuUmVzaXplKCkgJiYgKFxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgb25Nb3VzZURvd249eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17KGUpID0+IHtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoZWFkZXIuZ2V0UmVzaXplSGFuZGxlcigpKGUpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIgfHwgZS5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgaGVhZGVyLmdldFJlc2l6ZUhhbmRsZXIoKShlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICBcInBzLWFic29sdXRlIHBzLXJpZ2h0LTAgcHMtdG9wLTAgcHMtaC1mdWxsIHBzLXctcHggcHMtY3Vyc29yLWNvbC1yZXNpemUgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBob3Zlcjpwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICAgICAgKX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVzaXplIGNvbHVtblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIiwgImltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZExvYWRpbmdCYXIoeyBjbGFzc05hbWUgfTogRGF0YUdyaWRMb2FkaW5nQmFyUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLWxvYWRpbmctYmFyXG4gICAgICBjbGFzc05hbWU9e2NuKFwicHMtaC1bMnB4XSBwcy13LWZ1bGwgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLWJnLXRhYmxlLWJvcmRlciBwcy16LTUwXCIsIGNsYXNzTmFtZSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1hbmltYXRlLWluZGV0ZXJtaW5hdGUtYmFyIHBzLWgtZnVsbCBwcy13LTEvMyBwcy1yb3VuZGVkLXItZnVsbCBwcy1iZy1wcmltYXJ5XCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBUYWJsZSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtdGFibGVcIjtcbmltcG9ydCB7IENoZXZyb25MZWZ0LCBDaGV2cm9uUmlnaHQsIENoZXZyb25zTGVmdCwgQ2hldnJvbnNSaWdodCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9idXR0b25cIjtcbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS9pbnB1dFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvblByb3BzIHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICB0YWJsZTogVGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB2YXJpYW50PzogXCJiYXNpY1wiIHwgXCJudW1lcmljXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRhR3JpZFBhZ2luYXRpb24ocHJvcHM6IERhdGFHcmlkUGFnaW5hdGlvblByb3BzKSB7XG4gIGNvbnN0IHsgdGFibGUsIHZhcmlhbnQgPSBcImJhc2ljXCIgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgcGFnZUluZGV4IH0gPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gIGNvbnN0IHBhZ2VDb3VudCA9IHRhYmxlLmdldFBhZ2VDb3VudCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy1yb3VuZGVkLWItbGcgcHMtb3ZlcmZsb3ctY2xpcCBwcy1zdGlja3kgcHMtYm90dG9tLTAgcHMtbGVmdC0wIHBzLWJvcmRlci10LTAgdy1mdWxsIHBzLXotMjAgcHMtcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLWp1c3RpZnktYmV0d2VlbiBwcy1zcGFjZS14LTIgcHMtcHktMiBwcy1weC0yIHBzLWJvcmRlci10IHBzLWJvcmRlci10YWJsZS1ib3JkZXIgcHMtYmFja2Ryb3AtYmx1ci1zbSBwcy1iZy10YWJsZS1oZWFkLzkwXCI+XG4gICAgICAgIHt2YXJpYW50ID09PSBcImJhc2ljXCIgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcy1oLTlcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF0YWJsZS5nZXRDYW5QcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUHJldmlvdXNcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWgtOVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgTmV4dFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1zcGFjZS14LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtc3BhY2UteC0yXCI+XG4gICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVcIiBvbkNsaWNrPXsoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc0xlZnQgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lXCIgb25DbGljaz17KCkgPT4gdGFibGUucHJldmlvdXNQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCl9PlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uTGVmdCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtdGV4dC14cyBwcy1mb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgIFBhZ2VcbiAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgbWluPXsxfVxuICAgICAgICAgICAgICAgICAgbWF4PXtwYWdlQ291bnR9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17cGFnZUluZGV4ICsgMX1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInBzLXctMTZcIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VJbmRleCA9IGUudGFyZ2V0LnZhbHVlID8gTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSAtIDEgOiAwO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRQYWdlSW5kZXgocGFnZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1zaHJpbmstMCBwcy13LW1heFwiPm9mIHtwYWdlQ291bnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZVwiIG9uQ2xpY2s9eygpID0+IHRhYmxlLm5leHRQYWdlKCl9IGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX0+XG4gICAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDaGV2cm9uc1JpZ2h0IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCAiaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNvbHVtbjogQ29sdW1uPFJlY29yZDxzdHJpbmcsIHVua25vd24+Piwga2luZDogXCJoZWFkZXJcIiB8IFwiY2VsbFwiKSB7XG4gIGNvbnN0IGlzUGlubmVkID0gY29sdW1uLmdldElzUGlubmVkKCk7XG4gIGNvbnN0IGlzTGVmdFBpbm5lZCA9IGlzUGlubmVkID09PSBcImxlZnRcIjtcbiAgY29uc3QgaXNSaWdodFBpbm5lZCA9IGlzUGlubmVkID09PSBcInJpZ2h0XCI7XG4gIGNvbnN0IGlzU2VsZWN0Q29sdW1uID0gY29sdW1uLmlkID09PSBcIl9fcHNfc2VsZWN0XCI7XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgXCJwcy1ncm91cCBwcy1ib3JkZXItciBwcy1ib3JkZXItYiBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCIsXG4gICAgICBcInBzLW92ZXJmbG93LWhpZGRlbiBwcy13aGl0ZXNwYWNlLW5vd3JhcCBwcy10ZXh0LWVsbGlwc2lzXCIsXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIFwicHMtc3RpY2t5XCIsXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIGtpbmQgPT09IFwiaGVhZGVyXCIgJiYgKGlzU2VsZWN0Q29sdW1uID8gXCJwcy16LTMwXCIgOiBcInBzLXotMjBcIiksXG4gICAgICAoaXNMZWZ0UGlubmVkIHx8IGlzUmlnaHRQaW5uZWQpICYmIGtpbmQgPT09IFwiY2VsbFwiICYmIChpc1NlbGVjdENvbHVtbiA/IFwicHMtei0xMFwiIDogXCJwcy16LTBcIiksXG4gICAgICBpc0xlZnRQaW5uZWQgJiYgXCJwcy1zaGFkb3ctWzJweF8wXzVweF8tMnB4X3JnYmEoMCwwLDAsMC4xKV1cIixcbiAgICAgIGlzUmlnaHRQaW5uZWQgJiYgXCJwcy1zaGFkb3ctWy0ycHhfMF81cHhfLTJweF9yZ2JhKDAsMCwwLDAuMSldXCIsXG4gICAgKSxcbiAgICBzdHlsZToge1xuICAgICAgbWluV2lkdGg6IGAke2NvbHVtbi5nZXRTaXplKCl9cHhgLFxuICAgICAgd2lkdGg6IGAke2NvbHVtbi5nZXRTaXplKCl9cHhgLFxuICAgICAgbGVmdDogaXNMZWZ0UGlubmVkID8gYCR7Y29sdW1uLmdldFN0YXJ0KFwibGVmdFwiKX1weGAgOiB1bmRlZmluZWQsXG4gICAgICByaWdodDogaXNSaWdodFBpbm5lZCA/IGAke2NvbHVtbi5nZXRBZnRlcihcInJpZ2h0XCIpfXB4YCA6IHVuZGVmaW5lZCxcbiAgICAgIHBvc2l0aW9uOiBpc1Bpbm5lZCA/IChcInN0aWNreVwiIGFzIGNvbnN0KSA6IHVuZGVmaW5lZCxcbiAgICB9IGFzIENTU1Byb3BlcnRpZXMsXG4gIH07XG59XG4iLCAiaW1wb3J0ICogYXMgVG9vbHRpcFByaW1pdGl2ZSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRvb2x0aXBcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBjbiB9IGZyb20gXCJAL3VpL2xpYi91dGlsc1wiO1xuXG5jb25zdCBUb29sdGlwUHJvdmlkZXIgPSBUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyO1xuXG5jb25zdCBUb29sdGlwID0gVG9vbHRpcFByaW1pdGl2ZS5Sb290O1xuXG5jb25zdCBUb29sdGlwVHJpZ2dlciA9IFRvb2x0aXBQcmltaXRpdmUuVHJpZ2dlcjtcblxuY29uc3QgVG9vbHRpcENvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQ+LFxuICBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFRvb2x0aXBQcmltaXRpdmUuQ29udGVudD5cbj4oKHsgY2xhc3NOYW1lLCBzaWRlT2Zmc2V0ID0gNCwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxUb29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbiAgICA8VG9vbHRpcFByaW1pdGl2ZS5Db250ZW50XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHNpZGVPZmZzZXQ9e3NpZGVPZmZzZXR9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcInBzLXotNTAgcHMtb3ZlcmZsb3ctaGlkZGVuIHBzLXJvdW5kZWQtbWQgcHMtYmctcHJpbWFyeSBwcy1weC0zIHBzLXB5LTEuNSBwcy10ZXh0LXhzIHBzLXRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHBzLWFuaW1hdGUtaW4gcHMtZmFkZS1pbi0wIHBzLXpvb20taW4tOTUgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy1hbmltYXRlLW91dCBkYXRhLVtzdGF0ZT1jbG9zZWRdOnBzLWZhZGUtb3V0LTAgZGF0YS1bc3RhdGU9Y2xvc2VkXTpwcy16b29tLW91dC05NSBkYXRhLVtzaWRlPWJvdHRvbV06cHMtc2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnBzLXNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpwcy1zbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06cHMtc2xpZGUtaW4tZnJvbS1ib3R0b20tMiBwcy1vcmlnaW4tWy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW5dXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgPC9Ub29sdGlwUHJpbWl0aXZlLlBvcnRhbD5cbikpO1xuVG9vbHRpcENvbnRlbnQuZGlzcGxheU5hbWUgPSBUb29sdGlwUHJpbWl0aXZlLkNvbnRlbnQuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBUcmlnZ2VyLCBUb29sdGlwQ29udGVudCwgVG9vbHRpcFByb3ZpZGVyIH07XG4iLCAiaW1wb3J0IHsgS2V5Um91bmQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IFRvb2x0aXAsIFRvb2x0aXBDb250ZW50LCBUb29sdGlwUHJvdmlkZXIsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvdG9vbHRpcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0YUdyaWRIZWFkZXJDZWxsKHsgY29sdW1uIH06IHsgY29sdW1uOiBDb2x1bW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIHtjb2x1bW4uaXNJblByaW1hcnlLZXkgJiYgKFxuICAgICAgICA8VG9vbHRpcFByb3ZpZGVyIGRlbGF5RHVyYXRpb249ezEyMH0+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXIgYXNDaGlsZD5cbiAgICAgICAgICAgICAgPEtleVJvdW5kIHNpemU9ezEyfSBjbGFzc05hbWU9XCJwcy10ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudCBzaWRlPVwiYm90dG9tXCIgY2xhc3NOYW1lPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5QcmltYXJ5IEtleTwvc3Bhbj5cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1Rvb2x0aXBQcm92aWRlcj5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1mb250LW1lZGl1bSBwcy10cnVuY2F0ZVwiPntjb2x1bW4ubmFtZX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJwcy1vdmVyZmxvdy1oaWRkZW4gcHMtdGV4dC1lbGxpcHNpcyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmQvNzAgcHMtbG93ZXJjYXNlIHBzLXRydW5jYXRlXCI+XG4gICAgICAgIHtjb2x1bW4uZGF0YXR5cGUubmFtZX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IENlbGwgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXRhYmxlXCI7XG5pbXBvcnQgeyBpc09iamVjdFR5cGUgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSBcIi4vQm9vbGVhbklucHV0XCI7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tIFwiLi9EYXRlSW5wdXRcIjtcbmltcG9ydCB7IEVudW1JbnB1dCB9IGZyb20gXCIuL0VudW1JbnB1dFwiO1xuaW1wb3J0IHsgSnNvbklucHV0IH0gZnJvbSBcIi4vSnNvbklucHV0XCI7XG5pbXBvcnQgeyBOdW1lcmljSW5wdXQgfSBmcm9tIFwiLi9OdW1lcmljSW5wdXRcIjtcbmltcG9ydCB7IFJhd0lucHV0IH0gZnJvbSBcIi4vUmF3SW5wdXRcIjtcbmltcG9ydCB7IFRpbWVJbnB1dCB9IGZyb20gXCIuL1RpbWVJbnB1dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXQocHJvcHM6IHtcbiAgY2VsbDogQ2VsbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdW5rbm93bj47XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdDogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuICByZWFkb25seTogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgeyBjZWxsLCBjb2x1bW4sIG9uU3VibWl0IH0gPSBwcm9wcztcbiAgY29uc3QgeyBncm91cCwgb3B0aW9ucywgaXNBcnJheSB9ID0gY29sdW1uLmRhdGF0eXBlO1xuICBjb25zdCByZWFkb25seSA9IGNvbHVtbi5pc0NvbXB1dGVkIHx8IHByb3BzLnJlYWRvbmx5O1xuXG4gIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwuZ2V0VmFsdWUoKTtcblxuICAvLyBvbiByb3cgaW5zZXJ0aW9ucywgd2UgdHJlYXQgdW5kZWZpbmVkIGFzIGVtcHR5IGlucHV0XG4gIGNvbnN0IHZhbHVlID0gY2VsbFZhbHVlID09PSB1bmRlZmluZWQgPyBcIlwiIDogY2VsbFZhbHVlO1xuXG4gIGlmIChncm91cCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgcmV0dXJuIDxEYXRlSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcInRpbWVcIikge1xuICAgIHJldHVybiA8VGltZUlucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJqc29uXCIgfHwgaXNBcnJheSkge1xuICAgIHJldHVybiA8SnNvbklucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIGlmIChncm91cCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gPEJvb2xlYW5JbnB1dCBvblN1Ym1pdD17b25TdWJtaXR9IHZhbHVlPXt2YWx1ZX0gY29sdW1uPXtjb2x1bW59IHJlYWRvbmx5PXtyZWFkb25seX0gLz47XG4gIH1cblxuICBpZiAoZ3JvdXAgPT09IFwiZW51bVwiKSB7XG4gICAgcmV0dXJuIDxFbnVtSW5wdXQgb25TdWJtaXQ9e29uU3VibWl0fSB2YWx1ZT17dmFsdWV9IG9wdGlvbnM9e29wdGlvbnN9IGNvbHVtbj17Y29sdW1ufSByZWFkb25seT17cmVhZG9ubHl9IC8+O1xuICB9XG5cbiAgaWYgKGdyb3VwID09PSBcIm51bWVyaWNcIikge1xuICAgIHJldHVybiA8TnVtZXJpY0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFJhd0lucHV0IG9uU3VibWl0PXtvblN1Ym1pdH0gdmFsdWU9e2lzT2JqZWN0VHlwZSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZX0gcmVhZG9ubHk9e3JlYWRvbmx5fSAvPlxuICApO1xufVxuIiwgImltcG9ydCB7IG1vdGlvbiB9IGZyb20gXCJtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbHVtbiB9IGZyb20gXCIuLi8uLi8uLi9kYXRhL2FkYXB0ZXJcIjtcbmltcG9ydCB7IExhYmVsIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvbGFiZWxcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9zd2l0Y2hcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJvb2xlYW5JbnB1dChwcm9wczogQm9vbGVhbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8Ym9vbGVhbj4odmFsdWUgPT09IG51bGwgPyBmYWxzZSA6ICh2YWx1ZSBhcyBib29sZWFuKSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gZmFsc2UgOiAodmFsdWUgYXMgYm9vbGVhbik7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFN1Ym1pdCBoYW5kbGVyIHRoYXQgb25seSBzdWJtaXRzIGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICBjb25zdCBoYW5kbGVJbnB1dFN1Ym1pdCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB2YWx1ZVRvU3VibWl0ID0gc2V0VG9OdWxsID8gbnVsbCA6IGN1cnJlbnRWYWx1ZTtcbiAgICBpZiAodmFsdWVUb1N1Ym1pdCAhPT0gdmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KHZhbHVlVG9TdWJtaXQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTAgcHMtcHgtMlwiPlxuICAgICAgICA8TGFiZWwgaHRtbEZvcj1cImJvb2xlYW4taW5wdXRcIiBjbGFzc05hbWU9XCJwcy1zci1vbmx5XCI+XG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICA8L0xhYmVsPlxuICAgICAgICA8bW90aW9uLmRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cInBzLWZsZXggcHMtaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBpbml0aWFsPXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjI0IH19XG4gICAgICAgID5cbiAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICBpZD1cImJvb2xlYW4taW5wdXRcIlxuICAgICAgICAgICAgY2hlY2tlZD17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgb25DaGVja2VkQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgICAgPG1vdGlvbi5kaXZcbiAgICAgICAgICBkYXRhLXZhbHVlXG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtaW5saW5lLWZsZXggcHMtaXRlbXMtY2VudGVyIHBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLWZvbnQtbW9ub1wiXG4gICAgICAgICAgaW5pdGlhbD17eyB4OiAtNDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICBhbmltYXRlPXt7IHg6IDAsIG9wYWNpdHk6IDEgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uPXt7IGR1cmF0aW9uOiAwLjEyLCBkZWxheTogMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3NldFRvTnVsbCA/IFwiTlVMTFwiIDogU3RyaW5nKGN1cnJlbnRWYWx1ZSl9XG4gICAgICAgIDwvbW90aW9uLmRpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9uc1xuICAgICAgICBvblNhdmU9e2hhbmRsZVNhdmV9XG4gICAgICAgIG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgIG9uTnVsbENoYW5nZT17aXNOdWxsYWJsZSA/IGhhbmRsZU51bGxDaGFuZ2UgOiB1bmRlZmluZWR9XG4gICAgICAgIGlzTnVsbD17c2V0VG9OdWxsfVxuICAgICAgICByZWFkb25seT17cmVhZG9ubHl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuIiwgImltcG9ydCAqIGFzIExhYmVsUHJpbWl0aXZlIGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtbGFiZWxcIjtcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiQC91aS9saWIvdXRpbHNcIjtcblxuY29uc3QgbGFiZWxWYXJpYW50cyA9IGN2YShcbiAgXCJwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLWxlYWRpbmctbm9uZSBwZWVyLWRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBwZWVyLWRpc2FibGVkOnBzLW9wYWNpdHktNzBcIixcbik7XG5cbmNvbnN0IExhYmVsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTGFiZWxQcmltaXRpdmUuUm9vdD4gJiBWYXJpYW50UHJvcHM8dHlwZW9mIGxhYmVsVmFyaWFudHM+XG4+KCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiAoXG4gIDxMYWJlbFByaW1pdGl2ZS5Sb290IHJlZj17cmVmfSBjbGFzc05hbWU9e2NuKGxhYmVsVmFyaWFudHMoKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfSAvPlxuKSk7XG5MYWJlbC5kaXNwbGF5TmFtZSA9IExhYmVsUHJpbWl0aXZlLlJvb3QuZGlzcGxheU5hbWU7XG5cbmV4cG9ydCB7IExhYmVsIH07XG4iLCAiaW1wb3J0ICogYXMgU3dpdGNoUHJpbWl0aXZlcyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXN3aXRjaFwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIkAvdWkvbGliL3V0aWxzXCI7XG5cbmNvbnN0IFN3aXRjaCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFN3aXRjaFByaW1pdGl2ZXMuUm9vdD4sXG4gIFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU3dpdGNoUHJpbWl0aXZlcy5Sb290PlxuPigoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0sIHJlZikgPT4gKFxuICA8U3dpdGNoUHJpbWl0aXZlcy5Sb290XG4gICAgY2xhc3NOYW1lPXtjbihcbiAgICAgIFwicHMtcGVlciBwcy1pbmxpbmUtZmxleCBwcy1oLTUgcHMtdy05IHBzLXNocmluay0wIHBzLWN1cnNvci1wb2ludGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1yb3VuZGVkLWZ1bGwgcHMtYm9yZGVyLTIgcHMtYm9yZGVyLXRyYW5zcGFyZW50IHBzLXNoYWRvdy1zbSBwcy10cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOnBzLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMiBmb2N1cy12aXNpYmxlOnBzLXJpbmctcmluZyBmb2N1cy12aXNpYmxlOnBzLXJpbmctb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpwcy1yaW5nLW9mZnNldC1iYWNrZ3JvdW5kIGRpc2FibGVkOnBzLWN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpwcy1vcGFjaXR5LTUwIGRhdGEtW3N0YXRlPWNoZWNrZWRdOnBzLWJnLXByaW1hcnkgZGF0YS1bc3RhdGU9dW5jaGVja2VkXTpwcy1iZy1pbnB1dFwiLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICl9XG4gICAgey4uLnByb3BzfVxuICAgIHJlZj17cmVmfVxuICA+XG4gICAgPFN3aXRjaFByaW1pdGl2ZXMuVGh1bWJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwicHMtcG9pbnRlci1ldmVudHMtbm9uZSBwcy1ibG9jayBwcy1oLTQgcHMtdy00IHBzLXJvdW5kZWQtZnVsbCBwcy1iZy1iYWNrZ3JvdW5kIHBzLXNoYWRvdy1sZyBwcy1yaW5nLTAgcHMtdHJhbnNpdGlvbi10cmFuc2Zvcm0gZGF0YS1bc3RhdGU9Y2hlY2tlZF06cHMtdHJhbnNsYXRlLXgtNCBkYXRhLVtzdGF0ZT11bmNoZWNrZWRdOnBzLXRyYW5zbGF0ZS14LTBcIixcbiAgICAgICl9XG4gICAgLz5cbiAgPC9Td2l0Y2hQcmltaXRpdmVzLlJvb3Q+XG4pKTtcblN3aXRjaC5kaXNwbGF5TmFtZSA9IFN3aXRjaFByaW1pdGl2ZXMuUm9vdC5kaXNwbGF5TmFtZTtcblxuZXhwb3J0IHsgU3dpdGNoIH07XG4iLCAiaW1wb3J0IHsgQ29ybmVyRG93bkxlZnQgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFN3aXRjaCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3N3aXRjaFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElucHV0QWN0aW9uc1Byb3BzIHtcbiAgb25TYXZlPzogKCkgPT4gdm9pZDtcbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAgb25OdWxsQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzTnVsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSW5wdXRBY3Rpb25zID0gKHtcbiAgb25TYXZlLFxuICBvbkNhbmNlbCxcbiAgb25DbG9zZSxcbiAgb25OdWxsQ2hhbmdlLFxuICBpc051bGwgPSBmYWxzZSxcbiAgcmVhZG9ubHksXG59OiBJbnB1dEFjdGlvbnNQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAob25OdWxsQ2hhbmdlKSBvbk51bGxDaGFuZ2UoY2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9ICgpID0+IHtcbiAgICBpZiAob25TYXZlKSBvblNhdmUoKTtcbiAgICBpZiAob25DbG9zZSkgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBpZiAob25DYW5jZWwpIG9uQ2FuY2VsKCk7XG4gICAgaWYgKG9uQ2xvc2UpIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyIHBzLXRleHQteHMgcHMtXCI+XG4gICAgICB7IXJlYWRvbmx5ICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yIHBzLW1yLWF1dG9cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVTYXZlfT5cbiAgICAgICAgICAgICAgPGtiZCBjbGFzc05hbWU9XCJwcy1pbmxpbmUtZmxleCBwcy1qdXN0aWZ5LWNlbnRlciBwcy1pdGVtcy1jZW50ZXIgcHMtaC02IHBzLXctNiBwcy1yb3VuZGVkLW1kIHBzLWJnLW11dGVkIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgIDxDb3JuZXJEb3duTGVmdCBzaXplPXsxMn0gc3Ryb2tlV2lkdGg9ezJ9IC8+XG4gICAgICAgICAgICAgIDwva2JkPntcIiBcIn1cbiAgICAgICAgICAgICAgU2F2ZSBjaGFuZ2VzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LXJvdyBwcy1nYXAtMSBwcy1pdGVtcy1jZW50ZXIgcHMtY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9PlxuICAgICAgICAgICAgICA8a2JkIGNsYXNzTmFtZT1cInBzLWlubGluZS1mbGV4IHBzLWp1c3RpZnktY2VudGVyIHBzLWl0ZW1zLWNlbnRlciBwcy1oLTYgcHMtdy02IHBzLXJvdW5kZWQtbWQgcHMtYmctbXV0ZWQgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHBzLXRleHQtWzhweF0gcHMtbGVhZGluZy1ub25lIHBzLWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICBFc2NcbiAgICAgICAgICAgICAgPC9rYmQ+e1wiIFwifVxuICAgICAgICAgICAgICBDYW5jZWwgY2hhbmdlc1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge29uTnVsbENoYW5nZSAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1jb2wgcHMtZ2FwLTEgcHMtcC0yXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtcm93IHBzLWdhcC0xIHBzLWl0ZW1zLWNlbnRlclwiIGh0bWxGb3I9XCJzZXQtbnVsbGFibGVcIj5cbiAgICAgICAgICAgICAgICA8U3dpdGNoIGlkPVwic2V0LW51bGxhYmxlXCIgY2hlY2tlZD17aXNOdWxsfSBvbkNoZWNrZWRDaGFuZ2U9e2hhbmRsZU51bGxDaGFuZ2V9IC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+U2V0IHRvIE5VTEw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwgImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBsb2NhbGl6ZWRGb3JtYXQgZnJvbSBcImRheWpzL3BsdWdpbi9sb2NhbGl6ZWRGb3JtYXRcIjtcbmltcG9ydCB0eXBlIHsgRm9ybUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IElucHV0IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvaW5wdXRcIjtcbmltcG9ydCB7IHVzZVBvcG92ZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdWkvcG9wb3Zlci1jZWxsXCI7XG5pbXBvcnQgeyBJbnB1dEFjdGlvbnMgfSBmcm9tIFwiLi9pbnB1dC1hY3Rpb25zXCI7XG5pbXBvcnQgeyB1c2VJbnB1dCB9IGZyb20gXCIuL3VzZS1pbnB1dFwiO1xuXG4vLyBJbml0aWFsaXplIGRheWpzIHBsdWdpbnNcbmRheWpzLmV4dGVuZChsb2NhbGl6ZWRGb3JtYXQpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBjb2x1bW46IENvbHVtbjtcbiAgcmVhZG9ubHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlSW5wdXQocHJvcHM6IERhdGVJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlIHVzaW5nIGRheWpzIGJhc2VkIG9uIGRldGVjdGVkIGZvcm1hdFxuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGUgPSBkYXlqcyhpbnB1dFZhbHVlKTtcbiAgICAgIGlmICghZGF0ZS5pc1ZhbGlkKCkpIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICAvLyBEZXRlY3QgaWYgaW5wdXQgaGFzIHRpbWUgY29tcG9uZW50XG4gICAgICBjb25zdCBoYXNUaW1lID0gaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIik7XG5cbiAgICAgIC8vIEh1bWFuLXJlYWRhYmxlIGZvcm1hdCAobG9jYWxpemVkKVxuICAgICAgaWYgKGhhc1RpbWUpIHtcbiAgICAgICAgLy8gRm9yIHRpbWVzdGFtcHMsIHNob3cgZnVsbCBkYXRlIGFuZCB0aW1lXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMIExUU1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBkYXRlcywganVzdCBzaG93IHRoZSBkYXRlXG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcIkxMXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5Gb3JtYXR0ZWQgdmFsdWU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkRGF0ZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUlucHV0UHJvcHMge1xuICBpbml0aWFsVmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbnB1dChwcm9wczogVXNlSW5wdXRQcm9wcykge1xuICBjb25zdCB7IGluaXRpYWxWYWx1ZSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSA/PyBcIlwiKTtcblxuICBjb25zdCBoYW5kbGVPbkNoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZSB9O1xufVxuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQC9kYXRhXCI7XG5cbmltcG9ydCB7IGJhZGdlVmFyaWFudHMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9iYWRnZVwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbnVtSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICBvcHRpb25zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW51bUlucHV0KHByb3BzOiBFbnVtSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCBjb2x1bW4sIHZhbHVlLCBvcHRpb25zID0gW10sIHJlYWRvbmx5IH0gPSBwcm9wcztcbiAgY29uc3QgaXNOdWxsYWJsZSA9IGNvbHVtbi5udWxsYWJsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgW2N1cnJlbnRWYWx1ZSwgc2V0Q3VycmVudFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gKG9wdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKG9wdGlvbik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlTnVsbENoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U2V0VG9OdWxsKGNoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gaW5pdGlhbFZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChjdXJyZW50VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdCwgc2V0VG9OdWxsLCB2YWx1ZV0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICBzZXRTZXRUb051bGwodmFsdWUgPT09IG51bGwpOyAvLyBSZXNldCBudWxsIHN0YXRlIGFzIHdlbGxcbiAgfTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1mb250LW1vbm8gcHMtaC1bdmFyKC0tc3R1ZGlvLWNlbGwtaGVpZ2h0KV0gcHMtcHgtMiBwcy1weS0wIHBzLXctZnVsbCBwcy10ZXh0LXhzIHBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICB7Y3VycmVudFZhbHVlfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtZmxleC13cmFwIHBzLWdhcC0yIHBzLXAtMiBwcy1taW4tdy1bdmFyKC0tcmFkaXgtcG9wb3Zlci10cmlnZ2VyLXdpZHRoKV0gcHMtbWF4LXctWzUwMHB4XSB3LWZ1bGwgcHMtYm9yZGVyLXQgcHMtYm9yZGVyLXRhYmxlLWJvcmRlciBwcy1vdmVyZmxvdy15LXNjcm9sbCBwcy1tYXgtaC0zMlwiPlxuICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGtleT17b3B0aW9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbil9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2JhZGdlVmFyaWFudHMoeyB2YXJpYW50OiBvcHRpb24gPT09IGN1cnJlbnRWYWx1ZSA/IFwiZGVmYXVsdFwiIDogXCJvdXRsaW5lXCIgfSl9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2V0VG9OdWxsIHx8IHJlYWRvbmx5fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtvcHRpb259XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBKc29uSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEpzb25JbnB1dChwcm9wczogSnNvbklucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBpbml0aWFsVmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgMik7XG4gIGNvbnN0IFtjdXJyZW50VmFsdWUsIHNldEN1cnJlbnRWYWx1ZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KGluaXRpYWxWYWx1ZSk7XG4gIGNvbnN0IFtzZXRUb051bGwsIHNldFNldFRvTnVsbF0gPSB1c2VTdGF0ZTxib29sZWFuPih2YWx1ZSA9PT0gbnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgc2V0Q3VycmVudFZhbHVlKGUudGFyZ2V0LnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOdWxsQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTZXRUb051bGwoY2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gU3VibWl0IGhhbmRsZXIgdGhhdCBvbmx5IHN1Ym1pdHMgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZXRUb051bGwpIHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBvblN1Ym1pdChudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QganNvblZhbHVlID0gY3VycmVudFZhbHVlID09PSBcIlwiID8gbnVsbCA6IChKU09OLnBhcnNlKGN1cnJlbnRWYWx1ZSkgYXMgb2JqZWN0KTtcblxuICAgIC8vIE9ubHkgc3VibWl0IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIGlmIChqc29uVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChqc29uVmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWdhcC00IHBzLXB5LTBcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgcm93cz17NX1cbiAgICAgICAgICB2YWx1ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWJhc2UgcHMtYXBwZWFyYW5jZS1ub25lIHBzLXctZnVsbCBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtb3V0bGluZS1ub25lIHBzLXNoYWRvdy1ub25lIHBzLWJnLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBsYW5nPVwiZW5fRU5cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8SW5wdXRBY3Rpb25zXG4gICAgICAgIG9uU2F2ZT17aGFuZGxlU2F2ZX1cbiAgICAgICAgb25DYW5jZWw9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgb25OdWxsQ2hhbmdlPXtpc051bGxhYmxlID8gaGFuZGxlTnVsbENoYW5nZSA6IHVuZGVmaW5lZH1cbiAgICAgICAgaXNOdWxsPXtzZXRUb051bGx9XG4gICAgICAgIHJlYWRvbmx5PXtyZWFkb25seX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG4iLCAiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sdW1uIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9sYWJlbFwiO1xuaW1wb3J0IHsgdXNlUG9wb3ZlckFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy91aS9wb3BvdmVyLWNlbGxcIjtcbmltcG9ydCB7IElucHV0QWN0aW9ucyB9IGZyb20gXCIuL2lucHV0LWFjdGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOdW1lcmljSW5wdXRQcm9wcyB7XG4gIGNvbHVtbjogQ29sdW1uO1xuICBvblN1Ym1pdCh0aGlzOiB2b2lkLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE51bWVyaWNJbnB1dChwcm9wczogTnVtZXJpY0lucHV0UHJvcHMpIHtcbiAgY29uc3QgeyB2YWx1ZSwgb25TdWJtaXQsIGNvbHVtbiwgcmVhZG9ubHkgfSA9IHByb3BzO1xuICBjb25zdCBpc051bGxhYmxlID0gY29sdW1uLm51bGxhYmxlID09PSB0cnVlO1xuICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nPih2YWx1ZSA9PT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpKTtcbiAgY29uc3QgW3NldFRvTnVsbCwgc2V0U2V0VG9OdWxsXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHZhbHVlID09PSBudWxsKTtcbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gdmFsdWUgPT09IG51bGwgPyBcIlwiIDogU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBzZXRDdXJyZW50VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU51bGxDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFNldFRvTnVsbChjaGVja2VkKTtcbiAgfTtcblxuICAvLyBTdWJtaXQgaGFuZGxlciB0aGF0IG9ubHkgc3VibWl0cyBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRcbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNldFRvTnVsbCkge1xuICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIG9uU3VibWl0KG51bGwpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHRvIG51bWJlclxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IGN1cnJlbnRWYWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIoY3VycmVudFZhbHVlKTtcblxuICAgIC8vIE9ubHkgc3VibWl0IGlmIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICBvblN1Ym1pdChudW1lcmljVmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2N1cnJlbnRWYWx1ZSwgdmFsdWUsIG9uU3VibWl0LCBzZXRUb051bGxdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7XG4gICAgLy8gUmVzZXQgdGhlIGludGVybmFsIHN0YXRlIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgIHNldEN1cnJlbnRWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgIHNldFNldFRvTnVsbCh2YWx1ZSA9PT0gbnVsbCk7XG4gIH07XG5cbiAgLy8gVXNlIG91ciBob29rIHRvIGdldCBoYW5kbGVycyB0aGF0IGluY2x1ZGUgcG9wb3ZlciBjbG9zaW5nXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLWZsZXggcHMtZmxleC1yb3cgcHMtaXRlbXMtY2VudGVyIHBzLWgtW3ZhcigtLXN0dWRpby1jZWxsLWhlaWdodCldIHBzLWdhcC00IHBzLXB5LTBcIj5cbiAgICAgICAgPExhYmVsIGh0bWxGb3I9XCJudW1lcmljLWlucHV0XCIgY2xhc3NOYW1lPVwicHMtc3Itb25seVwiPlxuICAgICAgICAgIE51bWVyaWNcbiAgICAgICAgPC9MYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGlucHV0TW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgIHBhdHRlcm49XCJcXGQqXCJcbiAgICAgICAgICB2YWx1ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgZGlzYWJsZWQ9e3NldFRvTnVsbCB8fCByZWFkb25seX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtYXBwZWFyYW5jZS1ub25lIHBzLXctZnVsbCBwcy1mb250LW1vbm8gcHMtYm9yZGVyLW5vbmUgcHMtb3V0bGluZS1ub25lIHBzLXNoYWRvdy1ub25lIHBzLWJnLXRyYW5zcGFyZW50IGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIHN0ZXA9XCJhbnlcIlxuICAgICAgICAgIGxhbmc9XCJlbl9FTlwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxJbnB1dEFjdGlvbnNcbiAgICAgICAgb25TYXZlPXtoYW5kbGVTYXZlfVxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlQ2FuY2VsfVxuICAgICAgICBvbk51bGxDaGFuZ2U9e2lzTnVsbGFibGUgPyBoYW5kbGVOdWxsQ2hhbmdlIDogdW5kZWZpbmVkfVxuICAgICAgICBpc051bGw9e3NldFRvTnVsbH1cbiAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEZvcm1FdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlSW5wdXQgfSBmcm9tIFwiLi91c2UtaW5wdXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYXdJbnB1dFByb3BzIHtcbiAgb25TdWJtaXQodGhpczogdm9pZCwgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHZhbHVlOiB1bmtub3duO1xuICByZWFkb25seTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhd0lucHV0KHByb3BzOiBSYXdJbnB1dFByb3BzKSB7XG4gIGNvbnN0IHsgb25TdWJtaXQsIHZhbHVlLCByZWFkb25seSB9ID0gcHJvcHM7XG5cbiAgY29uc3QgaW5pdGlhbFZhbHVlID0gU3RyaW5nKHZhbHVlKTtcblxuICBjb25zdCB7IGhhbmRsZU9uQ2hhbmdlLCB2YWx1ZTogaW5wdXRWYWx1ZSB9ID0gdXNlSW5wdXQoeyBpbml0aWFsVmFsdWUgfSk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlT25TdWJtaXQoZXZlbnQ6IEZvcm1FdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRTdWJtaXQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT09IGluaXRpYWxWYWx1ZSkge1xuICAgICAgb25TdWJtaXQoaW5wdXRWYWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBbaW5wdXRWYWx1ZSwgaW5pdGlhbFZhbHVlLCBvblN1Ym1pdF0pO1xuXG4gIGNvbnN0IGNhbmNlbEFjdGlvbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IHsgaGFuZGxlU2F2ZSwgaGFuZGxlQ2FuY2VsIH0gPSB1c2VQb3BvdmVyQWN0aW9ucyh7XG4gICAgb25TYXZlOiBoYW5kbGVJbnB1dFN1Ym1pdCxcbiAgICBvbkNhbmNlbDogY2FuY2VsQWN0aW9uLFxuICAgIHJlYWRvbmx5LFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlT25TdWJtaXR9PlxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1jZWxsLWlucHV0LWxlYWRpbmcgcHMtZm9udC1tb25vIHBzLWJvcmRlci1ub25lIHBzLXNoYWRvdy1ub25lIGZvY3VzLXZpc2libGU6cHMtcmluZy0wIHBzLXJlc2l6ZS1ub25lIHBzLXB4LVt2YXIoLS1zdHVkaW8tY2VsbC1zcGFjaW5nKV1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVPbkNoYW5nZX1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgdmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgbG9jYWxpemVkRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0XCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1FdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkAvZGF0YVwiO1xuXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL2lucHV0XCI7XG5pbXBvcnQgeyB1c2VQb3BvdmVyQWN0aW9ucyB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3VpL3BvcG92ZXItY2VsbFwiO1xuaW1wb3J0IHsgSW5wdXRBY3Rpb25zIH0gZnJvbSBcIi4vaW5wdXQtYWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlSW5wdXQgfSBmcm9tIFwiLi91c2UtaW5wdXRcIjtcblxuLy8gSW5pdGlhbGl6ZSBkYXlqcyBwbHVnaW5zXG5kYXlqcy5leHRlbmQobG9jYWxpemVkRm9ybWF0KTtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lSW5wdXRQcm9wcyB7XG4gIG9uU3VibWl0KHRoaXM6IHZvaWQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgY29sdW1uOiBDb2x1bW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZUlucHV0KHByb3BzOiBUaW1lSW5wdXRQcm9wcykge1xuICBjb25zdCB7IG9uU3VibWl0LCB2YWx1ZSwgcmVhZG9ubHkgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgeyBoYW5kbGVPbkNoYW5nZSwgdmFsdWU6IGlucHV0VmFsdWUgfSA9IHVzZUlucHV0KHsgaW5pdGlhbFZhbHVlIH0pO1xuXG4gIC8vIEZvcm1hdCB0aW1lIHZhbHVlcyBpbiBhIGh1bWFuLXJlYWRhYmxlIG1hbm5lclxuICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghaW5wdXRWYWx1ZS5pbmNsdWRlcyhcIjpcIikpIHJldHVybiBpbnB1dFZhbHVlO1xuXG4gICAgICBjb25zdCBoYXNUaW1lem9uZSA9IC9bKy1dXFxkezJ9KDpcXGR7Mn0pPyQvLnRlc3QoaW5wdXRWYWx1ZSk7XG4gICAgICBjb25zdCBkYXRlID0gZGF5anMoYDIwMDAtMDEtMDEgJHtpbnB1dFZhbHVlfWApO1xuICAgICAgaWYgKGRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBkYXRlLmZvcm1hdChcImg6bW0gQVwiKSArIChoYXNUaW1lem9uZSA/IGAgKCR7ZGF0ZS5mb3JtYXQoXCJaXCIpfSlgIDogXCJcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVSZWdleCA9IC8oXFxkezEsMn0pOihcXGR7Mn0pOihcXGR7Mn0pKD86XFwuXFxkKyk/KFsrLV1cXGR7Mn0oPzo6XFxkezJ9KT8pPy87XG4gICAgICBjb25zdCBtYXRjaCA9IGlucHV0VmFsdWUubWF0Y2godGltZVJlZ2V4KTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBjb25zdCBob3VycyA9IHBhcnNlSW50KG1hdGNoWzFdIHx8IFwiMTJcIiwgMTApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gbWF0Y2hbMl0gfHwgXCIwMFwiO1xuICAgICAgICBjb25zdCB0ek9mZnNldCA9IG1hdGNoWzRdIHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHBlcmlvZCA9IGhvdXJzID49IDEyID8gXCJQTVwiIDogXCJBTVwiO1xuICAgICAgICBjb25zdCBob3VyMTIgPSBob3VycyAlIDEyID09PSAwID8gMTIgOiBob3VycyAlIDEyO1xuXG4gICAgICAgIHJldHVybiBgJHtob3VyMTJ9OiR7bWludXRlc30gJHtwZXJpb2R9JHt0ek9mZnNldCA/IGAgKCR7dHpPZmZzZXR9KWAgOiBcIlwifWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gICAgfVxuICB9LCBbaW5wdXRWYWx1ZV0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZU9uU3VibWl0KGV2ZW50OiBGb3JtRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUlucHV0U3VibWl0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBpbml0aWFsVmFsdWUpIHtcbiAgICAgIG9uU3VibWl0KGlucHV0VmFsdWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2lucHV0VmFsdWUsIGluaXRpYWxWYWx1ZSwgb25TdWJtaXRdKTtcblxuICBjb25zdCBjYW5jZWxBY3Rpb24gPSAoKSA9PiB7fTtcblxuICBjb25zdCB7IGhhbmRsZVNhdmUsIGhhbmRsZUNhbmNlbCB9ID0gdXNlUG9wb3ZlckFjdGlvbnMoe1xuICAgIG9uU2F2ZTogaGFuZGxlSW5wdXRTdWJtaXQsXG4gICAgb25DYW5jZWw6IGNhbmNlbEFjdGlvbixcbiAgICByZWFkb25seSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZU9uU3VibWl0fT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwicHMtY2VsbC1pbnB1dC1sZWFkaW5nIHBzLWZvbnQtbW9ubyBwcy1ib3JkZXItbm9uZSBwcy1zaGFkb3ctbm9uZSBmb2N1cy12aXNpYmxlOnBzLXJpbmctMCBwcy1yZXNpemUtbm9uZSBwcy1weC1bdmFyKC0tc3R1ZGlvLWNlbGwtc3BhY2luZyldXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlT25DaGFuZ2V9XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cInBzLXNyLW9ubHlcIiAvPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mbGV4IHBzLWZsZXgtY29sIHBzLWdhcC0xIHBzLXAtMiBwcy1ib3JkZXItdCBwcy1ib3JkZXItdGFibGUtYm9yZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdGV4dC14cyBwcy10ZXh0LW11dGVkLWZvcmVncm91bmRcIj5Gb3JtYXR0ZWQgdmFsdWU8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy10ZXh0LXhzIHBzLWZvbnQtbW9ubyBwcy10ZXh0LWZvcmVncm91bmRcIj57Zm9ybWF0dGVkVGltZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPElucHV0QWN0aW9ucyBvblNhdmU9e2hhbmRsZVNhdmV9IG9uQ2FuY2VsPXtoYW5kbGVDYW5jZWx9IHJlYWRvbmx5PXtyZWFkb25seX0gLz5cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBDb2x1bW5EZWYsIFRhYmxlLCB1c2VSZWFjdFRhYmxlIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC10YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRUeXBlLCBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9taXQgfSBmcm9tIFwicmVtZWRhXCI7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gXCJAL2RhdGFcIjtcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSBcIkAvdWkvY29tcG9uZW50cy91aS90YWJsZVwiO1xuXG5pbXBvcnQgeyB1c2VJc0luc2VydGluZyB9IGZyb20gXCIuLi9ob29rcy91c2UtaXMtaW5zZXJ0aW5nXCI7XG5pbXBvcnQgeyBDZWxsUHJvcHMgfSBmcm9tIFwiLi9jZWxsL0NlbGxcIjtcbmltcG9ydCB7IEVtcHR5Q2VsbCB9IGZyb20gXCIuL2NlbGwvRW1wdHlDZWxsXCI7XG5pbXBvcnQgeyBnZXRDZWxsIH0gZnJvbSBcIi4vY2VsbC9nZXQtY2VsbFwiO1xuaW1wb3J0IHsgV3JpdGVhYmxlQ2VsbCB9IGZyb20gXCIuL2NlbGwvV3JpdGVhYmxlQ2VsbFwiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uUGlubmluZ1N0eWxlcyB9IGZyb20gXCIuL2dyaWQvZmVhdHVyZXMvY29sdW1uLXBpbm5pbmdcIjtcbmltcG9ydCB7IGdldElucHV0IH0gZnJvbSBcIi4vaW5wdXQvZ2V0LWlucHV0XCI7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHRhYmxlOiBUYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIHN0YWdlZFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHNldFN0YWdlZFJvd3M6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGFnZWRSb3dzKHByb3BzOiBQcm9wcykge1xuICBjb25zdCB7IHRhYmxlOiBwYXJlbnRUYWJsZSwgc3RhZ2VkUm93cywgc2V0U3RhZ2VkUm93cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlYWRvbmx5ID0gQm9vbGVhbih1c2VJc0luc2VydGluZygpKTtcblxuICBmdW5jdGlvbiB1cGRhdGVTdGFnZWRSb3cocm93SW5kZXg6IG51bWJlciwgcGFydGlhbFJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBzZXRTdGFnZWRSb3dzKChwcmV2Um93cykgPT4ge1xuICAgICAgY29uc3QgbmV3Um93cyA9IFsuLi5wcmV2Um93c107XG4gICAgICBuZXdSb3dzW3Jvd0luZGV4XSA9IHsgLi4ubmV3Um93c1tyb3dJbmRleF0sIC4uLnBhcnRpYWxSb3cgfTtcblxuICAgICAgcmV0dXJuIG5ld1Jvd3M7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjb2x1bW5EZWZzID0gT2JqZWN0LnZhbHVlcyhwYXJlbnRUYWJsZS5vcHRpb25zLmNvbHVtbnMpLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgaWYgKGNvbHVtbi5pZCA9PT0gXCJfX3BzX3NlbGVjdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgIGNlbGwoKSB7XG4gICAgICAgICAgcmV0dXJuICgpID0+IDxFbXB0eUNlbGwgLz47XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5jb2x1bW4sXG4gICAgICBjZWxsKHsgY2VsbCB9KSB7XG4gICAgICAgIHJldHVybiAocHJvcHM6IE9taXQ8Q2VsbFByb3BzLCBcImNoaWxkcmVuXCIgfCBcInJlZlwiPiAmIHsgcm93SW5kZXg6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPFdyaXRlYWJsZUNlbGxcbiAgICAgICAgICAgIGNlbGxDb21wb25lbnQ9e2dldENlbGwoeyBjZWxsLCBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbiwgcHJvcHMgfSl9XG4gICAgICAgICAgICBpbnB1dENvbXBvbmVudD17Z2V0SW5wdXQoe1xuICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi5tZXRhIGFzIENvbHVtbixcbiAgICAgICAgICAgICAgb25TdWJtaXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGVTdGFnZWRSb3cocHJvcHMucm93SW5kZXgsIHsgW2NvbHVtbi5pZCFdOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDb2x1bW5EZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICB9KTtcblxuICBjb25zdCB0YWJsZSA9IHVzZVJlYWN0VGFibGUoe1xuICAgIC4uLnBhcmVudFRhYmxlLm9wdGlvbnMsXG4gICAgY29sdW1uczogY29sdW1uRGVmcyxcbiAgICBlbmFibGVTb3J0aW5nOiBmYWxzZSxcbiAgICBvblBhZ2luYXRpb25DaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBvblNvcnRpbmdDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBkYXRhOiBzdGFnZWRSb3dzLFxuICAgIHN0YXRlOiBvbWl0KHBhcmVudFRhYmxlLm9wdGlvbnMuc3RhdGUsIFtcInBhZ2luYXRpb25cIiwgXCJzb3J0aW5nXCJdKSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3RhYmxlLmdldFJvd01vZGVsKCkucm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICA8VGFibGVSb3cga2V5PXtpfT5cbiAgICAgICAgICB7cm93LmdldFZpc2libGVDZWxscygpLm1hcCgoY2VsbCwgaikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIHR5cGUgQ2VsbCA9IENvbXBvbmVudFR5cGU8T21pdDxDZWxsUHJvcHMsIFwiY2hpbGRyZW5cIiB8IFwicmVmXCI+ICYgeyByb3dJbmRleDogbnVtYmVyIH0+O1xuICAgICAgICAgICAgICBjb25zdCBDZWxsID0gY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGwoY2VsbC5nZXRDb250ZXh0KCkpIGFzIENlbGw7XG4gICAgICAgICAgICAgIHJldHVybiA8Q2VsbCBrZXk9e2p9IHsuLi5nZXRDb2x1bW5QaW5uaW5nU3R5bGVzKGNlbGwuY29sdW1uLCBcImNlbGxcIil9IHJvd0luZGV4PXtpfSAvPjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvVGFibGVSb3c+XG4gICAgICApKX1cbiAgICA8Lz5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBUYWJsZTIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5cbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdWkvc2tlbGV0b25cIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVRhYmxlIH0gZnJvbSBcIi4uL2hvb2tzL3VzZS1hY3RpdmUtdGFibGVcIjtcbmltcG9ydCB7IHVzZUFjdGl2ZVZpZXcgfSBmcm9tIFwiLi4vaG9va3MvdXNlLWFjdGl2ZS12aWV3XCI7XG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi9saWIvdXRpbHNcIjtcblxudHlwZSBOYXZpZ2F0aW9uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbn0gJiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD47XG5cbmV4cG9ydCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHsgY2xhc3NOYW1lIH06IE5hdmlnYXRpb25Qcm9wcykge1xuICAvLyBVc2UgdGhlIGN1c3RvbSBob29rcyB0byBnZXQgYWxsIG5lY2Vzc2FyeSBzdGF0ZSBhbmQgaGFuZGxlcnNcbiAgY29uc3QgeyB0YWJsZXMsIGFjdGl2ZVRhYmxlLCBpc0xvYWRpbmcsIGhhbmRsZVRhYmxlQ2hhbmdlIH0gPSB1c2VBY3RpdmVUYWJsZSgpO1xuICBjb25zdCB7IGFjdGl2ZVZpZXcsIGhhbmRsZVZpZXdDaGFuZ2UgfSA9IHVzZUFjdGl2ZVZpZXcoKTtcblxuICBjb25zdCBzaWRlQmFyQ2xhc3NlcyA9IGNuKFxuICAgIFwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy13LTQ4IHBzLWdhcC00IHBzLW92ZXJmbG93LXktYXV0byBwcy1tYXgtaC1mdWxsIHBzLW1pbi1oLTAgcHMtdGV4dC1jYXJkLWZvcmVncm91bmQgcHMtc2hhZG93LXhzXCIsXG4gICAgY2xhc3NOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3NpZGVCYXJDbGFzc2VzfT5cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiU3R1ZGlvXCI+XG4gICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW1cbiAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlVmlldyA9PT0gXCJzY2hlbWEtdmlzdWFsaXNlclwifVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVZpZXdDaGFuZ2UoXCJzY2hlbWEtdmlzdWFsaXNlclwiKX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJwcy1weS0xIHBzLWZvbnQtbW9ubyBwcy10ZXh0LXhzIHBzLXRleHQtZm9yZWdyb3VuZC82MCBob3Zlcjpwcy10ZXh0LWZvcmVncm91bmQgcHMtdHJhbnNpdGlvbi1hbGwgcHMtY3Vyc29yLXBvaW50ZXIgZGF0YS1bYWN0aXZlPXRydWVdOnBzLWJnLXNsYXRlLTIwMCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtZm9yZWdyb3VuZCBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtdGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNjaGVtYSB2aXN1YWxpc2VyXG4gICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgPC9OYXZpZ2F0aW9uLkJsb2NrPlxuXG4gICAgICB7LyogVE9ETzogc2NoZW1hIHNlbGVjdG9yLiAqL31cbiAgICAgIDxOYXZpZ2F0aW9uLkJsb2NrIGxhYmVsPVwiVGFibGVzXCI+XG4gICAgICAgIHt0YWJsZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICB0YWJsZXMubWFwKCh0YWJsZSkgPT4gKFxuICAgICAgICAgICAgPE5hdmlnYXRpb24uSXRlbVxuICAgICAgICAgICAgICBrZXk9e2Ake3RhYmxlLnNjaGVtYX0tJHt0YWJsZS5uYW1lfWB9XG4gICAgICAgICAgICAgIGFzQ2hpbGRcbiAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZVZpZXcgPT09IFwidGFibGVzXCIgJiYgYWN0aXZlVGFibGUgPT09IHRhYmxlfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmlld0NoYW5nZShcInRhYmxlc1wiKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVUYWJsZUNoYW5nZSh0YWJsZSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHBzLXB5LTEgcHMtZm9udC1tb25vIHBzLXRleHQteHMgcHMtdGV4dC1mb3JlZ3JvdW5kLzYwIGhvdmVyOnBzLXRleHQtZm9yZWdyb3VuZCBwcy10cmFuc2l0aW9uLWFsbCBwcy1jdXJzb3ItcG9pbnRlciBkYXRhLVthY3RpdmU9dHJ1ZV06cHMtYmctc2xhdGUtMjAwIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy1mb3JlZ3JvdW5kIGRhdGEtW2FjdGl2ZT10cnVlXTpwcy10ZXh0LWZvcmVncm91bmRgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YSBocmVmPXtgI3RhYmxlPSR7dGFibGUubmFtZX0mc2NoZW1hPSR7dGFibGUuc2NoZW1hfWB9Pnt0YWJsZS5uYW1lfTwvYT5cbiAgICAgICAgICAgIDwvTmF2aWdhdGlvbi5JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICkgOiBpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgQXJyYXkoNClcbiAgICAgICAgICAgIC5maWxsKG51bGwpXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8TmF2aWdhdGlvbi5JdGVtIGtleT17aW5kZXh9IHdyYXBDaGlsZHJlbkluU3Bhbj17ZmFsc2V9PlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJwcy1oLTMgcHMtdy1mdWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICAgICApKVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxOYXZpZ2F0aW9uLkl0ZW0+Tm8gdGFibGVzIGZvdW5kPC9OYXZpZ2F0aW9uLkl0ZW0+XG4gICAgICAgICl9XG4gICAgICA8L05hdmlnYXRpb24uQmxvY2s+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEJsb2NrID0gKHsgY2xhc3NOYW1lLCBsYWJlbCwgY2hpbGRyZW4sIC4uLnByb3BzIH06IFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0gey4uLnByb3BzfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtZmxleCBwcy1pdGVtcy1jZW50ZXIgcHMtZ2FwLTEgcHMtcHQtNCBwcy1wYi0yIHBzLXB4LTQgcHMtc3RpY2t5IHBzLXRvcC0wIHBzLWJnLXNsYXRlLTUwLzUwIHBzLWJhY2tkcm9wLWJsdXItc21cIj5cbiAgICAgICAgPFRhYmxlMiBzaXplPXsxNn0gY2xhc3NOYW1lPVwicHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInBzLXRleHQtc20gcHMtZm9udC1tZWRpdW1cIj57bGFiZWx9PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5hdiBhcmlhLWxhYmVsPXtsYWJlbH0gY2xhc3NOYW1lPVwicHMtZmxleCBwcy1mbGV4LWNvbCBwcy1nYXAtcHggcHMtcGItMyBwcy1wLTJcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBJdGVtID0gKHtcbiAgY2xhc3NOYW1lLFxuICBhc0NoaWxkID0gZmFsc2UsXG4gIGlzQWN0aXZlLFxuICBzaXplLFxuICBjaGlsZHJlbixcbiAgd3JhcENoaWxkcmVuSW5TcGFuID0gdHJ1ZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYge1xuICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBzaXplPzogXCJkZWZhdWx0XCIgfCBcInNtXCI7XG4gIHdyYXBDaGlsZHJlbkluU3Bhbj86IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IFwiYnV0dG9uXCI7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29tcFxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1idXR0b25cIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwcy1weS0xLjUgcHMtcHgtMiBwcy10ZXh0LXNtIHBzLWZvbnQtbWVkaXVtIHBzLXJvdW5kZWQtbWQgcHMtZmxleCBwcy1nYXAtMiBwcy1pdGVtcy1jZW50ZXIgcHMtYm9yZGVyIHBzLWJvcmRlci10cmFuc3BhcmVudCBwcy1iZy10cmFuc3BhcmVudFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHt3cmFwQ2hpbGRyZW5JblNwYW4gPyA8c3BhbiBjbGFzc05hbWU9XCJwcy10cnVuY2F0ZVwiPntjaGlsZHJlbn08L3NwYW4+IDogY2hpbGRyZW59XG4gICAgPC9Db21wPlxuICApO1xufTtcblxuTmF2aWdhdGlvbi5CbG9jayA9IEJsb2NrO1xuTmF2aWdhdGlvbi5JdGVtID0gSXRlbTtcbiIsICJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5pbXBvcnQgeyBrZXlNYXAsIHVzZVF1ZXJ5U3RhdGUsIHVzZVF1ZXJ5U3RhdGVzIH0gZnJvbSBcIi4vbnVxc1wiO1xuaW1wb3J0IHsgSU5JVElBTF9EQVRBX1VQREFURURfQVQsIHVzZUludHJvc3BlY3Rpb24gfSBmcm9tIFwiLi91c2UtaW50cm9zcGVjdGlvblwiO1xuXG4vKipcbiAqIEhvb2sgdG8gZW5jYXBzdWxhdGUgYWxsIGxvZ2ljIGZvciBtYW5hZ2luZyB0aGUgYWN0aXZlIHRhYmxlIHNlbGVjdGlvbi5cbiAqIEhhbmRsZXMgc3luY2luZyB3aXRoIFVSTCBwYXJhbXMsIGRlZmF1bHQgc2VsZWN0aW9uLCBhbmQgZXhwb3NlcyBhIHNpbXBsZSBBUEkgZm9yIGNvbnN1bWVycy5cbiAqIFNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aGluIFN0dWRpbyBjb250ZXh0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aXZlVGFibGUoKSB7XG4gIGNvbnN0IHsgYWN0aXZlVGFibGUsIHNldEFjdGl2ZVRhYmxlLCBhZGFwdGVyLCBlbWl0VGVsZW1ldHJ5RXZlbnQgfSA9IHVzZVN0dWRpbygpO1xuICBjb25zdCB7IGRhdGE6IGludHJvc3BlY3Rpb24sIGRhdGFVcGRhdGVkQXQgfSA9IHVzZUludHJvc3BlY3Rpb24oKTtcbiAgY29uc3QgaXNMb2FkaW5nID0gZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQ7XG5cbiAgLy8gR2V0IGFsbCB0YWJsZXMgZm9yIHRoZSBjdXJyZW50IHNjaGVtYVxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXNbYWRhcHRlci5kZWZhdWx0U2NoZW1hIHx8IFwiZGJcIl0/LnRhYmxlcyB8fCB7fSk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXMsIGFkYXB0ZXIuZGVmYXVsdFNjaGVtYV0pO1xuXG4gIC8vIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFibGVzIGFjcm9zcyBhbGwgc2NoZW1hc1xuICBjb25zdCB0b3RhbFRhYmxlQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbnRyb3NwZWN0aW9uLnNjaGVtYXMpLnJlZHVjZSgoc3VtLCBzY2hlbWEpID0+IHtcbiAgICAgIHJldHVybiBzdW0gKyBPYmplY3Qua2V5cyhzY2hlbWEudGFibGVzKS5sZW5ndGg7XG4gICAgfSwgMCk7XG4gIH0sIFtpbnRyb3NwZWN0aW9uLnNjaGVtYXNdKTtcblxuICBjb25zdCBbZmlyc3RUYWJsZV0gPSB0YWJsZXM7XG5cbiAgY29uc3QgW3RhYmxlQW5kU2NoZW1hLCBzZXRUYWJsZUFuZFNjaGVtYV0gPSB1c2VRdWVyeVN0YXRlcyhcbiAgICBrZXlNYXAoe1xuICAgICAgdGFibGU6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgICAgICBwYXJzZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYsXG4gICAgICAgIHNlcmlhbGl6ZTogKHY6IHN0cmluZyB8IG51bGwpID0+IHYgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG4gIC8vIEFkZCBxdWVyeSBzdGF0ZSBmb3IgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXNcbiAgY29uc3QgWywgc2V0UGFnZVBhcmFtXSA9IHVzZVF1ZXJ5U3RhdGU8c3RyaW5nIHwgbnVsbD4oXCJwYWdlSW5kZXhcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuICBjb25zdCBbLCBzZXRTb3J0UGFyYW1dID0gdXNlUXVlcnlTdGF0ZTxzdHJpbmcgfCBudWxsPihcInNvcnRcIiwge1xuICAgIHBhcnNlOiAodikgPT4gdixcbiAgICBzZXJpYWxpemU6ICh2KSA9PiB2ID8/IFwiXCIsXG4gIH0pO1xuXG4gIC8vIEVmZmVjdCB0byBzeW5jIGFjdGl2ZSB0YWJsZSB3aXRoIFVSTCBwYXJhbSBhbmQgZGVmYXVsdHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nKSByZXR1cm47XG4gICAgLy8gSWYgc2NoZW1hIGFuZCB0YWJsZSBwYXJhbXMgaW4gVVJMLCB0cnkgdG8gc2V0IHRoYXQgdGFibGVcbiAgICBpZiAodGFibGVBbmRTY2hlbWE/LnRhYmxlICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUZyb21QYXJhbSA9IHRhYmxlcy5maW5kKCh0KSA9PiB0Lm5hbWUgPT09IHRhYmxlQW5kU2NoZW1hLnRhYmxlKTtcblxuICAgICAgaWYgKHRhYmxlRnJvbVBhcmFtKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlRnJvbVBhcmFtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBubyBzY2hlbWEvdGFibGUgcGFyYW1zIG9yIG5vdCBmb3VuZCwgc2V0IGZpcnN0IHRhYmxlIGFzIGRlZmF1bHRcbiAgICBpZiAodGFibGVzLmxlbmd0aCA+IDAgJiYgIWFjdGl2ZVRhYmxlKSB7XG4gICAgICBzZXRBY3RpdmVUYWJsZShmaXJzdFRhYmxlIHx8IG51bGwpO1xuICAgICAgaWYgKGZpcnN0VGFibGUpIHtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBmaXJzdFRhYmxlLm5hbWUsIHNjaGVtYTogZmlyc3RUYWJsZS5zY2hlbWEgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNMb2FkaW5nLCB0YWJsZUFuZFNjaGVtYSwgdGFibGVzLCBmaXJzdFRhYmxlLCBhY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hXSk7XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgYWN0aXZlIHRhYmxlIGFuZCB1cGRhdGUgdGhlIFVSTCBwYXJhbS5cbiAgICogQWxzbyBjbGVhcnMgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlVGFibGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VGFibGU6IFRhYmxlKSA9PiB7XG4gICAgICBpZiAoYWN0aXZlVGFibGUgIT09IG5ld1RhYmxlKSB7XG4gICAgICAgIHNldEFjdGl2ZVRhYmxlKG5ld1RhYmxlKTtcbiAgICAgICAgdm9pZCBzZXRUYWJsZUFuZFNjaGVtYSh7IHRhYmxlOiBuZXdUYWJsZS5uYW1lLCBzY2hlbWE6IG5ld1RhYmxlLnNjaGVtYSB9KTtcbiAgICAgICAgLy8gQ2xlYXIgcGFnaW5hdGlvbiBhbmQgc29ydGluZyBwYXJhbXMgd2hlbiBzd2l0Y2hpbmcgdGFibGVzXG4gICAgICAgIHZvaWQgc2V0UGFnZVBhcmFtKG51bGwpO1xuICAgICAgICB2b2lkIHNldFNvcnRQYXJhbShudWxsKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthY3RpdmVUYWJsZSwgc2V0QWN0aXZlVGFibGUsIHNldFRhYmxlQW5kU2NoZW1hLCBzZXRQYWdlUGFyYW0sIHNldFNvcnRQYXJhbV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUT0RPOiByZXBsYWNlIHdpdGggaXNMb2FkaW5nXG4gICAgaWYgKGRhdGFVcGRhdGVkQXQgIT09IC0xKSB7XG4gICAgICBlbWl0VGVsZW1ldHJ5RXZlbnQoe1xuICAgICAgICBldmVudDogXCJzdHVkaW9fbGF1bmNoZWRcIixcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGV2ZW50X2lkOiB1dWlkdjQoKSxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICB0YWJsZV9jb3VudDogdG90YWxUYWJsZUNvdW50LFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbdGFibGVzLCBlbWl0VGVsZW1ldHJ5RXZlbnQsIGRhdGFVcGRhdGVkQXQsIHRvdGFsVGFibGVDb3VudF0pO1xuXG4gIHJldHVybiB7XG4gICAgdGFibGVzLFxuICAgIGFjdGl2ZVRhYmxlLFxuICAgIGlzTG9hZGluZyxcbiAgICBoYW5kbGVUYWJsZUNoYW5nZSxcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyB1c2VRdWVyeSB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcblxuaW1wb3J0IHR5cGUgeyBJbnRyb3NwZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEvYWRhcHRlclwiO1xuaW1wb3J0IHsgdXNlU3R1ZGlvIH0gZnJvbSBcIi4uL3N0dWRpby9jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCA9IC0xO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW50cm9zcGVjdGlvbigpIHtcbiAgY29uc3QgeyBhZGFwdGVyIH0gPSB1c2VTdHVkaW8oKTtcblxuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIGluaXRpYWxEYXRhOiB7XG4gICAgICBzY2hlbWFzOiB7XG4gICAgICAgIFthZGFwdGVyLmRlZmF1bHRTY2hlbWEgfHwgXCJkYlwiXToge1xuICAgICAgICAgIHRhYmxlczoge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGltZXpvbmU6IFwiVVRDXCIsXG4gICAgICBmaWx0ZXJPcGVyYXRvcnM6IFtdLFxuICAgIH0gc2F0aXNmaWVzIEludHJvc3BlY3Rpb24sXG4gICAgaW5pdGlhbERhdGFVcGRhdGVkQXQ6IElOSVRJQUxfREFUQV9VUERBVEVEX0FULFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7IHNpZ25hbCB9KSA9PiB7XG4gICAgICBjb25zdCBbZXJyb3IsIGludHJvc3BlY3Rpb25dID0gYXdhaXQgYWRhcHRlci5pbnRyb3NwZWN0KHsgYWJvcnRTaWduYWw6IHNpZ25hbCB9KTtcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW50cm9zcGVjdGlvbjtcbiAgICB9LFxuICAgIHF1ZXJ5S2V5OiBbXCJpbnRyb3NwZWN0aW9uXCJdLFxuICAgIC8vIGlmIGlzIGluaXRpYWwgZGF0YSwgcmVmZXRjaCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBuZXZlciByZWZldGNoIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJhY2tncm91bmQuXG4gICAgLy8gd2UgY2FuIHN0aWxsIHJlZmV0Y2ggbWFudWFsbHkgdXNpbmcgdGhlIHF1ZXJ5IGNsaWVudCAtIHByb2JhYmx5IHRyaWdnZXJlZCBieSBhIGJ1dHRvbi5cbiAgICBzdGFsZVRpbWU6IChjdHgpID0+IChjdHguc3RhdGUuZGF0YVVwZGF0ZWRBdCA9PT0gSU5JVElBTF9EQVRBX1VQREFURURfQVQgPyAwIDogSW5maW5pdHkpLFxuICB9KTtcbn1cbiIsICJpbXBvcnQgXCJyZWFjdGZsb3cvZGlzdC9zdHlsZS5jc3NcIjtcblxuaW1wb3J0IHsgQ2FsZW5kYXIsIEhhc2gsIEtleSwgTWFpbCwgUGhvbmUsIFVzZXIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyB0eXBlIEZDLCBtZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFJlYWN0Rmxvdywge1xuICBhZGRFZGdlLFxuICBCYWNrZ3JvdW5kLFxuICB0eXBlIENvbm5lY3Rpb24sXG4gIENvbm5lY3Rpb25MaW5lVHlwZSxcbiAgQ29udHJvbHMsXG4gIHR5cGUgRWRnZSxcbiAgSGFuZGxlLFxuICB0eXBlIE5vZGUsXG4gIHR5cGUgTm9kZVByb3BzLFxuICB0eXBlIE5vZGVUeXBlcyxcbiAgUG9zaXRpb24sXG4gIHVzZUVkZ2VzU3RhdGUsXG4gIHVzZU5vZGVzU3RhdGUsXG59IGZyb20gXCJyZWFjdGZsb3dcIjtcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vbGliL3V0aWxzXCI7XG5cbnR5cGUgRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBpc1ByaW1hcnk/OiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgVGFibGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZmllbGRzOiBGaWVsZFtdO1xufTtcblxudHlwZSBTY2hlbWFWaXN1YWxpemF0aW9uUHJvcHMgPSB7XG4gIHRhYmxlczogVGFibGVbXTtcbiAgcmVsYXRpb25zaGlwczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9W107XG59O1xuXG5pbnRlcmZhY2UgVGFibGVOb2RlRGF0YSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRbXTtcbn1cblxuY29uc3QgVGFibGVOb2RlOiBGQzxOb2RlUHJvcHM8VGFibGVOb2RlRGF0YT4+ID0gbWVtbygoeyBkYXRhIH0pID0+IHtcbiAgY29uc3QgZ2V0SWNvbiA9IChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgIHN3aXRjaCAoZmllbGROYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgXCJpZFwiOlxuICAgICAgICByZXR1cm4gPEhhc2ggY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgIHJldHVybiA8TWFpbCBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwicGhvbmVcIjpcbiAgICAgICAgcmV0dXJuIDxQaG9uZSBjbGFzc05hbWU9XCJwcy13LTQgcHMtaC00XCIgLz47XG4gICAgICBjYXNlIFwibmFtZVwiOlxuICAgICAgICByZXR1cm4gPFVzZXIgY2xhc3NOYW1lPVwicHMtdy00IHBzLWgtNFwiIC8+O1xuICAgICAgY2FzZSBcImNyZWF0ZWRhdFwiOlxuICAgICAgY2FzZSBcInVwZGF0ZWRhdFwiOlxuICAgICAgICByZXR1cm4gPENhbGVuZGFyIGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiA8S2V5IGNsYXNzTmFtZT1cInBzLXctNCBwcy1oLTRcIiAvPjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBzLW1pbi13LVsyNTBweF0gcHMtc2hhZG93LXhsIHBzLXJvdW5kZWQtbWQgcHMtYm9yZGVyIHBzLWJvcmRlci1ib3JkZXIgcHMtYmctY2FyZFwiPlxuICAgICAgPEhhbmRsZSB0eXBlPVwidGFyZ2V0XCIgcG9zaXRpb249e1Bvc2l0aW9uLlRvcH0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1weC00IHBzLXB5LTMgcHMtYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1mb250LWJvbGRcIj57ZGF0YS5sYWJlbH08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcy1weC00IHBzLXB5LTJcIj5cbiAgICAgICAge2RhdGEuZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y24oXCJwcy1mbGV4IHBzLWl0ZW1zLWNlbnRlciBwcy1nYXAtMiBwcy1weS0yIHBzLXRleHQtc21cIiwgZmllbGQuaXNQcmltYXJ5ICYmIFwicHMtdGV4dC1wcmltYXJ5XCIpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPntnZXRJY29uKGZpZWxkLm5hbWUpfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLWZsZXgtMVwiPntmaWVsZC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBzLXRleHQteHMgcHMtdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e2ZpZWxkLnR5cGV9PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPEhhbmRsZSB0eXBlPVwic291cmNlXCIgcG9zaXRpb249e1Bvc2l0aW9uLkJvdHRvbX0gc3R5bGU9e3sgb3BhY2l0eTogMCB9fSAvPlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cblRhYmxlTm9kZS5kaXNwbGF5TmFtZSA9IFwiVGFibGVOb2RlXCI7XG5cbmNvbnN0IG5vZGVUeXBlcyA9IHtcbiAgdGFibGVOb2RlOiBUYWJsZU5vZGUsXG59IGFzIE5vZGVUeXBlcztcblxuZXhwb3J0IGZ1bmN0aW9uIFNjaGVtYVZpc3VhbGl6YXRpb24oeyB0YWJsZXMsIHJlbGF0aW9uc2hpcHMgfTogU2NoZW1hVmlzdWFsaXphdGlvblByb3BzKSB7XG4gIGNvbnN0IGluaXRpYWxOb2RlczogTm9kZVtdID0gdGFibGVzLm1hcCgodGFibGUsIGluZGV4KSA9PiAoe1xuICAgIGlkOiB0YWJsZS5uYW1lLFxuICAgIHR5cGU6IFwidGFibGVOb2RlXCIsXG4gICAgZGF0YToge1xuICAgICAgbGFiZWw6IHRhYmxlLm5hbWUsXG4gICAgICBmaWVsZHM6IHRhYmxlLmZpZWxkcyxcbiAgICB9LFxuICAgIHBvc2l0aW9uOiB7IHg6IDI1MCAqIGluZGV4LCB5OiAxMDAgKiBpbmRleCB9LFxuICB9KSk7XG5cbiAgY29uc3QgaW5pdGlhbEVkZ2VzOiBFZGdlW10gPSByZWxhdGlvbnNoaXBzLm1hcCgocmVsLCBpbmRleCkgPT4gKHtcbiAgICBpZDogYGUke2luZGV4fWAsXG4gICAgc291cmNlOiByZWwuZnJvbSxcbiAgICB0YXJnZXQ6IHJlbC50byxcbiAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICBsYWJlbDogcmVsLnR5cGUsXG4gICAgdHlwZTogXCJzbW9vdGhzdGVwXCIsXG4gICAgc3R5bGU6IHsgc3Ryb2tlOiBcImhzbCh2YXIoLS1wcmltYXJ5KSlcIiwgc3Ryb2tlV2lkdGg6IDEsIHN0cm9rZURhc2hhcnJheTogXCI1IDVcIiB9LFxuICAgIGxhYmVsU3R5bGU6IHsgZmlsbDogXCJoc2wodmFyKC0tcHJpbWFyeSkpXCIsIGZvbnRTaXplOiAxMiB9LFxuICB9KSk7XG5cbiAgY29uc3QgW25vZGVzLCBfc2V0Tm9kZXMsIG9uTm9kZXNDaGFuZ2VdID0gdXNlTm9kZXNTdGF0ZShpbml0aWFsTm9kZXMpO1xuICBjb25zdCBbZWRnZXMsIHNldEVkZ2VzLCBvbkVkZ2VzQ2hhbmdlXSA9IHVzZUVkZ2VzU3RhdGUoaW5pdGlhbEVkZ2VzKTtcblxuICBjb25zdCBvbkNvbm5lY3QgPSB1c2VDYWxsYmFjaygocGFyYW1zOiBFZGdlIHwgQ29ubmVjdGlvbikgPT4gc2V0RWRnZXMoKGVkcykgPT4gYWRkRWRnZShwYXJhbXMsIGVkcykpLCBbc2V0RWRnZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicHMtdy1mdWxsIHBzLWgtZnVsbCBwcy1iZy1jYXJkXCI+XG4gICAgICA8UmVhY3RGbG93XG4gICAgICAgIG5vZGVzPXtub2Rlc31cbiAgICAgICAgZWRnZXM9e2VkZ2VzfVxuICAgICAgICBvbk5vZGVzQ2hhbmdlPXtvbk5vZGVzQ2hhbmdlfVxuICAgICAgICBvbkVkZ2VzQ2hhbmdlPXtvbkVkZ2VzQ2hhbmdlfVxuICAgICAgICBvbkNvbm5lY3Q9e29uQ29ubmVjdH1cbiAgICAgICAgY29ubmVjdGlvbkxpbmVUeXBlPXtDb25uZWN0aW9uTGluZVR5cGUuU21vb3RoU3RlcH1cbiAgICAgICAgbm9kZVR5cGVzPXtub2RlVHlwZXN9XG4gICAgICAgIGZpdFZpZXdcbiAgICAgID5cbiAgICAgICAgPEJhY2tncm91bmQgY2xhc3NOYW1lPVwicHMtYmctbXV0ZWRcIiBnYXA9ezE2fSAvPlxuICAgICAgICA8Q29udHJvbHMgY2xhc3NOYW1lPVwiIXBzLWJnLVtoc2wodmFyKC0tc3R1ZGlvLWJhY2tncm91bmQpKV0gIXBzLWJvcmRlci1baHNsKHZhcigtLXN0dWRpby1ib3JkZXIpKV0gIXBzLXRleHQtW2hzbCh2YXIoLS1zdHVkaW8tZm9yZWdyb3VuZCkpXVwiIC8+XG4gICAgICA8L1JlYWN0Rmxvdz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBTY2hlbWFWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vVmlzdWFsaXNlclwiO1xuXG5jb25zdCBzYW1wbGVTY2hlbWEgPSB7XG4gIHRhYmxlczogW1xuICAgIHtcbiAgICAgIG5hbWU6IFwiUGV0IE93bmVyc1wiLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNQcmltYXJ5OiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImVtYWlsXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcInBob25lXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImNyZWF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcInVwZGF0ZWRBdFwiLCB0eXBlOiBcIkRhdGVUaW1lXCIgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIlBldHNcIixcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJVVUlEXCIsIGlzUHJpbWFyeTogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcIlN0cmluZ1wiLCBpc1JlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHsgbmFtZTogXCJzcGVjaWVzXCIsIHR5cGU6IFwiU3RyaW5nXCIsIGlzUmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiBcImJyZWVkXCIsIHR5cGU6IFwiU3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcImJpcnRoRGF0ZVwiLCB0eXBlOiBcIkRhdGVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwib3duZXJJZFwiLCB0eXBlOiBcIlVVSURcIiwgaXNSZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICB7IG5hbWU6IFwiY3JlYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgICB7IG5hbWU6IFwidXBkYXRlZEF0XCIsIHR5cGU6IFwiRGF0ZVRpbWVcIiB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxuICByZWxhdGlvbnNoaXBzOiBbeyBmcm9tOiBcIlBldCBPd25lcnNcIiwgdG86IFwiUGV0c1wiLCB0eXBlOiBcIjE6blwiIH1dLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNjaGVtYVZpZXcoKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJwcy13LWZ1bGwgcHMtaC1mdWxsXCI+XG4gICAgICA8U2NoZW1hVmlzdWFsaXphdGlvbiB0YWJsZXM9e3NhbXBsZVNjaGVtYS50YWJsZXN9IHJlbGF0aW9uc2hpcHM9e3NhbXBsZVNjaGVtYS5yZWxhdGlvbnNoaXBzfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjRNQUFBLE9BQVMsbUJBQUFBLEdBQWlCLFVBQUFDLE9BQWMsZUNBeEMsT0FBUyxlQUFBQyxHQUFhLGFBQUFDLE9BQWlCLFFDQXZDLE9BQVMsZUFBQUMsR0FBYSx1QkFBQUMsT0FBMkIsd0JDQ2pELFVBQVlDLE9BQVcsUUFDdkIsT0FBUyxpQkFBQUMsR0FBZSxrQkFBQUMsT0FBc0Isd0JDQzlDLElBQUlDLEdBQXdCLEtBQU0sQ0FDaENDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQ0FDLEdBQWEsR0FDYkMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQUMsR0FDQSxZQUFZQyxFQUFRLENBQ2xCLEdBQU0sQ0FDSixPQUFBQyxFQUNBLFlBQUFDLEVBQ0EsUUFBQUMsRUFDQSxjQUFBQyxFQUNBLGVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxjQUFBQyxFQUNBLFdBQUFDLEVBQ0EsV0FBQUMsRUFDQSxnQkFBQUMsQ0FDRixFQUFJVixFQUNKLEtBQUtiLEdBQVV3QixHQUFhVixDQUFNLEVBQ2xDLEtBQUtaLEdBQWVhLEVBQ3BCLEtBQUtaLEdBQVdhLEVBQ2hCLEtBQUtmLEdBQWlCZ0IsRUFDdEIsS0FBS1osR0FBY2lCLEVBQ25CLEtBQUtoQixHQUFtQmlCLEVBQ3hCLEtBQUtoQixHQUFrQmlCLEdBQWFOLENBQWMsRUFDbEQsS0FBS1YsR0FBWWdCLEdBQWFMLENBQVEsRUFDdEMsS0FBS1YsR0FBaUJlLEdBQWFKLENBQWEsRUFDaEQsS0FB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QVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxZQUFhLENBQUMsQ0FBRSxZQUFhLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSzdDLFlBQWEsQ0FBQyxDQUFFLFlBQWEsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLN0MsWUFBYSxDQUFDLENBQUUsWUFBYSxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUs3QyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsYUFBYyxDQUFDLENBQUUsYUFBYyxDQUFDQSxDQUFZLENBQUMsQ0FBRSxFQUsvQyxhQUFjLENBQUMsQ0FBRSxhQUFjLENBQUNBLENBQVksQ0FBQyxDQUFFLEVBSy9DLGFBQWMsQ0FBQyxDQUFFLGFBQWMsQ0FBQ0EsQ0FBWSxDQUFDLENBQUUsRUFLL0MsV0FBWSxDQUFDLENBQUV5SCxPQUFRLENBQUN2SCxDQUFXLENBQUMsQ0FBRSxFQUt0QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxDQUFDLENBQUUsRUFLNUMsYUFBYyxDQUFDLENBQUUsV0FBWSxDQUFDQSxDQUFXLENBQUMsQ0FBRSxFQUs1QyxhQUFjLENBQUMsQ0FBRSxXQUFZLENBQUNBLENBQVcsQ0FBQyxDQUFFLEVBSzVDLGFBQWMsQ0FBQyxDQUFFLFdBQVksQ0FBQ0EsQ0FBVyxD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QVdaLEdBQUNtQixHQUFBLEVBQWdCLEVBQUtuQixHQUFDb0IsR0FBQSxFQUFXLEVBQy9ELEdBQ0YsRUFDRixDQUVKIiwKICAibmFtZXMiOiBbIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlQ2FsbGJhY2siLCAidXNlRWZmZWN0IiwgIlF1ZXJ5Q2xpZW50IiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3QiLCAib25saW5lTWFuYWdlciIsICJ1c2VRdWVyeUNsaWVudCIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAiI2NsaWVudCIsICIjb25saW5lTWFuYWdlciIsICIjcXVlcnlGbGF2b3IiLCAiI3ZlcnNpb24iLCAiI2lzTW91bnRlZCIsICIjc3R5bGVOb25jZSIsICIjc2hhZG93RE9NVGFyZ2V0IiwgIiNidXR0b25Qb3NpdGlvbiIsICIjcG9zaXRpb24iLCAiI2luaXRpYWxJc09wZW4iLCAiI2Vycm9yVHlwZXMiLCAiI0NvbXBvbmVudCIsICIjZGlzcG9zZSIsICJjb25maWciLCAiY2xpZW50IiwgInF1ZXJ5Rmxhdm9yIiwgInZlcnNpb24iLCAib25saW5lTWFuYWdlciIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJpbml0aWFsSXNPcGVuIiwgImVycm9yVHlwZXMiLCAic3R5bGVOb25jZSIsICJzaGFkb3dET01UYXJnZXQiLCAiY3JlYXRlU2lnbmFsIiwgImlzT3BlbiIsICJlbCIsICJkaXNwb3NlIiwgInJlbmRlciIsICJfc2VsZiQiLCAiYnRuUG9zaXRpb24iLCAicG9zIiwgImVycm9ycyIsICJxdWVyeUNsaWVudCIsICJEZXZ0b29scyIsICJsYXp5IiwgInNldHVwU3R5bGVTaGVldCIsICJjcmVhdGVDb21wb25lbnQiLCAibWVyZ2VQcm9wcyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICIjb25DbG9zZSIsICJvbkNsb3NlIiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHMiLCAicHJvcHMiLCAicXVlcnlDbGllbnQiLCAidXNlUXVlcnlDbGllbnQiLCAicmVmIiwgImJ1dHRvblBvc2l0aW9uIiwgInBvc2l0aW9uIiwgImluaXRpYWxJc09wZW4iLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHMiLCAib25saW5lTWFuYWdlciIsICJSZWFjdCIsICJvbmxpbmVNYW5hZ2VyIiwgInVzZVF1ZXJ5Q2xpZW50IiwgImpzeCIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJwcm9wcyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJyZWYiLCAiZXJyb3JUeXBlcyIsICJzdHlsZU5vbmNlIiwgInNoYWRvd0RPTVRhcmdldCIsICJkZXZ0b29scyIsICJUYW5zdGFja1F1ZXJ5RGV2dG9vbHNQYW5lbCIsICJvbmxpbmVNYW5hZ2VyIiwgIlJlYWN0UXVlcnlEZXZ0b29scyIsICJSZWFjdFF1ZXJ5RGV2dG9vbHNQYW5lbCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJ0b2FzdCIsICJTb25uZXIiLCAianN4IiwgIlRvYXN0ZXIiLCAicHJvcHMiLCAiY3JlYXRlQWRhcHRlclByb3ZpZGVyIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VIYXNoQWRhcHRlciIsICJyYXdIYXNoIiwgImhhc2hQYXJhbXMiLCAic2V0SGFzaFBhcmFtcyIsICJ1cGRhdGVVcmwiLCAidXBkYXRlZCIsICJoaXN0b3J5IiwgInBhdGhuYW1lIiwgInNlYXJjaCIsICJoYXNoIiwgInVybCIsICJnZXRTZWFyY2hQYXJhbXNTbmFwc2hvdCIsICJyYXciLCAiaGFuZGxlSGFzaENoYW5nZSIsICJOdXFzSGFzaEFkYXB0ZXIiLCAianN4IiwgImpzeHMiLCAicXVlcnlDbGllbnQiLCAiUXVlcnlDbGllbnQiLCAiU3R1ZGlvQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlN0dWRpb0NvbnRleHRQcm92aWRlciIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJvdGhlclByb3BzIiwgImFjdGl2ZVRhYmxlIiwgInNldEFjdGl2ZVRhYmxlIiwgInVzZVN0YXRlIiwgImFjdGl2ZVZpZXciLCAic2V0QWN0aXZlVmlldyIsICJpc0Z1bGxzY3JlZW4iLCAic2V0SXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAic2V0SXNOYXZpZ2F0aW9uT3BlbiIsICJvbkVycm9yIiwgImVycm9yIiwgInRvYXN0IiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VNZW1vIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAicHJldiIsICJ0b2dnbGVOYXZpZ2F0aW9uIiwgIlF1ZXJ5Q2xpZW50UHJvdmlkZXIiLCAiUmVhY3RRdWVyeURldnRvb2xzMiIsICJUb2FzdGVyIiwgIk51cXNIYXNoQWRhcHRlciIsICJ1c2VTdHVkaW8iLCAiY29udGV4dCIsICJ1c2VDb250ZXh0IiwgIm51cXNfZXhwb3J0cyIsICJfX2V4cG9ydCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJ1c2VRdWVyeVN0YXRlIiwgInVzZVF1ZXJ5U3RhdGVzIiwgIl9fcmVFeHBvcnQiLCAibnVxc19leHBvcnRzIiwgIm51cXNfc3RhciIsICJ1c2VRdWVyeVN0YXRlT3JpZ2luYWwiLCAidXNlUXVlcnlTdGF0ZXNPcmlnaW5hbCIsICJrZXlNYXAiLCAidXJsS2V5cyIsICJfQlJBTkRfU1lNQk9MIiwgInVzZVF1ZXJ5U3RhdGUiLCAia2V5IiwgIm9wdGlvbnMiLCAidXNlUXVlcnlTdGF0ZXMiLCAidXNlQWN0aXZlVmlldyIsICJhY3RpdmVWaWV3IiwgInNldEFjdGl2ZVZpZXciLCAidXNlU3R1ZGlvIiwgInZpZXdQYXJhbSIsICJzZXRWaWV3UGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJ2IiwgImNsZWFuVXJsUGFyYW1zRm9yU2NoZW1hVmlzdWFsaXNlciIsICJ1c2VDYWxsYmFjayIsICJoYXNoIiwgInNlYXJjaFBhcmFtcyIsICJwYXJhbSIsICJ1c2VFZmZlY3QiLCAiaGFuZGxlVmlld0NoYW5nZSIsICJuZXdWaWV3IiwgImNsc3giLCAiQ0xBU1NfUEFSVF9TRVBBUkFUT1IiLCAiY3JlYXRlQ2xhc3NHcm91cFV0aWxzIiwgImNvbmZpZyIsICJjbGFzc01hcCIsICJjcmVhdGVDbGFzc01hcCIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBzIiwgImNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVycyIsICJnZXRDbGFzc0dyb3VwSWQiLCAiY2xhc3NOYW1lIiwgImNsYXNzUGFydHMiLCAic3BsaXQiLCAibGVuZ3RoIiwgInNoaWZ0IiwgImdldEdyb3VwUmVjdXJzaXZlIiwgImdldEdyb3VwSWRGb3JBcmJpdHJhcnlQcm9wZXJ0eSIsICJnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHMiLCAiY2xhc3NHcm91cElkIiwgImhhc1Bvc3RmaXhNb2RpZmllciIsICJjb25mbGljdHMiLCAiY2xhc3NQYXJ0T2JqZWN0IiwgImN1cnJlbnRDbGFzc1BhcnQiLCAibmV4dENsYXNzUGFydE9iamVjdCIsICJuZXh0UGFydCIsICJnZXQiLCAiY2xhc3NHcm91cEZyb21OZXh0Q2xhc3NQYXJ0IiwgInNsaWNlIiwgInVuZGVmaW5lZCIsICJ2YWxpZGF0b3JzIiwgImNsYXNzUmVzdCIsICJqb2luIiwgImZpbmQiLCAidmFsaWRhdG9yIiwgImFyYml0cmFyeVByb3BlcnR5UmVnZXgiLCAidGVzdCIsICJhcmJpdHJhcnlQcm9wZXJ0eUNsYXNzTmFtZSIsICJleGVjIiwgInByb3BlcnR5IiwgInN1YnN0cmluZyIsICJpbmRleE9mIiwgInRoZW1lIiwgInByZWZpeCIsICJNYXAiLCAicHJlZml4ZWRDbGFzc0dyb3VwRW50cmllcyIsICJnZXRQcmVmaXhlZENsYXNzR3JvdXBFbnRyaWVzIiwgIk9iamVjdCIsICJlbnRyaWVzIiwgImNsYXNzR3JvdXBzIiwgImZvckVhY2giLCAiY2xhc3NHcm91cCIsICJwcm9jZXNzQ2xhc3Nlc1JlY3Vyc2l2ZWx5IiwgImNsYXNzRGVmaW5pdGlvbiIsICJjbGFzc1BhcnRPYmplY3RUb0VkaXQiLCAiZ2V0UGFydCIsICJpc1RoZW1lR2V0dGVyIiwgInB1c2giLCAia2V5IiwgInBhdGgiLCAiY3VycmVudENsYXNzUGFydE9iamVjdCIsICJwYXRoUGFydCIsICJoYXMiLCAic2V0IiwgImZ1bmMiLCAiY2xhc3NHcm91cEVudHJpZXMiLCAibWFwIiwgInByZWZpeGVkQ2xhc3NHcm91cCIsICJmcm9tRW50cmllcyIsICJ2YWx1ZSIsICJjcmVhdGVMcnVDYWNoZSIsICJtYXhDYWNoZVNpemUiLCAiY2FjaGVTaXplIiwgImNhY2hlIiwgInByZXZpb3VzQ2FjaGUiLCAidXBkYXRlIiwgIklNUE9SVEFOVF9NT0RJRklFUiIsICJjcmVhdGVQYXJzZUNsYXNzTmFtZSIsICJzZXBhcmF0b3IiLCAiZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWUiLCAiaXNTZXBhcmF0b3JTaW5nbGVDaGFyYWN0ZXIiLCAiZmlyc3RTZXBhcmF0b3JDaGFyYWN0ZXIiLCAic2VwYXJhdG9yTGVuZ3RoIiwgInBhcnNlQ2xhc3NOYW1lIiwgIm1vZGlmaWVycyIsICJicmFja2V0RGVwdGgiLCAibW9kaWZpZXJTdGFydCIsICJwb3N0Zml4TW9kaWZpZXJQb3NpdGlvbiIsICJpbmRleCIsICJjdXJyZW50Q2hhcmFjdGVyIiwgImJhc2VDbGFzc05hbWVXaXRoSW1wb3J0YW50TW9kaWZpZXIiLCAiaGFzSW1wb3J0YW50TW9kaWZpZXIiLCAic3RhcnRzV2l0aCIsICJiYXNlQ2xhc3NOYW1lIiwgIm1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb24iLCAic29ydE1vZGlmaWVycyIsICJzb3J0ZWRNb2RpZmllcnMiLCAidW5zb3J0ZWRNb2RpZmllcnMiLCAibW9kaWZpZXIiLCAic29ydCIsICJjcmVhdGVDb25maWdVdGlscyIsICJTUExJVF9DTEFTU0VTX1JFR0VYIiwgIm1lcmdlQ2xhc3NMaXN0IiwgImNsYXNzTGlzdCIsICJjb25maWdVdGlscyIsICJjbGFzc0dyb3Vwc0luQ29uZmxpY3QiLCAiY2xhc3NOYW1lcyIsICJ0cmltIiwgInJlc3VsdCIsICJvcmlnaW5hbENsYXNzTmFtZSIsICJCb29sZWFuIiwgInZhcmlhbnRNb2RpZmllciIsICJtb2RpZmllcklkIiwgImNsYXNzSWQiLCAiaW5jbHVkZXMiLCAiY29uZmxpY3RHcm91cHMiLCAiaSIsICJncm91cCIsICJ0d0pvaW4iLCAiYXJndW1lbnQiLCAicmVzb2x2ZWRWYWx1ZSIsICJzdHJpbmciLCAiYXJndW1lbnRzIiwgInRvVmFsdWUiLCAibWl4IiwgImsiLCAiY3JlYXRlVGFpbHdpbmRNZXJnZSIsICJjcmVhdGVDb25maWdGaXJzdCIsICJjcmVhdGVDb25maWdSZXN0IiwgImNhY2hlR2V0IiwgImNhY2hlU2V0IiwgImZ1bmN0aW9uVG9DYWxsIiwgImluaXRUYWlsd2luZE1lcmdlIiwgInJlZHVjZSIsICJwcmV2aW91c0NvbmZpZyIsICJjcmVhdGVDb25maWdDdXJyZW50IiwgInRhaWx3aW5kTWVyZ2UiLCAiY2FjaGVkUmVzdWx0IiwgImFwcGx5IiwgImZyb21UaGVtZSIsICJ0aGVtZUdldHRlciIsICJhcmJpdHJhcnlWYWx1ZVJlZ2V4IiwgImZyYWN0aW9uUmVnZXgiLCAic3RyaW5nTGVuZ3RocyIsICJTZXQiLCAidHNoaXJ0VW5pdFJlZ2V4IiwgImxlbmd0aFVuaXRSZWdleCIsICJjb2xvckZ1bmN0aW9uUmVnZXgiLCAic2hhZG93UmVnZXgiLCAiaW1hZ2VSZWdleCIsICJpc0xlbmd0aCIsICJpc051bWJlciIsICJpc0FyYml0cmFyeUxlbmd0aCIsICJnZXRJc0FyYml0cmFyeVZhbHVlIiwgImlzTGVuZ3RoT25seSIsICJOdW1iZXIiLCAiaXNOYU4iLCAiaXNBcmJpdHJhcnlOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzUGVyY2VudCIsICJlbmRzV2l0aCIsICJpc0FyYml0cmFyeVZhbHVlIiwgImlzVHNoaXJ0U2l6ZSIsICJzaXplTGFiZWxzIiwgImlzQXJiaXRyYXJ5U2l6ZSIsICJpc05ldmVyIiwgImlzQXJiaXRyYXJ5UG9zaXRpb24iLCAiaW1hZ2VMYWJlbHMiLCAiaXNBcmJpdHJhcnlJbWFnZSIsICJpc0ltYWdlIiwgImlzQXJiaXRyYXJ5U2hhZG93IiwgImlzU2hhZG93IiwgImlzQW55IiwgImxhYmVsIiwgInRlc3RWYWx1ZSIsICJnZXREZWZhdWx0Q29uZmlnIiwgImNvbG9ycyIsICJmcm9tVGhlbWUiLCAic3BhY2luZyIsICJibHVyIiwgImJyaWdodG5lc3MiLCAiYm9yZGVyQ29sb3IiLCAiYm9yZGVyUmFkaXVzIiwgImJvcmRlclNwYWNpbmciLCAiYm9yZGVyV2lkdGgiLCAiY29udHJhc3QiLCAiZ3JheXNjYWxlIiwgImh1ZVJvdGF0ZSIsICJpbnZlcnQiLCAiZ2FwIiwgImdyYWRpZW50Q29sb3JTdG9wcyIsICJncmFkaWVudENvbG9yU3RvcFBvc2l0aW9ucyIsICJpbnNldCIsICJtYXJnaW4iLCAib3BhY2l0eSIsICJwYWRkaW5nIiwgInNhdHVyYXRlIiwgInNjYWxlIiwgInNlcGlhIiwgInNrZXciLCAic3BhY2UiLCAidHJhbnNsYXRlIiwgImdldE92ZXJzY3JvbGwiLCAiZ2V0T3ZlcmZsb3ciLCAiZ2V0U3BhY2luZ1dpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzQXJiaXRyYXJ5VmFsdWUiLCAiZ2V0U3BhY2luZ1dpdGhBcmJpdHJhcnkiLCAiZ2V0TGVuZ3RoV2l0aEVtcHR5QW5kQXJiaXRyYXJ5IiwgImlzTGVuZ3RoIiwgImlzQXJiaXRyYXJ5TGVuZ3RoIiwgImdldE51bWJlcldpdGhBdXRvQW5kQXJiaXRyYXJ5IiwgImlzTnVtYmVyIiwgImdldFBvc2l0aW9ucyIsICJnZXRMaW5lU3R5bGVzIiwgImdldEJsZW5kTW9kZXMiLCAiZ2V0QWxpZ24iLCAiZ2V0WmVyb0FuZEVtcHR5IiwgImdldEJyZWFrcyIsICJnZXROdW1iZXJBbmRBcmJpdHJhcnkiLCAiY2FjaGVTaXplIiwgInNlcGFyYXRvciIsICJ0aGVtZSIsICJpc0FueSIsICJpc1RzaGlydFNpemUiLCAiaXNQZXJjZW50IiwgImNsYXNzR3JvdXBzIiwgImFzcGVjdCIsICJjb250YWluZXIiLCAiY29sdW1ucyIsICJib3giLCAiZGlzcGxheSIsICJmbG9hdCIsICJjbGVhciIsICJpc29sYXRpb24iLCAib2JqZWN0IiwgIm92ZXJmbG93IiwgIm92ZXJzY3JvbGwiLCAicG9zaXRpb24iLCAic3RhcnQiLCAiZW5kIiwgInRvcCIsICJyaWdodCIsICJib3R0b20iLCAibGVmdCIsICJ2aXNpYmlsaXR5IiwgInoiLCAiaXNJbnRlZ2VyIiwgImJhc2lzIiwgImZsZXgiLCAiZ3JvdyIsICJzaHJpbmsiLCAib3JkZXIiLCAiY29sIiwgInNwYW4iLCAicm93IiwgImp1c3RpZnkiLCAiY29udGVudCIsICJpdGVtcyIsICJzZWxmIiwgInAiLCAicHgiLCAicHkiLCAicHMiLCAicGUiLCAicHQiLCAicHIiLCAicGIiLCAicGwiLCAibSIsICJteCIsICJteSIsICJtcyIsICJtZSIsICJtdCIsICJtciIsICJtYiIsICJtbCIsICJ3IiwgInNjcmVlbiIsICJoIiwgInNpemUiLCAidGV4dCIsICJmb250IiwgImlzQXJiaXRyYXJ5TnVtYmVyIiwgInRyYWNraW5nIiwgImxlYWRpbmciLCAibGlzdCIsICJwbGFjZWhvbGRlciIsICJkZWNvcmF0aW9uIiwgImluZGVudCIsICJhbGlnbiIsICJ3aGl0ZXNwYWNlIiwgImJyZWFrIiwgImh5cGhlbnMiLCAiYmciLCAiaXNBcmJpdHJhcnlQb3NpdGlvbiIsICJyZXBlYXQiLCAiaXNBcmJpdHJhcnlTaXplIiwgImlzQXJiaXRyYXJ5SW1hZ2UiLCAiZnJvbSIsICJ2aWEiLCAidG8iLCAicm91bmRlZCIsICJib3JkZXIiLCAiZGl2aWRlIiwgIm91dGxpbmUiLCAicmluZyIsICJzaGFkb3ciLCAiaXNBcmJpdHJhcnlTaGFkb3ciLCAiZmlsdGVyIiwgInRhYmxlIiwgImNhcHRpb24iLCAidHJhbnNpdGlvbiIsICJkdXJhdGlvbiIsICJlYXNlIiwgImRlbGF5IiwgImFuaW1hdGUiLCAidHJhbnNmb3JtIiwgInJvdGF0ZSIsICJvcmlnaW4iLCAiYWNjZW50IiwgImFwcGVhcmFuY2UiLCAiY3Vyc29yIiwgImNhcmV0IiwgInJlc2l6ZSIsICJzY3JvbGwiLCAic25hcCIsICJ0b3VjaCIsICJzZWxlY3QiLCAiZmlsbCIsICJzdHJva2UiLCAic3IiLCAiY29uZmxpY3RpbmdDbGFzc0dyb3VwcyIsICJjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnMiLCAibWVyZ2VDb25maWdzIiwgImJhc2VDb25maWciLCAicHJlZml4IiwgImV4cGVyaW1lbnRhbFBhcnNlQ2xhc3NOYW1lIiwgImV4dGVuZCIsICJvdmVycmlkZSIsICJvdmVycmlkZVByb3BlcnR5IiwgImNvbmZpZ0tleSIsICJvdmVycmlkZUNvbmZpZ1Byb3BlcnRpZXMiLCAia2V5IiwgIm1lcmdlQ29uZmlnUHJvcGVydGllcyIsICJiYXNlT2JqZWN0IiwgIm92ZXJyaWRlS2V5IiwgIm92ZXJyaWRlVmFsdWUiLCAidW5kZWZpbmVkIiwgIm92ZXJyaWRlT2JqZWN0IiwgIm1lcmdlT2JqZWN0IiwgIm1lcmdlVmFsdWUiLCAiY29uY2F0IiwgImV4dGVuZFRhaWx3aW5kTWVyZ2UiLCAiY29uZmlnRXh0ZW5zaW9uIiwgImNyZWF0ZUNvbmZpZyIsICJjcmVhdGVUYWlsd2luZE1lcmdlIiwgInR3TWVyZ2UiLCAiZXh0ZW5kVGFpbHdpbmRNZXJnZSIsICJjbiIsICJpbnB1dHMiLCAiY2xzeCIsICJ1c2VJc011dGF0aW5nIiwgInRvS2ViYWJDYXNlIiwgInN0cmluZyIsICJtZXJnZUNsYXNzZXMiLCAiY2xhc3NlcyIsICJjbGFzc05hbWUiLCAiaW5kZXgiLCAiYXJyYXkiLCAiZGVmYXVsdEF0dHJpYnV0ZXMiLCAiSWNvbiIsICJmb3J3YXJkUmVmIiwgImNvbG9yIiwgInNpemUiLCAic3Ryb2tlV2lkdGgiLCAiYWJzb2x1dGVTdHJva2VXaWR0aCIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAiaWNvbk5vZGUiLCAicmVzdCIsICJyZWYiLCAiY3JlYXRlRWxlbWVudCIsICJkZWZhdWx0QXR0cmlidXRlcyIsICJtZXJnZUNsYXNzZXMiLCAidGFnIiwgImF0dHJzIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiaWNvbk5hbWUiLCAiaWNvbk5vZGUiLCAiQ29tcG9uZW50IiwgImZvcndhcmRSZWYiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjcmVhdGVFbGVtZW50IiwgIkljb24iLCAibWVyZ2VDbGFzc2VzIiwgInRvS2ViYWJDYXNlIiwgIkFycm93RG93bldpZGVOYXJyb3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNhbGVuZGFyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hlY2siLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaGV2cm9uRG93biIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNoZXZyb25MZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblJpZ2h0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvblVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNMZWZ0IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ2hldnJvbnNSaWdodCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkNpcmNsZUhlbHAiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDaXJjbGUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJDb3B5IiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiQ29ybmVyRG93bkxlZnQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJGaWx0ZXIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJHcmlwVmVydGljYWwiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJIYXNoIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiS2V5Um91bmQiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJLZXkiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNYWlsIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTWF4aW1pemUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJNaW5pbWl6ZSIsICJjcmVhdGVMdWNpZGVJY29uIiwgIk1vdmVEb3duIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiTW92ZVVwIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGFuZWxMZWZ0Q2xvc2UiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQYW5lbExlZnRPcGVuIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiUGhvbmUiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQaW5PZmYiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJQaW4iLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJSZWZyZXNoQ3ciLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJUYWJsZTIiLCAiY3JlYXRlTHVjaWRlSWNvbiIsICJVc2VyIiwgImNyZWF0ZUx1Y2lkZUljb24iLCAiWCIsICJjcmVhdGVMdWNpZGVJY29uIiwgIkFuaW1hdGVOdW1iZXIiLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInRvYXN0IiwgImN2YSIsICJqc3giLCAiYmFkZ2VWYXJpYW50cyIsICJjdmEiLCAiQmFkZ2UiLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAicHJvcHMiLCAiY24iLCAiU2xvdCIsICJjdmEiLCAiUmVhY3QiLCAianN4IiwgImJ1dHRvblZhcmlhbnRzIiwgImN2YSIsICJCdXR0b24iLCAiY2xhc3NOYW1lIiwgInZhcmlhbnQiLCAic2l6ZSIsICJhc0NoaWxkIiwgInByb3BzIiwgInJlZiIsICJTbG90IiwgImNuIiwgIlBvcG92ZXJQcmltaXRpdmUiLCAiUmVhY3QiLCAianN4IiwgIlBvcG92ZXIiLCAiUG9wb3ZlclRyaWdnZXIiLCAiUG9wb3ZlckNvbnRlbnQiLCAiY2xhc3NOYW1lIiwgImFsaWduIiwgInNpZGVPZmZzZXQiLCAicHJvcHMiLCAicmVmIiwgImpzeCIsICJjbiIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJnZXRSb3dJZCIsICJyb3ciLCAidGFibGUiLCAiaWQiLCAiaW5mZXJSb3dGaWx0ZXIiLCAiYWRkUm93SWRUb1JvdyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgInJlc3VsdCIsICJyb3dzIiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInF1ZXJ5Q2xpZW50IiwgInVzZVF1ZXJ5Q2xpZW50IiwgInNjaGVtYSIsICJ0YWJsZSIsICJ1c2VNdXRhdGlvbiIsICJyb3dzIiwgImVycm9yIiwgInJlc3VsdCIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIm5ld0RhdGEiLCAib2xkRGF0YSIsICJ1c2VRdWVyeSIsICJ1c2VBY3RpdmVUYWJsZVF1ZXJ5IiwgInByb3BzIiwgInBhZ2VJbmRleCIsICJwYWdlU2l6ZSIsICJzb3J0T3JkZXIiLCAiZmlsdGVyIiwgImFjdGl2ZVRhYmxlIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInByZXZpb3VzRGF0YSIsICJwcmV2aW91c1F1ZXJ5IiwgInNjaGVtYSIsICJ0YWJsZSIsICJzaWduYWwiLCAiZXJyb3IiLCAicmVzdWx0cyIsICJhZGRSb3dJZFRvUmVzdWx0IiwgIml0ZW0iLCAidXNlTXV0YXRpb24iLCAidXNlUXVlcnlDbGllbnQiLCAidXNlQWN0aXZlVGFibGVVcGRhdGUiLCAiYWN0aXZlVGFibGUiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJxdWVyeUtleVByZWZpeCIsICJ1c2VNdXRhdGlvbiIsICJwYXJhbXMiLCAiZXJyb3IiLCAicmVzdWx0IiwgImNoYW5nZXMiLCAicm93IiwgIm92ZXJ3cml0ZUNhY2hlZFJvdyIsICJjaGFuZ2VkUm93IiwgInJvd0ZpbHRlciIsICJpbmZlclJvd0ZpbHRlciIsICJjYWNoZWRSb3ciLCAiY29sdW1uTmFtZSIsICJ2YWx1ZSIsICJvcmlnaW5hbFZhbHVlcyIsICJkZXRhaWxzIiwgInVuY2hhbmdlZFJvdyIsICJfX3BzX3VwZGF0ZWRfYXRfXyIsICJnZXRGaW5kZXJGbiIsICJ0YWJsZSIsICJ1cGRhdGVyRm4iLCAiZmluZGVyIiwgImNhY2hlZFJlc3VsdCIsICJjYWNoZWRSb3dzIiwgImNhY2hlZFJvd0luZGV4IiwgIm5ld1JvdyIsICJ1c2VFZmZlY3QiLCAidXNlTWVtbyIsICJ1c2VTdGF0ZSIsICJzaG9ydCIsICJkZWZhdWx0RmlsdGVyIiwgInNob3J0IiwgImNvdW50RmlsdGVyc1JlY3Vyc2l2ZSIsICJmaWx0ZXJHcm91cCIsICJjb3VudCIsICJmaWx0ZXIiLCAidXNlRmlsdGVyaW5nIiwgImZpbHRlclBhcmFtIiwgInNldEZpbHRlclBhcmFtIiwgInVzZVF1ZXJ5U3RhdGUiLCAiYXBwbGllZEZpbHRlciIsICJ1c2VNZW1vIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJ0b3RhbEVkaXRpbmdGaWx0ZXJzIiwgInVzZUlzTXV0YXRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAibXV0YXRpb25LZXkiLCAidXNlQ2FsbGJhY2siLCAiREVGQVVMVF9QQUdFX1NJWkUiLCAicGFnaW5hdGlvblBhcnNlcnMiLCAidXNlUGFnaW5hdGlvbiIsICJwYWdlSW5kZXgiLCAicGFnZVNpemUiLCAic2V0UGFnaW5hdGlvbiIsICJ1c2VRdWVyeVN0YXRlcyIsICJzZXRQYWdpbmF0aW9uU3RhdGUiLCAidXNlQ2FsbGJhY2siLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgIm5ld1N0YXRlIiwgInVzZUVmZmVjdCIsICJ1c2VTdGF0ZSIsICJ1c2VNdXRhdGlvbiIsICJ1c2VRdWVyeUNsaWVudCIsICJ1c2VBY3RpdmVUYWJsZURlbGV0ZSIsICJhY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgInVzZVN0dWRpbyIsICJxdWVyeUNsaWVudCIsICJ1c2VRdWVyeUNsaWVudCIsICJzY2hlbWEiLCAidGFibGUiLCAidXNlTXV0YXRpb24iLCAicm93cyIsICJlcnJvciIsICJyZXN1bHQiLCAidXNlU2VsZWN0aW9uIiwgImRhdGEiLCAiYWN0aXZlVGFibGUiLCAib25FcnJvciIsICJ1c2VTdHVkaW8iLCAicGFnaW5hdGlvblN0YXRlIiwgInVzZVBhZ2luYXRpb24iLCAicm93U2VsZWN0aW9uU3RhdGUiLCAic2V0Um93U2VsZWN0aW9uU3RhdGUiLCAidXNlU3RhdGUiLCAiaXNTZWxlY3RpbmciLCAibXV0YXRlIiwgInVzZUFjdGl2ZVRhYmxlRGVsZXRlIiwgInVzZUVmZmVjdCIsICJkZWxldGVTZWxlY3Rpb24iLCAicm93cyIsICJyb3ciLCAidXNlRWZmZWN0IiwgInVzZVN0YXRlIiwgInVzZVNvcnRpbmciLCAic29ydFBhcmFtIiwgInNldFNvcnRQYXJhbSIsICJ1c2VRdWVyeVN0YXRlIiwgInBhcnNlU29ydGluZyIsICJpdGVtIiwgImNvbHVtbiIsICJkaXJlY3Rpb24iLCAiZSIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJuZXdTb3J0aW5nU3RhdGUiLCAibmV3U3RhdGUiLCAicmVzb2x2ZWRTdGF0ZSIsICJzb3J0U3RyaW5nIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgIlJlYWN0IiwgImpzeCIsICJUYWJsZSIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlRhYmxlSGVhZGVyIiwgIlRhYmxlQm9keSIsICJUYWJsZUZvb3RlciIsICJUYWJsZVJvdyIsICJUYWJsZUhlYWQiLCAiVGFibGVDZWxsIiwgIlRhYmxlQ2FwdGlvbiIsICJpc1ZhbGlkRWxlbWVudCIsICJDb250ZXh0TWVudVByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVTdWJUcmlnZ2VyIiwgImNsYXNzTmFtZSIsICJpbnNldCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJyZWYiLCAianN4cyIsICJjbiIsICJqc3giLCAiQ2hldnJvblJpZ2h0IiwgIkNvbnRleHRNZW51U3ViQ29udGVudCIsICJDb250ZXh0TWVudUNvbnRlbnQiLCAiQ29udGV4dE1lbnVJdGVtIiwgIkNvbnRleHRNZW51Q2hlY2tib3hJdGVtIiwgImNoZWNrZWQiLCAiQ2hlY2siLCAiQ29udGV4dE1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkNvbnRleHRNZW51TGFiZWwiLCAiQ29udGV4dE1lbnVTZXBhcmF0b3IiLCAiQ29udGV4dE1lbnVTaG9ydGN1dCIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZENlbGxDb250ZXh0TWVudSIsICJwcm9wcyIsICJjaGlsZHJlbiIsICJDb250ZXh0TWVudSIsICJDb250ZXh0TWVudVRyaWdnZXIiLCAiQ29udGV4dE1lbnVDb250ZW50IiwgIkNvbnRleHRNZW51SXRlbSIsICJjb250ZW50IiwgImV4dHJhY3RUZXh0Q29udGVudCIsICJlcnJvciIsICJDb3B5IiwgIm5vZGUiLCAiaXNWYWxpZEVsZW1lbnQiLCAianN4IiwgIkNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJmb3J3YXJkZWRQcm9wcyIsICJUYWJsZUNlbGwiLCAiY24iLCAiRGF0YUdyaWRDZWxsQ29udGV4dE1lbnUiLCAianN4IiwgIkJvb2xlYW5DZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiRGF0ZUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbXB0eUNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJFbnVtQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJvcHRpb25zIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiSlNPTkNlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAiY29udGFpbmVyUHJvcHMiLCAidmFsdWUiLCAiZm9yd2FyZGVkUHJvcHMiLCAiQ2VsbCIsICJmb3J3YXJkUmVmIiwgImpzeCIsICJOdWxsQ2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIk51bWVyaWNDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAiZm9yd2FyZFJlZiIsICJqc3giLCAiUmF3Q2VsbCIsICJmb3J3YXJkUmVmIiwgInByb3BzIiwgInJlZiIsICJjb250YWluZXJQcm9wcyIsICJ2YWx1ZSIsICJmb3J3YXJkZWRQcm9wcyIsICJDZWxsIiwgImZvcndhcmRSZWYiLCAianN4IiwgIlRpbWVDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgImNvbnRhaW5lclByb3BzIiwgInZhbHVlIiwgImZvcndhcmRlZFByb3BzIiwgIkNlbGwiLCAianN4IiwgImdldENlbGwiLCAiY2VsbCIsICJjb2x1bW4iLCAicHJvcHMiLCAidmFsdWUiLCAiRW1wdHlDZWxsIiwgIk51bGxDZWxsIiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJKU09OQ2VsbCIsICJSYXdDZWxsIiwgIkVudW1DZWxsIiwgIkJvb2xlYW5DZWxsIiwgIkRhdGVDZWxsIiwgIlRpbWVDZWxsIiwgIk51bWVyaWNDZWxsIiwgImlzT2JqZWN0VHlwZSIsICJmb3J3YXJkUmVmIiwgIkNoZWNrYm94UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJDaGVja2JveCIsICJjbGFzc05hbWUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIkNoZWNrIiwgImpzeCIsICJTZWxlY3RIZWFkZXJDZWxsIiwgImZvcndhcmRSZWYiLCAicHJvcHMiLCAicmVmIiwgInRhYmxlIiwgInJlYWRvbmx5IiwgImNsYXNzTmFtZSIsICJzdHlsZSIsICJyZXN0IiwgIkNoZWNrYm94IiwgInZhbHVlIiwgImZvcndhcmRSZWYiLCAiRnJhZ21lbnQiLCAianN4IiwgIlNlbGVjdENlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgInJlZiIsICJzdHlsZSIsICJpc0hlYWRlciIsICJmb3J3YXJkZWRQcm9wcyIsICJzZWxlY3RDbGFzc2VzIiwgImNuIiwgIlRhYmxlSGVhZCIsICJUYWJsZUNlbGwiLCAianN4IiwgIlNlbGVjdFJvd0NlbGwiLCAiZm9yd2FyZFJlZiIsICJwcm9wcyIsICJyZWYiLCAicm93IiwgInJlYWRvbmx5IiwgImNsYXNzTmFtZSIsICJzdHlsZSIsICJyZXN0IiwgIlNlbGVjdENlbGwiLCAiQ2hlY2tib3giLCAiUG9wb3ZlclByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAiUG9wb3ZlckNlbGxDb250ZXh0IiwgIlBvcG92ZXJDZWxsIiwgImNoaWxkcmVuIiwgInByb3BzIiwgIm9wZW4iLCAic2V0T3BlbiIsICJQb3BvdmVyQ2VsbFRyaWdnZXIiLCAib25Eb3VibGVDbGljayIsICJjbGFzc05hbWUiLCAicmVmIiwgInRyaWdnZXJSZWYiLCAibm9kZSIsICJjbiIsICJQb3BvdmVyQ2VsbENvbnRlbnQiLCAiYWxpZ24iLCAic2lkZU9mZnNldCIsICJldmVudCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJhY3Rpb25zIiwgImNvbnRleHQiLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAiaGFuZGxlS2V5RG93biIsICJqc3giLCAianN4cyIsICJXcml0ZWFibGVDZWxsIiwgInByb3BzIiwgImNlbGxDb21wb25lbnQiLCAiaW5wdXRDb21wb25lbnQiLCAiUG9wb3ZlckNlbGwiLCAiUG9wb3ZlckNlbGxUcmlnZ2VyIiwgIlBvcG92ZXJDZWxsQ29udGVudCIsICJjbiIsICJjbG9zZXN0Q2VudGVyIiwgIkRuZENvbnRleHQiLCAiRHJhZ092ZXJsYXkiLCAiS2V5Ym9hcmRTZW5zb3IiLCAiUG9pbnRlclNlbnNvciIsICJ1c2VTZW5zb3IiLCAidXNlU2Vuc29ycyIsICJhcnJheU1vdmUiLCAiU29ydGFibGVDb250ZXh0IiwgInNvcnRhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyIsICJ1c2VTb3J0YWJsZSIsICJ2ZXJ0aWNhbExpc3RTb3J0aW5nU3RyYXRlZ3kiLCAiQ1NTIiwgIm1vdGlvbiIsICJBbmltYXRlTnVtYmVyIiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAiY3JlYXRlUG9ydGFsIiwgInNob3J0IiwgImNvZXJjZVRvVmFsdWUiLCAiY29sdW1uIiwgIm9wZXJhdG9yIiwgInZhbHVlIiwgImRhdGFUeXBlR3JvdXAiLCAiY29lcmNlVG9TdHJpbmciLCAiRHJvcGRvd25NZW51UHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJqc3hzIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkRyb3Bkb3duTWVudVN1YlRyaWdnZXIiLCAiY2xhc3NOYW1lIiwgImluc2V0IiwgImNoaWxkcmVuIiwgInByb3BzIiwgInJlZiIsICJqc3hzIiwgImNuIiwgImpzeCIsICJDaGV2cm9uUmlnaHQiLCAiRHJvcGRvd25NZW51U3ViQ29udGVudCIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgInNpZGVPZmZzZXQiLCAiRHJvcGRvd25NZW51SXRlbSIsICJEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0iLCAiY2hlY2tlZCIsICJDaGVjayIsICJEcm9wZG93bk1lbnVSYWRpb0l0ZW0iLCAiQ2lyY2xlIiwgIkRyb3Bkb3duTWVudUxhYmVsIiwgIkRyb3Bkb3duTWVudVNlcGFyYXRvciIsICJEcm9wZG93bk1lbnVTaG9ydGN1dCIsICJSZWFjdCIsICJqc3giLCAiSW5wdXQiLCAiY2xhc3NOYW1lIiwgInR5cGUiLCAicHJvcHMiLCAicmVmIiwgImNuIiwgIlNlbGVjdFByaW1pdGl2ZSIsICJSZWFjdCIsICJqc3giLCAianN4cyIsICJTZWxlY3QiLCAiU2VsZWN0VmFsdWUiLCAiU2VsZWN0VHJpZ2dlciIsICJjbGFzc05hbWUiLCAiY2hpbGRyZW4iLCAicHJvcHMiLCAicmVmIiwgImpzeHMiLCAiY24iLCAianN4IiwgIkNoZXZyb25Eb3duIiwgIlNlbGVjdFNjcm9sbFVwQnV0dG9uIiwgIkNoZXZyb25VcCIsICJTZWxlY3RTY3JvbGxEb3duQnV0dG9uIiwgIlNlbGVjdENvbnRlbnQiLCAicG9zaXRpb24iLCAiU2VsZWN0TGFiZWwiLCAiU2VsZWN0SXRlbSIsICJDaGVjayIsICJTZWxlY3RTZXBhcmF0b3IiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiTGVhZGluZ09wZXJhdG9yU2VsZWN0IiwgInZhbHVlIiwgIm9uVmFsdWVDaGFuZ2UiLCAiZGlzYWJsZWQiLCAidHJpZ2dlckNsYXNzTmFtZSIsICJTZWxlY3QiLCAiU2VsZWN0VHJpZ2dlciIsICJTZWxlY3RWYWx1ZSIsICJTZWxlY3RDb250ZW50IiwgIlNlbGVjdEl0ZW0iLCAiRHJhZ2dhYmxlRmlsdGVySXRlbVByZXZpZXciLCAiYWN0aXZlSWQiLCAiaXRlbXMiLCAidGFibGUiLCAiYWN0aXZlSXRlbSIsICJpdGVtIiwgImxlYWRpbmdPcGVyYXRvclZhbHVlIiwgInNob3dMZWFkaW5nT3BGb3JPdmVybGF5IiwgImFjdGl2ZUl0ZW1JbmRleCIsICJwcmV2aW91c0l0ZW0iLCAiRmlsdGVyQ29uZGl0aW9uIiwgIkZpbHRlckdyb3VwQ29tcG9uZW50IiwgIkZpbHRlckxpc3RJdGVtcyIsICJwYXJlbnRHcm91cElkIiwgIm9uVXBkYXRlSXRlbSIsICJvbkRlbGV0ZUl0ZW0iLCAib25SZW9yZGVySXRlbXMiLCAiYWN0aXZlRHJhZ0lkIiwgIm9uRHJhZ1N0YXJ0IiwgIm9uRHJhZ0VuZFNpZ25hbCIsICJzb3J0YWJsZUl0ZW1JZHMiLCAidXNlTWVtbyIsICJzZW5zb3JzIiwgInVzZVNlbnNvcnMiLCAidXNlU2Vuc29yIiwgIlBvaW50ZXJTZW5zb3IiLCAiS2V5Ym9hcmRTZW5zb3IiLCAic29ydGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwgIkRuZENvbnRleHQiLCAiY2xvc2VzdENlbnRlciIsICJldmVudCIsICJhY3RpdmUiLCAib3ZlciIsICJvbGRJbmRleCIsICJuZXdJbmRleCIsICJTb3J0YWJsZUNvbnRleHQiLCAidmVydGljYWxMaXN0U29ydGluZ1N0cmF0ZWd5IiwgImN1cnJlbnRGaWx0ZXJJdGVtIiwgImluZGV4IiwgInNob3dMZWFkaW5nT3AiLCAibGVhZGluZ09wVmFsIiwgIm9uTGVhZGluZ09wQ2hhbmdlRm4iLCAiaXNMZWFkaW5nT3BUYXJnZXRMYXN0IiwgInByZXZJdGVtIiwgIm5ld1ZhbHVlIiwgInVwZGF0ZWRQcmV2SXRlbSIsICJTb3J0YWJsZUZpbHRlckl0ZW0iLCAidXBkYXRlZEZpbHRlciIsICJjcmVhdGVQb3J0YWwiLCAiRHJhZ092ZXJsYXkiLCAiZmlsdGVyIiwgIm9uVXBkYXRlIiwgIm9uRGVsZXRlIiwgInBhcmVudERuZElkIiwgInNob3dMZWFkaW5nT3BlcmF0b3IiLCAib25MZWFkaW5nT3BlcmF0b3JDaGFuZ2UiLCAiaXNMZWFkaW5nT3BlcmF0b3JUYXJnZXRMYXN0IiwgImF0dHJpYnV0ZXMiLCAibGlzdGVuZXJzIiwgInNldE5vZGVSZWYiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAiaXNEcmFnZ2luZyIsICJ1c2VTb3J0YWJsZSIsICJzdHlsZSIsICJDU1MiLCAiZHJhZ0hhbmRsZVByb3BzIiwgImhhbmRsZUNvbHVtbkNoYW5nZSIsICJoYW5kbGVPcGVyYXRvckNoYW5nZSIsICJoYW5kbGVWYWx1ZUNoYW5nZSIsICJlIiwgInJhd1ZhbHVlIiwgImNvbHVtbkluZm8iLCAiY29lcmNlVG9WYWx1ZSIsICJlZGl0ZWRWYWx1ZSIsICJzZXRFZGl0ZWRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJjb2VyY2VUb1N0cmluZyIsICJtb3Rpb24iLCAiR3JpcFZlcnRpY2FsIiwgImNvbHVtbiIsICJJbnB1dCIsICJCdXR0b24iLCAiWCIsICJncm91cCIsICJpc1Jvb3QiLCAiaXNFeHBhbmRlZCIsICJzZXRJc0V4cGFuZGVkIiwgInNldEFjdGl2ZURyYWdJZCIsICJoYW5kbGVBZGRGaWx0ZXIiLCAibmV3RmlsdGVyIiwgInNob3J0IiwgImhhbmRsZUFkZEdyb3VwIiwgIm5ld0dyb3VwIiwgInVwZGF0ZUl0ZW1Jbkdyb3VwIiwgInVwZGF0ZWRGaWx0ZXJPckdyb3VwIiwgIm5ld0ZpbHRlcnMiLCAiZGVsZXRlSXRlbUZyb21Hcm91cCIsICJoYW5kbGVEcmFnU3RhcnQiLCAiaGFuZGxlRHJhZ0VuZFNpZ25hbCIsICJoYW5kbGVSZW9yZGVySXRlbXMiLCAicmVvcmRlcmVkRmlsdGVycyIsICJhcnJheU1vdmUiLCAicmVuZGVyR3JvdXBDb250ZW50IiwgImNuIiwgIkNoZXZyb25Eb3duIiwgIkNoZXZyb25SaWdodCIsICJCYWRnZSIsICJBbmltYXRlTnVtYmVyIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkNpcmNsZUhlbHAiLCAiRHJvcGRvd25NZW51Q29udGVudCIsICJRdWVyeVZpc3VhbGl6ZXIiLCAiaXNBbmRHcm91cE9wZW4iLCAiZiIsICJpIiwgInJlc3VsdCIsICJpc0xhc3QiLCAib3BlcmF0b3IiLCAiRmlsdGVyVHJlZSIsICJzZXRGaWx0ZXIiLCAic2V0QXBwbGllZEZpbHRlciIsICJEbmRDb250ZXh0IiwgIk1vdXNlU2Vuc29yIiwgInVzZVNlbnNvciIsICJ1c2VTZW5zb3JzIiwgImFycmF5TW92ZSIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJTb3J0YWJsZUNvbnRleHQiLCAidXNlU29ydGFibGUiLCAiQ1NTIiwgImdldENvcmVSb3dNb2RlbCIsICJ1c2VSZWFjdFRhYmxlIiwgImdldEl0ZW0iLCAia2V5IiwgIml0ZW1WYWx1ZSIsICJsb2NhbFN0b3JhZ2UiLCAiSlNPTiIsICJwYXJzZSIsICJ1c2VMb2NhbFN0b3JhZ2UiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgInNldFZhbHVlIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgInVzZUVmZmVjdCIsICJpbml0aWFsVmFsdWUiLCAic2V0dGVyIiwgInVzZUNhbGxiYWNrIiwgInVwZGF0ZXIiLCAib2xkIiwgIm5ld1ZhbCIsICJzZXRJdGVtIiwgInN0cmluZ2lmeSIsICJkZWZhdWx0VGhlbWUiLCAiYmFja2dyb3VuZCIsICJiYWNrZ3JvdW5kQWx0IiwgImZvcmVncm91bmQiLCAiZ3JheSIsICJncmF5QWx0IiwgImlucHV0QmFja2dyb3VuZENvbG9yIiwgImlucHV0VGV4dENvbG9yIiwgInN1Y2Nlc3MiLCAiZGFuZ2VyIiwgImFjdGl2ZSIsICJ3YXJuaW5nIiwgIlRoZW1lQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgIlRoZW1lUHJvdmlkZXIiLCAiX3JlZiIsICJ0aGVtZSIsICJyZXN0IiwgImNyZWF0ZUVsZW1lbnQiLCAiUHJvdmlkZXIiLCAiX2V4dGVuZHMiLCAidXNlVGhlbWUiLCAidXNlQ29udGV4dCIsICJ1c2VNZWRpYVF1ZXJ5IiwgInF1ZXJ5IiwgImlzTWF0Y2giLCAic2V0SXNNYXRjaCIsICJ3aW5kb3ciLCAibWF0Y2hNZWRpYSIsICJtYXRjaGVzIiwgIm1hdGNoZXIiLCAib25DaGFuZ2UiLCAiYWRkTGlzdGVuZXIiLCAicmVtb3ZlTGlzdGVuZXIiLCAiaXNTZXJ2ZXIiLCAic3R5bGVkIiwgInR5cGUiLCAibmV3U3R5bGVzIiwgInF1ZXJpZXMiLCAiZm9yd2FyZFJlZiIsICJyZWYiLCAic3R5bGUiLCAibWVkaWFTdHlsZXMiLCAiT2JqZWN0IiwgImVudHJpZXMiLCAicmVkdWNlIiwgImN1cnJlbnQiLCAiX3JlZjIiLCAidXNlSXNNb3VudGVkIiwgIm1vdW50ZWRSZWYiLCAidXNlUmVmIiwgImlzTW91bnRlZCIsICJQYW5lbCIsICJfcHJvcHMiLCAiZm9udFNpemUiLCAiZm9udEZhbWlseSIsICJkaXNwbGF5IiwgImJhY2tncm91bmRDb2xvciIsICJjb2xvciIsICJmbGV4RGlyZWN0aW9uIiwgImZsZXgiLCAib3ZlcmZsb3ciLCAiaGVpZ2h0IiwgIihtYXgtd2lkdGg6IDcwMHB4KSIsICJib3JkZXJUb3AiLCAiQnV0dG9uIiwgInByb3BzIiwgImFwcGVhcmFuY2UiLCAiZm9udFdlaWdodCIsICJib3JkZXIiLCAiYm9yZGVyUmFkaXVzIiwgInBhZGRpbmciLCAib3BhY2l0eSIsICJkaXNhYmxlZCIsICJ1bmRlZmluZWQiLCAiY3Vyc29yIiwgImxpbmVIZWlnaHQiLCAiV2Via2l0QXBwZWFyYW5jZSIsICJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZFJlcGVhdCIsICJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZFNpemUiLCAiRW50cnkiLCAib3V0bGluZSIsICJ3b3JkQnJlYWsiLCAiTGFiZWwiLCAiVmFsdWUiLCAiU3ViRW50cmllcyIsICJtYXJnaW5MZWZ0IiwgInBhZGRpbmdMZWZ0IiwgImJvcmRlckxlZnQiLCAiSW5mbyIsICJFeHBhbmRlciIsICJleHBhbmRlZCIsICJ0cmFuc2l0aW9uIiwgInRyYW5zZm9ybSIsICJEZWZhdWx0UmVuZGVyZXIiLCAiaGFuZGxlRW50cnkiLCAibGFiZWwiLCAic3ViRW50cmllcyIsICJzdWJFbnRyeVBhZ2VzIiwgInRvZ2dsZSIsICJwYWdlU2l6ZSIsICJyZW5kZXJlciIsICJ2YWx1ZVNuYXBzaG90IiwgInNldFZhbHVlU25hcHNob3QiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInJlZnJlc2hWYWx1ZVNuYXBzaG90IiwgImxlbmd0aCIsICJGcmFnbWVudCIsICJvbkNsaWNrIiwgIlN0cmluZyIsICJ0b0xvd2VyQ2FzZSIsICJtYXAiLCAiZW50cnkiLCAiaW5kZXgiLCAiaW5jbHVkZXMiLCAiZmlsdGVyIiwgImQiLCAiRXhwbG9yZXIiLCAiZGVmYXVsdEV4cGFuZGVkIiwgImdldE93blByb3BlcnR5TmFtZXMiLCAiX3JlZjMiLCAiZGVwdGgiLCAic2V0RXhwYW5kZWQiLCAic2V0IiwgInBhdGgiLCAibWFrZVByb3BlcnR5IiwgInN1YiIsICJuZXdQYXRoIiwgImNvbmNhdCIsICJzdWJEZWZhdWx0RXhwYW5kZWQiLCAic3ViUGF0aCIsICJBcnJheSIsICJpc0FycmF5IiwgImkiLCAiU3ltYm9sIiwgIml0ZXJhdG9yIiwgImZyb20iLCAidmFsIiwgIl9yZWY0IiwgInB1c2giLCAic2xpY2UiLCAiTG9nbyIsICJ3aWR0aCIsICJ2aWV3Qm94IiwgInZlcnNpb24iLCAic3Ryb2tlIiwgInN0cm9rZVdpZHRoIiwgImZpbGwiLCAiZmlsbFJ1bGUiLCAiaWQiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgImluaXRpYWxJc09wZW4iLCAidGFibGUiLCAicGFuZWxQcm9wcyIsICJ0b2dnbGVCdXR0b25Qcm9wcyIsICJjb250YWluZXJFbGVtZW50IiwgIkNvbnRhaW5lciIsICJyb290UmVmIiwgInBhbmVsUmVmIiwgImlzT3BlbiIsICJzZXRJc09wZW4iLCAicGFuZWxTdHlsZSIsICJvdGhlclBhbmVsUHJvcHMiLCAidG9nZ2xlQnV0dG9uU3R5bGUiLCAib25Ub2dnbGVDbGljayIsICJvdGhlclRvZ2dsZUJ1dHRvblByb3BzIiwgImNsYXNzTmFtZSIsICJSZWFjdFRhYmxlRGV2dG9vbHNQYW5lbCIsICJtYXhIZWlnaHQiLCAiZSIsICJtYXJnaW4iLCAiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCAiX19odG1sIiwgIm1pbkhlaWdodCIsICJib3JkZXJSaWdodCIsICJqdXN0aWZ5Q29udGVudCIsICJhbGlnbkl0ZW1zIiwgIm1hcmdpblJpZ2h0IiwgImZsZXhXcmFwIiwgIm92ZXJmbG93WSIsICJnZXRTdGF0ZSIsICJnZXRBbGxDb2x1bW5zIiwgImdldENvcmVSb3dNb2RlbCIsICJnZXRGaWx0ZXJlZFJvd01vZGVsIiwgImdldFNvcnRlZFJvd01vZGVsIiwgImdldEdyb3VwZWRSb3dNb2RlbCIsICJnZXRFeHBhbmRlZFJvd01vZGVsIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAidXNlRWZmZWN0IiwgInVzZU1lbW8iLCAidXNlU3RhdGUiLCAianN4IiwgIlNrZWxldG9uIiwgImNsYXNzTmFtZSIsICJwcm9wcyIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXIiLCAicHJvcHMiLCAiaGVhZGVyIiwgImNsYXNzTmFtZSIsICJjbiIsICJmbGV4UmVuZGVyIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTW92ZURvd24iLCAiTW92ZVVwIiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVUcmlnZ2VyIiwgIkJ1dHRvbiIsICJDaGV2cm9uRG93biIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudUl0ZW0iLCAiQXJyb3dEb3duV2lkZU5hcnJvdyIsICJBcnJvd1VwV2lkZU5hcnJvdyIsICJYIiwgIlBpbk9mZiIsICJQaW4iLCAiZSIsICJqc3giLCAiRGF0YUdyaWRMb2FkaW5nQmFyIiwgImNsYXNzTmFtZSIsICJjbiIsICJqc3giLCAianN4cyIsICJEYXRhR3JpZFBhZ2luYXRpb24iLCAicHJvcHMiLCAidGFibGUiLCAidmFyaWFudCIsICJwYWdlSW5kZXgiLCAicGFnZUNvdW50IiwgIkJ1dHRvbiIsICJDaGV2cm9uc0xlZnQiLCAiQ2hldnJvbkxlZnQiLCAiSW5wdXQiLCAiZSIsICJDaGV2cm9uUmlnaHQiLCAiQ2hldnJvbnNSaWdodCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgImNvbHVtbiIsICJraW5kIiwgImlzUGlubmVkIiwgImlzTGVmdFBpbm5lZCIsICJpc1JpZ2h0UGlubmVkIiwgImlzU2VsZWN0Q29sdW1uIiwgImNuIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkRyYWdnYWJsZUhlYWRlckNlbGwiLCAicHJvcHMiLCAiY2hpbGRyZW4iLCAiY2xhc3NOYW1lIiwgImhlYWRlciIsICJjb21tb25TdHlsZSIsICJkaXNhYmxlRHJhZ2dpbmciLCAiYXR0cmlidXRlcyIsICJsaXN0ZW5lcnMiLCAidHJhbnNmb3JtIiwgInRyYW5zaXRpb24iLCAic2V0Tm9kZVJlZiIsICJpc0RyYWdnaW5nIiwgInVzZVNvcnRhYmxlIiwgImRyYWdTdHlsZSIsICJDU1MiLCAiY29tbW9uQ2xhc3MiLCAiY24iLCAiZHJhZ0NsYXNzIiwgIlRhYmxlSGVhZCIsICJEYXRhR3JpZCIsICJjb2x1bW5EZWZzIiwgImdldEJlZm9yZVJvd3MiLCAiaXNMb2FkaW5nIiwgImlzUHJvY2Vzc2luZyIsICJvblBhZ2luYXRpb25DaGFuZ2UiLCAib25Sb3dTZWxlY3Rpb25DaGFuZ2UiLCAib25Tb3J0aW5nQ2hhbmdlIiwgInBhZ2VDb3VudCIsICJwYWdpbmF0aW9uU3RhdGUiLCAicm93cyIsICJyb3dTZWxlY3Rpb25TdGF0ZSIsICJzb3J0aW5nU3RhdGUiLCAiY29sdW1uT3JkZXIiLCAic2V0Q29sdW1uT3JkZXIiLCAidXNlU3RhdGUiLCAiY29sdW1uUGlubmluZyIsICJzZXRDb2x1bW5QaW5uaW5nIiwgImNvbHVtblNpemluZyIsICJzZXRDb2x1bW5TaXppbmciLCAic29ydGluZyIsICJ1c2VNZW1vIiwgInRvU29ydGluZ1N0YXRlIiwgImRpc3BsYXlMb2FkZXIiLCAidXNlRWZmZWN0IiwgImFjY2Vzc29yS2V5IiwgImhhbmRsZURyYWdFbmQiLCAiYWN0aXZlIiwgIm92ZXIiLCAib3JkZXIiLCAiYWN0aXZlSW5kZXgiLCAib3ZlckluZGV4IiwgImFycmF5TW92ZSIsICJtb3VzZVNlbnNvciIsICJ1c2VTZW5zb3IiLCAiTW91c2VTZW5zb3IiLCAic2Vuc29ycyIsICJ1c2VTZW5zb3JzIiwgInRhYmxlIiwgInVzZVJlYWN0VGFibGUiLCAiZ2V0Q29yZVJvd01vZGVsIiwgIl9fcHNfcm93aWQiLCAidXBkYXRlck9yVmFsdWUiLCAib2xkIiwgInRvU29ydE9yZGVySXRlbXMiLCAiUmVhY3RUYWJsZURldnRvb2xzIiwgIkRhdGFHcmlkTG9hZGluZ0JhciIsICJEbmRDb250ZXh0IiwgIlRhYmxlIiwgIlRhYmxlSGVhZGVyIiwgImhlYWRlckdyb3VwIiwgIlRhYmxlUm93IiwgIlNvcnRhYmxlQ29udGV4dCIsICJob3Jpem9udGFsTGlzdFNvcnRpbmdTdHJhdGVneSIsICJoZWFkZXJGbiIsICJIZWFkZXJDb21wb25lbnQiLCAicGlubmluZ1N0eWxlcyIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkRhdGFHcmlkSGVhZGVyIiwgIlRhYmxlQm9keSIsICJyb3ciLCAiY2VsbCIsICJpIiwgIkNlbGwiLCAiVGFibGVDZWxsIiwgIlNrZWxldG9uIiwgIkRhdGFHcmlkUGFnaW5hdGlvbiIsICJBbmltYXRlUHJlc2VuY2UiLCAibW90aW9uIiwgImZyb20iLCAiaXRlbSIsICJUb29sdGlwUHJpbWl0aXZlIiwgIlJlYWN0IiwgImpzeCIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJUb29sdGlwQ29udGVudCIsICJjbGFzc05hbWUiLCAic2lkZU9mZnNldCIsICJwcm9wcyIsICJyZWYiLCAiY24iLCAianN4IiwgImpzeHMiLCAiRGF0YUdyaWRIZWFkZXJDZWxsIiwgImNvbHVtbiIsICJUb29sdGlwUHJvdmlkZXIiLCAiVG9vbHRpcCIsICJUb29sdGlwVHJpZ2dlciIsICJLZXlSb3VuZCIsICJUb29sdGlwQ29udGVudCIsICJpc09iamVjdFR5cGUiLCAibW90aW9uIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkxhYmVsUHJpbWl0aXZlIiwgImN2YSIsICJSZWFjdCIsICJqc3giLCAibGFiZWxWYXJpYW50cyIsICJjdmEiLCAiTGFiZWwiLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJTd2l0Y2hQcmltaXRpdmVzIiwgIlJlYWN0IiwgImpzeCIsICJTd2l0Y2giLCAiY2xhc3NOYW1lIiwgInByb3BzIiwgInJlZiIsICJjbiIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJJbnB1dEFjdGlvbnMiLCAib25TYXZlIiwgIm9uQ2FuY2VsIiwgIm9uQ2xvc2UiLCAib25OdWxsQ2hhbmdlIiwgImlzTnVsbCIsICJyZWFkb25seSIsICJDb3JuZXJEb3duTGVmdCIsICJTd2l0Y2giLCAiY2hlY2tlZCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJCb29sZWFuSW5wdXQiLCAicHJvcHMiLCAidmFsdWUiLCAib25TdWJtaXQiLCAiY29sdW1uIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiY3VycmVudFZhbHVlIiwgInNldEN1cnJlbnRWYWx1ZSIsICJ1c2VTdGF0ZSIsICJzZXRUb051bGwiLCAic2V0U2V0VG9OdWxsIiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVOdWxsQ2hhbmdlIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgInZhbHVlVG9TdWJtaXQiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIm1vdGlvbiIsICJTd2l0Y2giLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgInVzZVN0YXRlIiwgInVzZUlucHV0IiwgInByb3BzIiwgImluaXRpYWxWYWx1ZSIsICJ2YWx1ZSIsICJzZXRWYWx1ZSIsICJldmVudCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJkYXlqcyIsICJsb2NhbGl6ZWRGb3JtYXQiLCAiRGF0ZUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgInZhbHVlIiwgInJlYWRvbmx5IiwgImluaXRpYWxWYWx1ZSIsICJoYW5kbGVPbkNoYW5nZSIsICJpbnB1dFZhbHVlIiwgInVzZUlucHV0IiwgImZvcm1hdHRlZERhdGUiLCAidXNlTWVtbyIsICJkYXRlIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAidXNlQ2FsbGJhY2siLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiRW51bUlucHV0IiwgInByb3BzIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJ2YWx1ZSIsICJvcHRpb25zIiwgInJlYWRvbmx5IiwgImlzTnVsbGFibGUiLCAiaW5pdGlhbFZhbHVlIiwgImN1cnJlbnRWYWx1ZSIsICJzZXRDdXJyZW50VmFsdWUiLCAidXNlU3RhdGUiLCAic2V0VG9OdWxsIiwgInNldFNldFRvTnVsbCIsICJoYW5kbGVTZWxlY3RPcHRpb24iLCAib3B0aW9uIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJ1c2VDYWxsYmFjayIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiYmFkZ2VWYXJpYW50cyIsICJJbnB1dEFjdGlvbnMiLCAiUmVhY3QiLCAidXNlU3RhdGUiLCAiRnJhZ21lbnQiLCAianN4IiwgImpzeHMiLCAiSnNvbklucHV0IiwgInByb3BzIiwgInZhbHVlIiwgIm9uU3VibWl0IiwgImNvbHVtbiIsICJyZWFkb25seSIsICJpc051bGxhYmxlIiwgImluaXRpYWxWYWx1ZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaGFuZGxlQ2hhbmdlIiwgImUiLCAiaGFuZGxlTnVsbENoYW5nZSIsICJjaGVja2VkIiwgImhhbmRsZUlucHV0U3VibWl0IiwgIlJlYWN0IiwgImpzb25WYWx1ZSIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXRBY3Rpb25zIiwgIlJlYWN0IiwgInVzZVN0YXRlIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIk51bWVyaWNJbnB1dCIsICJwcm9wcyIsICJ2YWx1ZSIsICJvblN1Ym1pdCIsICJjb2x1bW4iLCAicmVhZG9ubHkiLCAiaXNOdWxsYWJsZSIsICJjdXJyZW50VmFsdWUiLCAic2V0Q3VycmVudFZhbHVlIiwgInVzZVN0YXRlIiwgInNldFRvTnVsbCIsICJzZXRTZXRUb051bGwiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZUNoYW5nZSIsICJlIiwgImhhbmRsZU51bGxDaGFuZ2UiLCAiY2hlY2tlZCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJudW1lcmljVmFsdWUiLCAiY2FuY2VsQWN0aW9uIiwgImhhbmRsZVNhdmUiLCAiaGFuZGxlQ2FuY2VsIiwgInVzZVBvcG92ZXJBY3Rpb25zIiwgIkxhYmVsIiwgIklucHV0QWN0aW9ucyIsICJSZWFjdCIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJSYXdJbnB1dCIsICJwcm9wcyIsICJvblN1Ym1pdCIsICJ2YWx1ZSIsICJyZWFkb25seSIsICJpbml0aWFsVmFsdWUiLCAiaGFuZGxlT25DaGFuZ2UiLCAiaW5wdXRWYWx1ZSIsICJ1c2VJbnB1dCIsICJoYW5kbGVPblN1Ym1pdCIsICJldmVudCIsICJoYW5kbGVJbnB1dFN1Ym1pdCIsICJSZWFjdCIsICJjYW5jZWxBY3Rpb24iLCAiaGFuZGxlU2F2ZSIsICJoYW5kbGVDYW5jZWwiLCAidXNlUG9wb3ZlckFjdGlvbnMiLCAiSW5wdXQiLCAiSW5wdXRBY3Rpb25zIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJ1c2VDYWxsYmFjayIsICJ1c2VNZW1vIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgImRheWpzIiwgImxvY2FsaXplZEZvcm1hdCIsICJUaW1lSW5wdXQiLCAicHJvcHMiLCAib25TdWJtaXQiLCAidmFsdWUiLCAicmVhZG9ubHkiLCAiaW5pdGlhbFZhbHVlIiwgImhhbmRsZU9uQ2hhbmdlIiwgImlucHV0VmFsdWUiLCAidXNlSW5wdXQiLCAiZm9ybWF0dGVkVGltZSIsICJ1c2VNZW1vIiwgImhhc1RpbWV6b25lIiwgImRhdGUiLCAidGltZVJlZ2V4IiwgIm1hdGNoIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAidHpPZmZzZXQiLCAicGVyaW9kIiwgImhhbmRsZU9uU3VibWl0IiwgImV2ZW50IiwgImhhbmRsZUlucHV0U3VibWl0IiwgInVzZUNhbGxiYWNrIiwgImNhbmNlbEFjdGlvbiIsICJoYW5kbGVTYXZlIiwgImhhbmRsZUNhbmNlbCIsICJ1c2VQb3BvdmVyQWN0aW9ucyIsICJJbnB1dCIsICJJbnB1dEFjdGlvbnMiLCAianN4IiwgImdldElucHV0IiwgInByb3BzIiwgImNlbGwiLCAiY29sdW1uIiwgIm9uU3VibWl0IiwgImdyb3VwIiwgIm9wdGlvbnMiLCAiaXNBcnJheSIsICJyZWFkb25seSIsICJjZWxsVmFsdWUiLCAidmFsdWUiLCAiRGF0ZUlucHV0IiwgIlRpbWVJbnB1dCIsICJKc29uSW5wdXQiLCAiQm9vbGVhbklucHV0IiwgIkVudW1JbnB1dCIsICJOdW1lcmljSW5wdXQiLCAiUmF3SW5wdXQiLCAiaXNPYmplY3RUeXBlIiwgInVzZVJlYWN0VGFibGUiLCAib21pdCIsICJGcmFnbWVudCIsICJqc3giLCAiU3RhZ2VkUm93cyIsICJwcm9wcyIsICJwYXJlbnRUYWJsZSIsICJzdGFnZWRSb3dzIiwgInNldFN0YWdlZFJvd3MiLCAicmVhZG9ubHkiLCAidXNlSXNJbnNlcnRpbmciLCAidXBkYXRlU3RhZ2VkUm93IiwgInJvd0luZGV4IiwgInBhcnRpYWxSb3ciLCAicHJldlJvd3MiLCAibmV3Um93cyIsICJjb2x1bW5EZWZzIiwgImNvbHVtbiIsICJFbXB0eUNlbGwiLCAiY2VsbCIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmFsdWUiLCAidGFibGUiLCAidXNlUmVhY3RUYWJsZSIsICJvbWl0IiwgInJvdyIsICJpIiwgIlRhYmxlUm93IiwgImoiLCAiQ2VsbCIsICJnZXRDb2x1bW5QaW5uaW5nU3R5bGVzIiwgIkZyYWdtZW50IiwgImpzeCIsICJqc3hzIiwgIkFjdGl2ZVRhYmxlVmlldyIsICJfcHJvcHMiLCAiaXNNdXRhdGluZyIsICJ1c2VJc011dGF0aW5nIiwgImFjdGl2ZVRhYmxlIiwgIm9uRXJyb3IiLCAiaXNGdWxsc2NyZWVuIiwgInRvZ2dsZUZ1bGxzY3JlZW4iLCAidG9nZ2xlTmF2aWdhdGlvbiIsICJpc05hdmlnYXRpb25PcGVuIiwgInVzZVN0dWRpbyIsICJzb3J0aW5nU3RhdGUiLCAic2V0U29ydGluZ1N0YXRlIiwgInVzZVNvcnRpbmciLCAicGFnaW5hdGlvblN0YXRlIiwgInNldFBhZ2luYXRpb25TdGF0ZSIsICJ1c2VQYWdpbmF0aW9uIiwgInN0YWdlZFJvd3MiLCAic2V0U3RhZ2VkUm93cyIsICJ1c2VTdGF0ZSIsICJhcHBsaWVkRmlsdGVyIiwgInNldEFwcGxpZWRGaWx0ZXIiLCAiZWRpdGluZ0ZpbHRlciIsICJzZXRFZGl0aW5nRmlsdGVyIiwgInRvdGFsRWRpdGluZ0ZpbHRlcnMiLCAidXNlRmlsdGVyaW5nIiwgImRhdGEiLCAiaXNGZXRjaGluZyIsICJyZWZldGNoIiwgInVzZUFjdGl2ZVRhYmxlUXVlcnkiLCAiZGVsZXRlU2VsZWN0aW9uIiwgImlzU2VsZWN0aW5nIiwgInJvd1NlbGVjdGlvblN0YXRlIiwgInNldFJvd1NlbGVjdGlvblN0YXRlIiwgInVzZVNlbGVjdGlvbiIsICJyZWFkb25seSIsICJjb2x1bW4iLCAiaXNJbnNlcnRpbmciLCAidXNlSXNJbnNlcnRpbmciLCAiaW5zZXJ0IiwgInVzZUFjdGl2ZVRhYmxlSW5zZXJ0IiwgInVwZGF0ZSIsICJ1c2VBY3RpdmVUYWJsZVVwZGF0ZSIsICJ1c2VFZmZlY3QiLCAic2F2ZVN0YWdlZFJvd3MiLCAidG9hc3QiLCAibmV3U3RhZ2VkUm93IiwgIm9sZCIsICJkcm9wU3RhZ2VkUm93cyIsICJoYW5kbGVDZWxsSW5wdXRTdWJtaXQiLCAidmFsdWUiLCAicm93IiwgIm9uRmlsdGVyT3BlbkNoYW5nZSIsICJvcGVuIiwgImNvbmNyZXRlQ29sdW1uRGVmcyIsICJEYXRhR3JpZEhlYWRlckNlbGwiLCAiY2VsbCIsICJwcm9wcyIsICJXcml0ZWFibGVDZWxsIiwgImdldENlbGwiLCAiZ2V0SW5wdXQiLCAidmlydHVhbENvbHVtbkRlZnMiLCAidGFibGUiLCAiU2VsZWN0SGVhZGVyQ2VsbCIsICJTZWxlY3RSb3dDZWxsIiwgImNvbHVtbkRlZnMiLCAiZGVmYXVsdENvbHVtblNvcnRpbmciLCAiQnV0dG9uIiwgIlBhbmVsTGVmdENsb3NlIiwgIlBhbmVsTGVmdE9wZW4iLCAiUG9wb3ZlciIsICJQb3BvdmVyVHJpZ2dlciIsICJjbiIsICJGaWx0ZXIiLCAiQmFkZ2UiLCAiQW5pbWF0ZU51bWJlciIsICJQb3BvdmVyQ29udGVudCIsICJGaWx0ZXJUcmVlIiwgImZpbHRlciIsICJSZWZyZXNoQ3ciLCAiTWluaW1pemUiLCAiTWF4aW1pemUiLCAiRGF0YUdyaWQiLCAiU3RhZ2VkUm93cyIsICJnZXRQYWdlQ291bnQiLCAicm93Q291bnQiLCAicGFnZVNpemUiLCAicGFnZUNvdW50IiwgImEiLCAiYiIsICJhTWV0YSIsICJiTWV0YSIsICJTbG90IiwgInVzZUNhbGxiYWNrIiwgInVzZUVmZmVjdCIsICJ1c2VNZW1vIiwgInV1aWR2NCIsICJ1c2VRdWVyeSIsICJJTklUSUFMX0RBVEFfVVBEQVRFRF9BVCIsICJ1c2VJbnRyb3NwZWN0aW9uIiwgImFkYXB0ZXIiLCAidXNlU3R1ZGlvIiwgInVzZVF1ZXJ5IiwgInNpZ25hbCIsICJlcnJvciIsICJpbnRyb3NwZWN0aW9uIiwgImN0eCIsICJ1c2VBY3RpdmVUYWJsZSIsICJhY3RpdmVUYWJsZSIsICJzZXRBY3RpdmVUYWJsZSIsICJhZGFwdGVyIiwgImVtaXRUZWxlbWV0cnlFdmVudCIsICJ1c2VTdHVkaW8iLCAiaW50cm9zcGVjdGlvbiIsICJkYXRhVXBkYXRlZEF0IiwgInVzZUludHJvc3BlY3Rpb24iLCAiaXNMb2FkaW5nIiwgIklOSVRJQUxfREFUQV9VUERBVEVEX0FUIiwgInRhYmxlcyIsICJ1c2VNZW1vIiwgInRvdGFsVGFibGVDb3VudCIsICJzdW0iLCAic2NoZW1hIiwgImZpcnN0VGFibGUiLCAidGFibGVBbmRTY2hlbWEiLCAic2V0VGFibGVBbmRTY2hlbWEiLCAidXNlUXVlcnlTdGF0ZXMiLCAidiIsICJzZXRQYWdlUGFyYW0iLCAidXNlUXVlcnlTdGF0ZSIsICJzZXRTb3J0UGFyYW0iLCAidXNlRWZmZWN0IiwgInRhYmxlRnJvbVBhcmFtIiwgInQiLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQ2FsbGJhY2siLCAibmV3VGFibGUiLCAidXVpZHY0IiwgImpzeCIsICJqc3hzIiwgIk5hdmlnYXRpb24iLCAiY2xhc3NOYW1lIiwgInRhYmxlcyIsICJhY3RpdmVUYWJsZSIsICJpc0xvYWRpbmciLCAiaGFuZGxlVGFibGVDaGFuZ2UiLCAidXNlQWN0aXZlVGFibGUiLCAiYWN0aXZlVmlldyIsICJoYW5kbGVWaWV3Q2hhbmdlIiwgInVzZUFjdGl2ZVZpZXciLCAic2lkZUJhckNsYXNzZXMiLCAiY24iLCAidGFibGUiLCAiXyIsICJpbmRleCIsICJTa2VsZXRvbiIsICJCbG9jayIsICJsYWJlbCIsICJjaGlsZHJlbiIsICJwcm9wcyIsICJUYWJsZTIiLCAiSXRlbSIsICJhc0NoaWxkIiwgImlzQWN0aXZlIiwgInNpemUiLCAid3JhcENoaWxkcmVuSW5TcGFuIiwgIlNsb3QiLCAibWVtbyIsICJ1c2VDYWxsYmFjayIsICJSZWFjdEZsb3ciLCAiYWRkRWRnZSIsICJCYWNrZ3JvdW5kIiwgIkNvbm5lY3Rpb25MaW5lVHlwZSIsICJDb250cm9scyIsICJIYW5kbGUiLCAiUG9zaXRpb24iLCAidXNlRWRnZXNTdGF0ZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImpzeCIsICJqc3hzIiwgIlRhYmxlTm9kZSIsICJtZW1vIiwgImRhdGEiLCAiZ2V0SWNvbiIsICJmaWVsZE5hbWUiLCAiSGFzaCIsICJNYWlsIiwgIlBob25lIiwgIlVzZXIiLCAiQ2FsZW5kYXIiLCAiS2V5IiwgIkhhbmRsZSIsICJQb3NpdGlvbiIsICJmaWVsZCIsICJpbmRleCIsICJjbiIsICJub2RlVHlwZXMiLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJ0YWJsZXMiLCAicmVsYXRpb25zaGlwcyIsICJpbml0aWFsTm9kZXMiLCAidGFibGUiLCAiaW5pdGlhbEVkZ2VzIiwgInJlbCIsICJub2RlcyIsICJfc2V0Tm9kZXMiLCAib25Ob2Rlc0NoYW5nZSIsICJ1c2VOb2Rlc1N0YXRlIiwgImVkZ2VzIiwgInNldEVkZ2VzIiwgIm9uRWRnZXNDaGFuZ2UiLCAidXNlRWRnZXNTdGF0ZSIsICJvbkNvbm5lY3QiLCAidXNlQ2FsbGJhY2siLCAicGFyYW1zIiwgImVkcyIsICJhZGRFZGdlIiwgIlJlYWN0RmxvdyIsICJDb25uZWN0aW9uTGluZVR5cGUiLCAiQmFja2dyb3VuZCIsICJDb250cm9scyIsICJqc3giLCAic2FtcGxlU2NoZW1hIiwgIlNjaGVtYVZpZXciLCAiU2NoZW1hVmlzdWFsaXphdGlvbiIsICJqc3giLCAianN4cyIsICJTdHVkaW8iLCAicHJvcHMiLCAiYWRhcHRlciIsICJvbkVycm9yIiwgIm9uVGVsZW1ldHJ5RXZlbnQiLCAiU3R1ZGlvQ29udGV4dFByb3ZpZGVyIiwgIlN0dWRpb0NvbnRlbnQiLCAiaXNGdWxsc2NyZWVuIiwgImlzTmF2aWdhdGlvbk9wZW4iLCAidXNlU3R1ZGlvIiwgImFjdGl2ZVZpZXciLCAidXNlQWN0aXZlVmlldyIsICJjb250YWluZXJDbGFzc2VzIiwgImNuIiwgIkFuaW1hdGVQcmVzZW5jZSIsICJtb3Rpb24iLCAiTmF2aWdhdGlvbiIsICJBY3RpdmVUYWJsZVZpZXciLCAiU2NoZW1hVmlldyJdCn0K
|