-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path2228.32c70cbc.iframe.bundle.js
2 lines (2 loc) · 180 KB
/
2228.32c70cbc.iframe.bundle.js
1
2
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[2228],{"./node_modules/color-convert/conversions.js":(module,__unused_webpack_exports,__webpack_require__)=>{const cssKeywords=__webpack_require__("./node_modules/color-convert/node_modules/color-name/index.js"),reverseKeywords={};for(const key of Object.keys(cssKeywords))reverseKeywords[cssKeywords[key]]=key;const convert={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};module.exports=convert;for(const model of Object.keys(convert)){if(!("channels"in convert[model]))throw new Error("missing channels property: "+model);if(!("labels"in convert[model]))throw new Error("missing channel labels property: "+model);if(convert[model].labels.length!==convert[model].channels)throw new Error("channel and label counts mismatch: "+model);const{channels,labels}=convert[model];delete convert[model].channels,delete convert[model].labels,Object.defineProperty(convert[model],"channels",{value:channels}),Object.defineProperty(convert[model],"labels",{value:labels})}convert.rgb.hsl=function(rgb){const r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,min=Math.min(r,g,b),max=Math.max(r,g,b),delta=max-min;let h,s;max===min?h=0:r===max?h=(g-b)/delta:g===max?h=2+(b-r)/delta:b===max&&(h=4+(r-g)/delta),h=Math.min(60*h,360),h<0&&(h+=360);const l=(min+max)/2;return s=max===min?0:l<=.5?delta/(max+min):delta/(2-max-min),[h,100*s,100*l]},convert.rgb.hsv=function(rgb){let rdif,gdif,bdif,h,s;const r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,v=Math.max(r,g,b),diff=v-Math.min(r,g,b),diffc=function(c){return(v-c)/6/diff+.5};return 0===diff?(h=0,s=0):(s=diff/v,rdif=diffc(r),gdif=diffc(g),bdif=diffc(b),r===v?h=bdif-gdif:g===v?h=1/3+rdif-bdif:b===v&&(h=2/3+gdif-rdif),h<0?h+=1:h>1&&(h-=1)),[360*h,100*s,100*v]},convert.rgb.hwb=function(rgb){const r=rgb[0],g=rgb[1];let b=rgb[2];const h=convert.rgb.hsl(rgb)[0],w=1/255*Math.min(r,Math.min(g,b));return b=1-1/255*Math.max(r,Math.max(g,b)),[h,100*w,100*b]},convert.rgb.cmyk=function(rgb){const r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,k=Math.min(1-r,1-g,1-b);return[100*((1-r-k)/(1-k)||0),100*((1-g-k)/(1-k)||0),100*((1-b-k)/(1-k)||0),100*k]},convert.rgb.keyword=function(rgb){const reversed=reverseKeywords[rgb];if(reversed)return reversed;let currentClosestKeyword,currentClosestDistance=1/0;for(const keyword of Object.keys(cssKeywords)){const value=cssKeywords[keyword],distance=(y=value,((x=rgb)[0]-y[0])**2+(x[1]-y[1])**2+(x[2]-y[2])**2);distance<currentClosestDistance&&(currentClosestDistance=distance,currentClosestKeyword=keyword)}var x,y;return currentClosestKeyword},convert.keyword.rgb=function(keyword){return cssKeywords[keyword]},convert.rgb.xyz=function(rgb){let r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255;r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,g=g>.04045?((g+.055)/1.055)**2.4:g/12.92,b=b>.04045?((b+.055)/1.055)**2.4:b/12.92;return[100*(.4124*r+.3576*g+.1805*b),100*(.2126*r+.7152*g+.0722*b),100*(.0193*r+.1192*g+.9505*b)]},convert.rgb.lab=function(rgb){const xyz=convert.rgb.xyz(rgb);let x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>.008856?x**(1/3):7.787*x+16/116,y=y>.008856?y**(1/3):7.787*y+16/116,z=z>.008856?z**(1/3):7.787*z+16/116;return[116*y-16,500*(x-y),200*(y-z)]},convert.hsl.rgb=function(hsl){const h=hsl[0]/360,s=hsl[1]/100,l=hsl[2]/100;let t2,t3,val;if(0===s)return val=255*l,[val,val,val];t2=l<.5?l*(1+s):l+s-l*s;const t1=2*l-t2,rgb=[0,0,0];for(let i=0;i<3;i++)t3=h+1/3*-(i-1),t3<0&&t3++,t3>1&&t3--,val=6*t3<1?t1+6*(t2-t1)*t3:2*t3<1?t2:3*t3<2?t1+(t2-t1)*(2/3-t3)*6:t1,rgb[i]=255*val;return rgb},convert.hsl.hsv=function(hsl){const h=hsl[0];let s=hsl[1]/100,l=hsl[2]/100,smin=s;const lmin=Math.max(l,.01);l*=2,s*=l<=1?l:2-l,smin*=lmin<=1?lmin:2-lmin;return[h,100*(0===l?2*smin/(lmin+smin):2*s/(l+s)),100*((l+s)/2)]},convert.hsv.rgb=function(hsv){const h=hsv[0]/60,s=hsv[1]/100;let v=hsv[2]/100;const hi=Math.floor(h)%6,f=h-Math.floor(h),p=255*v*(1-s),q=255*v*(1-s*f),t=255*v*(1-s*(1-f));switch(v*=255,hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}},convert.hsv.hsl=function(hsv){const h=hsv[0],s=hsv[1]/100,v=hsv[2]/100,vmin=Math.max(v,.01);let sl,l;l=(2-s)*v;const lmin=(2-s)*vmin;return sl=s*vmin,sl/=lmin<=1?lmin:2-lmin,sl=sl||0,l/=2,[h,100*sl,100*l]},convert.hwb.rgb=function(hwb){const h=hwb[0]/360;let wh=hwb[1]/100,bl=hwb[2]/100;const ratio=wh+bl;let f;ratio>1&&(wh/=ratio,bl/=ratio);const i=Math.floor(6*h),v=1-bl;f=6*h-i,1&i&&(f=1-f);const n=wh+f*(v-wh);let r,g,b;switch(i){default:case 6:case 0:r=v,g=n,b=wh;break;case 1:r=n,g=v,b=wh;break;case 2:r=wh,g=v,b=n;break;case 3:r=wh,g=n,b=v;break;case 4:r=n,g=wh,b=v;break;case 5:r=v,g=wh,b=n}return[255*r,255*g,255*b]},convert.cmyk.rgb=function(cmyk){const c=cmyk[0]/100,m=cmyk[1]/100,y=cmyk[2]/100,k=cmyk[3]/100;return[255*(1-Math.min(1,c*(1-k)+k)),255*(1-Math.min(1,m*(1-k)+k)),255*(1-Math.min(1,y*(1-k)+k))]},convert.xyz.rgb=function(xyz){const x=xyz[0]/100,y=xyz[1]/100,z=xyz[2]/100;let r,g,b;return r=3.2406*x+-1.5372*y+-.4986*z,g=-.9689*x+1.8758*y+.0415*z,b=.0557*x+-.204*y+1.057*z,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,g=g>.0031308?1.055*g**(1/2.4)-.055:12.92*g,b=b>.0031308?1.055*b**(1/2.4)-.055:12.92*b,r=Math.min(Math.max(0,r),1),g=Math.min(Math.max(0,g),1),b=Math.min(Math.max(0,b),1),[255*r,255*g,255*b]},convert.xyz.lab=function(xyz){let x=xyz[0],y=xyz[1],z=xyz[2];x/=95.047,y/=100,z/=108.883,x=x>.008856?x**(1/3):7.787*x+16/116,y=y>.008856?y**(1/3):7.787*y+16/116,z=z>.008856?z**(1/3):7.787*z+16/116;return[116*y-16,500*(x-y),200*(y-z)]},convert.lab.xyz=function(lab){let x,y,z;y=(lab[0]+16)/116,x=lab[1]/500+y,z=y-lab[2]/200;const y2=y**3,x2=x**3,z2=z**3;return y=y2>.008856?y2:(y-16/116)/7.787,x=x2>.008856?x2:(x-16/116)/7.787,z=z2>.008856?z2:(z-16/116)/7.787,x*=95.047,y*=100,z*=108.883,[x,y,z]},convert.lab.lch=function(lab){const l=lab[0],a=lab[1],b=lab[2];let h;h=360*Math.atan2(b,a)/2/Math.PI,h<0&&(h+=360);return[l,Math.sqrt(a*a+b*b),h]},convert.lch.lab=function(lch){const l=lch[0],c=lch[1],hr=lch[2]/360*2*Math.PI;return[l,c*Math.cos(hr),c*Math.sin(hr)]},convert.rgb.ansi16=function(args,saturation=null){const[r,g,b]=args;let value=null===saturation?convert.rgb.hsv(args)[2]:saturation;if(value=Math.round(value/50),0===value)return 30;let ansi=30+(Math.round(b/255)<<2|Math.round(g/255)<<1|Math.round(r/255));return 2===value&&(ansi+=60),ansi},convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])},convert.rgb.ansi256=function(args){const r=args[0],g=args[1],b=args[2];if(r===g&&g===b)return r<8?16:r>248?231:Math.round((r-8)/247*24)+232;return 16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b/255*5)},convert.ansi16.rgb=function(args){let color=args%10;if(0===color||7===color)return args>50&&(color+=3.5),color=color/10.5*255,[color,color,color];const mult=.5*(1+~~(args>50));return[(1&color)*mult*255,(color>>1&1)*mult*255,(color>>2&1)*mult*255]},convert.ansi256.rgb=function(args){if(args>=232){const c=10*(args-232)+8;return[c,c,c]}let rem;args-=16;return[Math.floor(args/36)/5*255,Math.floor((rem=args%36)/6)/5*255,rem%6/5*255]},convert.rgb.hex=function(args){const string=(((255&Math.round(args[0]))<<16)+((255&Math.round(args[1]))<<8)+(255&Math.round(args[2]))).toString(16).toUpperCase();return"000000".substring(string.length)+string},convert.hex.rgb=function(args){const match=args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!match)return[0,0,0];let colorString=match[0];3===match[0].length&&(colorString=colorString.split("").map((char=>char+char)).join(""));const integer=parseInt(colorString,16);return[integer>>16&255,integer>>8&255,255&integer]},convert.rgb.hcg=function(rgb){const r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,max=Math.max(Math.max(r,g),b),min=Math.min(Math.min(r,g),b),chroma=max-min;let grayscale,hue;return grayscale=chroma<1?min/(1-chroma):0,hue=chroma<=0?0:max===r?(g-b)/chroma%6:max===g?2+(b-r)/chroma:4+(r-g)/chroma,hue/=6,hue%=1,[360*hue,100*chroma,100*grayscale]},convert.hsl.hcg=function(hsl){const s=hsl[1]/100,l=hsl[2]/100,c=l<.5?2*s*l:2*s*(1-l);let f=0;return c<1&&(f=(l-.5*c)/(1-c)),[hsl[0],100*c,100*f]},convert.hsv.hcg=function(hsv){const s=hsv[1]/100,v=hsv[2]/100,c=s*v;let f=0;return c<1&&(f=(v-c)/(1-c)),[hsv[0],100*c,100*f]},convert.hcg.rgb=function(hcg){const h=hcg[0]/360,c=hcg[1]/100,g=hcg[2]/100;if(0===c)return[255*g,255*g,255*g];const pure=[0,0,0],hi=h%1*6,v=hi%1,w=1-v;let mg=0;switch(Math.floor(hi)){case 0:pure[0]=1,pure[1]=v,pure[2]=0;break;case 1:pure[0]=w,pure[1]=1,pure[2]=0;break;case 2:pure[0]=0,pure[1]=1,pure[2]=v;break;case 3:pure[0]=0,pure[1]=w,pure[2]=1;break;case 4:pure[0]=v,pure[1]=0,pure[2]=1;break;default:pure[0]=1,pure[1]=0,pure[2]=w}return mg=(1-c)*g,[255*(c*pure[0]+mg),255*(c*pure[1]+mg),255*(c*pure[2]+mg)]},convert.hcg.hsv=function(hcg){const c=hcg[1]/100,v=c+hcg[2]/100*(1-c);let f=0;return v>0&&(f=c/v),[hcg[0],100*f,100*v]},convert.hcg.hsl=function(hcg){const c=hcg[1]/100,l=hcg[2]/100*(1-c)+.5*c;let s=0;return l>0&&l<.5?s=c/(2*l):l>=.5&&l<1&&(s=c/(2*(1-l))),[hcg[0],100*s,100*l]},convert.hcg.hwb=function(hcg){const c=hcg[1]/100,v=c+hcg[2]/100*(1-c);return[hcg[0],100*(v-c),100*(1-v)]},convert.hwb.hcg=function(hwb){const w=hwb[1]/100,v=1-hwb[2]/100,c=v-w;let g=0;return c<1&&(g=(v-c)/(1-c)),[hwb[0],100*c,100*g]},convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]},convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]},convert.gray.rgb=function(args){return[args[0]/100*255,args[0]/100*255,args[0]/100*255]},convert.gray.hsl=function(args){return[0,0,args[0]]},convert.gray.hsv=convert.gray.hsl,convert.gray.hwb=function(gray){return[0,100,gray[0]]},convert.gray.cmyk=function(gray){return[0,0,0,gray[0]]},convert.gray.lab=function(gray){return[gray[0],0,0]},convert.gray.hex=function(gray){const val=255&Math.round(gray[0]/100*255),string=((val<<16)+(val<<8)+val).toString(16).toUpperCase();return"000000".substring(string.length)+string},convert.rgb.gray=function(rgb){return[(rgb[0]+rgb[1]+rgb[2])/3/255*100]}},"./node_modules/color-convert/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{const conversions=__webpack_require__("./node_modules/color-convert/conversions.js"),route=__webpack_require__("./node_modules/color-convert/route.js"),convert={};Object.keys(conversions).forEach((fromModel=>{convert[fromModel]={},Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels}),Object.defineProperty(convert[fromModel],"labels",{value:conversions[fromModel].labels});const routes=route(fromModel);Object.keys(routes).forEach((toModel=>{const fn=routes[toModel];convert[fromModel][toModel]=function wrapRounded(fn){const wrappedFn=function(...args){const arg0=args[0];if(null==arg0)return arg0;arg0.length>1&&(args=arg0);const result=fn(args);if("object"==typeof result)for(let len=result.length,i=0;i<len;i++)result[i]=Math.round(result[i]);return result};return"conversion"in fn&&(wrappedFn.conversion=fn.conversion),wrappedFn}(fn),convert[fromModel][toModel].raw=function wrapRaw(fn){const wrappedFn=function(...args){const arg0=args[0];return null==arg0?arg0:(arg0.length>1&&(args=arg0),fn(args))};return"conversion"in fn&&(wrappedFn.conversion=fn.conversion),wrappedFn}(fn)}))})),module.exports=convert},"./node_modules/color-convert/node_modules/color-name/index.js":module=>{"use strict";module.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},"./node_modules/color-convert/route.js":(module,__unused_webpack_exports,__webpack_require__)=>{const conversions=__webpack_require__("./node_modules/color-convert/conversions.js");function deriveBFS(fromModel){const graph=function buildGraph(){const graph={},models=Object.keys(conversions);for(let len=models.length,i=0;i<len;i++)graph[models[i]]={distance:-1,parent:null};return graph}(),queue=[fromModel];for(graph[fromModel].distance=0;queue.length;){const current=queue.pop(),adjacents=Object.keys(conversions[current]);for(let len=adjacents.length,i=0;i<len;i++){const adjacent=adjacents[i],node=graph[adjacent];-1===node.distance&&(node.distance=graph[current].distance+1,node.parent=current,queue.unshift(adjacent))}}return graph}function link(from,to){return function(args){return to(from(args))}}function wrapConversion(toModel,graph){const path=[graph[toModel].parent,toModel];let fn=conversions[graph[toModel].parent][toModel],cur=graph[toModel].parent;for(;graph[cur].parent;)path.unshift(graph[cur].parent),fn=link(conversions[graph[cur].parent][cur],fn),cur=graph[cur].parent;return fn.conversion=path,fn}module.exports=function(fromModel){const graph=deriveBFS(fromModel),conversion={},models=Object.keys(graph);for(let len=models.length,i=0;i<len;i++){const toModel=models[i];null!==graph[toModel].parent&&(conversion[toModel]=wrapConversion(toModel,graph))}return conversion}},"./node_modules/lodash/_baseTrim.js":(module,__unused_webpack_exports,__webpack_require__)=>{var trimmedEndIndex=__webpack_require__("./node_modules/lodash/_trimmedEndIndex.js"),reTrimStart=/^\s+/;module.exports=function baseTrim(string){return string?string.slice(0,trimmedEndIndex(string)+1).replace(reTrimStart,""):string}},"./node_modules/lodash/_trimmedEndIndex.js":module=>{var reWhitespace=/\s/;module.exports=function trimmedEndIndex(string){for(var index=string.length;index--&&reWhitespace.test(string.charAt(index)););return index}},"./node_modules/lodash/debounce.js":(module,__unused_webpack_exports,__webpack_require__)=>{var isObject=__webpack_require__("./node_modules/lodash/isObject.js"),now=__webpack_require__("./node_modules/lodash/now.js"),toNumber=__webpack_require__("./node_modules/lodash/toNumber.js"),nativeMax=Math.max,nativeMin=Math.min;module.exports=function debounce(func,wait,options){var lastArgs,lastThis,maxWait,result,timerId,lastCallTime,lastInvokeTime=0,leading=!1,maxing=!1,trailing=!0;if("function"!=typeof func)throw new TypeError("Expected a function");function invokeFunc(time){var args=lastArgs,thisArg=lastThis;return lastArgs=lastThis=void 0,lastInvokeTime=time,result=func.apply(thisArg,args)}function shouldInvoke(time){var timeSinceLastCall=time-lastCallTime;return void 0===lastCallTime||timeSinceLastCall>=wait||timeSinceLastCall<0||maxing&&time-lastInvokeTime>=maxWait}function timerExpired(){var time=now();if(shouldInvoke(time))return trailingEdge(time);timerId=setTimeout(timerExpired,function remainingWait(time){var timeWaiting=wait-(time-lastCallTime);return maxing?nativeMin(timeWaiting,maxWait-(time-lastInvokeTime)):timeWaiting}(time))}function trailingEdge(time){return timerId=void 0,trailing&&lastArgs?invokeFunc(time):(lastArgs=lastThis=void 0,result)}function debounced(){var time=now(),isInvoking=shouldInvoke(time);if(lastArgs=arguments,lastThis=this,lastCallTime=time,isInvoking){if(void 0===timerId)return function leadingEdge(time){return lastInvokeTime=time,timerId=setTimeout(timerExpired,wait),leading?invokeFunc(time):result}(lastCallTime);if(maxing)return clearTimeout(timerId),timerId=setTimeout(timerExpired,wait),invokeFunc(lastCallTime)}return void 0===timerId&&(timerId=setTimeout(timerExpired,wait)),result}return wait=toNumber(wait)||0,isObject(options)&&(leading=!!options.leading,maxWait=(maxing="maxWait"in options)?nativeMax(toNumber(options.maxWait)||0,wait):maxWait,trailing="trailing"in options?!!options.trailing:trailing),debounced.cancel=function cancel(){void 0!==timerId&&clearTimeout(timerId),lastInvokeTime=0,lastArgs=lastCallTime=lastThis=timerId=void 0},debounced.flush=function flush(){return void 0===timerId?result:trailingEdge(now())},debounced}},"./node_modules/lodash/now.js":(module,__unused_webpack_exports,__webpack_require__)=>{var root=__webpack_require__("./node_modules/lodash/_root.js");module.exports=function(){return root.Date.now()}},"./node_modules/lodash/throttle.js":(module,__unused_webpack_exports,__webpack_require__)=>{var debounce=__webpack_require__("./node_modules/lodash/debounce.js"),isObject=__webpack_require__("./node_modules/lodash/isObject.js");module.exports=function throttle(func,wait,options){var leading=!0,trailing=!0;if("function"!=typeof func)throw new TypeError("Expected a function");return isObject(options)&&(leading="leading"in options?!!options.leading:leading,trailing="trailing"in options?!!options.trailing:trailing),debounce(func,wait,{leading,maxWait:wait,trailing})}},"./node_modules/lodash/toNumber.js":(module,__unused_webpack_exports,__webpack_require__)=>{var baseTrim=__webpack_require__("./node_modules/lodash/_baseTrim.js"),isObject=__webpack_require__("./node_modules/lodash/isObject.js"),isSymbol=__webpack_require__("./node_modules/lodash/isSymbol.js"),reIsBadHex=/^[-+]0x[0-9a-f]+$/i,reIsBinary=/^0b[01]+$/i,reIsOctal=/^0o[0-7]+$/i,freeParseInt=parseInt;module.exports=function toNumber(value){if("number"==typeof value)return value;if(isSymbol(value))return NaN;if(isObject(value)){var other="function"==typeof value.valueOf?value.valueOf():value;value=isObject(other)?other+"":other}if("string"!=typeof value)return 0===value?value:+value;value=baseTrim(value);var isBinary=reIsBinary.test(value);return isBinary||reIsOctal.test(value)?freeParseInt(value.slice(2),isBinary?2:8):reIsBadHex.test(value)?NaN:+value}},"./node_modules/@storybook/addon-docs/node_modules/@storybook/blocks/dist/Color-PRSJMWNM.mjs":(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ColorControl:()=>ColorControl,default:()=>Color_default});var chunk_GWAJ4KRU=__webpack_require__("./node_modules/@storybook/addon-docs/node_modules/@storybook/blocks/dist/chunk-GWAJ4KRU.mjs"),react=__webpack_require__("./node_modules/react/index.js");function u(){return(u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function c(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function i(e){var t=(0,react.useRef)(e),n=(0,react.useRef)((function(e){t.current&&t.current(e)}));return t.current=e,n.current}var s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},f=function(e){return"touches"in e},v=function(e){return e&&e.ownerDocument.defaultView||self},d=function(e,r,t){var n=e.getBoundingClientRect(),o=f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return{left:s((o.pageX-(n.left+v(e).pageXOffset))/n.width),top:s((o.pageY-(n.top+v(e).pageYOffset))/n.height)}},h=function(e){!f(e)&&e.preventDefault()},m=react.memo((function(o){var a=o.onMove,l=o.onKey,s=c(o,["onMove","onKey"]),m=(0,react.useRef)(null),g=i(a),p=i(l),b=(0,react.useRef)(null),_=(0,react.useRef)(!1),x=(0,react.useMemo)((function(){var e=function(e){h(e),(f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(d(m.current,e,b.current)):t(!1)},r=function(){return t(!1)};function t(t){var n=_.current,o=v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?"touchmove":"mousemove",e),a(n?"touchend":"mouseup",r)}return[function(e){var r=e.nativeEvent,n=m.current;if(n&&(h(r),!function(e,r){return r&&!f(e)}(r,_.current)&&n)){if(f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier)}n.focus(),g(d(n,r,b.current)),t(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},t]}),[p,g]),C=x[0],E=x[1],H=x[2];return(0,react.useEffect)((function(){return H}),[H]),react.createElement("div",u({},s,{onTouchStart:C,onMouseDown:C,className:"react-colorful__interactive",ref:m,onKeyDown:E,tabIndex:0,role:"slider"}))})),g=function(e){return e.filter(Boolean).join(" ")},p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=g(["react-colorful__pointer",r.className]);return react.createElement("div",{className:l,style:{top:100*a+"%",left:100*n+"%"}},react.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},_={grad:.9,turn:360,rad:360/(2*Math.PI)},x=function(e){return L(C(e))},C=function(e){return"#"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?b(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?b(parseInt(e.substring(6,8),16)/255,2):1}},E=function(e,r){return void 0===r&&(r="deg"),Number(e)*(_[r]||1)},H=function(e){var r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?N({h:E(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},N=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},w=function(e){return K(I(e))},y=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return{h:b(e.h),s:b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:b(o/2),a:b(n,2)}},q=function(e){var r=y(e);return"hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},k=function(e){var r=y(e);return"hsla("+r.h+", "+r.s+"%, "+r.l+"%, "+r.a+")"},I=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return{r:b(255*[n,u,l,l,c,n][i]),g:b(255*[c,n,n,u,l,l][i]),b:b(255*[l,l,c,n,n,u][i]),a:b(o,2)}},z=function(e){var r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?L({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},D=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},K=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=o<1?D(b(255*o)):"";return"#"+D(r)+D(t)+D(n)+a},L=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return{h:b(60*(u<0?u+6:u)),s:b(a?l/a*100:0),v:b(a/255*100),a:o}},S=react.memo((function(r){var t=r.hue,n=r.onChange,o=g(["react-colorful__hue",r.className]);return react.createElement("div",{className:o},react.createElement(m,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:s(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuenow":b(t),"aria-valuemax":"360","aria-valuemin":"0"},react.createElement(p,{className:"react-colorful__hue-pointer",left:t/360,color:q({h:t,s:100,v:100,a:1})})))})),T=react.memo((function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:q({h:t.h,s:100,v:100,a:1})};return react.createElement("div",{className:"react-colorful__saturation",style:o},react.createElement(m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:s(t.s+100*e.left,0,100),v:s(t.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+b(t.s)+"%, Brightness "+b(t.v)+"%"},react.createElement(p,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:q(t)})))})),F=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},P=function(e,r){return e.replace(/\s/g,"")===r.replace(/\s/g,"")},X=function(e,r){return e.toLowerCase()===r.toLowerCase()||F(C(e),C(r))};function Y(e,t,l){var u=i(l),c=(0,react.useState)((function(){return e.toHsva(t)})),s=c[0],f=c[1],v=(0,react.useRef)({color:t,hsva:s});(0,react.useEffect)((function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r)}}),[t,e]),(0,react.useEffect)((function(){var r;F(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))}),[s,e,u]);var d=(0,react.useCallback)((function(e){f((function(r){return Object.assign({},r,e)}))}),[]);return[s,d]}var R,ColorSpace2,V="undefined"!=typeof window?react.useLayoutEffect:react.useEffect,J=new Map,Q=function(e){V((function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!J.has(r)){var t=r.createElement("style");t.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',J.set(r,t);var n=R||__webpack_require__.nc;n&&t.setAttribute("nonce",n),r.head.appendChild(t)}}),[])},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=c(t,["className","colorModel","color","onChange"]),f=(0,react.useRef)(null);Q(f);var v=Y(o,l,i),d=v[0],h=v[1],m=g(["react-colorful",n]);return react.createElement("div",u({},s,{ref:f,className:m}),react.createElement(T,{hsva:d,onChange:h}),react.createElement(S,{hue:d.h,onChange:h,className:"react-colorful__last-control"}))},W={defaultColor:"000",toHsva:x,fromHsva:function(e){return w({h:e.h,s:e.s,v:e.v,a:1})},equal:X},ee=function(r){var t=r.className,n=r.hsva,o=r.onChange,a={backgroundImage:"linear-gradient(90deg, "+k(Object.assign({},n,{a:0}))+", "+k(Object.assign({},n,{a:1}))+")"},l=g(["react-colorful__alpha",t]),u=b(100*n.a);return react.createElement("div",{className:l},react.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),react.createElement(m,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:s(n.a+e.left)})},"aria-label":"Alpha","aria-valuetext":u+"%","aria-valuenow":u,"aria-valuemin":"0","aria-valuemax":"100"},react.createElement(p,{className:"react-colorful__alpha-pointer",left:n.a,color:k(n)})))},re=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=c(t,["className","colorModel","color","onChange"]),f=(0,react.useRef)(null);Q(f);var v=Y(o,l,i),d=v[0],h=v[1],m=g(["react-colorful",n]);return react.createElement("div",u({},s,{ref:f,className:m}),react.createElement(T,{hsva:d,onChange:h}),react.createElement(S,{hue:d.h,onChange:h}),react.createElement(ee,{hsva:d,onChange:h,className:"react-colorful__last-control"}))},le={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:H,fromHsva:k,equal:P},Ee={defaultColor:"rgba(0, 0, 0, 1)",toHsva:z,fromHsva:function(e){var r=I(e);return"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")"},equal:P},color_convert=__webpack_require__("./node_modules/color-convert/index.js"),throttle=__webpack_require__("./node_modules/lodash/throttle.js"),dist=__webpack_require__("./node_modules/@storybook/theming/dist/index.mjs"),components_dist=__webpack_require__("./node_modules/@storybook/components/dist/index.mjs"),icons_dist=__webpack_require__("./node_modules/@storybook/addon-docs/node_modules/@storybook/icons/dist/index.mjs"),Wrapper=dist.I4.div({position:"relative",maxWidth:250,'&[aria-readonly="true"]':{opacity:.5}}),PickerTooltip=(0,dist.I4)(components_dist.kR)({position:"absolute",zIndex:1,top:4,left:4,"[aria-readonly=true] &":{cursor:"not-allowed"}}),TooltipContent=dist.I4.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:"4px 4px 0 0"},".react-colorful__hue":{boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 5%)"},".react-colorful__last-control":{borderRadius:"0 0 4px 4px"}}),Note=(0,dist.I4)(components_dist._)((({theme})=>({fontFamily:theme.typography.fonts.base}))),Swatches=dist.I4.div({display:"grid",gridTemplateColumns:"repeat(9, 16px)",gap:6,padding:3,marginTop:5,width:200}),SwatchColor=dist.I4.div((({theme,active})=>({width:16,height:16,boxShadow:active?`${theme.appBorderColor} 0 0 0 1px inset, ${theme.textMutedColor}50 0 0 0 4px`:`${theme.appBorderColor} 0 0 0 1px inset`,borderRadius:theme.appBorderRadius}))),Swatch=({value,style,...props})=>{let backgroundImage=`linear-gradient(${value}, ${value}), url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>'), linear-gradient(#fff, #fff)`;return react.createElement(SwatchColor,{...props,style:{...style,backgroundImage}})},Input=(0,dist.I4)(components_dist.lV.Input)((({theme,readOnly})=>({width:"100%",paddingLeft:30,paddingRight:30,boxSizing:"border-box",fontFamily:theme.typography.fonts.base}))),ToggleIcon=(0,dist.I4)(icons_dist.QDE)((({theme})=>({position:"absolute",zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:"border-box",cursor:"pointer",color:theme.input.color}))),ColorSpace=((ColorSpace2=ColorSpace||{}).RGB="rgb",ColorSpace2.HSL="hsl",ColorSpace2.HEX="hex",ColorSpace2),COLOR_SPACES=Object.values(ColorSpace),COLOR_REGEXP=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,RGB_REGEXP=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,HSL_REGEXP=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,HEX_REGEXP=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,SHORTHEX_REGEXP=/^\s*#?([0-9a-f]{3})\s*$/i,ColorPicker={hex:function(r){return react.createElement(U,u({},r,{colorModel:W}))},rgb:function(r){return react.createElement(re,u({},r,{colorModel:Ee}))},hsl:function(r){return react.createElement(re,u({},r,{colorModel:le}))}},fallbackColor={hex:"transparent",rgb:"rgba(0, 0, 0, 0)",hsl:"hsla(0, 0%, 0%, 0)"},stringToArgs=value=>{let match=value?.match(COLOR_REGEXP);if(!match)return[0,0,0,1];let[,x,y,z,a=1]=match;return[x,y,z,a].map(Number)},parseValue=value=>{if(!value)return;let valid=!0;if(RGB_REGEXP.test(value)){let[r,g,b,a]=stringToArgs(value),[h,s,l]=color_convert.rgb.hsl([r,g,b])||[0,0,0];return{valid,value,keyword:color_convert.rgb.keyword([r,g,b]),colorSpace:"rgb",rgb:value,hsl:`hsla(${h}, ${s}%, ${l}%, ${a})`,hex:`#${color_convert.rgb.hex([r,g,b]).toLowerCase()}`}}if(HSL_REGEXP.test(value)){let[h,s,l,a]=stringToArgs(value),[r,g,b]=color_convert.hsl.rgb([h,s,l])||[0,0,0];return{valid,value,keyword:color_convert.hsl.keyword([h,s,l]),colorSpace:"hsl",rgb:`rgba(${r}, ${g}, ${b}, ${a})`,hsl:value,hex:`#${color_convert.hsl.hex([h,s,l]).toLowerCase()}`}}let plain=value.replace("#",""),rgb=color_convert.keyword.rgb(plain)||color_convert.hex.rgb(plain),hsl=color_convert.rgb.hsl(rgb),mapped=value;if(/[^#a-f0-9]/i.test(value)?mapped=plain:HEX_REGEXP.test(value)&&(mapped=`#${plain}`),mapped.startsWith("#"))valid=HEX_REGEXP.test(mapped);else try{color_convert.keyword.hex(mapped)}catch{valid=!1}return{valid,value:mapped,keyword:color_convert.rgb.keyword(rgb),colorSpace:"hex",rgb:`rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, 1)`,hsl:`hsla(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%, 1)`,hex:mapped}},useColorInput=(initialValue,onChange)=>{let[value,setValue]=(0,react.useState)(initialValue||""),[color,setColor]=(0,react.useState)((()=>parseValue(value))),[colorSpace,setColorSpace]=(0,react.useState)(color?.colorSpace||"hex");(0,react.useEffect)((()=>{let nextValue=initialValue||"",nextColor=parseValue(nextValue);setValue(nextValue),setColor(nextColor),setColorSpace(nextColor?.colorSpace||"hex")}),[initialValue]);let realValue=(0,react.useMemo)((()=>((value,color,colorSpace)=>{if(!value||!color?.valid)return fallbackColor[colorSpace];if("hex"!==colorSpace)return color?.[colorSpace]||fallbackColor[colorSpace];if(!color.hex.startsWith("#"))try{return`#${color_convert.keyword.hex(color.hex)}`}catch{return fallbackColor.hex}let short=color.hex.match(SHORTHEX_REGEXP);if(!short)return HEX_REGEXP.test(color.hex)?color.hex:fallbackColor.hex;let[r,g,b]=short[1].split("");return`#${r}${r}${g}${g}${b}${b}`})(value,color,colorSpace).toLowerCase()),[value,color,colorSpace]),updateValue=(0,react.useCallback)((update=>{let parsed=parseValue(update),v=parsed?.value||update||"";setValue(v),""===v&&(setColor(void 0),onChange(void 0)),parsed&&(setColor(parsed),setColorSpace(parsed.colorSpace),onChange(parsed.value))}),[onChange]),cycleColorSpace=(0,react.useCallback)((()=>{let next=COLOR_SPACES.indexOf(colorSpace)+1;next>=COLOR_SPACES.length&&(next=0),setColorSpace(COLOR_SPACES[next]);let update=color?.[COLOR_SPACES[next]]||"";setValue(update),onChange(update)}),[color,colorSpace,onChange]);return{value,realValue,updateValue,color,colorSpace,cycleColorSpace}},id=value=>value.replace(/\s*/,"").toLowerCase(),ColorControl=({name,value:initialValue,onChange,onFocus,onBlur,presetColors,startOpen=!1,argType})=>{let throttledOnChange=(0,react.useCallback)(throttle(onChange,200),[onChange]),{value,realValue,updateValue,color,colorSpace,cycleColorSpace}=useColorInput(initialValue,throttledOnChange),{presets,addPreset}=((presetColors,currentColor,colorSpace)=>{let[selectedColors,setSelectedColors]=(0,react.useState)(currentColor?.valid?[currentColor]:[]);(0,react.useEffect)((()=>{void 0===currentColor&&setSelectedColors([])}),[currentColor]);let presets=(0,react.useMemo)((()=>(presetColors||[]).map((preset=>"string"==typeof preset?parseValue(preset):preset.title?{...parseValue(preset.color),keyword:preset.title}:parseValue(preset.color))).concat(selectedColors).filter(Boolean).slice(-27)),[presetColors,selectedColors]),addPreset=(0,react.useCallback)((color=>{color?.valid&&(presets.some((preset=>id(preset[colorSpace])===id(color[colorSpace])))||setSelectedColors((arr=>arr.concat(color))))}),[colorSpace,presets]);return{presets,addPreset}})(presetColors,color,colorSpace),Picker=ColorPicker[colorSpace],readonly=!!argType?.table?.readonly;return react.createElement(Wrapper,{"aria-readonly":readonly},react.createElement(PickerTooltip,{startOpen,trigger:readonly?[null]:void 0,closeOnOutsideClick:!0,onVisibleChange:()=>addPreset(color),tooltip:react.createElement(TooltipContent,null,react.createElement(Picker,{color:"transparent"===realValue?"#000000":realValue,onChange:updateValue,onFocus,onBlur}),presets.length>0&&react.createElement(Swatches,null,presets.map(((preset,index)=>react.createElement(components_dist.kR,{key:`${preset.value}-${index}`,hasChrome:!1,tooltip:react.createElement(Note,{note:preset.keyword||preset.value})},react.createElement(Swatch,{value:preset[colorSpace],active:color&&id(preset[colorSpace])===id(color[colorSpace]),onClick:()=>updateValue(preset.value)}))))))},react.createElement(Swatch,{value:realValue,style:{margin:4}})),react.createElement(Input,{id:(0,chunk_GWAJ4KRU.Z)(name),value,onChange:e=>updateValue(e.target.value),onFocus:e=>e.target.select(),readOnly:readonly,placeholder:"Choose color..."}),value?react.createElement(ToggleIcon,{onClick:cycleColorSpace}):null)},Color_default=ColorControl}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIyOC4zOGRiMDQ2OS5pZnJhbWUuYnVuZGxlLmpzIiwibWFwcGluZ3MiOiJzTEFFQSxNQUFNQSxZQUFjLG9CQUFRLGlFQU10QkMsZ0JBQWtCLENBQUMsRUFDekIsSUFBSyxNQUFNQyxPQUFPQyxPQUFPQyxLQUFLSixhQUM3QkMsZ0JBQWdCRCxZQUFZRSxNQUFRQSxJQUdyQyxNQUFNRyxRQUFVLENBQ2ZDLElBQUssQ0FBQ0MsU0FBVSxFQUFHQyxPQUFRLE9BQzNCQyxJQUFLLENBQUNGLFNBQVUsRUFBR0MsT0FBUSxPQUMzQkUsSUFBSyxDQUFDSCxTQUFVLEVBQUdDLE9BQVEsT0FDM0JHLElBQUssQ0FBQ0osU0FBVSxFQUFHQyxPQUFRLE9BQzNCSSxLQUFNLENBQUNMLFNBQVUsRUFBR0MsT0FBUSxRQUM1QkssSUFBSyxDQUFDTixTQUFVLEVBQUdDLE9BQVEsT0FDM0JNLElBQUssQ0FBQ1AsU0FBVSxFQUFHQyxPQUFRLE9BQzNCTyxJQUFLLENBQUNSLFNBQVUsRUFBR0MsT0FBUSxPQUMzQlEsSUFBSyxDQUFDVCxTQUFVLEVBQUdDLE9BQVEsQ0FBQyxRQUM1QlMsUUFBUyxDQUFDVixTQUFVLEVBQUdDLE9BQVEsQ0FBQyxZQUNoQ1UsT0FBUSxDQUFDWCxTQUFVLEVBQUdDLE9BQVEsQ0FBQyxXQUMvQlcsUUFBUyxDQUFDWixTQUFVLEVBQUdDLE9BQVEsQ0FBQyxZQUNoQ1ksSUFBSyxDQUFDYixTQUFVLEVBQUdDLE9BQVEsQ0FBQyxJQUFLLElBQUssTUFDdENhLE1BQU8sQ0FBQ2QsU0FBVSxFQUFHQyxPQUFRLENBQUMsTUFBTyxNQUFPLFFBQzVDYyxLQUFNLENBQUNmLFNBQVUsRUFBR0MsT0FBUSxDQUFDLFVBRzlCZSxPQUFPQyxRQUFVbkIsUUFHakIsSUFBSyxNQUFNb0IsU0FBU3RCLE9BQU9DLEtBQUtDLFNBQVUsQ0FDekMsS0FBTSxhQUFjQSxRQUFRb0IsUUFDM0IsTUFBTSxJQUFJQyxNQUFNLDhCQUFnQ0QsT0FHakQsS0FBTSxXQUFZcEIsUUFBUW9CLFFBQ3pCLE1BQU0sSUFBSUMsTUFBTSxvQ0FBc0NELE9BR3ZELEdBQUlwQixRQUFRb0IsT0FBT2pCLE9BQU9tQixTQUFXdEIsUUFBUW9CLE9BQU9sQixTQUNuRCxNQUFNLElBQUltQixNQUFNLHNDQUF3Q0QsT0FHekQsTUFBTSxTQUFTLFFBQVlwQixRQUFRb0IsY0FDNUJwQixRQUFRb0IsT0FBT2xCLGdCQUNmRixRQUFRb0IsT0FBT2pCLE9BQ3RCTCxPQUFPeUIsZUFBZXZCLFFBQVFvQixPQUFRLFdBQVksQ0FBQ0ksTUFBT3RCLFdBQzFESixPQUFPeUIsZUFBZXZCLFFBQVFvQixPQUFRLFNBQVUsQ0FBQ0ksTUFBT3JCLFFBQ3pELENBRUFILFFBQVFDLElBQUlHLElBQU0sU0FBVUgsS0FDM0IsTUFBTXdCLEVBQUl4QixJQUFJLEdBQUssSUFDYnlCLEVBQUl6QixJQUFJLEdBQUssSUFDYjBCLEVBQUkxQixJQUFJLEdBQUssSUFDYjJCLElBQU1DLEtBQUtELElBQUlILEVBQUdDLEVBQUdDLEdBQ3JCRyxJQUFNRCxLQUFLQyxJQUFJTCxFQUFHQyxFQUFHQyxHQUNyQkksTUFBUUQsSUFBTUYsSUFDcEIsSUFBSUksRUFDQUMsRUFFQUgsTUFBUUYsSUFDWEksRUFBSSxFQUNNUCxJQUFNSyxJQUNoQkUsR0FBS04sRUFBSUMsR0FBS0ksTUFDSkwsSUFBTUksSUFDaEJFLEVBQUksR0FBS0wsRUFBSUYsR0FBS00sTUFDUkosSUFBTUcsTUFDaEJFLEVBQUksR0FBS1AsRUFBSUMsR0FBS0ssT0FHbkJDLEVBQUlILEtBQUtELElBQVEsR0FBSkksRUFBUSxLQUVqQkEsRUFBSSxJQUNQQSxHQUFLLEtBR04sTUFBTUUsR0FBS04sSUFBTUUsS0FBTyxFQVV4QixPQVBDRyxFQURHSCxNQUFRRixJQUNQLEVBQ01NLEdBQUssR0FDWEgsT0FBU0QsSUFBTUYsS0FFZkcsT0FBUyxFQUFJRCxJQUFNRixLQUdqQixDQUFDSSxFQUFPLElBQUpDLEVBQWEsSUFBSkMsRUFDckIsRUFFQWxDLFFBQVFDLElBQUlJLElBQU0sU0FBVUosS0FDM0IsSUFBSWtDLEtBQ0FDLEtBQ0FDLEtBQ0FMLEVBQ0FDLEVBRUosTUFBTVIsRUFBSXhCLElBQUksR0FBSyxJQUNieUIsRUFBSXpCLElBQUksR0FBSyxJQUNiMEIsRUFBSTFCLElBQUksR0FBSyxJQUNicUMsRUFBSVQsS0FBS0MsSUFBSUwsRUFBR0MsRUFBR0MsR0FDbkJZLEtBQU9ELEVBQUlULEtBQUtELElBQUlILEVBQUdDLEVBQUdDLEdBQzFCYSxNQUFRLFNBQVVDLEdBQ3ZCLE9BQVFILEVBQUlHLEdBQUssRUFBSUYsS0FBTyxFQUM3QixFQTBCQSxPQXhCYSxJQUFUQSxNQUNIUCxFQUFJLEVBQ0pDLEVBQUksSUFFSkEsRUFBSU0sS0FBT0QsRUFDWEgsS0FBT0ssTUFBTWYsR0FDYlcsS0FBT0ksTUFBTWQsR0FDYlcsS0FBT0csTUFBTWIsR0FFVEYsSUFBTWEsRUFDVE4sRUFBSUssS0FBT0QsS0FDRFYsSUFBTVksRUFDaEJOLEVBQUssRUFBSSxFQUFLRyxLQUFPRSxLQUNYVixJQUFNVyxJQUNoQk4sRUFBSyxFQUFJLEVBQUtJLEtBQU9ELE1BR2xCSCxFQUFJLEVBQ1BBLEdBQUssRUFDS0EsRUFBSSxJQUNkQSxHQUFLLElBSUEsQ0FDRixJQUFKQSxFQUNJLElBQUpDLEVBQ0ksSUFBSkssRUFFRixFQUVBdEMsUUFBUUMsSUFBSUssSUFBTSxTQUFVTCxLQUMzQixNQUFNd0IsRUFBSXhCLElBQUksR0FDUnlCLEVBQUl6QixJQUFJLEdBQ2QsSUFBSTBCLEVBQUkxQixJQUFJLEdBQ1osTUFBTStCLEVBQUloQyxRQUFRQyxJQUFJRyxJQUFJSCxLQUFLLEdBQ3pCeUMsRUFBSSxFQUFJLElBQU1iLEtBQUtELElBQUlILEVBQUdJLEtBQUtELElBQUlGLEVBQUdDLElBSTVDLE9BRkFBLEVBQUksRUFBSSxFQUFJLElBQU1FLEtBQUtDLElBQUlMLEVBQUdJLEtBQUtDLElBQUlKLEVBQUdDLElBRW5DLENBQUNLLEVBQU8sSUFBSlUsRUFBYSxJQUFKZixFQUNyQixFQUVBM0IsUUFBUUMsSUFBSU0sS0FBTyxTQUFVTixLQUM1QixNQUFNd0IsRUFBSXhCLElBQUksR0FBSyxJQUNieUIsRUFBSXpCLElBQUksR0FBSyxJQUNiMEIsRUFBSTFCLElBQUksR0FBSyxJQUViMEMsRUFBSWQsS0FBS0QsSUFBSSxFQUFJSCxFQUFHLEVBQUlDLEVBQUcsRUFBSUMsR0FLckMsTUFBTyxDQUFLLE1BSkQsRUFBSUYsRUFBSWtCLElBQU0sRUFBSUEsSUFBTSxHQUlkLE1BSFYsRUFBSWpCLEVBQUlpQixJQUFNLEVBQUlBLElBQU0sR0FHTCxNQUZuQixFQUFJaEIsRUFBSWdCLElBQU0sRUFBSUEsSUFBTSxHQUVJLElBQUpBLEVBQ3BDLEVBYUEzQyxRQUFRQyxJQUFJVyxRQUFVLFNBQVVYLEtBQy9CLE1BQU0yQyxTQUFXaEQsZ0JBQWdCSyxLQUNqQyxHQUFJMkMsU0FDSCxPQUFPQSxTQUdSLElBQ0lDLHNCQURBQyx1QkFBeUJDLElBRzdCLElBQUssTUFBTW5DLFdBQVdkLE9BQU9DLEtBQUtKLGFBQWMsQ0FDL0MsTUFBTTZCLE1BQVE3QixZQUFZaUIsU0FHcEJvQyxVQXhCd0JDLEVBd0JZekIsUUF4QmYwQixFQXdCVWpELEtBbkJqQyxHQUFLZ0QsRUFBRSxLQUFPLEdBQ2hCQyxFQUFFLEdBQUtELEVBQUUsS0FBTyxHQUNoQkMsRUFBRSxHQUFLRCxFQUFFLEtBQU8sR0FvQmRELFNBQVdGLHlCQUNkQSx1QkFBeUJFLFNBQ3pCSCxzQkFBd0JqQyxRQUUxQixDQS9CRCxJQUE2QnNDLEVBQUdELEVBaUMvQixPQUFPSixxQkFDUixFQUVBN0MsUUFBUVksUUFBUVgsSUFBTSxTQUFVVyxTQUMvQixPQUFPakIsWUFBWWlCLFFBQ3BCLEVBRUFaLFFBQVFDLElBQUlPLElBQU0sU0FBVVAsS0FDM0IsSUFBSXdCLEVBQUl4QixJQUFJLEdBQUssSUFDYnlCLEVBQUl6QixJQUFJLEdBQUssSUFDYjBCLEVBQUkxQixJQUFJLEdBQUssSUFHakJ3QixFQUFJQSxFQUFJLFNBQWFBLEVBQUksTUFBUyxRQUFVLElBQVFBLEVBQUksTUFDeERDLEVBQUlBLEVBQUksU0FBYUEsRUFBSSxNQUFTLFFBQVUsSUFBUUEsRUFBSSxNQUN4REMsRUFBSUEsRUFBSSxTQUFhQSxFQUFJLE1BQVMsUUFBVSxJQUFRQSxFQUFJLE1BTXhELE1BQU8sQ0FBSyxLQUpHLE1BQUpGLEVBQW1CLE1BQUpDLEVBQW1CLE1BQUpDLEdBSXBCLEtBSE4sTUFBSkYsRUFBbUIsTUFBSkMsRUFBbUIsTUFBSkMsR0FHWCxLQUZmLE1BQUpGLEVBQW1CLE1BQUpDLEVBQW1CLE1BQUpDLEdBRzFDLEVBRUEzQixRQUFRQyxJQUFJUSxJQUFNLFNBQVVSLEtBQzNCLE1BQU1PLElBQU1SLFFBQVFDLElBQUlPLElBQUlQLEtBQzVCLElBQUlpRCxFQUFJMUMsSUFBSSxHQUNSeUMsRUFBSXpDLElBQUksR0FDUjJDLEVBQUkzQyxJQUFJLEdBRVowQyxHQUFLLE9BQ0xELEdBQUssSUFDTEUsR0FBSyxRQUVMRCxFQUFJQSxFQUFJLFFBQVlBLElBQU0sRUFBSSxHQUFPLE1BQVFBLEVBQU0sR0FBSyxJQUN4REQsRUFBSUEsRUFBSSxRQUFZQSxJQUFNLEVBQUksR0FBTyxNQUFRQSxFQUFNLEdBQUssSUFDeERFLEVBQUlBLEVBQUksUUFBWUEsSUFBTSxFQUFJLEdBQU8sTUFBUUEsRUFBTSxHQUFLLElBTXhELE1BQU8sQ0FKSSxJQUFNRixFQUFLLEdBQ1osS0FBT0MsRUFBSUQsR0FDWCxLQUFPQSxFQUFJRSxHQUd0QixFQUVBbkQsUUFBUUksSUFBSUgsSUFBTSxTQUFVRyxLQUMzQixNQUFNNEIsRUFBSTVCLElBQUksR0FBSyxJQUNiNkIsRUFBSTdCLElBQUksR0FBSyxJQUNiOEIsRUFBSTlCLElBQUksR0FBSyxJQUNuQixJQUFJZ0QsR0FDQUMsR0FDQUMsSUFFSixHQUFVLElBQU5yQixFQUVILE9BREFxQixJQUFVLElBQUpwQixFQUNDLENBQUNvQixJQUFLQSxJQUFLQSxLQUlsQkYsR0FER2xCLEVBQUksR0FDRkEsR0FBSyxFQUFJRCxHQUVUQyxFQUFJRCxFQUFJQyxFQUFJRCxFQUdsQixNQUFNc0IsR0FBSyxFQUFJckIsRUFBSWtCLEdBRWJuRCxJQUFNLENBQUMsRUFBRyxFQUFHLEdBQ25CLElBQUssSUFBSXVELEVBQUksRUFBR0EsRUFBSSxFQUFHQSxJQUN0QkgsR0FBS3JCLEVBQUksRUFBSSxJQUFNd0IsRUFBSSxHQUNuQkgsR0FBSyxHQUNSQSxLQUdHQSxHQUFLLEdBQ1JBLEtBSUFDLElBREcsRUFBSUQsR0FBSyxFQUNORSxHQUFpQixHQUFYSCxHQUFLRyxJQUFVRixHQUNqQixFQUFJQSxHQUFLLEVBQ2JELEdBQ0ksRUFBSUMsR0FBSyxFQUNiRSxJQUFNSCxHQUFLRyxLQUFPLEVBQUksRUFBSUYsSUFBTSxFQUVoQ0UsR0FHUHRELElBQUl1RCxHQUFXLElBQU5GLElBR1YsT0FBT3JELEdBQ1IsRUFFQUQsUUFBUUksSUFBSUMsSUFBTSxTQUFVRCxLQUMzQixNQUFNNEIsRUFBSTVCLElBQUksR0FDZCxJQUFJNkIsRUFBSTdCLElBQUksR0FBSyxJQUNiOEIsRUFBSTlCLElBQUksR0FBSyxJQUNicUQsS0FBT3hCLEVBQ1gsTUFBTXlCLEtBQU83QixLQUFLQyxJQUFJSSxFQUFHLEtBRXpCQSxHQUFLLEVBQ0xELEdBQU1DLEdBQUssRUFBS0EsRUFBSSxFQUFJQSxFQUN4QnVCLE1BQVFDLE1BQVEsRUFBSUEsS0FBTyxFQUFJQSxLQUkvQixNQUFPLENBQUMxQixFQUFRLEtBRkMsSUFBTkUsRUFBVyxFQUFJdUIsTUFBU0MsS0FBT0QsTUFBUyxFQUFJeEIsR0FBTUMsRUFBSUQsSUFFeEMsTUFIZEMsRUFBSUQsR0FBSyxHQUlyQixFQUVBakMsUUFBUUssSUFBSUosSUFBTSxTQUFVSSxLQUMzQixNQUFNMkIsRUFBSTNCLElBQUksR0FBSyxHQUNiNEIsRUFBSTVCLElBQUksR0FBSyxJQUNuQixJQUFJaUMsRUFBSWpDLElBQUksR0FBSyxJQUNqQixNQUFNc0QsR0FBSzlCLEtBQUsrQixNQUFNNUIsR0FBSyxFQUVyQjZCLEVBQUk3QixFQUFJSCxLQUFLK0IsTUFBTTVCLEdBQ25COEIsRUFBSSxJQUFNeEIsR0FBSyxFQUFJTCxHQUNuQjhCLEVBQUksSUFBTXpCLEdBQUssRUFBS0wsRUFBSTRCLEdBQ3hCRyxFQUFJLElBQU0xQixHQUFLLEVBQUtMLEdBQUssRUFBSTRCLElBR25DLE9BRkF2QixHQUFLLElBRUdxQixJQUNQLEtBQUssRUFDSixNQUFPLENBQUNyQixFQUFHMEIsRUFBR0YsR0FDZixLQUFLLEVBQ0osTUFBTyxDQUFDQyxFQUFHekIsRUFBR3dCLEdBQ2YsS0FBSyxFQUNKLE1BQU8sQ0FBQ0EsRUFBR3hCLEVBQUcwQixHQUNmLEtBQUssRUFDSixNQUFPLENBQUNGLEVBQUdDLEVBQUd6QixHQUNmLEtBQUssRUFDSixNQUFPLENBQUMwQixFQUFHRixFQUFHeEIsR0FDZixLQUFLLEVBQ0osTUFBTyxDQUFDQSxFQUFHd0IsRUFBR0MsR0FFakIsRUFFQS9ELFFBQVFLLElBQUlELElBQU0sU0FBVUMsS0FDM0IsTUFBTTJCLEVBQUkzQixJQUFJLEdBQ1I0QixFQUFJNUIsSUFBSSxHQUFLLElBQ2JpQyxFQUFJakMsSUFBSSxHQUFLLElBQ2I0RCxLQUFPcEMsS0FBS0MsSUFBSVEsRUFBRyxLQUN6QixJQUFJNEIsR0FDQWhDLEVBRUpBLEdBQUssRUFBSUQsR0FBS0ssRUFDZCxNQUFNb0IsTUFBUSxFQUFJekIsR0FBS2dDLEtBTXZCLE9BTEFDLEdBQUtqQyxFQUFJZ0MsS0FDVEMsSUFBT1IsTUFBUSxFQUFLQSxLQUFPLEVBQUlBLEtBQy9CUSxHQUFLQSxJQUFNLEVBQ1hoQyxHQUFLLEVBRUUsQ0FBQ0YsRUFBUSxJQUFMa0MsR0FBYyxJQUFKaEMsRUFDdEIsRUFHQWxDLFFBQVFNLElBQUlMLElBQU0sU0FBVUssS0FDM0IsTUFBTTBCLEVBQUkxQixJQUFJLEdBQUssSUFDbkIsSUFBSTZELEdBQUs3RCxJQUFJLEdBQUssSUFDZDhELEdBQUs5RCxJQUFJLEdBQUssSUFDbEIsTUFBTStELE1BQVFGLEdBQUtDLEdBQ25CLElBQUlQLEVBR0FRLE1BQVEsSUFDWEYsSUFBTUUsTUFDTkQsSUFBTUMsT0FHUCxNQUFNYixFQUFJM0IsS0FBSytCLE1BQU0sRUFBSTVCLEdBQ25CTSxFQUFJLEVBQUk4QixHQUNkUCxFQUFJLEVBQUk3QixFQUFJd0IsRUFFSCxFQUFKQSxJQUNKSyxFQUFJLEVBQUlBLEdBR1QsTUFBTVMsRUFBSUgsR0FBS04sR0FBS3ZCLEVBQUk2QixJQUV4QixJQUFJMUMsRUFDQUMsRUFDQUMsRUFFSixPQUFRNkIsR0FDUCxRQUNBLEtBQUssRUFDTCxLQUFLLEVBQUcvQixFQUFJYSxFQUFJWixFQUFJNEMsRUFBSTNDLEVBQUl3QyxHQUFJLE1BQ2hDLEtBQUssRUFBRzFDLEVBQUk2QyxFQUFJNUMsRUFBSVksRUFBSVgsRUFBSXdDLEdBQUksTUFDaEMsS0FBSyxFQUFHMUMsRUFBSTBDLEdBQUl6QyxFQUFJWSxFQUFJWCxFQUFJMkMsRUFBRyxNQUMvQixLQUFLLEVBQUc3QyxFQUFJMEMsR0FBSXpDLEVBQUk0QyxFQUFJM0MsRUFBSVcsRUFBRyxNQUMvQixLQUFLLEVBQUdiLEVBQUk2QyxFQUFJNUMsRUFBSXlDLEdBQUl4QyxFQUFJVyxFQUFHLE1BQy9CLEtBQUssRUFBR2IsRUFBSWEsRUFBSVosRUFBSXlDLEdBQUl4QyxFQUFJMkMsRUFJN0IsTUFBTyxDQUFLLElBQUo3QyxFQUFhLElBQUpDLEVBQWEsSUFBSkMsRUFDM0IsRUFFQTNCLFFBQVFPLEtBQUtOLElBQU0sU0FBVU0sTUFDNUIsTUFBTWtDLEVBQUlsQyxLQUFLLEdBQUssSUFDZGdFLEVBQUloRSxLQUFLLEdBQUssSUFDZDBDLEVBQUkxQyxLQUFLLEdBQUssSUFDZG9DLEVBQUlwQyxLQUFLLEdBQUssSUFNcEIsTUFBTyxDQUFLLEtBSkYsRUFBSXNCLEtBQUtELElBQUksRUFBR2EsR0FBSyxFQUFJRSxHQUFLQSxJQUluQixLQUhYLEVBQUlkLEtBQUtELElBQUksRUFBRzJDLEdBQUssRUFBSTVCLEdBQUtBLElBR1YsS0FGcEIsRUFBSWQsS0FBS0QsSUFBSSxFQUFHcUIsR0FBSyxFQUFJTixHQUFLQSxJQUd6QyxFQUVBM0MsUUFBUVEsSUFBSVAsSUFBTSxTQUFVTyxLQUMzQixNQUFNMEMsRUFBSTFDLElBQUksR0FBSyxJQUNieUMsRUFBSXpDLElBQUksR0FBSyxJQUNiMkMsRUFBSTNDLElBQUksR0FBSyxJQUNuQixJQUFJaUIsRUFDQUMsRUFDQUMsRUF1QkosT0FyQkFGLEVBQVMsT0FBSnlCLEdBQW9CLE9BQUxELEdBQXFCLE1BQUxFLEVBQ3BDekIsR0FBVSxNQUFMd0IsRUFBb0IsT0FBSkQsRUFBbUIsTUFBSkUsRUFDcEN4QixFQUFTLE1BQUp1QixHQUFvQixLQUFMRCxFQUFvQixNQUFKRSxFQUdwQzFCLEVBQUlBLEVBQUksU0FDSCxNQUFTQSxJQUFNLEVBQU0sS0FBUyxLQUM1QixNQUFKQSxFQUVIQyxFQUFJQSxFQUFJLFNBQ0gsTUFBU0EsSUFBTSxFQUFNLEtBQVMsS0FDNUIsTUFBSkEsRUFFSEMsRUFBSUEsRUFBSSxTQUNILE1BQVNBLElBQU0sRUFBTSxLQUFTLEtBQzVCLE1BQUpBLEVBRUhGLEVBQUlJLEtBQUtELElBQUlDLEtBQUtDLElBQUksRUFBR0wsR0FBSSxHQUM3QkMsRUFBSUcsS0FBS0QsSUFBSUMsS0FBS0MsSUFBSSxFQUFHSixHQUFJLEdBQzdCQyxFQUFJRSxLQUFLRCxJQUFJQyxLQUFLQyxJQUFJLEVBQUdILEdBQUksR0FFdEIsQ0FBSyxJQUFKRixFQUFhLElBQUpDLEVBQWEsSUFBSkMsRUFDM0IsRUFFQTNCLFFBQVFRLElBQUlDLElBQU0sU0FBVUQsS0FDM0IsSUFBSTBDLEVBQUkxQyxJQUFJLEdBQ1J5QyxFQUFJekMsSUFBSSxHQUNSMkMsRUFBSTNDLElBQUksR0FFWjBDLEdBQUssT0FDTEQsR0FBSyxJQUNMRSxHQUFLLFFBRUxELEVBQUlBLEVBQUksUUFBWUEsSUFBTSxFQUFJLEdBQU8sTUFBUUEsRUFBTSxHQUFLLElBQ3hERCxFQUFJQSxFQUFJLFFBQVlBLElBQU0sRUFBSSxHQUFPLE1BQVFBLEVBQU0sR0FBSyxJQUN4REUsRUFBSUEsRUFBSSxRQUFZQSxJQUFNLEVBQUksR0FBTyxNQUFRQSxFQUFNLEdBQUssSUFNeEQsTUFBTyxDQUpJLElBQU1GLEVBQUssR0FDWixLQUFPQyxFQUFJRCxHQUNYLEtBQU9BLEVBQUlFLEdBR3RCLEVBRUFuRCxRQUFRUyxJQUFJRCxJQUFNLFNBQVVDLEtBSTNCLElBQUl5QyxFQUNBRCxFQUNBRSxFQUVKRixHQVBVeEMsSUFBSSxHQU9MLElBQU0sSUFDZnlDLEVBUFV6QyxJQUFJLEdBT04sSUFBTXdDLEVBQ2RFLEVBQUlGLEVBUE14QyxJQUFJLEdBT0YsSUFFWixNQUFNK0QsR0FBS3ZCLEdBQUssRUFDVndCLEdBQUt2QixHQUFLLEVBQ1Z3QixHQUFLdkIsR0FBSyxFQVNoQixPQVJBRixFQUFJdUIsR0FBSyxRQUFXQSxJQUFNdkIsRUFBSSxHQUFLLEtBQU8sTUFDMUNDLEVBQUl1QixHQUFLLFFBQVdBLElBQU12QixFQUFJLEdBQUssS0FBTyxNQUMxQ0MsRUFBSXVCLEdBQUssUUFBV0EsSUFBTXZCLEVBQUksR0FBSyxLQUFPLE1BRTFDRCxHQUFLLE9BQ0xELEdBQUssSUFDTEUsR0FBSyxRQUVFLENBQUNELEVBQUdELEVBQUdFLEVBQ2YsRUFFQW5ELFFBQVFTLElBQUlDLElBQU0sU0FBVUQsS0FDM0IsTUFBTXlCLEVBQUl6QixJQUFJLEdBQ1JrRSxFQUFJbEUsSUFBSSxHQUNSa0IsRUFBSWxCLElBQUksR0FDZCxJQUFJdUIsRUFHSkEsRUFBUyxJQURFSCxLQUFLK0MsTUFBTWpELEVBQUdnRCxHQUNWLEVBQUk5QyxLQUFLZ0QsR0FFcEI3QyxFQUFJLElBQ1BBLEdBQUssS0FLTixNQUFPLENBQUNFLEVBRkVMLEtBQUtpRCxLQUFLSCxFQUFJQSxFQUFJaEQsRUFBSUEsR0FFbEJLLEVBQ2YsRUFFQWhDLFFBQVFVLElBQUlELElBQU0sU0FBVUMsS0FDM0IsTUFBTXdCLEVBQUl4QixJQUFJLEdBQ1IrQixFQUFJL0IsSUFBSSxHQUdScUUsR0FGSXJFLElBQUksR0FFQyxJQUFNLEVBQUltQixLQUFLZ0QsR0FJOUIsTUFBTyxDQUFDM0MsRUFIRU8sRUFBSVosS0FBS21ELElBQUlELElBQ2J0QyxFQUFJWixLQUFLb0QsSUFBSUYsSUFHeEIsRUFFQS9FLFFBQVFDLElBQUlZLE9BQVMsU0FBVXFFLEtBQU1DLFdBQWEsTUFDakQsTUFBTzFELEVBQUdDLEVBQUdDLEdBQUt1RCxLQUNsQixJQUFJMUQsTUFBdUIsT0FBZjJELFdBQXNCbkYsUUFBUUMsSUFBSUksSUFBSTZFLE1BQU0sR0FBS0MsV0FJN0QsR0FGQTNELE1BQVFLLEtBQUt1RCxNQUFNNUQsTUFBUSxJQUViLElBQVZBLE1BQ0gsT0FBTyxHQUdSLElBQUk2RCxLQUFPLElBQ054RCxLQUFLdUQsTUFBTXpELEVBQUksTUFBUSxFQUN4QkUsS0FBS3VELE1BQU0xRCxFQUFJLE1BQVEsRUFDeEJHLEtBQUt1RCxNQUFNM0QsRUFBSSxNQU1sQixPQUpjLElBQVZELFFBQ0g2RCxNQUFRLElBR0ZBLElBQ1IsRUFFQXJGLFFBQVFLLElBQUlRLE9BQVMsU0FBVXFFLE1BRzlCLE9BQU9sRixRQUFRQyxJQUFJWSxPQUFPYixRQUFRSyxJQUFJSixJQUFJaUYsTUFBT0EsS0FBSyxHQUN2RCxFQUVBbEYsUUFBUUMsSUFBSWEsUUFBVSxTQUFVb0UsTUFDL0IsTUFBTXpELEVBQUl5RCxLQUFLLEdBQ1R4RCxFQUFJd0QsS0FBSyxHQUNUdkQsRUFBSXVELEtBQUssR0FJZixHQUFJekQsSUFBTUMsR0FBS0EsSUFBTUMsRUFDcEIsT0FBSUYsRUFBSSxFQUNBLEdBR0pBLEVBQUksSUFDQSxJQUdESSxLQUFLdUQsT0FBUTNELEVBQUksR0FBSyxJQUFPLElBQU0sSUFRM0MsT0FMYSxHQUNULEdBQUtJLEtBQUt1RCxNQUFNM0QsRUFBSSxJQUFNLEdBQzFCLEVBQUlJLEtBQUt1RCxNQUFNMUQsRUFBSSxJQUFNLEdBQzFCRyxLQUFLdUQsTUFBTXpELEVBQUksSUFBTSxFQUd6QixFQUVBM0IsUUFBUWEsT0FBT1osSUFBTSxTQUFVaUYsTUFDOUIsSUFBSUksTUFBUUosS0FBTyxHQUduQixHQUFjLElBQVZJLE9BQXlCLElBQVZBLE1BT2xCLE9BTklKLEtBQU8sS0FDVkksT0FBUyxLQUdWQSxNQUFRQSxNQUFRLEtBQU8sSUFFaEIsQ0FBQ0EsTUFBT0EsTUFBT0EsT0FHdkIsTUFBTUMsS0FBNkIsSUFBTCxLQUFiTCxLQUFPLEtBS3hCLE1BQU8sRUFKYSxFQUFSSSxPQUFhQyxLQUFRLEtBQ3BCRCxPQUFTLEVBQUssR0FBS0MsS0FBUSxLQUMzQkQsT0FBUyxFQUFLLEdBQUtDLEtBQVEsSUFHekMsRUFFQXZGLFFBQVFjLFFBQVFiLElBQU0sU0FBVWlGLE1BRS9CLEdBQUlBLE1BQVEsSUFBSyxDQUNoQixNQUFNekMsRUFBbUIsSUFBZHlDLEtBQU8sS0FBWSxFQUM5QixNQUFPLENBQUN6QyxFQUFHQSxFQUFHQSxFQUNmLENBSUEsSUFBSStDLElBRkpOLE1BQVEsR0FPUixNQUFPLENBSkdyRCxLQUFLK0IsTUFBTXNCLEtBQU8sSUFBTSxFQUFJLElBQzVCckQsS0FBSytCLE9BQU80QixJQUFNTixLQUFPLElBQU0sR0FBSyxFQUFJLElBQ3ZDTSxJQUFNLEVBQUssRUFBSSxJQUczQixFQUVBeEYsUUFBUUMsSUFBSVUsSUFBTSxTQUFVdUUsTUFDM0IsTUFJTU8sVUFKa0MsSUFBdEI1RCxLQUFLdUQsTUFBTUYsS0FBSyxNQUFlLE1BQ3RCLElBQXRCckQsS0FBS3VELE1BQU1GLEtBQUssTUFBZSxJQUNWLElBQXRCckQsS0FBS3VELE1BQU1GLEtBQUssTUFFR1EsU0FBUyxJQUFJQyxjQUNwQyxNQUFPLFNBQVNDLFVBQVVILE9BQU9uRSxRQUFVbUUsTUFDNUMsRUFFQXpGLFFBQVFXLElBQUlWLElBQU0sU0FBVWlGLE1BQzNCLE1BQU1XLE1BQVFYLEtBQUtRLFNBQVMsSUFBSUcsTUFBTSw0QkFDdEMsSUFBS0EsTUFDSixNQUFPLENBQUMsRUFBRyxFQUFHLEdBR2YsSUFBSUMsWUFBY0QsTUFBTSxHQUVBLElBQXBCQSxNQUFNLEdBQUd2RSxTQUNad0UsWUFBY0EsWUFBWUMsTUFBTSxJQUFJQyxLQUFJQyxNQUNoQ0EsS0FBT0EsT0FDWkMsS0FBSyxLQUdULE1BQU1DLFFBQVVDLFNBQVNOLFlBQWEsSUFLdEMsTUFBTyxDQUpJSyxTQUFXLEdBQU0sSUFDakJBLFNBQVcsRUFBSyxJQUNQLElBQVZBLFFBR1gsRUFFQW5HLFFBQVFDLElBQUljLElBQU0sU0FBVWQsS0FDM0IsTUFBTXdCLEVBQUl4QixJQUFJLEdBQUssSUFDYnlCLEVBQUl6QixJQUFJLEdBQUssSUFDYjBCLEVBQUkxQixJQUFJLEdBQUssSUFDYjZCLElBQU1ELEtBQUtDLElBQUlELEtBQUtDLElBQUlMLEVBQUdDLEdBQUlDLEdBQy9CQyxJQUFNQyxLQUFLRCxJQUFJQyxLQUFLRCxJQUFJSCxFQUFHQyxHQUFJQyxHQUMvQjBFLE9BQVV2RSxJQUFNRixJQUN0QixJQUFJMEUsVUFDQUMsSUF1QkosT0FwQkNELFVBREdELE9BQVMsRUFDQXpFLEtBQU8sRUFBSXlFLFFBRVgsRUFJWkUsSUFER0YsUUFBVSxFQUNQLEVBRUh2RSxNQUFRTCxHQUNIQyxFQUFJQyxHQUFLMEUsT0FBVSxFQUV4QnZFLE1BQVFKLEVBQ0wsR0FBS0MsRUFBSUYsR0FBSzRFLE9BRWQsR0FBSzVFLEVBQUlDLEdBQUsyRSxPQUdyQkUsS0FBTyxFQUNQQSxLQUFPLEVBRUEsQ0FBTyxJQUFOQSxJQUFvQixJQUFURixPQUEwQixJQUFaQyxVQUNsQyxFQUVBdEcsUUFBUUksSUFBSVcsSUFBTSxTQUFVWCxLQUMzQixNQUFNNkIsRUFBSTdCLElBQUksR0FBSyxJQUNiOEIsRUFBSTlCLElBQUksR0FBSyxJQUVicUMsRUFBSVAsRUFBSSxHQUFPLEVBQU1ELEVBQUlDLEVBQU0sRUFBTUQsR0FBSyxFQUFNQyxHQUV0RCxJQUFJMkIsRUFBSSxFQUtSLE9BSklwQixFQUFJLElBQ1BvQixHQUFLM0IsRUFBSSxHQUFNTyxJQUFNLEVBQU1BLElBR3JCLENBQUNyQyxJQUFJLEdBQVEsSUFBSnFDLEVBQWEsSUFBSm9CLEVBQzFCLEVBRUE3RCxRQUFRSyxJQUFJVSxJQUFNLFNBQVVWLEtBQzNCLE1BQU00QixFQUFJNUIsSUFBSSxHQUFLLElBQ2JpQyxFQUFJakMsSUFBSSxHQUFLLElBRWJvQyxFQUFJUixFQUFJSyxFQUNkLElBQUl1QixFQUFJLEVBTVIsT0FKSXBCLEVBQUksSUFDUG9CLEdBQUt2QixFQUFJRyxJQUFNLEVBQUlBLElBR2IsQ0FBQ3BDLElBQUksR0FBUSxJQUFKb0MsRUFBYSxJQUFKb0IsRUFDMUIsRUFFQTdELFFBQVFlLElBQUlkLElBQU0sU0FBVWMsS0FDM0IsTUFBTWlCLEVBQUlqQixJQUFJLEdBQUssSUFDYjBCLEVBQUkxQixJQUFJLEdBQUssSUFDYlcsRUFBSVgsSUFBSSxHQUFLLElBRW5CLEdBQVUsSUFBTjBCLEVBQ0gsTUFBTyxDQUFLLElBQUpmLEVBQWEsSUFBSkEsRUFBYSxJQUFKQSxHQUczQixNQUFNOEUsS0FBTyxDQUFDLEVBQUcsRUFBRyxHQUNkN0MsR0FBTTNCLEVBQUksRUFBSyxFQUNmTSxFQUFJcUIsR0FBSyxFQUNUakIsRUFBSSxFQUFJSixFQUNkLElBQUltRSxHQUFLLEVBR1QsT0FBUTVFLEtBQUsrQixNQUFNRCxLQUNsQixLQUFLLEVBQ0o2QyxLQUFLLEdBQUssRUFBR0EsS0FBSyxHQUFLbEUsRUFBR2tFLEtBQUssR0FBSyxFQUFHLE1BQ3hDLEtBQUssRUFDSkEsS0FBSyxHQUFLOUQsRUFBRzhELEtBQUssR0FBSyxFQUFHQSxLQUFLLEdBQUssRUFBRyxNQUN4QyxLQUFLLEVBQ0pBLEtBQUssR0FBSyxFQUFHQSxLQUFLLEdBQUssRUFBR0EsS0FBSyxHQUFLbEUsRUFBRyxNQUN4QyxLQUFLLEVBQ0prRSxLQUFLLEdBQUssRUFBR0EsS0FBSyxHQUFLOUQsRUFBRzhELEtBQUssR0FBSyxFQUFHLE1BQ3hDLEtBQUssRUFDSkEsS0FBSyxHQUFLbEUsRUFBR2tFLEtBQUssR0FBSyxFQUFHQSxLQUFLLEdBQUssRUFBRyxNQUN4QyxRQUNDQSxLQUFLLEdBQUssRUFBR0EsS0FBSyxHQUFLLEVBQUdBLEtBQUssR0FBSzlELEVBTXRDLE9BRkErRCxJQUFNLEVBQU1oRSxHQUFLZixFQUVWLENBQ2UsS0FBcEJlLEVBQUkrRCxLQUFLLEdBQUtDLElBQ00sS0FBcEJoRSxFQUFJK0QsS0FBSyxHQUFLQyxJQUNNLEtBQXBCaEUsRUFBSStELEtBQUssR0FBS0MsSUFFakIsRUFFQXpHLFFBQVFlLElBQUlWLElBQU0sU0FBVVUsS0FDM0IsTUFBTTBCLEVBQUkxQixJQUFJLEdBQUssSUFHYnVCLEVBQUlHLEVBRkExQixJQUFJLEdBQUssS0FFQSxFQUFNMEIsR0FDekIsSUFBSW9CLEVBQUksRUFNUixPQUpJdkIsRUFBSSxJQUNQdUIsRUFBSXBCLEVBQUlILEdBR0YsQ0FBQ3ZCLElBQUksR0FBUSxJQUFKOEMsRUFBYSxJQUFKdkIsRUFDMUIsRUFFQXRDLFFBQVFlLElBQUlYLElBQU0sU0FBVVcsS0FDM0IsTUFBTTBCLEVBQUkxQixJQUFJLEdBQUssSUFHYm1CLEVBRkluQixJQUFJLEdBQUssS0FFSixFQUFNMEIsR0FBSyxHQUFNQSxFQUNoQyxJQUFJUixFQUFJLEVBU1IsT0FQSUMsRUFBSSxHQUFPQSxFQUFJLEdBQ2xCRCxFQUFJUSxHQUFLLEVBQUlQLEdBRVZBLEdBQUssSUFBT0EsRUFBSSxJQUNuQkQsRUFBSVEsR0FBSyxHQUFLLEVBQUlQLEtBR1osQ0FBQ25CLElBQUksR0FBUSxJQUFKa0IsRUFBYSxJQUFKQyxFQUMxQixFQUVBbEMsUUFBUWUsSUFBSVQsSUFBTSxTQUFVUyxLQUMzQixNQUFNMEIsRUFBSTFCLElBQUksR0FBSyxJQUVidUIsRUFBSUcsRUFEQTFCLElBQUksR0FBSyxLQUNBLEVBQU0wQixHQUN6QixNQUFPLENBQUMxQixJQUFJLEdBQWMsS0FBVHVCLEVBQUlHLEdBQW9CLEtBQVQsRUFBSUgsR0FDckMsRUFFQXRDLFFBQVFNLElBQUlTLElBQU0sU0FBVVQsS0FDM0IsTUFBTW9DLEVBQUlwQyxJQUFJLEdBQUssSUFFYmdDLEVBQUksRUFEQWhDLElBQUksR0FBSyxJQUVibUMsRUFBSUgsRUFBSUksRUFDZCxJQUFJaEIsRUFBSSxFQU1SLE9BSkllLEVBQUksSUFDUGYsR0FBS1ksRUFBSUcsSUFBTSxFQUFJQSxJQUdiLENBQUNuQyxJQUFJLEdBQVEsSUFBSm1DLEVBQWEsSUFBSmYsRUFDMUIsRUFFQTFCLFFBQVFnQixNQUFNZixJQUFNLFNBQVVlLE9BQzdCLE1BQU8sQ0FBRUEsTUFBTSxHQUFLLE1BQVMsSUFBTUEsTUFBTSxHQUFLLE1BQVMsSUFBTUEsTUFBTSxHQUFLLE1BQVMsSUFDbEYsRUFFQWhCLFFBQVFDLElBQUllLE1BQVEsU0FBVWYsS0FDN0IsTUFBTyxDQUFFQSxJQUFJLEdBQUssSUFBTyxNQUFRQSxJQUFJLEdBQUssSUFBTyxNQUFRQSxJQUFJLEdBQUssSUFBTyxNQUMxRSxFQUVBRCxRQUFRaUIsS0FBS2hCLElBQU0sU0FBVWlGLE1BQzVCLE1BQU8sQ0FBQ0EsS0FBSyxHQUFLLElBQU0sSUFBS0EsS0FBSyxHQUFLLElBQU0sSUFBS0EsS0FBSyxHQUFLLElBQU0sSUFDbkUsRUFFQWxGLFFBQVFpQixLQUFLYixJQUFNLFNBQVU4RSxNQUM1QixNQUFPLENBQUMsRUFBRyxFQUFHQSxLQUFLLEdBQ3BCLEVBRUFsRixRQUFRaUIsS0FBS1osSUFBTUwsUUFBUWlCLEtBQUtiLElBRWhDSixRQUFRaUIsS0FBS1gsSUFBTSxTQUFVVyxNQUM1QixNQUFPLENBQUMsRUFBRyxJQUFLQSxLQUFLLEdBQ3RCLEVBRUFqQixRQUFRaUIsS0FBS1YsS0FBTyxTQUFVVSxNQUM3QixNQUFPLENBQUMsRUFBRyxFQUFHLEVBQUdBLEtBQUssR0FDdkIsRUFFQWpCLFFBQVFpQixLQUFLUixJQUFNLFNBQVVRLE1BQzVCLE1BQU8sQ0FBQ0EsS0FBSyxHQUFJLEVBQUcsRUFDckIsRUFFQWpCLFFBQVFpQixLQUFLTixJQUFNLFNBQVVNLE1BQzVCLE1BQU1xQyxJQUF3QyxJQUFsQ3pCLEtBQUt1RCxNQUFNbkUsS0FBSyxHQUFLLElBQU0sS0FHakN3RSxTQUZXbkMsS0FBTyxLQUFPQSxLQUFPLEdBQUtBLEtBRXBCb0MsU0FBUyxJQUFJQyxjQUNwQyxNQUFPLFNBQVNDLFVBQVVILE9BQU9uRSxRQUFVbUUsTUFDNUMsRUFFQXpGLFFBQVFDLElBQUlnQixLQUFPLFNBQVVoQixLQUU1QixNQUFPLEVBRE1BLElBQUksR0FBS0EsSUFBSSxHQUFLQSxJQUFJLElBQU0sRUFDM0IsSUFBTSxJQUNyQixDLGtHQ3QwQkEsTUFBTXlHLFlBQWMsb0JBQVEsK0NBQ3RCQyxNQUFRLG9CQUFRLHlDQUVoQjNHLFFBQVUsQ0FBQyxFQUVGRixPQUFPQyxLQUFLMkcsYUEwRHBCRSxTQUFRQyxZQUNkN0csUUFBUTZHLFdBQWEsQ0FBQyxFQUV0Qi9HLE9BQU95QixlQUFldkIsUUFBUTZHLFdBQVksV0FBWSxDQUFDckYsTUFBT2tGLFlBQVlHLFdBQVczRyxXQUNyRkosT0FBT3lCLGVBQWV2QixRQUFRNkcsV0FBWSxTQUFVLENBQUNyRixNQUFPa0YsWUFBWUcsV0FBVzFHLFNBRW5GLE1BQU0yRyxPQUFTSCxNQUFNRSxXQUNEL0csT0FBT0MsS0FBSytHLFFBRXBCRixTQUFRRyxVQUNuQixNQUFNQyxHQUFLRixPQUFPQyxTQUVsQi9HLFFBQVE2RyxXQUFXRSxTQTlDckIsU0FBU0UsWUFBWUQsSUFDcEIsTUFBTUUsVUFBWSxZQUFhaEMsTUFDOUIsTUFBTWlDLEtBQU9qQyxLQUFLLEdBRWxCLEdBQUlpQyxXQUNILE9BQU9BLEtBR0pBLEtBQUs3RixPQUFTLElBQ2pCNEQsS0FBT2lDLE1BR1IsTUFBTUMsT0FBU0osR0FBRzlCLE1BS2xCLEdBQXNCLGlCQUFYa0MsT0FDVixJQUFLLElBQUlDLElBQU1ELE9BQU85RixPQUFRa0MsRUFBSSxFQUFHQSxFQUFJNkQsSUFBSzdELElBQzdDNEQsT0FBTzVELEdBQUszQixLQUFLdUQsTUFBTWdDLE9BQU81RCxJQUloQyxPQUFPNEQsTUFDUixFQU9BLE1BSkksZUFBZ0JKLEtBQ25CRSxVQUFVSSxXQUFhTixHQUFHTSxZQUdwQkosU0FDUixDQWNnQ0QsQ0FBWUQsSUFDMUNoSCxRQUFRNkcsV0FBV0UsU0FBU1EsSUFyRTlCLFNBQVNDLFFBQVFSLElBQ2hCLE1BQU1FLFVBQVksWUFBYWhDLE1BQzlCLE1BQU1pQyxLQUFPakMsS0FBSyxHQUNsQixPQUFJaUMsV0FDSUEsTUFHSkEsS0FBSzdGLE9BQVMsSUFDakI0RCxLQUFPaUMsTUFHREgsR0FBRzlCLE1BQ1gsRUFPQSxNQUpJLGVBQWdCOEIsS0FDbkJFLFVBQVVJLFdBQWFOLEdBQUdNLFlBR3BCSixTQUNSLENBaURvQ00sQ0FBUVIsR0FBRyxHQUM1QyxJQUdIOUYsT0FBT0MsUUFBVW5CLE8sd0ZDOUVqQmtCLE9BQU9DLFFBQVUsQ0FDaEIsVUFBYSxDQUFDLElBQUssSUFBSyxLQUN4QixhQUFnQixDQUFDLElBQUssSUFBSyxLQUMzQixLQUFRLENBQUMsRUFBRyxJQUFLLEtBQ2pCLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsTUFBUyxDQUFDLElBQUssSUFBSyxLQUNwQixNQUFTLENBQUMsSUFBSyxJQUFLLEtBQ3BCLE9BQVUsQ0FBQyxJQUFLLElBQUssS0FDckIsTUFBUyxDQUFDLEVBQUcsRUFBRyxHQUNoQixlQUFrQixDQUFDLElBQUssSUFBSyxLQUM3QixLQUFRLENBQUMsRUFBRyxFQUFHLEtBQ2YsV0FBYyxDQUFDLElBQUssR0FBSSxLQUN4QixNQUFTLENBQUMsSUFBSyxHQUFJLElBQ25CLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsVUFBYSxDQUFDLEdBQUksSUFBSyxLQUN2QixXQUFjLENBQUMsSUFBSyxJQUFLLEdBQ3pCLFVBQWEsQ0FBQyxJQUFLLElBQUssSUFDeEIsTUFBUyxDQUFDLElBQUssSUFBSyxJQUNwQixlQUFrQixDQUFDLElBQUssSUFBSyxLQUM3QixTQUFZLENBQUMsSUFBSyxJQUFLLEtBQ3ZCLFFBQVcsQ0FBQyxJQUFLLEdBQUksSUFDckIsS0FBUSxDQUFDLEVBQUcsSUFBSyxLQUNqQixTQUFZLENBQUMsRUFBRyxFQUFHLEtBQ25CLFNBQVksQ0FBQyxFQUFHLElBQUssS0FDckIsY0FBaUIsQ0FBQyxJQUFLLElBQUssSUFDNUIsU0FBWSxDQUFDLElBQUssSUFBSyxLQUN2QixVQUFhLENBQUMsRUFBRyxJQUFLLEdBQ3RCLFNBQVksQ0FBQyxJQUFLLElBQUssS0FDdkIsVUFBYSxDQUFDLElBQUssSUFBSyxLQUN4QixZQUFlLENBQUMsSUFBSyxFQUFHLEtBQ3hCLGVBQWtCLENBQUMsR0FBSSxJQUFLLElBQzVCLFdBQWMsQ0FBQyxJQUFLLElBQUssR0FDekIsV0FBYyxDQUFDLElBQUssR0FBSSxLQUN4QixRQUFXLENBQUMsSUFBSyxFQUFHLEdBQ3BCLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsYUFBZ0IsQ0FBQyxJQUFLLElBQUssS0FDM0IsY0FBaUIsQ0FBQyxHQUFJLEdBQUksS0FDMUIsY0FBaUIsQ0FBQyxHQUFJLEdBQUksSUFDMUIsY0FBaUIsQ0FBQyxHQUFJLEdBQUksSUFDMUIsY0FBaUIsQ0FBQyxFQUFHLElBQUssS0FDMUIsV0FBYyxDQUFDLElBQUssRUFBRyxLQUN2QixTQUFZLENBQUMsSUFBSyxHQUFJLEtBQ3RCLFlBQWUsQ0FBQyxFQUFHLElBQUssS0FDeEIsUUFBVyxDQUFDLElBQUssSUFBSyxLQUN0QixRQUFXLENBQUMsSUFBSyxJQUFLLEtBQ3RCLFdBQWMsQ0FBQyxHQUFJLElBQUssS0FDeEIsVUFBYSxDQUFDLElBQUssR0FBSSxJQUN2QixZQUFlLENBQUMsSUFBSyxJQUFLLEtBQzFCLFlBQWUsQ0FBQyxHQUFJLElBQUssSUFDekIsUUFBVyxDQUFDLElBQUssRUFBRyxLQUNwQixVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsS0FBUSxDQUFDLElBQUssSUFBSyxHQUNuQixVQUFhLENBQUMsSUFBSyxJQUFLLElBQ3hCLEtBQVEsQ0FBQyxJQUFLLElBQUssS0FDbkIsTUFBUyxDQUFDLEVBQUcsSUFBSyxHQUNsQixZQUFlLENBQUMsSUFBSyxJQUFLLElBQzFCLEtBQVEsQ0FBQyxJQUFLLElBQUssS0FDbkIsU0FBWSxDQUFDLElBQUssSUFBSyxLQUN2QixRQUFXLENBQUMsSUFBSyxJQUFLLEtBQ3RCLFVBQWEsQ0FBQyxJQUFLLEdBQUksSUFDdkIsT0FBVSxDQUFDLEdBQUksRUFBRyxLQUNsQixNQUFTLENBQUMsSUFBSyxJQUFLLEtBQ3BCLE1BQVMsQ0FBQyxJQUFLLElBQUssS0FDcEIsU0FBWSxDQUFDLElBQUssSUFBSyxLQUN2QixjQUFpQixDQUFDLElBQUssSUFBSyxLQUM1QixVQUFhLENBQUMsSUFBSyxJQUFLLEdBQ3hCLGFBQWdCLENBQUMsSUFBSyxJQUFLLEtBQzNCLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsV0FBYyxDQUFDLElBQUssSUFBSyxLQUN6QixVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLHFCQUF3QixDQUFDLElBQUssSUFBSyxLQUNuQyxVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsVUFBYSxDQUFDLElBQUssSUFBSyxLQUN4QixVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLFlBQWUsQ0FBQyxJQUFLLElBQUssS0FDMUIsY0FBaUIsQ0FBQyxHQUFJLElBQUssS0FDM0IsYUFBZ0IsQ0FBQyxJQUFLLElBQUssS0FDM0IsZUFBa0IsQ0FBQyxJQUFLLElBQUssS0FDN0IsZUFBa0IsQ0FBQyxJQUFLLElBQUssS0FDN0IsZUFBa0IsQ0FBQyxJQUFLLElBQUssS0FDN0IsWUFBZSxDQUFDLElBQUssSUFBSyxLQUMxQixLQUFRLENBQUMsRUFBRyxJQUFLLEdBQ2pCLFVBQWEsQ0FBQyxHQUFJLElBQUssSUFDdkIsTUFBUyxDQUFDLElBQUssSUFBSyxLQUNwQixRQUFXLENBQUMsSUFBSyxFQUFHLEtBQ3BCLE9BQVUsQ0FBQyxJQUFLLEVBQUcsR0FDbkIsaUJBQW9CLENBQUMsSUFBSyxJQUFLLEtBQy9CLFdBQWMsQ0FBQyxFQUFHLEVBQUcsS0FDckIsYUFBZ0IsQ0FBQyxJQUFLLEdBQUksS0FDMUIsYUFBZ0IsQ0FBQyxJQUFLLElBQUssS0FDM0IsZUFBa0IsQ0FBQyxHQUFJLElBQUssS0FDNUIsZ0JBQW1CLENBQUMsSUFBSyxJQUFLLEtBQzlCLGtCQUFxQixDQUFDLEVBQUcsSUFBSyxLQUM5QixnQkFBbUIsQ0FBQyxHQUFJLElBQUssS0FDN0IsZ0JBQW1CLENBQUMsSUFBSyxHQUFJLEtBQzdCLGFBQWdCLENBQUMsR0FBSSxHQUFJLEtBQ3pCLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsVUFBYSxDQUFDLElBQUssSUFBSyxLQUN4QixTQUFZLENBQUMsSUFBSyxJQUFLLEtBQ3ZCLFlBQWUsQ0FBQyxJQUFLLElBQUssS0FDMUIsS0FBUSxDQUFDLEVBQUcsRUFBRyxLQUNmLFFBQVcsQ0FBQyxJQUFLLElBQUssS0FDdEIsTUFBUyxDQUFDLElBQUssSUFBSyxHQUNwQixVQUFhLENBQUMsSUFBSyxJQUFLLElBQ3hCLE9BQVUsQ0FBQyxJQUFLLElBQUssR0FDckIsVUFBYSxDQUFDLElBQUssR0FBSSxHQUN2QixPQUFVLENBQUMsSUFBSyxJQUFLLEtBQ3JCLGNBQWlCLENBQUMsSUFBSyxJQUFLLEtBQzVCLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsY0FBaUIsQ0FBQyxJQUFLLElBQUssS0FDNUIsY0FBaUIsQ0FBQyxJQUFLLElBQUssS0FDNUIsV0FBYyxDQUFDLElBQUssSUFBSyxLQUN6QixVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLEtBQVEsQ0FBQyxJQUFLLElBQUssSUFDbkIsS0FBUSxDQUFDLElBQUssSUFBSyxLQUNuQixLQUFRLENBQUMsSUFBSyxJQUFLLEtBQ25CLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsT0FBVSxDQUFDLElBQUssRUFBRyxLQUNuQixjQUFpQixDQUFDLElBQUssR0FBSSxLQUMzQixJQUFPLENBQUMsSUFBSyxFQUFHLEdBQ2hCLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsVUFBYSxDQUFDLEdBQUksSUFBSyxLQUN2QixZQUFlLENBQUMsSUFBSyxHQUFJLElBQ3pCLE9BQVUsQ0FBQyxJQUFLLElBQUssS0FDckIsV0FBYyxDQUFDLElBQUssSUFBSyxJQUN6QixTQUFZLENBQUMsR0FBSSxJQUFLLElBQ3RCLFNBQVksQ0FBQyxJQUFLLElBQUssS0FDdkIsT0FBVSxDQUFDLElBQUssR0FBSSxJQUNwQixPQUFVLENBQUMsSUFBSyxJQUFLLEtBQ3JCLFFBQVcsQ0FBQyxJQUFLLElBQUssS0FDdEIsVUFBYSxDQUFDLElBQUssR0FBSSxLQUN2QixVQUFhLENBQUMsSUFBSyxJQUFLLEtBQ3hCLFVBQWEsQ0FBQyxJQUFLLElBQUssS0FDeEIsS0FBUSxDQUFDLElBQUssSUFBSyxLQUNuQixZQUFlLENBQUMsRUFBRyxJQUFLLEtBQ3hCLFVBQWEsQ0FBQyxHQUFJLElBQUssS0FDdkIsSUFBTyxDQUFDLElBQUssSUFBSyxLQUNsQixLQUFRLENBQUMsRUFBRyxJQUFLLEtBQ2pCLFFBQVcsQ0FBQyxJQUFLLElBQUssS0FDdEIsT0FBVSxDQUFDLElBQUssR0FBSSxJQUNwQixVQUFhLENBQUMsR0FBSSxJQUFLLEtBQ3ZCLE9BQVUsQ0FBQyxJQUFLLElBQUssS0FDckIsTUFBUyxDQUFDLElBQUssSUFBSyxLQUNwQixNQUFTLENBQUMsSUFBSyxJQUFLLEtBQ3BCLFdBQWMsQ0FBQyxJQUFLLElBQUssS0FDekIsT0FBVSxDQUFDLElBQUssSUFBSyxHQUNyQixZQUFlLENBQUMsSUFBSyxJQUFLLEksa0dDdEozQixNQUFNdUYsWUFBYyxvQkFBUSwrQ0ErQjVCLFNBQVNlLFVBQVVaLFdBQ2xCLE1BQU1hLE1BbkJQLFNBQVNDLGFBQ1IsTUFBTUQsTUFBUSxDQUFDLEVBRVRFLE9BQVM5SCxPQUFPQyxLQUFLMkcsYUFFM0IsSUFBSyxJQUFJVyxJQUFNTyxPQUFPdEcsT0FBUWtDLEVBQUksRUFBR0EsRUFBSTZELElBQUs3RCxJQUM3Q2tFLE1BQU1FLE9BQU9wRSxJQUFNLENBR2xCUixVQUFXLEVBQ1g2RSxPQUFRLE1BSVYsT0FBT0gsS0FDUixDQUllQyxHQUNSRyxNQUFRLENBQUNqQixXQUlmLElBRkFhLE1BQU1iLFdBQVc3RCxTQUFXLEVBRXJCOEUsTUFBTXhHLFFBQVEsQ0FDcEIsTUFBTXlHLFFBQVVELE1BQU1FLE1BQ2hCQyxVQUFZbkksT0FBT0MsS0FBSzJHLFlBQVlxQixVQUUxQyxJQUFLLElBQUlWLElBQU1ZLFVBQVUzRyxPQUFRa0MsRUFBSSxFQUFHQSxFQUFJNkQsSUFBSzdELElBQUssQ0FDckQsTUFBTTBFLFNBQVdELFVBQVV6RSxHQUNyQjJFLEtBQU9ULE1BQU1RLFdBRUksSUFBbkJDLEtBQUtuRixXQUNSbUYsS0FBS25GLFNBQVcwRSxNQUFNSyxTQUFTL0UsU0FBVyxFQUMxQ21GLEtBQUtOLE9BQVNFLFFBQ2RELE1BQU1NLFFBQVFGLFVBRWhCLENBQ0QsQ0FFQSxPQUFPUixLQUNSLENBRUEsU0FBU1csS0FBS0MsS0FBTUMsSUFDbkIsT0FBTyxTQUFVckQsTUFDaEIsT0FBT3FELEdBQUdELEtBQUtwRCxNQUNoQixDQUNELENBRUEsU0FBU3NELGVBQWV6QixRQUFTVyxPQUNoQyxNQUFNZSxLQUFPLENBQUNmLE1BQU1YLFNBQVNjLE9BQVFkLFNBQ3JDLElBQUlDLEdBQUtOLFlBQVlnQixNQUFNWCxTQUFTYyxRQUFRZCxTQUV4QzJCLElBQU1oQixNQUFNWCxTQUFTYyxPQUN6QixLQUFPSCxNQUFNZ0IsS0FBS2IsUUFDakJZLEtBQUtMLFFBQVFWLE1BQU1nQixLQUFLYixRQUN4QmIsR0FBS3FCLEtBQUszQixZQUFZZ0IsTUFBTWdCLEtBQUtiLFFBQVFhLEtBQU0xQixJQUMvQzBCLElBQU1oQixNQUFNZ0IsS0FBS2IsT0FJbEIsT0FEQWIsR0FBR00sV0FBYW1CLEtBQ1R6QixFQUNSLENBRUE5RixPQUFPQyxRQUFVLFNBQVUwRixXQUMxQixNQUFNYSxNQUFRRCxVQUFVWixXQUNsQlMsV0FBYSxDQUFDLEVBRWRNLE9BQVM5SCxPQUFPQyxLQUFLMkgsT0FDM0IsSUFBSyxJQUFJTCxJQUFNTyxPQUFPdEcsT0FBUWtDLEVBQUksRUFBR0EsRUFBSTZELElBQUs3RCxJQUFLLENBQ2xELE1BQU11RCxRQUFVYSxPQUFPcEUsR0FHSCxPQUZQa0UsTUFBTVgsU0FFVmMsU0FLVFAsV0FBV1AsU0FBV3lCLGVBQWV6QixRQUFTVyxPQUMvQyxDQUVBLE9BQU9KLFVBQ1IsQywrRkMvRkEsSUFBSXFCLGdCQUFrQixvQkFBUSw2Q0FHMUJDLFlBQWMsT0FlbEIxSCxPQUFPQyxRQU5QLFNBQVMwSCxTQUFTcEQsUUFDaEIsT0FBT0EsT0FDSEEsT0FBT3FELE1BQU0sRUFBR0gsZ0JBQWdCbEQsUUFBVSxHQUFHc0QsUUFBUUgsWUFBYSxJQUNsRW5ELE1BQ04sQyx1RENmQSxJQUFJdUQsYUFBZSxLQWlCbkI5SCxPQUFPQyxRQVBQLFNBQVN3SCxnQkFBZ0JsRCxRQUd2QixJQUZBLElBQUl3RCxNQUFReEQsT0FBT25FLE9BRVoySCxTQUFXRCxhQUFhRSxLQUFLekQsT0FBTzBELE9BQU9GLFVBQ2xELE9BQU9BLEtBQ1QsQyw4RkNoQkEsSUFBSUcsU0FBVyxvQkFBUSxxQ0FDbkJDLElBQU0sb0JBQVEsZ0NBQ2RDLFNBQVcsb0JBQVEscUNBTW5CQyxVQUFZMUgsS0FBS0MsSUFDakIwSCxVQUFZM0gsS0FBS0QsSUFxTHJCVixPQUFPQyxRQTdIUCxTQUFTc0ksU0FBU0MsS0FBTUMsS0FBTUMsU0FDNUIsSUFBSUMsU0FDQUMsU0FDQUMsUUFDQTNDLE9BQ0E0QyxRQUNBQyxhQUNBQyxlQUFpQixFQUNqQkMsU0FBVSxFQUNWQyxRQUFTLEVBQ1RDLFVBQVcsRUFFZixHQUFtQixtQkFBUlgsS0FDVCxNQUFNLElBQUlZLFVBekVRLHVCQW1GcEIsU0FBU0MsV0FBV0MsTUFDbEIsSUFBSXRGLEtBQU8yRSxTQUNQWSxRQUFVWCxTQUtkLE9BSEFELFNBQVdDLGNBQVdZLEVBQ3RCUixlQUFpQk0sS0FDakJwRCxPQUFTc0MsS0FBS2lCLE1BQU1GLFFBQVN2RixLQUUvQixDQXFCQSxTQUFTMEYsYUFBYUosTUFDcEIsSUFBSUssa0JBQW9CTCxLQUFPUCxhQU0vQixZQUF5QlMsSUFBakJULGNBQStCWSxtQkFBcUJsQixNQUN6RGtCLGtCQUFvQixHQUFPVCxRQU5KSSxLQUFPTixnQkFNOEJILE9BQ2pFLENBRUEsU0FBU2UsZUFDUCxJQUFJTixLQUFPbkIsTUFDWCxHQUFJdUIsYUFBYUosTUFDZixPQUFPTyxhQUFhUCxNQUd0QlIsUUFBVWdCLFdBQVdGLGFBM0J2QixTQUFTRyxjQUFjVCxNQUNyQixJQUVJVSxZQUFjdkIsTUFGTWEsS0FBT1AsY0FJL0IsT0FBT0csT0FDSFosVUFBVTBCLFlBQWFuQixTQUpEUyxLQUFPTixpQkFLN0JnQixXQUNOLENBbUJxQ0QsQ0FBY1QsTUFDbkQsQ0FFQSxTQUFTTyxhQUFhUCxNQUtwQixPQUpBUixhQUFVVSxFQUlOTCxVQUFZUixTQUNQVSxXQUFXQyxPQUVwQlgsU0FBV0MsY0FBV1ksRUFDZnRELE9BQ1QsQ0FjQSxTQUFTK0QsWUFDUCxJQUFJWCxLQUFPbkIsTUFDUCtCLFdBQWFSLGFBQWFKLE1BTTlCLEdBSkFYLFNBQVd3QixVQUNYdkIsU0FBV3dCLEtBQ1hyQixhQUFlTyxLQUVYWSxXQUFZLENBQ2QsUUFBZ0JWLElBQVpWLFFBQ0YsT0F6RU4sU0FBU3VCLFlBQVlmLE1BTW5CLE9BSkFOLGVBQWlCTSxLQUVqQlIsUUFBVWdCLFdBQVdGLGFBQWNuQixNQUU1QlEsUUFBVUksV0FBV0MsTUFBUXBELE1BQ3RDLENBa0VhbUUsQ0FBWXRCLGNBRXJCLEdBQUlHLE9BSUYsT0FGQW9CLGFBQWF4QixTQUNiQSxRQUFVZ0IsV0FBV0YsYUFBY25CLE1BQzVCWSxXQUFXTixhQUV0QixDQUlBLFlBSGdCUyxJQUFaVixVQUNGQSxRQUFVZ0IsV0FBV0YsYUFBY25CLE9BRTlCdkMsTUFDVCxDQUdBLE9BM0dBdUMsS0FBT0wsU0FBU0ssT0FBUyxFQUNyQlAsU0FBU1EsV0FDWE8sVUFBWVAsUUFBUU8sUUFFcEJKLFNBREFLLE9BQVMsWUFBYVIsU0FDSEwsVUFBVUQsU0FBU00sUUFBUUcsVUFBWSxFQUFHSixNQUFRSSxRQUNyRU0sU0FBVyxhQUFjVCxVQUFZQSxRQUFRUyxTQUFXQSxVQW9HMURjLFVBQVVNLE9BcENWLFNBQVNBLGNBQ1NmLElBQVpWLFNBQ0Z3QixhQUFheEIsU0FFZkUsZUFBaUIsRUFDakJMLFNBQVdJLGFBQWVILFNBQVdFLGFBQVVVLENBQ2pELEVBK0JBUyxVQUFVTyxNQTdCVixTQUFTQSxRQUNQLFlBQW1CaEIsSUFBWlYsUUFBd0I1QyxPQUFTMkQsYUFBYTFCLE1BQ3ZELEVBNEJPOEIsU0FDVCxDLHlGQzVMQSxJQUFJUSxLQUFPLG9CQUFRLGtDQXNCbkJ6SyxPQUFPQyxRQUpHLFdBQ1IsT0FBT3dLLEtBQUtDLEtBQUt2QyxLQUNuQixDLDhGQ3BCQSxJQUFJSSxTQUFXLG9CQUFRLHFDQUNuQkwsU0FBVyxvQkFBUSxxQ0FtRXZCbEksT0FBT0MsUUFsQlAsU0FBUzBLLFNBQVNuQyxLQUFNQyxLQUFNQyxTQUM1QixJQUFJTyxTQUFVLEVBQ1ZFLFVBQVcsRUFFZixHQUFtQixtQkFBUlgsS0FDVCxNQUFNLElBQUlZLFVBbkRRLHVCQXlEcEIsT0FKSWxCLFNBQVNRLFdBQ1hPLFFBQVUsWUFBYVAsVUFBWUEsUUFBUU8sUUFBVUEsUUFDckRFLFNBQVcsYUFBY1QsVUFBWUEsUUFBUVMsU0FBV0EsVUFFbkRaLFNBQVNDLEtBQU1DLEtBQU0sQ0FDMUIsUUFDQSxRQUFXQSxLQUNYLFVBRUosQyw4RkNsRUEsSUFBSWQsU0FBVyxvQkFBUSxzQ0FDbkJPLFNBQVcsb0JBQVEscUNBQ25CMEMsU0FBVyxvQkFBUSxxQ0FNbkJDLFdBQWEscUJBR2JDLFdBQWEsYUFHYkMsVUFBWSxjQUdaQyxhQUFlOUYsU0E4Q25CbEYsT0FBT0MsUUFyQlAsU0FBU21JLFNBQVM5SCxPQUNoQixHQUFvQixpQkFBVEEsTUFDVCxPQUFPQSxNQUVULEdBQUlzSyxTQUFTdEssT0FDWCxPQTFDTSxJQTRDUixHQUFJNEgsU0FBUzVILE9BQVEsQ0FDbkIsSUFBSTJLLE1BQWdDLG1CQUFqQjNLLE1BQU00SyxRQUF3QjVLLE1BQU00SyxVQUFZNUssTUFDbkVBLE1BQVE0SCxTQUFTK0MsT0FBVUEsTUFBUSxHQUFNQSxLQUMzQyxDQUNBLEdBQW9CLGlCQUFUM0ssTUFDVCxPQUFpQixJQUFWQSxNQUFjQSxPQUFTQSxNQUVoQ0EsTUFBUXFILFNBQVNySCxPQUNqQixJQUFJNkssU0FBV0wsV0FBVzlDLEtBQUsxSCxPQUMvQixPQUFRNkssVUFBWUosVUFBVS9DLEtBQUsxSCxPQUMvQjBLLGFBQWExSyxNQUFNc0gsTUFBTSxHQUFJdUQsU0FBVyxFQUFJLEdBQzNDTixXQUFXN0MsS0FBSzFILE9BdkRiLEtBdUQ2QkEsS0FDdkMsQyw4Z0JDN0RrSCxTQUFTOEssSUFBSSxPQUFPQSxFQUFFeE0sT0FBT3lNLFFBQVEsU0FBU0MsR0FBRyxJQUFJLElBQUkvSyxFQUFFLEVBQUVBLEVBQUU0SixVQUFVL0osT0FBT0csSUFBSSxDQUFDLElBQUl1QyxFQUFFcUgsVUFBVTVKLEdBQUcsSUFBSSxJQUFJNkMsS0FBS04sRUFBRWxFLE9BQU8yTSxVQUFVQyxlQUFlQyxLQUFLM0ksRUFBRU0sS0FBS2tJLEVBQUVsSSxHQUFHTixFQUFFTSxHQUFHLENBQUMsT0FBT2tJLENBQUMsR0FBRzdCLE1BQU1XLEtBQUtELFVBQVUsQ0FBQyxTQUFTNUksRUFBRStKLEVBQUUvSyxHQUFHLEdBQUcsTUFBTStLLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSXhJLEVBQUVNLEVBQUVzSSxFQUFFLENBQUMsRUFBRWpJLEVBQUU3RSxPQUFPQyxLQUFLeU0sR0FBRyxJQUFJbEksRUFBRSxFQUFFQSxFQUFFSyxFQUFFckQsT0FBT2dELElBQUk3QyxFQUFFb0wsUUFBUTdJLEVBQUVXLEVBQUVMLEtBQUssSUFBSXNJLEVBQUU1SSxHQUFHd0ksRUFBRXhJLElBQUksT0FBTzRJLENBQUMsQ0FBQyxTQUFTcEosRUFBRWdKLEdBQUcsSUFBSXhJLEdBQUUsZ0JBQUV3SSxHQUFHbEksR0FBRSxpQkFBRSxTQUFTa0ksR0FBR3hJLEVBQUUrRCxTQUFTL0QsRUFBRStELFFBQVF5RSxFQUFFLElBQUcsT0FBT3hJLEVBQUUrRCxRQUFReUUsRUFBRWxJLEVBQUV5RCxPQUFPLENBQUMsSUFBSTlGLEVBQUUsU0FBU3VLLEVBQUUvSyxFQUFFdUMsR0FBRyxZQUFPLElBQVN2QyxJQUFJQSxFQUFFLFFBQUcsSUFBU3VDLElBQUlBLEVBQUUsR0FBR3dJLEVBQUV4SSxFQUFFQSxFQUFFd0ksRUFBRS9LLEVBQUVBLEVBQUUrSyxDQUFDLEVBQUUzSSxFQUFFLFNBQVMySSxHQUFHLE1BQU0sWUFBWUEsQ0FBQyxFQUFFbEssRUFBRSxTQUFTa0ssR0FBRyxPQUFPQSxHQUFHQSxFQUFFTSxjQUFjQyxhQUFhQyxJQUFJLEVBQUVDLEVBQUUsU0FBU1QsRUFBRS9LLEVBQUV1QyxHQUFHLElBQUlNLEVBQUVrSSxFQUFFVSx3QkFBd0JOLEVBQUUvSSxFQUFFcEMsR0FBRyxTQUFTK0ssRUFBRS9LLEdBQUcsSUFBSSxJQUFJdUMsRUFBRSxFQUFFQSxFQUFFd0ksRUFBRWxMLE9BQU8wQyxJQUFJLEdBQUd3SSxFQUFFeEksR0FBR21KLGFBQWExTCxFQUFFLE9BQU8rSyxFQUFFeEksR0FBRyxPQUFPd0ksRUFBRSxFQUFFLENBQXZGLENBQXlGL0ssRUFBRTJMLFFBQVFwSixHQUFHdkMsRUFBRSxNQUFNLENBQUM0TCxLQUFLcEwsR0FBRzJLLEVBQUVVLE9BQU9oSixFQUFFK0ksS0FBSy9LLEVBQUVrSyxHQUFHZSxjQUFjakosRUFBRWtKLE9BQU9DLElBQUl4TCxHQUFHMkssRUFBRWMsT0FBT3BKLEVBQUVtSixJQUFJbkwsRUFBRWtLLEdBQUdtQixjQUFjckosRUFBRXNKLFFBQVEsRUFBRTVMLEVBQUUsU0FBU3dLLElBQUkzSSxFQUFFMkksSUFBSUEsRUFBRXFCLGdCQUFnQixFQUFFdEosRUFBRSxZQUFPLFNBQVNxSSxHQUFHLElBQUlqSSxFQUFFaUksRUFBRWtCLE9BQU81TCxFQUFFMEssRUFBRW1CLE1BQU05TCxFQUFFUSxFQUFFbUssRUFBRSxDQUFDLFNBQVMsVUFBVXJJLEdBQUUsZ0JBQUUsTUFBTTdDLEVBQUU4QixFQUFFbUIsR0FBR2IsRUFBRU4sRUFBRXRCLEdBQUdQLEdBQUUsZ0JBQUUsTUFBTXFNLEdBQUUsaUJBQUUsR0FBSTlLLEdBQUUsa0JBQUUsV0FBVyxJQUFJc0osRUFBRSxTQUFTQSxHQUFHeEssRUFBRXdLLElBQUkzSSxFQUFFMkksR0FBR0EsRUFBRVksUUFBUTlMLE9BQU8sRUFBRWtMLEVBQUV5QixRQUFRLElBQUkxSixFQUFFd0QsUUFBUXJHLEVBQUV1TCxFQUFFMUksRUFBRXdELFFBQVF5RSxFQUFFN0ssRUFBRW9HLFVBQVUvRCxHQUFFLEVBQUcsRUFBRXZDLEVBQUUsV0FBVyxPQUFPdUMsR0FBRSxFQUFHLEVBQUUsU0FBU0EsRUFBRUEsR0FBRyxJQUFJTSxFQUFFMEosRUFBRWpHLFFBQVE2RSxFQUFFdEssRUFBRWlDLEVBQUV3RCxTQUFTcEQsRUFBRVgsRUFBRTRJLEVBQUVzQixpQkFBaUJ0QixFQUFFdUIsb0JBQW9CeEosRUFBRUwsRUFBRSxZQUFZLFlBQVlrSSxHQUFHN0gsRUFBRUwsRUFBRSxXQUFXLFVBQVU3QyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMrSyxHQUFHLElBQUkvSyxFQUFFK0ssRUFBRTRCLFlBQVk5SixFQUFFQyxFQUFFd0QsUUFBUSxHQUFHekQsSUFBSXRDLEVBQUVQLElBQUksU0FBUytLLEVBQUUvSyxHQUFHLE9BQU9BLElBQUlvQyxFQUFFMkksRUFBRSxDQUE3QixDQUErQi9LLEVBQUV1TSxFQUFFakcsVUFBVXpELEdBQUcsQ0FBQyxHQUFHVCxFQUFFcEMsR0FBRyxDQUFDdU0sRUFBRWpHLFNBQVEsRUFBRyxJQUFJNkUsRUFBRW5MLEVBQUU0TSxnQkFBZ0IsR0FBR3pCLEVBQUV0TCxTQUFTSyxFQUFFb0csUUFBUTZFLEVBQUUsR0FBR08sV0FBVyxDQUFDN0ksRUFBRWdLLFFBQVE1TSxFQUFFdUwsRUFBRTNJLEVBQUU3QyxFQUFFRSxFQUFFb0csVUFBVS9ELEdBQUUsRUFBRyxDQUFDLEVBQUUsU0FBU3dJLEdBQUcsSUFBSS9LLEVBQUUrSyxFQUFFK0IsT0FBTy9CLEVBQUVnQyxRQUFRL00sRUFBRSxJQUFJQSxFQUFFLEtBQUsrSyxFQUFFcUIsaUJBQWlCL0osRUFBRSxDQUFDdUosS0FBSyxLQUFLNUwsRUFBRSxJQUFJLEtBQUtBLEdBQUcsSUFBSSxFQUFFZ00sSUFBSSxLQUFLaE0sRUFBRSxJQUFJLEtBQUtBLEdBQUcsSUFBSSxJQUFJLEVBQUV1QyxFQUFFLEdBQUUsQ0FBQ0YsRUFBRXBDLElBQUkrTSxFQUFFdkwsRUFBRSxHQUFHd0wsRUFBRXhMLEVBQUUsR0FBR3lMLEVBQUV6TCxFQUFFLEdBQUcsT0FBTyxvQkFBRSxXQUFXLE9BQU95TCxDQUFDLEdBQUUsQ0FBQ0EsSUFBSSxvQkFBZ0IsTUFBTXJDLEVBQUUsQ0FBQyxFQUFFckssRUFBRSxDQUFDMk0sYUFBYUgsRUFBRUksWUFBWUosRUFBRUssVUFBVSw4QkFBOEJDLElBQUl4SyxFQUFFeUssVUFBVU4sRUFBRU8sU0FBUyxFQUFFQyxLQUFLLFdBQVcsSUFBR3hOLEVBQUUsU0FBUzhLLEdBQUcsT0FBT0EsRUFBRTJDLE9BQU9DLFNBQVNsSixLQUFLLElBQUksRUFBRXBDLEVBQUUsU0FBU3JDLEdBQUcsSUFBSXVDLEVBQUV2QyxFQUFFNkQsTUFBTWhCLEVBQUU3QyxFQUFFNEwsS0FBS1QsRUFBRW5MLEVBQUVnTSxJQUFJOUksT0FBRSxJQUFTaUksRUFBRSxHQUFHQSxFQUFFMUssRUFBRVIsRUFBRSxDQUFDLDBCQUEwQkQsRUFBRXFOLFlBQVksT0FBTyxvQkFBZ0IsTUFBTSxDQUFDQSxVQUFVNU0sRUFBRW1OLE1BQU0sQ0FBQzVCLElBQUksSUFBSTlJLEVBQUUsSUFBSTBJLEtBQUssSUFBSS9JLEVBQUUsTUFBTSxvQkFBZ0IsTUFBTSxDQUFDd0ssVUFBVSwrQkFBK0JPLE1BQU0sQ0FBQ0MsZ0JBQWdCdEwsS0FBSyxFQUFFckMsRUFBRSxTQUFTNkssRUFBRS9LLEVBQUV1QyxHQUFHLFlBQU8sSUFBU3ZDLElBQUlBLEVBQUUsUUFBRyxJQUFTdUMsSUFBSUEsRUFBRW5DLEtBQUswTixJQUFJLEdBQUc5TixJQUFJSSxLQUFLdUQsTUFBTXBCLEVBQUV3SSxHQUFHeEksQ0FBQyxFQUFFZ0ssRUFBRSxDQUFDd0IsS0FBSyxHQUFHQyxLQUFLLElBQUlDLElBQUksS0FBSyxFQUFFN04sS0FBS2dELEtBQUszQixFQUFFLFNBQVNzSixHQUFHLE9BQU9tRCxFQUFFbEIsRUFBRWpDLEdBQUcsRUFBRWlDLEVBQUUsU0FBU2pDLEdBQUcsTUFBTSxNQUFNQSxFQUFFLEtBQUtBLEVBQUVBLEVBQUU1RyxVQUFVLElBQUk0RyxFQUFFbEwsT0FBTyxFQUFFLENBQUNHLEVBQUUyRSxTQUFTb0csRUFBRSxHQUFHQSxFQUFFLEdBQUcsSUFBSTlLLEVBQUUwRSxTQUFTb0csRUFBRSxHQUFHQSxFQUFFLEdBQUcsSUFBSTdLLEVBQUV5RSxTQUFTb0csRUFBRSxHQUFHQSxFQUFFLEdBQUcsSUFBSTdILEVBQUUsSUFBSTZILEVBQUVsTCxPQUFPSyxFQUFFeUUsU0FBU29HLEVBQUUsR0FBR0EsRUFBRSxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQy9LLEVBQUUyRSxTQUFTb0csRUFBRTVHLFVBQVUsRUFBRSxHQUFHLElBQUlsRSxFQUFFMEUsU0FBU29HLEVBQUU1RyxVQUFVLEVBQUUsR0FBRyxJQUFJakUsRUFBRXlFLFNBQVNvRyxFQUFFNUcsVUFBVSxFQUFFLEdBQUcsSUFBSWpCLEVBQUUsSUFBSTZILEVBQUVsTCxPQUFPSyxFQUFFeUUsU0FBU29HLEVBQUU1RyxVQUFVLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU4SSxFQUFFLFNBQVNsQyxFQUFFL0ssR0FBRyxZQUFPLElBQVNBLElBQUlBLEVBQUUsT0FBT21PLE9BQU9wRCxJQUFJd0IsRUFBRXZNLElBQUksRUFBRSxFQUFFa04sRUFBRSxTQUFTbkMsR0FBRyxJQUFJL0ssRUFBRSw2SEFBNkhvTyxLQUFLckQsR0FBRyxPQUFPL0ssRUFBRXFPLEVBQUUsQ0FBQzlOLEVBQUUwTSxFQUFFak4sRUFBRSxHQUFHQSxFQUFFLElBQUlRLEVBQUUyTixPQUFPbk8sRUFBRSxJQUFJUyxFQUFFME4sT0FBT25PLEVBQUUsSUFBSWtELE9BQUUsSUFBU2xELEVBQUUsR0FBRyxFQUFFbU8sT0FBT25PLEVBQUUsS0FBS0EsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDTyxFQUFFLEVBQUVDLEVBQUUsRUFBRUssRUFBRSxFQUFFcUMsRUFBRSxFQUFFLEVBQU1tTCxFQUFFLFNBQVN0RCxHQUFHLElBQUkvSyxFQUFFK0ssRUFBRXZLLEVBQUUrQixFQUFFd0ksRUFBRXRLLEVBQUUsTUFBTSxDQUFDRixFQUFFd0ssRUFBRXhLLEVBQUVDLEdBQUdSLElBQUl1QyxFQUFFLEdBQUdBLEVBQUUsSUFBSUEsR0FBRyxLQUFLLEVBQUUsRUFBRXZDLEdBQUd1QyxFQUFFdkMsR0FBRyxJQUFJLEVBQUVhLEVBQUUwQixFQUFFdkMsRUFBRWtELEVBQUU2SCxFQUFFN0gsRUFBRSxFQUFFakMsRUFBRSxTQUFTOEosR0FBRyxPQUFPdUQsRUFBRUMsRUFBRXhELEdBQUcsRUFBRXZKLEVBQUUsU0FBU3VKLEdBQUcsSUFBSS9LLEVBQUUrSyxFQUFFdkssRUFBRStCLEVBQUV3SSxFQUFFbEssRUFBRWdDLEVBQUVrSSxFQUFFN0gsRUFBRWlJLEdBQUcsSUFBSW5MLEdBQUd1QyxFQUFFLElBQUksTUFBTSxDQUFDaEMsRUFBRUwsRUFBRTZLLEVBQUV4SyxHQUFHQyxFQUFFTixFQUFFaUwsRUFBRSxHQUFHQSxFQUFFLElBQUluTCxFQUFFdUMsRUFBRSxLQUFLNEksR0FBRyxJQUFJQSxFQUFFLElBQUlBLEdBQUcsSUFBSSxHQUFHMUssRUFBRVAsRUFBRWlMLEVBQUUsR0FBR2pJLEVBQUVoRCxFQUFFMkMsRUFBRSxHQUFHLEVBQUVQLEVBQUUsU0FBU3lJLEdBQUcsSUFBSS9LLEVBQUV3QixFQUFFdUosR0FBRyxNQUFNLE9BQU8vSyxFQUFFTyxFQUFFLEtBQUtQLEVBQUVRLEVBQUUsTUFBTVIsRUFBRVMsRUFBRSxJQUFJLEVBQUVTLEVBQUUsU0FBUzZKLEdBQUcsSUFBSS9LLEVBQUV3QixFQUFFdUosR0FBRyxNQUFNLFFBQVEvSyxFQUFFTyxFQUFFLEtBQUtQLEVBQUVRLEVBQUUsTUFBTVIsRUFBRVMsRUFBRSxNQUFNVCxFQUFFa0QsRUFBRSxHQUFHLEVBQUVxTCxFQUFFLFNBQVN4RCxHQUFHLElBQUkvSyxFQUFFK0ssRUFBRXhLLEVBQUVnQyxFQUFFd0ksRUFBRXZLLEVBQUVxQyxFQUFFa0ksRUFBRWxLLEVBQUVzSyxFQUFFSixFQUFFN0gsRUFBRWxELEVBQUVBLEVBQUUsSUFBSSxFQUFFdUMsR0FBRyxJQUFJTSxHQUFHLElBQUksSUFBSUssRUFBRTlDLEtBQUsrQixNQUFNbkMsR0FBR1MsRUFBRW9DLEdBQUcsRUFBRU4sR0FBR3NJLEVBQUVoSSxHQUFHLEdBQUc3QyxFQUFFa0QsR0FBR1gsR0FBR3ZCLEVBQUU2QixHQUFHLEdBQUcsRUFBRTdDLEVBQUVrRCxHQUFHWCxHQUFHUixFQUFFbUIsRUFBRSxFQUFFLE1BQU0sQ0FBQ2xELEVBQUVFLEVBQUUsSUFBSSxDQUFDMkMsRUFBRWdJLEVBQUVwSyxFQUFFQSxFQUFFTyxFQUFFNkIsR0FBR2QsSUFBSTlCLEVBQUVDLEVBQUUsSUFBSSxDQUFDYyxFQUFFNkIsRUFBRUEsRUFBRWdJLEVBQUVwSyxFQUFFQSxHQUFHc0IsSUFBSTdCLEVBQUVBLEVBQUUsSUFBSSxDQUFDTyxFQUFFQSxFQUFFTyxFQUFFNkIsRUFBRUEsRUFBRWdJLEdBQUc5SSxJQUFJbUIsRUFBRWhELEVBQUVpTCxFQUFFLEdBQUcsRUFBeVJ6SixFQUFFLFNBQVNxSixHQUFHLElBQUkvSyxFQUFFLGlIQUFpSG9PLEtBQUtyRCxHQUFHLE9BQU8vSyxFQUFFa08sRUFBRSxDQUFDbE8sRUFBRW1PLE9BQU9uTyxFQUFFLEtBQUtBLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBR0MsRUFBRWtPLE9BQU9uTyxFQUFFLEtBQUtBLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBR0UsRUFBRWlPLE9BQU9uTyxFQUFFLEtBQUtBLEVBQUUsR0FBRyxJQUFJLElBQUksR0FBR2tELE9BQUUsSUFBU2xELEVBQUUsR0FBRyxFQUFFbU8sT0FBT25PLEVBQUUsS0FBS0EsRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDTyxFQUFFLEVBQUVDLEVBQUUsRUFBRUssRUFBRSxFQUFFcUMsRUFBRSxFQUFFLEVBQU1zTCxFQUFFLFNBQVN6RCxHQUFHLElBQUkvSyxFQUFFK0ssRUFBRTlHLFNBQVMsSUFBSSxPQUFPakUsRUFBRUgsT0FBTyxFQUFFLElBQUlHLEVBQUVBLENBQUMsRUFBRXNPLEVBQUUsU0FBU3ZELEdBQUcsSUFBSS9LLEVBQUUrSyxFQUFFL0ssRUFBRXVDLEVBQUV3SSxFQUFFOUssRUFBRTRDLEVBQUVrSSxFQUFFN0ssRUFBRWlMLEVBQUVKLEVBQUU3SCxFQUFFQSxFQUFFaUksRUFBRSxFQUFFcUQsRUFBRXRPLEVBQUUsSUFBSWlMLElBQUksR0FBRyxNQUFNLElBQUlxRCxFQUFFeE8sR0FBR3dPLEVBQUVqTSxHQUFHaU0sRUFBRTNMLEdBQUdLLENBQUMsRUFBRWdMLEVBQUUsU0FBU25ELEdBQUcsSUFBSS9LLEVBQUUrSyxFQUFFL0ssRUFBRXVDLEVBQUV3SSxFQUFFOUssRUFBRTRDLEVBQUVrSSxFQUFFN0ssRUFBRWlMLEVBQUVKLEVBQUU3SCxFQUFFQSxFQUFFOUMsS0FBS0MsSUFBSUwsRUFBRXVDLEVBQUVNLEdBQUdwQyxFQUFFeUMsRUFBRTlDLEtBQUtELElBQUlILEVBQUV1QyxFQUFFTSxHQUFHZ0ksRUFBRXBLLEVBQUV5QyxJQUFJbEQsR0FBR3VDLEVBQUVNLEdBQUdwQyxFQUFFeUMsSUFBSVgsRUFBRSxHQUFHTSxFQUFFN0MsR0FBR1MsRUFBRSxHQUFHVCxFQUFFdUMsR0FBRzlCLEVBQUUsRUFBRSxNQUFNLENBQUNGLEVBQUVMLEVBQUUsSUFBSTJLLEVBQUUsRUFBRUEsRUFBRSxFQUFFQSxJQUFJckssRUFBRU4sRUFBRWdELEVBQUV6QyxFQUFFeUMsRUFBRSxJQUFJLEdBQUdyQyxFQUFFWCxFQUFFZ0QsRUFBRSxJQUFJLEtBQUtBLEVBQUVpSSxFQUFFLEVBQStEc0QsRUFBRSxZQUFPLFNBQVN6TyxHQUFHLElBQUl1QyxFQUFFdkMsRUFBRThFLElBQUlqQyxFQUFFN0MsRUFBRTBPLFNBQVN2RCxFQUFFbEwsRUFBRSxDQUFDLHNCQUFzQkQsRUFBRXFOLFlBQVksT0FBTyxvQkFBZ0IsTUFBTSxDQUFDQSxVQUFVbEMsR0FBRyxvQkFBZ0JySSxFQUFFLENBQUN1SixPQUFPLFNBQVN0QixHQUFHbEksRUFBRSxDQUFDdEMsRUFBRSxJQUFJd0ssRUFBRWEsTUFBTSxFQUFFVSxNQUFNLFNBQVN2QixHQUFHbEksRUFBRSxDQUFDdEMsRUFBRUMsRUFBRStCLEVBQUUsSUFBSXdJLEVBQUVhLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxNQUFNLGdCQUFnQjFMLEVBQUVxQyxHQUFHLGdCQUFnQixNQUFNLGdCQUFnQixLQUFLLG9CQUFnQkYsRUFBRSxDQUFDZ0wsVUFBVSw4QkFBOEJ6QixLQUFLckosRUFBRSxJQUFJc0IsTUFBTXZCLEVBQUUsQ0FBQy9CLEVBQUVnQyxFQUFFL0IsRUFBRSxJQUFJSyxFQUFFLElBQUlxQyxFQUFFLE9BQU8sSUFBR3lMLEVBQUUsWUFBTyxTQUFTM08sR0FBRyxJQUFJdUMsRUFBRXZDLEVBQUU0TyxLQUFLL0wsRUFBRTdDLEVBQUUwTyxTQUFTdkQsRUFBRSxDQUFDMEMsZ0JBQWdCdkwsRUFBRSxDQUFDL0IsRUFBRWdDLEVBQUVoQyxFQUFFQyxFQUFFLElBQUlLLEVBQUUsSUFBSXFDLEVBQUUsS0FBSyxPQUFPLG9CQUFnQixNQUFNLENBQUNtSyxVQUFVLDZCQUE2Qk8sTUFBTXpDLEdBQUcsb0JBQWdCckksRUFBRSxDQUFDdUosT0FBTyxTQUFTdEIsR0FBR2xJLEVBQUUsQ0FBQ3JDLEVBQUUsSUFBSXVLLEVBQUVhLEtBQUsvSyxFQUFFLElBQUksSUFBSWtLLEVBQUVpQixLQUFLLEVBQUVNLE1BQU0sU0FBU3ZCLEdBQUdsSSxFQUFFLENBQUNyQyxFQUFFQSxFQUFFK0IsRUFBRS9CLEVBQUUsSUFBSXVLLEVBQUVhLEtBQUssRUFBRSxLQUFLL0ssRUFBRUwsRUFBRStCLEVBQUUxQixFQUFFLElBQUlrSyxFQUFFaUIsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLFFBQVEsaUJBQWlCLGNBQWM5TCxFQUFFcUMsRUFBRS9CLEdBQUcsaUJBQWlCTixFQUFFcUMsRUFBRTFCLEdBQUcsS0FBSyxvQkFBZ0J3QixFQUFFLENBQUNnTCxVQUFVLHFDQUFxQ3JCLElBQUksRUFBRXpKLEVBQUUxQixFQUFFLElBQUkrSyxLQUFLckosRUFBRS9CLEVBQUUsSUFBSXFELE1BQU12QixFQUFFQyxNQUFNLElBQUdzTSxFQUFFLFNBQVM5RCxFQUFFL0ssR0FBRyxHQUFHK0ssSUFBSS9LLEVBQUUsT0FBTSxFQUFHLElBQUksSUFBSXVDLEtBQUt3SSxFQUFFLEdBQUdBLEVBQUV4SSxLQUFLdkMsRUFBRXVDLEdBQUcsT0FBTSxFQUFHLE9BQU0sQ0FBRSxFQUFFdU0sRUFBRSxTQUFTL0QsRUFBRS9LLEdBQUcsT0FBTytLLEVBQUV6RCxRQUFRLE1BQU0sTUFBTXRILEVBQUVzSCxRQUFRLE1BQU0sR0FBRyxFQUFFeUgsRUFBRSxTQUFTaEUsRUFBRS9LLEdBQUcsT0FBTytLLEVBQUVpRSxnQkFBZ0JoUCxFQUFFZ1AsZUFBZUgsRUFBRTdCLEVBQUVqQyxHQUFHaUMsRUFBRWhOLEdBQUcsRUFBRSxTQUFTaVAsRUFBRWxFLEVBQUV4SSxFQUFFOUIsR0FBRyxJQUFJb0ssRUFBRTlJLEVBQUV0QixHQUFHTyxHQUFFLG1CQUFFLFdBQVcsT0FBTytKLEVBQUVtRSxPQUFPM00sRUFBRSxJQUFHL0IsRUFBRVEsRUFBRSxHQUFHb0IsRUFBRXBCLEVBQUUsR0FBR0gsR0FBRSxnQkFBRSxDQUFDZ0QsTUFBTXRCLEVBQUVxTSxLQUFLcE8sS0FBSSxvQkFBRSxXQUFXLElBQUl1SyxFQUFFb0UsTUFBTTVNLEVBQUUxQixFQUFFeUYsUUFBUXpDLE9BQU8sQ0FBQyxJQUFJN0QsRUFBRStLLEVBQUVtRSxPQUFPM00sR0FBRzFCLEVBQUV5RixRQUFRLENBQUNzSSxLQUFLNU8sRUFBRTZELE1BQU10QixHQUFHSCxFQUFFcEMsRUFBRSxDQUFDLEdBQUUsQ0FBQ3VDLEVBQUV3SSxLQUFJLG9CQUFFLFdBQVcsSUFBSS9LLEVBQUU2TyxFQUFFck8sRUFBRUssRUFBRXlGLFFBQVFzSSxPQUFPN0QsRUFBRW9FLE1BQU1uUCxFQUFFK0ssRUFBRXFFLFNBQVM1TyxHQUFHSyxFQUFFeUYsUUFBUXpDLFNBQVNoRCxFQUFFeUYsUUFBUSxDQUFDc0ksS0FBS3BPLEVBQUVxRCxNQUFNN0QsR0FBRzZLLEVBQUU3SyxHQUFHLEdBQUUsQ0FBQ1EsRUFBRXVLLEVBQUVGLElBQUksSUFBSVcsR0FBRSxzQkFBRSxTQUFTVCxHQUFHM0ksR0FBRSxTQUFTcEMsR0FBRyxPQUFPM0IsT0FBT3lNLE9BQU8sQ0FBQyxFQUFFOUssRUFBRStLLEVBQUUsR0FBRSxHQUFFLElBQUksTUFBTSxDQUFDdkssRUFBRWdMLEVBQUUsQ0FBQyxJQUFJNkQsRUNTeHJKQyxZRFQwckpDLEVBQUUsb0JBQW9CQyxPQUFPLHNCQUFFLGdCQUE4R0MsRUFBRSxJQUFJQyxJQUFJQyxFQUFFLFNBQVM1RSxHQUFHd0UsR0FBRSxXQUFXLElBQUl2UCxFQUFFK0ssRUFBRXpFLFFBQVF5RSxFQUFFekUsUUFBUStFLGNBQWN1RSxTQUFTLFFBQUcsSUFBUzVQLElBQUl5UCxFQUFFSSxJQUFJN1AsR0FBRyxDQUFDLElBQUl1QyxFQUFFdkMsRUFBRThQLGNBQWMsU0FBU3ZOLEVBQUV3TixVQUFVLGt0REFBa3RETixFQUFFTyxJQUFJaFEsRUFBRXVDLEdBQUcsSUFBSU0sRUFBcDlEd00sR0FBMEMsdUJBQWc3RHhNLEdBQUdOLEVBQUUwTixhQUFhLFFBQVFwTixHQUFHN0MsRUFBRWtRLEtBQUtDLFlBQVk1TixFQUFFLENBQUMsR0FBRSxHQUFHLEVBQUU2TixFQUFFLFNBQVM3TixHQUFHLElBQUlNLEVBQUVOLEVBQUU4SyxVQUFVbEMsRUFBRTVJLEVBQUU4TixXQUFXbk4sRUFBRVgsRUFBRXNCLE1BQU1wRCxPQUFFLElBQVN5QyxFQUFFaUksRUFBRW1GLGFBQWFwTixFQUFFbkIsRUFBRVEsRUFBRW1NLFNBQVNsTyxFQUFFUSxFQUFFdUIsRUFBRSxDQUFDLFlBQVksYUFBYSxRQUFRLGFBQWFILEdBQUUsZ0JBQUUsTUFBTXVOLEVBQUV2TixHQUFHLElBQUl2QixFQUFFb08sRUFBRTlELEVBQUUxSyxFQUFFc0IsR0FBR3lKLEVBQUUzSyxFQUFFLEdBQUdOLEVBQUVNLEVBQUUsR0FBR2lDLEVBQUU3QyxFQUFFLENBQUMsaUJBQWlCNEMsSUFBSSxPQUFPLG9CQUFnQixNQUFNZ0ksRUFBRSxDQUFDLEVBQUVySyxFQUFFLENBQUM4TSxJQUFJbEwsRUFBRWlMLFVBQVV2SyxJQUFJLG9CQUFnQjZMLEVBQUUsQ0FBQ0MsS0FBS3BELEVBQUVrRCxTQUFTbk8sSUFBSSxvQkFBZ0JrTyxFQUFFLENBQUMzSixJQUFJMEcsRUFBRWpMLEVBQUVtTyxTQUFTbk8sRUFBRThNLFVBQVUsaUNBQWlDLEVBQUVrRCxFQUFFLENBQUNELGFBQWEsTUFBTXBCLE9BQU96TixFQUFFMk4sU0FBUyxTQUFTckUsR0FBRyxPQUFPOUosRUFBRSxDQUFDVixFQUFFd0ssRUFBRXhLLEVBQUVDLEVBQUV1SyxFQUFFdkssRUFBRUssRUFBRWtLLEVBQUVsSyxFQUFFcUMsRUFBRSxHQUFHLEVBQUVpTSxNQUFNSixHQUFtRXlCLEdBQUcsU0FBU3hRLEdBQUcsSUFBSXVDLEVBQUV2QyxFQUFFcU4sVUFBVXhLLEVBQUU3QyxFQUFFNE8sS0FBS3pELEVBQUVuTCxFQUFFME8sU0FBU3hMLEVBQUUsQ0FBQ3VOLGdCQUFnQiwwQkFBMEJ2UCxFQUFFN0MsT0FBT3lNLE9BQU8sQ0FBQyxFQUFFakksRUFBRSxDQUFDSyxFQUFFLEtBQUssS0FBS2hDLEVBQUU3QyxPQUFPeU0sT0FBTyxDQUFDLEVBQUVqSSxFQUFFLENBQUNLLEVBQUUsS0FBSyxLQUFLekMsRUFBRVIsRUFBRSxDQUFDLHdCQUF3QnNDLElBQUlzSSxFQUFFM0ssRUFBRSxJQUFJMkMsRUFBRUssR0FBRyxPQUFPLG9CQUFnQixNQUFNLENBQUNtSyxVQUFVNU0sR0FBRyxvQkFBZ0IsTUFBTSxDQUFDNE0sVUFBVSxpQ0FBaUNPLE1BQU0xSyxJQUFJLG9CQUFnQkosRUFBRSxDQUFDdUosT0FBTyxTQUFTdEIsR0FBR0ksRUFBRSxDQUFDakksRUFBRTZILEVBQUVhLE1BQU0sRUFBRVUsTUFBTSxTQUFTdkIsR0FBR0ksRUFBRSxDQUFDakksRUFBRTFDLEVBQUVxQyxFQUFFSyxFQUFFNkgsRUFBRWEsT0FBTyxFQUFFLGFBQWEsUUFBUSxpQkFBaUJmLEVBQUUsSUFBSSxnQkFBZ0JBLEVBQUUsZ0JBQWdCLElBQUksZ0JBQWdCLE9BQU8sb0JBQWdCeEksRUFBRSxDQUFDZ0wsVUFBVSxnQ0FBZ0N6QixLQUFLL0ksRUFBRUssRUFBRVcsTUFBTTNDLEVBQUUyQixNQUFNLEVBQUU2TixHQUFHLFNBQVNuTyxHQUFHLElBQUlNLEVBQUVOLEVBQUU4SyxVQUFVbEMsRUFBRTVJLEVBQUU4TixXQUFXbk4sRUFBRVgsRUFBRXNCLE1BQU1wRCxPQUFFLElBQVN5QyxFQUFFaUksRUFBRW1GLGFBQWFwTixFQUFFbkIsRUFBRVEsRUFBRW1NLFNBQVNsTyxFQUFFUSxFQUFFdUIsRUFBRSxDQUFDLFlBQVksYUFBYSxRQUFRLGFBQWFILEdBQUUsZ0JBQUUsTUFBTXVOLEVBQUV2TixHQUFHLElBQUl2QixFQUFFb08sRUFBRTlELEVBQUUxSyxFQUFFc0IsR0FBR3lKLEVBQUUzSyxFQUFFLEdBQUdOLEVBQUVNLEVBQUUsR0FBR2lDLEVBQUU3QyxFQUFFLENBQUMsaUJBQWlCNEMsSUFBSSxPQUFPLG9CQUFnQixNQUFNZ0ksRUFBRSxDQUFDLEVBQUVySyxFQUFFLENBQUM4TSxJQUFJbEwsRUFBRWlMLFVBQVV2SyxJQUFJLG9CQUFnQjZMLEVBQUUsQ0FBQ0MsS0FBS3BELEVBQUVrRCxTQUFTbk8sSUFBSSxvQkFBZ0JrTyxFQUFFLENBQUMzSixJQUFJMEcsRUFBRWpMLEVBQUVtTyxTQUFTbk8sSUFBSSxvQkFBZ0JpUSxHQUFHLENBQUM1QixLQUFLcEQsRUFBRWtELFNBQVNuTyxFQUFFOE0sVUFBVSxpQ0FBaUMsRUFBNlBzRCxHQUFHLENBQUNMLGFBQWEscUJBQXFCcEIsT0FBT2hDLEVBQUVrQyxTQUFTbE8sRUFBRWlPLE1BQU1MLEdBQW95QzhCLEdBQUcsQ0FBQ04sYUFBYSxtQkFBbUJwQixPQUFPeE4sRUFBRTBOLFNBQVMsU0FBU3JFLEdBQUcsSUFBSS9LLEVBQUV1TyxFQUFFeEQsR0FBRyxNQUFNLFFBQVEvSyxFQUFFQSxFQUFFLEtBQUtBLEVBQUVDLEVBQUUsS0FBS0QsRUFBRUUsRUFBRSxLQUFLRixFQUFFa0QsRUFBRSxHQUFHLEVBQUVpTSxNQUFNTCxHLHlhQ1M5cVgrQixRQUFRLFFBQU9DLElBQUksQ0FBQ0MsU0FBUyxXQUFXQyxTQUFTLElBQUksMEJBQTBCLENBQUNDLFFBQVEsTUFBTUMsZUFBYyxXQUFPLG1CQUFQLENBQW9CLENBQUNILFNBQVMsV0FBV0ksT0FBTyxFQUFFbkYsSUFBSSxFQUFFSixLQUFLLEVBQUUseUJBQXlCLENBQUN3RixPQUFPLGlCQUFpQkMsZUFBZSxRQUFPUCxJQUFJLENBQUMvRSxNQUFNLElBQUl1RixPQUFPLEVBQUUsOEJBQThCLENBQUNDLGFBQWEsZUFBZSx1QkFBdUIsQ0FBQ0MsVUFBVSxtQ0FBbUMsZ0NBQWdDLENBQUNELGFBQWEsaUJBQWlCRSxNQUFLLFdBQU8sa0JBQVAsRUFBb0IsRUFBRUMsVUFBUyxDQUFFQyxXQUFXRCxNQUFNRSxXQUFXQyxNQUFNQyxTQUFRQyxTQUFTLFFBQU9qQixJQUFJLENBQUNrQixRQUFRLE9BQU9DLG9CQUFvQixrQkFBa0JDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVyRyxNQUFNLE1BQU1zRyxZQUFZLFFBQU92QixLQUFJLEVBQUVZLE1BQU1ZLFdBQVUsQ0FBRXZHLE1BQU0sR0FBR0ksT0FBTyxHQUFHcUYsVUFBVWMsT0FBTyxHQUFHWixNQUFNYSxtQ0FBbUNiLE1BQU1jLDZCQUE2QixHQUFHZCxNQUFNYSxpQ0FBaUNoQixhQUFhRyxNQUFNZSxvQkFBeU1DLE9BQU8sRUFBRTNTLE1BQU02TixTQUFTK0UsVUFBVSxJQUFJbEMsZ0JBQWdCLG1CQUFtQjFRLFVBQVVBLDBNQUEyRCxPQUFPLG9CQUFvQnNTLFlBQVksSUFBSU0sTUFBTS9FLE1BQU0sSUFBSUEsTUFBTTZDLGtCQUFpQixFQUFHbUMsT0FBTSxXQUFPLG1CQUFLQSxNQUFaLEVBQW1CLEVBQUVsQixNQUFNbUIsYUFBWSxDQUFFOUcsTUFBTSxPQUFPK0csWUFBWSxHQUFHQyxhQUFhLEdBQUdDLFVBQVUsYUFBYXJCLFdBQVdELE1BQU1FLFdBQVdDLE1BQU1DLFNBQVFtQixZQUFXLFdBQU8sZUFBUCxFQUFtQixFQUFFdkIsVUFBUyxDQUFFWCxTQUFTLFdBQVdJLE9BQU8sRUFBRW5GLElBQUksRUFBRWtILE1BQU0sRUFBRW5ILE1BQU0sR0FBR0ksT0FBTyxHQUFHZ0csUUFBUSxFQUFFYSxVQUFVLGFBQWE1QixPQUFPLFVBQVV2TixNQUFNNk4sTUFBTXlCLE1BQU10UCxVQUFTdVAsYUFBWTlELFlBQThGOEQsWUFBWSxDQUFDLEdBQWpGQyxJQUFJLE1BQU0vRCxZQUFZZ0UsSUFBSSxNQUFNaEUsWUFBWWlFLElBQUksTUFBTWpFLGFBQThCa0UsYUFBYW5WLE9BQU9vVixPQUFPTCxZQUFZTSxhQUFhLDBEQUEwREMsV0FBVyxvRUFBb0VDLFdBQVcsc0VBQXNFQyxXQUFXLHVDQUF1Q0MsZ0JBQWdCLDJCQUEyQkMsWUFBWSxDQUFDN1UsSURUaXhOLFNBQVNjLEdBQUcsT0FBTyxvQkFBZ0JvUSxFQUFFdkYsRUFBRSxDQUFDLEVBQUU3SyxFQUFFLENBQUNxUSxXQUFXRSxJQUFJLEVDUzF6Ti9SLElEVDBrVCxTQUFTd0IsR0FBRyxPQUFPLG9CQUFnQjBRLEdBQUc3RixFQUFFLENBQUMsRUFBRTdLLEVBQUUsQ0FBQ3FRLFdBQVdPLEtBQUssRUNTOW1UalMsSURUdW9RLFNBQVNxQixHQUFHLE9BQU8sb0JBQWdCMFEsR0FBRzdGLEVBQUUsQ0FBQyxFQUFFN0ssRUFBRSxDQUFDcVEsV0FBV00sS0FBSyxHQ1MxcVFxRCxjQUFjLENBQUM5VSxJQUFJLGNBQWNWLElBQUksbUJBQW1CRyxJQUFJLHNCQUFzQnNWLGFBQWFsVSxRQUFRLElBQUlxRSxNQUFNckUsT0FBT3FFLE1BQU1zUCxjQUFjLElBQUl0UCxNQUFNLE1BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQzNDLEVBQUVELEVBQUVFLEVBQUV3QixFQUFFLEdBQUdrQixNQUFNLE1BQU8sQ0FBQzNDLEVBQUVELEVBQUVFLEVBQUV3QixHQUFHcUIsSUFBSTRKLE9BQU0sRUFBRytGLFdBQVduVSxRQUFRLElBQUlBLE1BQU0sT0FBTyxJQUFJb1UsT0FBTSxFQUFHLEdBQUdSLFdBQVdsTSxLQUFLMUgsT0FBTyxDQUFDLElBQUlDLEVBQUVDLEVBQUVDLEVBQUVnRCxHQUFHK1EsYUFBYWxVLFFBQVFRLEVBQUVDLEVBQUVDLEdBQUcsa0JBQVk5QixJQUFJLENBQUNxQixFQUFFQyxFQUFFQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTyxDQUFDaVUsTUFBTXBVLE1BQU1aLFFBQVEsa0JBQVlBLFFBQVEsQ0FBQ2EsRUFBRUMsRUFBRUMsSUFBSWtVLFdBQVcsTUFBTTVWLElBQUl1QixNQUFNcEIsSUFBSSxRQUFRNEIsTUFBTUMsT0FBT0MsT0FBT3lDLEtBQUtoRSxJQUFJLElBQUksa0JBQVlBLElBQUksQ0FBQ2MsRUFBRUMsRUFBRUMsSUFBSThPLGdCQUFnQixDQUFDLEdBQUc0RSxXQUFXbk0sS0FBSzFILE9BQU8sQ0FBQyxJQUFJUSxFQUFFQyxFQUFFQyxFQUFFeUMsR0FBRytRLGFBQWFsVSxRQUFRQyxFQUFFQyxFQUFFQyxHQUFHLGtCQUFZMUIsSUFBSSxDQUFDK0IsRUFBRUMsRUFBRUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU8sQ0FBQzBULE1BQU1wVSxNQUFNWixRQUFRLGtCQUFZQSxRQUFRLENBQUNvQixFQUFFQyxFQUFFQyxJQUFJMlQsV0FBVyxNQUFNNVYsSUFBSSxRQUFRd0IsTUFBTUMsTUFBTUMsTUFBTWdELEtBQUt2RSxJQUFJb0IsTUFBTWIsSUFBSSxJQUFJLGtCQUFZQSxJQUFJLENBQUNxQixFQUFFQyxFQUFFQyxJQUFJdU8sZ0JBQWdCLENBQUMsSUFBSXFGLE1BQU10VSxNQUFNdUgsUUFBUSxJQUFJLElBQUk5SSxJQUFJLHNCQUFnQkEsSUFBSTZWLFFBQVEsa0JBQVk3VixJQUFJNlYsT0FBTzFWLElBQUksa0JBQVlBLElBQUlILEtBQUs4VixPQUFPdlUsTUFBTSxHQUFHLGNBQWMwSCxLQUFLMUgsT0FBT3VVLE9BQU9ELE1BQU1SLFdBQVdwTSxLQUFLMUgsU0FBU3VVLE9BQU8sSUFBSUQsU0FBU0MsT0FBT0MsV0FBVyxLQUFLSixNQUFNTixXQUFXcE0sS0FBSzZNLGFBQWEsSUFBSSxzQkFBZ0JwVixJQUFJb1YsT0FBUSxDQUFDLE1BQU1ILE9BQU0sQ0FBRyxDQUFDLE1BQU8sQ0FBQ0EsTUFBTXBVLE1BQU11VSxPQUFPblYsUUFBUSxrQkFBWUEsUUFBUVgsS0FBSzRWLFdBQVcsTUFBTTVWLElBQUksUUFBUUEsSUFBSSxPQUFPQSxJQUFJLE9BQU9BLElBQUksU0FBU0csSUFBSSxRQUFRQSxJQUFJLE9BQU9BLElBQUksUUFBUUEsSUFBSSxVQUFVTyxJQUFJb1YsT0FBTSxFQUFtZEUsY0FBYyxDQUFDQyxhQUFhL0YsWUFBWSxJQUFJM08sTUFBTTJVLFdBQVUsUUFBQUMsVUFBU0YsY0FBYyxLQUFLNVEsTUFBTStRLFdBQVUsUUFBQUQsV0FBUyxJQUFJVCxXQUFXblUsVUFBU3FVLFdBQVdTLGdCQUFlLFFBQUFGLFVBQVM5USxPQUFPdVEsWUFBWSxRQUFPLFFBQUFVLFlBQVUsS0FBSyxJQUFJQyxVQUFVTixjQUFjLEdBQUdPLFVBQVVkLFdBQVdhLFdBQVdMLFNBQVNLLFdBQVdILFNBQVNJLFdBQVdILGNBQWNHLFdBQVdaLFlBQVksTUFBTSxHQUFHLENBQUNLLGVBQWUsSUFBSVEsV0FBVSxRQUFBQyxVQUFRLElBQW4xQixFQUFDblYsTUFBTThELE1BQU11USxjQUFjLElBQUlyVSxRQUFROEQsT0FBT3NRLE1BQU0sT0FBT0gsY0FBY0ksWUFBWSxHQUFnQixRQUFiQSxXQUFtQixPQUFPdlEsUUFBUXVRLGFBQWFKLGNBQWNJLFlBQVksSUFBSXZRLE1BQU0zRSxJQUFJcVYsV0FBVyxLQUFLLElBQUksTUFBTyxJQUFJLHNCQUFnQnJWLElBQUkyRSxNQUFNM0UsTUFBTSxDQUFDLE1BQU0sT0FBTzhVLGNBQWM5VSxHQUFHLENBQUMsSUFBSWlXLE1BQU10UixNQUFNM0UsSUFBSWtGLE1BQU0wUCxpQkFBaUIsSUFBSXFCLE1BQU0sT0FBT3RCLFdBQVdwTSxLQUFLNUQsTUFBTTNFLEtBQUsyRSxNQUFNM0UsSUFBSThVLGNBQWM5VSxJQUFJLElBQUljLEVBQUVDLEVBQUVDLEdBQUdpVixNQUFNLEdBQUc3USxNQUFNLElBQUksTUFBTyxJQUFJdEUsSUFBSUEsSUFBSUMsSUFBSUEsSUFBSUMsSUFBSUEsR0FBQyxFQUF3WmtWLENBQWFyVixNQUFNOEQsTUFBTXVRLFlBQVlwRixlQUFjLENBQUNqUCxNQUFNOEQsTUFBTXVRLGFBQWFpQixhQUFZLFFBQUFDLGNBQVlDLFNBQVMsSUFBSUMsT0FBT3RCLFdBQVdxQixRQUFRMVUsRUFBRTJVLFFBQVF6VixPQUFPd1YsUUFBUSxHQUFHYixTQUFTN1QsR0FBTyxLQUFKQSxJQUFTK1QsY0FBUyxHQUFRbEcsY0FBUyxJQUFTOEcsU0FBU1osU0FBU1ksUUFBUVgsY0FBY1csT0FBT3BCLFlBQVkxRixTQUFTOEcsT0FBT3pWLE9BQU8sR0FBRyxDQUFDMk8sV0FBVytHLGlCQUFnQixRQUFBSCxjQUFZLEtBQUssSUFBSUksS0FBS2xDLGFBQWFwSSxRQUFRZ0osWUFBWSxFQUFFc0IsTUFBTWxDLGFBQWEzVCxTQUFTNlYsS0FBSyxHQUFHYixjQUFjckIsYUFBYWtDLE9BQU8sSUFBSUgsT0FBTzFSLFFBQVEyUCxhQUFha0MsUUFBUSxHQUFHaEIsU0FBU2EsUUFBUTdHLFNBQVM2RyxPQUFPLEdBQUcsQ0FBQzFSLE1BQU11USxXQUFXMUYsV0FBVyxNQUFPLENBQUMzTyxNQUFNa1YsVUFBVUksWUFBWXhSLE1BQU11USxXQUFXcUIsZ0JBQWUsRUFBR0UsR0FBRzVWLE9BQU9BLE1BQU11SCxRQUFRLE1BQU0sSUFBSTBILGNBQXFzQjRHLGFBQWEsRUFBRUMsS0FBSzlWLE1BQU0wVSxhQUFhL0YsU0FBU29ILFFBQVFDLE9BQU9DLGFBQWFDLFdBQVUsRUFBR0MsWUFBWSxJQUFJQyxtQkFBa0IsUUFBQWIsYUFBWWxMLFNBQVNzRSxTQUFTLEtBQUssQ0FBQ0EsWUFBVyxNQUFNLFVBQVUsWUFBWSxNQUFNLFdBQVcsaUJBQWtCOEYsY0FBY0MsYUFBYTBCLG9CQUFtQixRQUFRLFdBQTM4QixFQUFDSCxhQUFhSSxhQUFhaEMsY0FBYyxJQUFJaUMsZUFBZUMsb0JBQW1CLFFBQUEzQixVQUFTeUIsY0FBY2pDLE1BQU0sQ0FBQ2lDLGNBQWMsS0FBSSxRQUFBdEIsWUFBVSxVQUFvQixJQUFmc0IsY0FBdUJFLGtCQUFrQixHQUFHLEdBQUcsQ0FBQ0YsZUFBZSxJQUFJRyxTQUFRLFFBQUFyQixVQUFRLEtBQUtjLGNBQWMsSUFBSXpSLEtBQUlpUyxRQUF1QixpQkFBUkEsT0FBaUJ0QyxXQUFXc0MsUUFBUUEsT0FBT0MsTUFBTSxJQUFJdkMsV0FBV3NDLE9BQU8zUyxPQUFPMUUsUUFBUXFYLE9BQU9DLE9BQU92QyxXQUFXc0MsT0FBTzNTLFNBQVE2UyxPQUFPTCxnQkFBZ0IzSSxPQUFPQyxTQUFTdEcsT0FBTyxLQUFJLENBQUMyTyxhQUFhSyxpQkFBaUJNLFdBQVUsUUFBQXJCLGNBQVl6UixRQUFRQSxPQUFPc1EsUUFBUW9DLFFBQVFLLE1BQUtKLFFBQVFiLEdBQUdhLE9BQU9wQyxlQUFldUIsR0FBRzlSLE1BQU11USxnQkFBZWtDLG1CQUFrQk8sS0FBS0EsSUFBSUgsT0FBTzdTLFNBQVEsR0FBRyxDQUFDdVEsV0FBV21DLFVBQVUsTUFBTyxDQUFDQSxRQUFRSSxVQUFTLEVBQThTRyxDQUFXZCxhQUFhblMsTUFBTXVRLFlBQVkyQyxPQUFPaEQsWUFBWUssWUFBWTRDLFdBQVdkLFNBQVNlLE9BQU9ELFNBQVMsT0FBTyxvQkFBb0JuRyxRQUFRLENBQUMsZ0JBQWdCbUcsVUFBVSxvQkFBb0I5RixjQUFjLENBQUMrRSxVQUFVaUIsUUFBUUYsU0FBUyxDQUFDLFdBQU0sRUFBT0cscUJBQW9CLEVBQUdDLGdCQUFnQixJQUFJVCxVQUFVOVMsT0FBT3dULFFBQVEsb0JBQW9CaEcsZUFBZSxLQUFLLG9CQUFvQjBGLE9BQU8sQ0FBQ2xULE1BQWtCLGdCQUFab1IsVUFBMEIsVUFBVUEsVUFBVXZHLFNBQVMyRyxZQUFZUyxRQUFRQyxTQUFTUSxRQUFRMVcsT0FBTyxHQUFHLG9CQUFvQmtTLFNBQVMsS0FBS3dFLFFBQVFoUyxLQUFJLENBQUNpUyxPQUFPaFAsUUFBUSxvQkFBb0IsbUJBQVksQ0FBQ3BKLElBQUksR0FBR29ZLE9BQU96VyxTQUFTeUgsUUFBUThQLFdBQVUsRUFBR0QsUUFBUSxvQkFBb0I1RixLQUFLLENBQUM4RixLQUFLZixPQUFPclgsU0FBU3FYLE9BQU96VyxTQUFTLG9CQUFvQjJTLE9BQU8sQ0FBQzNTLE1BQU15VyxPQUFPcEMsWUFBWTlCLE9BQU96TyxPQUFPOFIsR0FBR2EsT0FBT3BDLGVBQWV1QixHQUFHOVIsTUFBTXVRLGFBQWFvRCxRQUFRLElBQUluQyxZQUFZbUIsT0FBT3pXLGVBQWMsb0JBQW9CMlMsT0FBTyxDQUFDM1MsTUFBTWtWLFVBQVVySCxNQUFNLENBQUMwRCxPQUFPLE1BQU0sb0JBQW9Cc0IsTUFBTSxDQUFDK0MsSUFBRyxvQkFBYUUsTUFBTTlWLE1BQU0yTyxTQUFTM0QsR0FBR3NLLFlBQVl0SyxFQUFFME0sT0FBTzFYLE9BQU8rVixRQUFRL0ssR0FBR0EsRUFBRTBNLE9BQU9DLFNBQVM3RSxTQUFTbUUsU0FBU1csWUFBWSxvQkFBb0I1WCxNQUFNLG9CQUFvQmtULFdBQVcsQ0FBQ3VFLFFBQVEvQixrQkFBa0IsS0FBSSxFQUFHbUMsY0FBY2hDLFkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9ub2RlX21vZHVsZXMvY29sb3ItbmFtZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9yb3V0ZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Rocm90dGxlLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL0BzdG9yeWJvb2svYWRkb24tZG9jcy9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvZGlzdC9pbmRleC5tanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL0BzdG9yeWJvb2svYWRkb24tZG9jcy9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9ibG9ja3MvZGlzdC9Db2xvci1QUlNKTVdOTS5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTUlUIGxpY2Vuc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xuY29uc3QgY3NzS2V5d29yZHMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG5cbi8vIE5PVEU6IGNvbnZlcnNpb25zIHNob3VsZCBvbmx5IHJldHVybiBwcmltaXRpdmUgdmFsdWVzIChpLmUuIGFycmF5cywgb3Jcbi8vICAgICAgIHZhbHVlcyB0aGF0IGdpdmUgY29ycmVjdCBgdHlwZW9mYCByZXN1bHRzKS5cbi8vICAgICAgIGRvIG5vdCB1c2UgYm94IHZhbHVlcyB0eXBlcyAoaS5lLiBOdW1iZXIoKSwgU3RyaW5nKCksIGV0Yy4pXG5cbmNvbnN0IHJldmVyc2VLZXl3b3JkcyA9IHt9O1xuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY3NzS2V5d29yZHMpKSB7XG5cdHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcbn1cblxuY29uc3QgY29udmVydCA9IHtcblx0cmdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3JnYid9LFxuXHRoc2w6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHNsJ30sXG5cdGhzdjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc3YnfSxcblx0aHdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2h3Yid9LFxuXHRjbXlrOiB7Y2hhbm5lbHM6IDQsIGxhYmVsczogJ2NteWsnfSxcblx0eHl6OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3h5eid9LFxuXHRsYWI6IHtjaGFubmVsczogMywgbGFiZWxzOiAnbGFiJ30sXG5cdGxjaDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsY2gnfSxcblx0aGV4OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydoZXgnXX0sXG5cdGtleXdvcmQ6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2tleXdvcmQnXX0sXG5cdGFuc2kxNjoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnYW5zaTE2J119LFxuXHRhbnNpMjU2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMjU2J119LFxuXHRoY2c6IHtjaGFubmVsczogMywgbGFiZWxzOiBbJ2gnLCAnYycsICdnJ119LFxuXHRhcHBsZToge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsncjE2JywgJ2cxNicsICdiMTYnXX0sXG5cdGdyYXk6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2dyYXknXX1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcblxuLy8gSGlkZSAuY2hhbm5lbHMgYW5kIC5sYWJlbHMgcHJvcGVydGllc1xuZm9yIChjb25zdCBtb2RlbCBvZiBPYmplY3Qua2V5cyhjb252ZXJ0KSkge1xuXHRpZiAoISgnY2hhbm5lbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmICghKCdsYWJlbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVsIGxhYmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuXHRcdHRocm93IG5ldyBFcnJvcignY2hhbm5lbCBhbmQgbGFiZWwgY291bnRzIG1pc21hdGNoOiAnICsgbW9kZWwpO1xuXHR9XG5cblx0Y29uc3Qge2NoYW5uZWxzLCBsYWJlbHN9ID0gY29udmVydFttb2RlbF07XG5cdGRlbGV0ZSBjb252ZXJ0W21vZGVsXS5jaGFubmVscztcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnY2hhbm5lbHMnLCB7dmFsdWU6IGNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W21vZGVsXSwgJ2xhYmVscycsIHt2YWx1ZTogbGFiZWxzfSk7XG59XG5cbmNvbnZlcnQucmdiLmhzbCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuXHRjb25zdCBkZWx0YSA9IG1heCAtIG1pbjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdGggPSAwO1xuXHR9IGVsc2UgaWYgKHIgPT09IG1heCkge1xuXHRcdGggPSAoZyAtIGIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoZyA9PT0gbWF4KSB7XG5cdFx0aCA9IDIgKyAoYiAtIHIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoYiA9PT0gbWF4KSB7XG5cdFx0aCA9IDQgKyAociAtIGcpIC8gZGVsdGE7XG5cdH1cblxuXHRoID0gTWF0aC5taW4oaCAqIDYwLCAzNjApO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgbCA9IChtaW4gKyBtYXgpIC8gMjtcblxuXHRpZiAobWF4ID09PSBtaW4pIHtcblx0XHRzID0gMDtcblx0fSBlbHNlIGlmIChsIDw9IDAuNSkge1xuXHRcdHMgPSBkZWx0YSAvIChtYXggKyBtaW4pO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkZWx0YSAvICgyIC0gbWF4IC0gbWluKTtcblx0fVxuXG5cdHJldHVybiBbaCwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5oc3YgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByZGlmO1xuXHRsZXQgZ2RpZjtcblx0bGV0IGJkaWY7XG5cdGxldCBoO1xuXHRsZXQgcztcblxuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCB2ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IGRpZmZjID0gZnVuY3Rpb24gKGMpIHtcblx0XHRyZXR1cm4gKHYgLSBjKSAvIDYgLyBkaWZmICsgMSAvIDI7XG5cdH07XG5cblx0aWYgKGRpZmYgPT09IDApIHtcblx0XHRoID0gMDtcblx0XHRzID0gMDtcblx0fSBlbHNlIHtcblx0XHRzID0gZGlmZiAvIHY7XG5cdFx0cmRpZiA9IGRpZmZjKHIpO1xuXHRcdGdkaWYgPSBkaWZmYyhnKTtcblx0XHRiZGlmID0gZGlmZmMoYik7XG5cblx0XHRpZiAociA9PT0gdikge1xuXHRcdFx0aCA9IGJkaWYgLSBnZGlmO1xuXHRcdH0gZWxzZSBpZiAoZyA9PT0gdikge1xuXHRcdFx0aCA9ICgxIC8gMykgKyByZGlmIC0gYmRpZjtcblx0XHR9IGVsc2UgaWYgKGIgPT09IHYpIHtcblx0XHRcdGggPSAoMiAvIDMpICsgZ2RpZiAtIHJkaWY7XG5cdFx0fVxuXG5cdFx0aWYgKGggPCAwKSB7XG5cdFx0XHRoICs9IDE7XG5cdFx0fSBlbHNlIGlmIChoID4gMSkge1xuXHRcdFx0aCAtPSAxO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBbXG5cdFx0aCAqIDM2MCxcblx0XHRzICogMTAwLFxuXHRcdHYgKiAxMDBcblx0XTtcbn07XG5cbmNvbnZlcnQucmdiLmh3YiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXTtcblx0Y29uc3QgZyA9IHJnYlsxXTtcblx0bGV0IGIgPSByZ2JbMl07XG5cdGNvbnN0IGggPSBjb252ZXJ0LnJnYi5oc2wocmdiKVswXTtcblx0Y29uc3QgdyA9IDEgLyAyNTUgKiBNYXRoLm1pbihyLCBNYXRoLm1pbihnLCBiKSk7XG5cblx0YiA9IDEgLSAxIC8gMjU1ICogTWF0aC5tYXgociwgTWF0aC5tYXgoZywgYikpO1xuXG5cdHJldHVybiBbaCwgdyAqIDEwMCwgYiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5jbXlrID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXG5cdGNvbnN0IGsgPSBNYXRoLm1pbigxIC0gciwgMSAtIGcsIDEgLSBiKTtcblx0Y29uc3QgYyA9ICgxIC0gciAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXHRjb25zdCBtID0gKDEgLSBnIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IHkgPSAoMSAtIGIgLSBrKSAvICgxIC0gaykgfHwgMDtcblxuXHRyZXR1cm4gW2MgKiAxMDAsIG0gKiAxMDAsIHkgKiAxMDAsIGsgKiAxMDBdO1xufTtcblxuZnVuY3Rpb24gY29tcGFyYXRpdmVEaXN0YW5jZSh4LCB5KSB7XG5cdC8qXG5cdFx0U2VlIGh0dHBzOi8vZW4ubS53aWtpcGVkaWEub3JnL3dpa2kvRXVjbGlkZWFuX2Rpc3RhbmNlI1NxdWFyZWRfRXVjbGlkZWFuX2Rpc3RhbmNlXG5cdCovXG5cdHJldHVybiAoXG5cdFx0KCh4WzBdIC0geVswXSkgKiogMikgK1xuXHRcdCgoeFsxXSAtIHlbMV0pICoqIDIpICtcblx0XHQoKHhbMl0gLSB5WzJdKSAqKiAyKVxuXHQpO1xufVxuXG5jb252ZXJ0LnJnYi5rZXl3b3JkID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByZXZlcnNlZCA9IHJldmVyc2VLZXl3b3Jkc1tyZ2JdO1xuXHRpZiAocmV2ZXJzZWQpIHtcblx0XHRyZXR1cm4gcmV2ZXJzZWQ7XG5cdH1cblxuXHRsZXQgY3VycmVudENsb3Nlc3REaXN0YW5jZSA9IEluZmluaXR5O1xuXHRsZXQgY3VycmVudENsb3Nlc3RLZXl3b3JkO1xuXG5cdGZvciAoY29uc3Qga2V5d29yZCBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0XHRjb25zdCB2YWx1ZSA9IGNzc0tleXdvcmRzW2tleXdvcmRdO1xuXG5cdFx0Ly8gQ29tcHV0ZSBjb21wYXJhdGl2ZSBkaXN0YW5jZVxuXHRcdGNvbnN0IGRpc3RhbmNlID0gY29tcGFyYXRpdmVEaXN0YW5jZShyZ2IsIHZhbHVlKTtcblxuXHRcdC8vIENoZWNrIGlmIGl0cyBsZXNzLCBpZiBzbyBzZXQgYXMgY2xvc2VzdFxuXHRcdGlmIChkaXN0YW5jZSA8IGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UpIHtcblx0XHRcdGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcblx0XHRcdGN1cnJlbnRDbG9zZXN0S2V5d29yZCA9IGtleXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbn07XG5cbmNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbiAoa2V5d29yZCkge1xuXHRyZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG59O1xuXG5jb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByID0gcmdiWzBdIC8gMjU1O1xuXHRsZXQgZyA9IHJnYlsxXSAvIDI1NTtcblx0bGV0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Ly8gQXNzdW1lIHNSR0Jcblx0ciA9IHIgPiAwLjA0MDQ1ID8gKCgociArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKHIgLyAxMi45Mik7XG5cdGcgPSBnID4gMC4wNDA0NSA/ICgoKGcgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChnIC8gMTIuOTIpO1xuXHRiID0gYiA+IDAuMDQwNDUgPyAoKChiICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAoYiAvIDEyLjkyKTtcblxuXHRjb25zdCB4ID0gKHIgKiAwLjQxMjQpICsgKGcgKiAwLjM1NzYpICsgKGIgKiAwLjE4MDUpO1xuXHRjb25zdCB5ID0gKHIgKiAwLjIxMjYpICsgKGcgKiAwLjcxNTIpICsgKGIgKiAwLjA3MjIpO1xuXHRjb25zdCB6ID0gKHIgKiAwLjAxOTMpICsgKGcgKiAwLjExOTIpICsgKGIgKiAwLjk1MDUpO1xuXG5cdHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHh5eiA9IGNvbnZlcnQucmdiLnh5eihyZ2IpO1xuXHRsZXQgeCA9IHh5elswXTtcblx0bGV0IHkgPSB4eXpbMV07XG5cdGxldCB6ID0geHl6WzJdO1xuXG5cdHggLz0gOTUuMDQ3O1xuXHR5IC89IDEwMDtcblx0eiAvPSAxMDguODgzO1xuXG5cdHggPSB4ID4gMC4wMDg4NTYgPyAoeCAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHgpICsgKDE2IC8gMTE2KTtcblx0eSA9IHkgPiAwLjAwODg1NiA/ICh5ICoqICgxIC8gMykpIDogKDcuNzg3ICogeSkgKyAoMTYgLyAxMTYpO1xuXHR6ID0geiA+IDAuMDA4ODU2ID8gKHogKiogKDEgLyAzKSkgOiAoNy43ODcgKiB6KSArICgxNiAvIDExNik7XG5cblx0Y29uc3QgbCA9ICgxMTYgKiB5KSAtIDE2O1xuXHRjb25zdCBhID0gNTAwICogKHggLSB5KTtcblx0Y29uc3QgYiA9IDIwMCAqICh5IC0geik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQuaHNsLnJnYiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXSAvIDM2MDtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblx0bGV0IHQyO1xuXHRsZXQgdDM7XG5cdGxldCB2YWw7XG5cblx0aWYgKHMgPT09IDApIHtcblx0XHR2YWwgPSBsICogMjU1O1xuXHRcdHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG5cdH1cblxuXHRpZiAobCA8IDAuNSkge1xuXHRcdHQyID0gbCAqICgxICsgcyk7XG5cdH0gZWxzZSB7XG5cdFx0dDIgPSBsICsgcyAtIGwgKiBzO1xuXHR9XG5cblx0Y29uc3QgdDEgPSAyICogbCAtIHQyO1xuXG5cdGNvbnN0IHJnYiA9IFswLCAwLCAwXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHR0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuXHRcdGlmICh0MyA8IDApIHtcblx0XHRcdHQzKys7XG5cdFx0fVxuXG5cdFx0aWYgKHQzID4gMSkge1xuXHRcdFx0dDMtLTtcblx0XHR9XG5cblx0XHRpZiAoNiAqIHQzIDwgMSkge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiA2ICogdDM7XG5cdFx0fSBlbHNlIGlmICgyICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0Mjtcblx0XHR9IGVsc2UgaWYgKDMgKiB0MyA8IDIpIHtcblx0XHRcdHZhbCA9IHQxICsgKHQyIC0gdDEpICogKDIgLyAzIC0gdDMpICogNjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsID0gdDE7XG5cdFx0fVxuXG5cdFx0cmdiW2ldID0gdmFsICogMjU1O1xuXHR9XG5cblx0cmV0dXJuIHJnYjtcbn07XG5cbmNvbnZlcnQuaHNsLmhzdiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXTtcblx0bGV0IHMgPSBoc2xbMV0gLyAxMDA7XG5cdGxldCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgc21pbiA9IHM7XG5cdGNvbnN0IGxtaW4gPSBNYXRoLm1heChsLCAwLjAxKTtcblxuXHRsICo9IDI7XG5cdHMgKj0gKGwgPD0gMSkgPyBsIDogMiAtIGw7XG5cdHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuXHRjb25zdCB2ID0gKGwgKyBzKSAvIDI7XG5cdGNvbnN0IHN2ID0gbCA9PT0gMCA/ICgyICogc21pbikgLyAobG1pbiArIHNtaW4pIDogKDIgKiBzKSAvIChsICsgcyk7XG5cblx0cmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IGggPSBoc3ZbMF0gLyA2MDtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0bGV0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cdGNvbnN0IGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG5cblx0Y29uc3QgZiA9IGggLSBNYXRoLmZsb29yKGgpO1xuXHRjb25zdCBwID0gMjU1ICogdiAqICgxIC0gcyk7XG5cdGNvbnN0IHEgPSAyNTUgKiB2ICogKDEgLSAocyAqIGYpKTtcblx0Y29uc3QgdCA9IDI1NSAqIHYgKiAoMSAtIChzICogKDEgLSBmKSkpO1xuXHR2ICo9IDI1NTtcblxuXHRzd2l0Y2ggKGhpKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0cmV0dXJuIFt2LCB0LCBwXTtcblx0XHRjYXNlIDE6XG5cdFx0XHRyZXR1cm4gW3EsIHYsIHBdO1xuXHRcdGNhc2UgMjpcblx0XHRcdHJldHVybiBbcCwgdiwgdF07XG5cdFx0Y2FzZSAzOlxuXHRcdFx0cmV0dXJuIFtwLCBxLCB2XTtcblx0XHRjYXNlIDQ6XG5cdFx0XHRyZXR1cm4gW3QsIHAsIHZdO1xuXHRcdGNhc2UgNTpcblx0XHRcdHJldHVybiBbdiwgcCwgcV07XG5cdH1cbn07XG5cbmNvbnZlcnQuaHN2LmhzbCA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXTtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0Y29uc3QgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3Qgdm1pbiA9IE1hdGgubWF4KHYsIDAuMDEpO1xuXHRsZXQgc2w7XG5cdGxldCBsO1xuXG5cdGwgPSAoMiAtIHMpICogdjtcblx0Y29uc3QgbG1pbiA9ICgyIC0gcykgKiB2bWluO1xuXHRzbCA9IHMgKiB2bWluO1xuXHRzbCAvPSAobG1pbiA8PSAxKSA/IGxtaW4gOiAyIC0gbG1pbjtcblx0c2wgPSBzbCB8fCAwO1xuXHRsIC89IDI7XG5cblx0cmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtY29sb3IvI2h3Yi10by1yZ2JcbmNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uIChod2IpIHtcblx0Y29uc3QgaCA9IGh3YlswXSAvIDM2MDtcblx0bGV0IHdoID0gaHdiWzFdIC8gMTAwO1xuXHRsZXQgYmwgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHJhdGlvID0gd2ggKyBibDtcblx0bGV0IGY7XG5cblx0Ly8gV2ggKyBibCBjYW50IGJlID4gMVxuXHRpZiAocmF0aW8gPiAxKSB7XG5cdFx0d2ggLz0gcmF0aW87XG5cdFx0YmwgLz0gcmF0aW87XG5cdH1cblxuXHRjb25zdCBpID0gTWF0aC5mbG9vcig2ICogaCk7XG5cdGNvbnN0IHYgPSAxIC0gYmw7XG5cdGYgPSA2ICogaCAtIGk7XG5cblx0aWYgKChpICYgMHgwMSkgIT09IDApIHtcblx0XHRmID0gMSAtIGY7XG5cdH1cblxuXHRjb25zdCBuID0gd2ggKyBmICogKHYgLSB3aCk7IC8vIExpbmVhciBpbnRlcnBvbGF0aW9uXG5cblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUsbm8tbXVsdGktc3BhY2VzICovXG5cdHN3aXRjaCAoaSkge1xuXHRcdGRlZmF1bHQ6XG5cdFx0Y2FzZSA2OlxuXHRcdGNhc2UgMDogciA9IHY7ICBnID0gbjsgIGIgPSB3aDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiByID0gbjsgIGcgPSB2OyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDI6IHIgPSB3aDsgZyA9IHY7ICBiID0gbjsgYnJlYWs7XG5cdFx0Y2FzZSAzOiByID0gd2g7IGcgPSBuOyAgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNDogciA9IG47ICBnID0gd2g7IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDU6IHIgPSB2OyAgZyA9IHdoOyBiID0gbjsgYnJlYWs7XG5cdH1cblx0LyogZXNsaW50LWVuYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC5jbXlrLnJnYiA9IGZ1bmN0aW9uIChjbXlrKSB7XG5cdGNvbnN0IGMgPSBjbXlrWzBdIC8gMTAwO1xuXHRjb25zdCBtID0gY215a1sxXSAvIDEwMDtcblx0Y29uc3QgeSA9IGNteWtbMl0gLyAxMDA7XG5cdGNvbnN0IGsgPSBjbXlrWzNdIC8gMTAwO1xuXG5cdGNvbnN0IHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcblx0Y29uc3QgZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBiID0gMSAtIE1hdGgubWluKDEsIHkgKiAoMSAtIGspICsgayk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0Y29uc3QgeCA9IHh5elswXSAvIDEwMDtcblx0Y29uc3QgeSA9IHh5elsxXSAvIDEwMDtcblx0Y29uc3QgeiA9IHh5elsyXSAvIDEwMDtcblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblxuXHRyID0gKHggKiAzLjI0MDYpICsgKHkgKiAtMS41MzcyKSArICh6ICogLTAuNDk4Nik7XG5cdGcgPSAoeCAqIC0wLjk2ODkpICsgKHkgKiAxLjg3NTgpICsgKHogKiAwLjA0MTUpO1xuXHRiID0gKHggKiAwLjA1NTcpICsgKHkgKiAtMC4yMDQwKSArICh6ICogMS4wNTcwKTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChyICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IHIgKiAxMi45MjtcblxuXHRnID0gZyA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChnICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGcgKiAxMi45MjtcblxuXHRiID0gYiA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChiICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGIgKiAxMi45MjtcblxuXHRyID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuXHRnID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgZyksIDEpO1xuXHRiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0Lnh5ei5sYWIgPSBmdW5jdGlvbiAoeHl6KSB7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgeDtcblx0bGV0IHk7XG5cdGxldCB6O1xuXG5cdHkgPSAobCArIDE2KSAvIDExNjtcblx0eCA9IGEgLyA1MDAgKyB5O1xuXHR6ID0geSAtIGIgLyAyMDA7XG5cblx0Y29uc3QgeTIgPSB5ICoqIDM7XG5cdGNvbnN0IHgyID0geCAqKiAzO1xuXHRjb25zdCB6MiA9IHogKiogMztcblx0eSA9IHkyID4gMC4wMDg4NTYgPyB5MiA6ICh5IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHggPSB4MiA+IDAuMDA4ODU2ID8geDIgOiAoeCAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXHR6ID0gejIgPiAwLjAwODg1NiA/IHoyIDogKHogLSAxNiAvIDExNikgLyA3Ljc4NztcblxuXHR4ICo9IDk1LjA0Nztcblx0eSAqPSAxMDA7XG5cdHogKj0gMTA4Ljg4MztcblxuXHRyZXR1cm4gW3gsIHksIHpdO1xufTtcblxuY29udmVydC5sYWIubGNoID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgaDtcblxuXHRjb25zdCBociA9IE1hdGguYXRhbjIoYiwgYSk7XG5cdGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgYyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcblxuXHRyZXR1cm4gW2wsIGMsIGhdO1xufTtcblxuY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24gKGxjaCkge1xuXHRjb25zdCBsID0gbGNoWzBdO1xuXHRjb25zdCBjID0gbGNoWzFdO1xuXHRjb25zdCBoID0gbGNoWzJdO1xuXG5cdGNvbnN0IGhyID0gaCAvIDM2MCAqIDIgKiBNYXRoLlBJO1xuXHRjb25zdCBhID0gYyAqIE1hdGguY29zKGhyKTtcblx0Y29uc3QgYiA9IGMgKiBNYXRoLnNpbihocik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kxNiA9IGZ1bmN0aW9uIChhcmdzLCBzYXR1cmF0aW9uID0gbnVsbCkge1xuXHRjb25zdCBbciwgZywgYl0gPSBhcmdzO1xuXHRsZXQgdmFsdWUgPSBzYXR1cmF0aW9uID09PSBudWxsID8gY29udmVydC5yZ2IuaHN2KGFyZ3MpWzJdIDogc2F0dXJhdGlvbjsgLy8gSHN2IC0+IGFuc2kxNiBvcHRpbWl6YXRpb25cblxuXHR2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG5cblx0aWYgKHZhbHVlID09PSAwKSB7XG5cdFx0cmV0dXJuIDMwO1xuXHR9XG5cblx0bGV0IGFuc2kgPSAzMFxuXHRcdCsgKChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIpXG5cdFx0fCAoTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxKVxuXHRcdHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG5cblx0aWYgKHZhbHVlID09PSAyKSB7XG5cdFx0YW5zaSArPSA2MDtcblx0fVxuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gT3B0aW1pemF0aW9uIGhlcmU7IHdlIGFscmVhZHkga25vdyB0aGUgdmFsdWUgYW5kIGRvbid0IG5lZWQgdG8gZ2V0XG5cdC8vIGl0IGNvbnZlcnRlZCBmb3IgdXMuXG5cdHJldHVybiBjb252ZXJ0LnJnYi5hbnNpMTYoY29udmVydC5oc3YucmdiKGFyZ3MpLCBhcmdzWzJdKTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kyNTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCByID0gYXJnc1swXTtcblx0Y29uc3QgZyA9IGFyZ3NbMV07XG5cdGNvbnN0IGIgPSBhcmdzWzJdO1xuXG5cdC8vIFdlIHVzZSB0aGUgZXh0ZW5kZWQgZ3JleXNjYWxlIHBhbGV0dGUgaGVyZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG5cdC8vIGJsYWNrIGFuZCB3aGl0ZS4gbm9ybWFsIHBhbGV0dGUgb25seSBoYXMgNCBncmV5c2NhbGUgc2hhZGVzLlxuXHRpZiAociA9PT0gZyAmJiBnID09PSBiKSB7XG5cdFx0aWYgKHIgPCA4KSB7XG5cdFx0XHRyZXR1cm4gMTY7XG5cdFx0fVxuXG5cdFx0aWYgKHIgPiAyNDgpIHtcblx0XHRcdHJldHVybiAyMzE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoKChyIC0gOCkgLyAyNDcpICogMjQpICsgMjMyO1xuXHR9XG5cblx0Y29uc3QgYW5zaSA9IDE2XG5cdFx0KyAoMzYgKiBNYXRoLnJvdW5kKHIgLyAyNTUgKiA1KSlcblx0XHQrICg2ICogTWF0aC5yb3VuZChnIC8gMjU1ICogNSkpXG5cdFx0KyBNYXRoLnJvdW5kKGIgLyAyNTUgKiA1KTtcblxuXHRyZXR1cm4gYW5zaTtcbn07XG5cbmNvbnZlcnQuYW5zaTE2LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGxldCBjb2xvciA9IGFyZ3MgJSAxMDtcblxuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChjb2xvciA9PT0gMCB8fCBjb2xvciA9PT0gNykge1xuXHRcdGlmIChhcmdzID4gNTApIHtcblx0XHRcdGNvbG9yICs9IDMuNTtcblx0XHR9XG5cblx0XHRjb2xvciA9IGNvbG9yIC8gMTAuNSAqIDI1NTtcblxuXHRcdHJldHVybiBbY29sb3IsIGNvbG9yLCBjb2xvcl07XG5cdH1cblxuXHRjb25zdCBtdWx0ID0gKH5+KGFyZ3MgPiA1MCkgKyAxKSAqIDAuNTtcblx0Y29uc3QgciA9ICgoY29sb3IgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBnID0gKCgoY29sb3IgPj4gMSkgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBiID0gKCgoY29sb3IgPj4gMikgJiAxKSAqIG11bHQpICogMjU1O1xuXG5cdHJldHVybiBbciwgZywgYl07XG59O1xuXG5jb252ZXJ0LmFuc2kyNTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gSGFuZGxlIGdyZXlzY2FsZVxuXHRpZiAoYXJncyA+PSAyMzIpIHtcblx0XHRjb25zdCBjID0gKGFyZ3MgLSAyMzIpICogMTAgKyA4O1xuXHRcdHJldHVybiBbYywgYywgY107XG5cdH1cblxuXHRhcmdzIC09IDE2O1xuXG5cdGxldCByZW07XG5cdGNvbnN0IHIgPSBNYXRoLmZsb29yKGFyZ3MgLyAzNikgLyA1ICogMjU1O1xuXHRjb25zdCBnID0gTWF0aC5mbG9vcigocmVtID0gYXJncyAlIDM2KSAvIDYpIC8gNSAqIDI1NTtcblx0Y29uc3QgYiA9IChyZW0gJSA2KSAvIDUgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhleCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IGludGVnZXIgPSAoKE1hdGgucm91bmQoYXJnc1swXSkgJiAweEZGKSA8PCAxNilcblx0XHQrICgoTWF0aC5yb3VuZChhcmdzWzFdKSAmIDB4RkYpIDw8IDgpXG5cdFx0KyAoTWF0aC5yb3VuZChhcmdzWzJdKSAmIDB4RkYpO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LmhleC5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBbMCwgMCwgMF07XG5cdH1cblxuXHRsZXQgY29sb3JTdHJpbmcgPSBtYXRjaFswXTtcblxuXHRpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG5cdFx0Y29sb3JTdHJpbmcgPSBjb2xvclN0cmluZy5zcGxpdCgnJykubWFwKGNoYXIgPT4ge1xuXHRcdFx0cmV0dXJuIGNoYXIgKyBjaGFyO1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0Y29uc3QgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG5cdGNvbnN0IHIgPSAoaW50ZWdlciA+PiAxNikgJiAweEZGO1xuXHRjb25zdCBnID0gKGludGVnZXIgPj4gOCkgJiAweEZGO1xuXHRjb25zdCBiID0gaW50ZWdlciAmIDB4RkY7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhjZyA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpO1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihNYXRoLm1pbihyLCBnKSwgYik7XG5cdGNvbnN0IGNocm9tYSA9IChtYXggLSBtaW4pO1xuXHRsZXQgZ3JheXNjYWxlO1xuXHRsZXQgaHVlO1xuXG5cdGlmIChjaHJvbWEgPCAxKSB7XG5cdFx0Z3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuXHR9IGVsc2Uge1xuXHRcdGdyYXlzY2FsZSA9IDA7XG5cdH1cblxuXHRpZiAoY2hyb21hIDw9IDApIHtcblx0XHRodWUgPSAwO1xuXHR9IGVsc2Vcblx0aWYgKG1heCA9PT0gcikge1xuXHRcdGh1ZSA9ICgoZyAtIGIpIC8gY2hyb21hKSAlIDY7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSBnKSB7XG5cdFx0aHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG5cdH0gZWxzZSB7XG5cdFx0aHVlID0gNCArIChyIC0gZykgLyBjaHJvbWE7XG5cdH1cblxuXHRodWUgLz0gNjtcblx0aHVlICU9IDE7XG5cblx0cmV0dXJuIFtodWUgKiAzNjAsIGNocm9tYSAqIDEwMCwgZ3JheXNjYWxlICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHNsLmhjZyA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblxuXHRjb25zdCBjID0gbCA8IDAuNSA/ICgyLjAgKiBzICogbCkgOiAoMi4wICogcyAqICgxLjAgLSBsKSk7XG5cblx0bGV0IGYgPSAwO1xuXHRpZiAoYyA8IDEuMCkge1xuXHRcdGYgPSAobCAtIDAuNSAqIGMpIC8gKDEuMCAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBzICogdjtcblx0bGV0IGYgPSAwO1xuXG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBoID0gaGNnWzBdIC8gMzYwO1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGlmIChjID09PSAwLjApIHtcblx0XHRyZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuXHR9XG5cblx0Y29uc3QgcHVyZSA9IFswLCAwLCAwXTtcblx0Y29uc3QgaGkgPSAoaCAlIDEpICogNjtcblx0Y29uc3QgdiA9IGhpICUgMTtcblx0Y29uc3QgdyA9IDEgLSB2O1xuXHRsZXQgbWcgPSAwO1xuXG5cdC8qIGVzbGludC1kaXNhYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cdHN3aXRjaCAoTWF0aC5mbG9vcihoaSkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IHY7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHRwdXJlWzBdID0gdzsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSB2OyBicmVhaztcblx0XHRjYXNlIDM6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IHc7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRjYXNlIDQ6XG5cdFx0XHRwdXJlWzBdID0gdjsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cHVyZVswXSA9IDE7IHB1cmVbMV0gPSAwOyBwdXJlWzJdID0gdztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cblx0bWcgPSAoMS4wIC0gYykgKiBnO1xuXG5cdHJldHVybiBbXG5cdFx0KGMgKiBwdXJlWzBdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsxXSArIG1nKSAqIDI1NSxcblx0XHQoYyAqIHB1cmVbMl0gKyBtZykgKiAyNTVcblx0XTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzdiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCB2ID0gYyArIGcgKiAoMS4wIC0gYyk7XG5cdGxldCBmID0gMDtcblxuXHRpZiAodiA+IDAuMCkge1xuXHRcdGYgPSBjIC8gdjtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBmICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzbCA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCBsID0gZyAqICgxLjAgLSBjKSArIDAuNSAqIGM7XG5cdGxldCBzID0gMDtcblxuXHRpZiAobCA+IDAuMCAmJiBsIDwgMC41KSB7XG5cdFx0cyA9IGMgLyAoMiAqIGwpO1xuXHR9IGVsc2Vcblx0aWYgKGwgPj0gMC41ICYmIGwgPCAxLjApIHtcblx0XHRzID0gYyAvICgyICogKDEgLSBsKSk7XG5cdH1cblxuXHRyZXR1cm4gW2hjZ1swXSwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5od2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0cmV0dXJuIFtoY2dbMF0sICh2IC0gYykgKiAxMDAsICgxIC0gdikgKiAxMDBdO1xufTtcblxuY29udmVydC5od2IuaGNnID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCB3ID0gaHdiWzFdIC8gMTAwO1xuXHRjb25zdCBiID0gaHdiWzJdIC8gMTAwO1xuXHRjb25zdCB2ID0gMSAtIGI7XG5cdGNvbnN0IGMgPSB2IC0gdztcblx0bGV0IGcgPSAwO1xuXG5cdGlmIChjIDwgMSkge1xuXHRcdGcgPSAodiAtIGMpIC8gKDEgLSBjKTtcblx0fVxuXG5cdHJldHVybiBbaHdiWzBdLCBjICogMTAwLCBnICogMTAwXTtcbn07XG5cbmNvbnZlcnQuYXBwbGUucmdiID0gZnVuY3Rpb24gKGFwcGxlKSB7XG5cdHJldHVybiBbKGFwcGxlWzBdIC8gNjU1MzUpICogMjU1LCAoYXBwbGVbMV0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsyXSAvIDY1NTM1KSAqIDI1NV07XG59O1xuXG5jb252ZXJ0LnJnYi5hcHBsZSA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIFsocmdiWzBdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzFdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzJdIC8gMjU1KSAqIDY1NTM1XTtcbn07XG5cbmNvbnZlcnQuZ3JheS5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gW2FyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTVdO1xufTtcblxuY29udmVydC5ncmF5LmhzbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbMCwgMCwgYXJnc1swXV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHN2ID0gY29udmVydC5ncmF5LmhzbDtcblxuY29udmVydC5ncmF5Lmh3YiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbMCwgMTAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5jbXlrID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAwLCAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5sYWIgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gW2dyYXlbMF0sIDAsIDBdO1xufTtcblxuY29udmVydC5ncmF5LmhleCA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdGNvbnN0IHZhbCA9IE1hdGgucm91bmQoZ3JheVswXSAvIDEwMCAqIDI1NSkgJiAweEZGO1xuXHRjb25zdCBpbnRlZ2VyID0gKHZhbCA8PCAxNikgKyAodmFsIDw8IDgpICsgdmFsO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCB2YWwgPSAocmdiWzBdICsgcmdiWzFdICsgcmdiWzJdKSAvIDM7XG5cdHJldHVybiBbdmFsIC8gMjU1ICogMTAwXTtcbn07XG4iLCJjb25zdCBjb252ZXJzaW9ucyA9IHJlcXVpcmUoJy4vY29udmVyc2lvbnMnKTtcbmNvbnN0IHJvdXRlID0gcmVxdWlyZSgnLi9yb3V0ZScpO1xuXG5jb25zdCBjb252ZXJ0ID0ge307XG5cbmNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuZnVuY3Rpb24gd3JhcFJhdyhmbikge1xuXHRjb25zdCB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZuKGFyZ3MpO1xuXHR9O1xuXG5cdC8vIFByZXNlcnZlIC5jb252ZXJzaW9uIHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZVxuXHRpZiAoJ2NvbnZlcnNpb24nIGluIGZuKSB7XG5cdFx0d3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuXHR9XG5cblx0cmV0dXJuIHdyYXBwZWRGbjtcbn1cblxuZnVuY3Rpb24gd3JhcFJvdW5kZWQoZm4pIHtcblx0Y29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRjb25zdCBhcmcwID0gYXJnc1swXTtcblxuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gZm4oYXJncyk7XG5cblx0XHQvLyBXZSdyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IGhlcmUuXG5cdFx0Ly8gc2VlIG5vdGljZSBpbiBjb252ZXJzaW9ucy5qczsgZG9uJ3QgdXNlIGJveCB0eXBlc1xuXHRcdC8vIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zLlxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Zm9yIChsZXQgbGVuID0gcmVzdWx0Lmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyBQcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbm1vZGVscy5mb3JFYWNoKGZyb21Nb2RlbCA9PiB7XG5cdGNvbnZlcnRbZnJvbU1vZGVsXSA9IHt9O1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5jaGFubmVsc30pO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmxhYmVsc30pO1xuXG5cdGNvbnN0IHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG5cdGNvbnN0IHJvdXRlTW9kZWxzID0gT2JqZWN0LmtleXMocm91dGVzKTtcblxuXHRyb3V0ZU1vZGVscy5mb3JFYWNoKHRvTW9kZWwgPT4ge1xuXHRcdGNvbnN0IGZuID0gcm91dGVzW3RvTW9kZWxdO1xuXG5cdFx0Y29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdID0gd3JhcFJvdW5kZWQoZm4pO1xuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXS5yYXcgPSB3cmFwUmF3KGZuKTtcblx0fSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuIiwiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiIsImNvbnN0IGNvbnZlcnNpb25zID0gcmVxdWlyZSgnLi9jb252ZXJzaW9ucycpO1xuXG4vKlxuXHRUaGlzIGZ1bmN0aW9uIHJvdXRlcyBhIG1vZGVsIHRvIGFsbCBvdGhlciBtb2RlbHMuXG5cblx0YWxsIGZ1bmN0aW9ucyB0aGF0IGFyZSByb3V0ZWQgaGF2ZSBhIHByb3BlcnR5IGAuY29udmVyc2lvbmAgYXR0YWNoZWRcblx0dG8gdGhlIHJldHVybmVkIHN5bnRoZXRpYyBmdW5jdGlvbi4gVGhpcyBwcm9wZXJ0eSBpcyBhbiBhcnJheVxuXHRvZiBzdHJpbmdzLCBlYWNoIHdpdGggdGhlIHN0ZXBzIGluIGJldHdlZW4gdGhlICdmcm9tJyBhbmQgJ3RvJ1xuXHRjb2xvciBtb2RlbHMgKGluY2x1c2l2ZSkuXG5cblx0Y29udmVyc2lvbnMgdGhhdCBhcmUgbm90IHBvc3NpYmxlIHNpbXBseSBhcmUgbm90IGluY2x1ZGVkLlxuKi9cblxuZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcblx0Y29uc3QgZ3JhcGggPSB7fTtcblx0Ly8gaHR0cHM6Ly9qc3BlcmYuY29tL29iamVjdC1rZXlzLXZzLWZvci1pbi13aXRoLWNsb3N1cmUvM1xuXHRjb25zdCBtb2RlbHMgPSBPYmplY3Qua2V5cyhjb252ZXJzaW9ucyk7XG5cblx0Zm9yIChsZXQgbGVuID0gbW9kZWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdGdyYXBoW21vZGVsc1tpXV0gPSB7XG5cdFx0XHQvLyBodHRwOi8vanNwZXJmLmNvbS8xLXZzLWluZmluaXR5XG5cdFx0XHQvLyBtaWNyby1vcHQsIGJ1dCB0aGlzIGlzIHNpbXBsZS5cblx0XHRcdGRpc3RhbmNlOiAtMSxcblx0XHRcdHBhcmVudDogbnVsbFxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JyZWFkdGgtZmlyc3Rfc2VhcmNoXG5mdW5jdGlvbiBkZXJpdmVCRlMoZnJvbU1vZGVsKSB7XG5cdGNvbnN0IGdyYXBoID0gYnVpbGRHcmFwaCgpO1xuXHRjb25zdCBxdWV1ZSA9IFtmcm9tTW9kZWxdOyAvLyBVbnNoaWZ0IC0+IHF1ZXVlIC0+IHBvcFxuXG5cdGdyYXBoW2Zyb21Nb2RlbF0uZGlzdGFuY2UgPSAwO1xuXG5cdHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcblx0XHRjb25zdCBjdXJyZW50ID0gcXVldWUucG9wKCk7XG5cdFx0Y29uc3QgYWRqYWNlbnRzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnNbY3VycmVudF0pO1xuXG5cdFx0Zm9yIChsZXQgbGVuID0gYWRqYWNlbnRzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0Y29uc3QgYWRqYWNlbnQgPSBhZGphY2VudHNbaV07XG5cdFx0XHRjb25zdCBub2RlID0gZ3JhcGhbYWRqYWNlbnRdO1xuXG5cdFx0XHRpZiAobm9kZS5kaXN0YW5jZSA9PT0gLTEpIHtcblx0XHRcdFx0bm9kZS5kaXN0YW5jZSA9IGdyYXBoW2N1cnJlbnRdLmRpc3RhbmNlICsgMTtcblx0XHRcdFx0bm9kZS5wYXJlbnQgPSBjdXJyZW50O1xuXHRcdFx0XHRxdWV1ZS51bnNoaWZ0KGFkamFjZW50KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZ3JhcGg7XG59XG5cbmZ1bmN0aW9uIGxpbmsoZnJvbSwgdG8pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG5cdFx0cmV0dXJuIHRvKGZyb20oYXJncykpO1xuXHR9O1xufVxuXG5mdW5jdGlvbiB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCkge1xuXHRjb25zdCBwYXRoID0gW2dyYXBoW3RvTW9kZWxdLnBhcmVudCwgdG9Nb2RlbF07XG5cdGxldCBmbiA9IGNvbnZlcnNpb25zW2dyYXBoW3RvTW9kZWxdLnBhcmVudF1bdG9Nb2RlbF07XG5cblx0bGV0IGN1ciA9IGdyYXBoW3RvTW9kZWxdLnBhcmVudDtcblx0d2hpbGUgKGdyYXBoW2N1cl0ucGFyZW50KSB7XG5cdFx0cGF0aC51bnNoaWZ0KGdyYXBoW2N1cl0ucGFyZW50KTtcblx0XHRmbiA9IGxpbmsoY29udmVyc2lvbnNbZ3JhcGhbY3VyXS5wYXJlbnRdW2N1cl0sIGZuKTtcblx0XHRjdXIgPSBncmFwaFtjdXJdLnBhcmVudDtcblx0fVxuXG5cdGZuLmNvbnZlcnNpb24gPSBwYXRoO1xuXHRyZXR1cm4gZm47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZyb21Nb2RlbCkge1xuXHRjb25zdCBncmFwaCA9IGRlcml2ZUJGUyhmcm9tTW9kZWwpO1xuXHRjb25zdCBjb252ZXJzaW9uID0ge307XG5cblx0Y29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoZ3JhcGgpO1xuXHRmb3IgKGxldCBsZW4gPSBtb2RlbHMubGVuZ3RoLCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0Y29uc3QgdG9Nb2RlbCA9IG1vZGVsc1tpXTtcblx0XHRjb25zdCBub2RlID0gZ3JhcGhbdG9Nb2RlbF07XG5cblx0XHRpZiAobm9kZS5wYXJlbnQgPT09IG51bGwpIHtcblx0XHRcdC8vIE5vIHBvc3NpYmxlIGNvbnZlcnNpb24sIG9yIHRoaXMgbm9kZSBpcyB0aGUgc291cmNlIG1vZGVsLlxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29udmVyc2lvblt0b01vZGVsXSA9IHdyYXBDb252ZXJzaW9uKHRvTW9kZWwsIGdyYXBoKTtcblx0fVxuXG5cdHJldHVybiBjb252ZXJzaW9uO1xufTtcblxuIiwidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGRlYm91bmNlID0gcmVxdWlyZSgnLi9kZWJvdW5jZScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0aHJvdHRsZWQgZnVuY3Rpb24gdGhhdCBvbmx5IGludm9rZXMgYGZ1bmNgIGF0IG1vc3Qgb25jZSBwZXJcbiAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gKiBtZXRob2QgdG8gY2FuY2VsIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvXG4gKiBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS4gUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2BcbiAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAqIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZCB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGVcbiAqIHRocm90dGxlZCBmdW5jdGlvbi4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHJldHVybiB0aGVcbiAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy50aHJvdHRsZWAgYW5kIGBfLmRlYm91bmNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRocm90dGxlIGludm9jYXRpb25zIHRvLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgZXhjZXNzaXZlbHkgdXBkYXRpbmcgdGhlIHBvc2l0aW9uIHdoaWxlIHNjcm9sbGluZy5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHJlbmV3VG9rZW5gIHdoZW4gdGhlIGNsaWNrIGV2ZW50IGlzIGZpcmVkLCBidXQgbm90IG1vcmUgdGhhbiBvbmNlIGV2ZXJ5IDUgbWludXRlcy5cbiAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB0aHJvdHRsZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCB0aHJvdHRsZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmxlYWRpbmcgOiBsZWFkaW5nO1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cbiAgcmV0dXJuIGRlYm91bmNlKGZ1bmMsIHdhaXQsIHtcbiAgICAnbGVhZGluZyc6IGxlYWRpbmcsXG4gICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICd0cmFpbGluZyc6IHRyYWlsaW5nXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRocm90dGxlO1xuIiwidmFyIGJhc2VUcmltID0gcmVxdWlyZSgnLi9fYmFzZVRyaW0nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJpbXBvcnQgZSx7dXNlUmVmIGFzIHIsdXNlTWVtbyBhcyB0LHVzZUVmZmVjdCBhcyBuLHVzZVN0YXRlIGFzIG8sdXNlQ2FsbGJhY2sgYXMgYSx1c2VMYXlvdXRFZmZlY3QgYXMgbH1mcm9tXCJyZWFjdFwiO2Z1bmN0aW9uIHUoKXtyZXR1cm4odT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgdD1hcmd1bWVudHNbcl07Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGMoZSxyKXtpZihudWxsPT1lKXJldHVybnt9O3ZhciB0LG4sbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxhLmxlbmd0aDtuKyspci5pbmRleE9mKHQ9YVtuXSk+PTB8fChvW3RdPWVbdF0pO3JldHVybiBvfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9cihlKSxuPXIoZnVuY3Rpb24oZSl7dC5jdXJyZW50JiZ0LmN1cnJlbnQoZSl9KTtyZXR1cm4gdC5jdXJyZW50PWUsbi5jdXJyZW50fXZhciBzPWZ1bmN0aW9uKGUscix0KXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9MCksdm9pZCAwPT09dCYmKHQ9MSksZT50P3Q6ZTxyP3I6ZX0sZj1mdW5jdGlvbihlKXtyZXR1cm5cInRvdWNoZXNcImluIGV9LHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8c2VsZn0sZD1mdW5jdGlvbihlLHIsdCl7dmFyIG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWYocik/ZnVuY3Rpb24oZSxyKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLmlkZW50aWZpZXI9PT1yKXJldHVybiBlW3RdO3JldHVybiBlWzBdfShyLnRvdWNoZXMsdCk6cjtyZXR1cm57bGVmdDpzKChvLnBhZ2VYLShuLmxlZnQrdihlKS5wYWdlWE9mZnNldCkpL24ud2lkdGgpLHRvcDpzKChvLnBhZ2VZLShuLnRvcCt2KGUpLnBhZ2VZT2Zmc2V0KSkvbi5oZWlnaHQpfX0saD1mdW5jdGlvbihlKXshZihlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxtPWUubWVtbyhmdW5jdGlvbihvKXt2YXIgYT1vLm9uTW92ZSxsPW8ub25LZXkscz1jKG8sW1wib25Nb3ZlXCIsXCJvbktleVwiXSksbT1yKG51bGwpLGc9aShhKSxwPWkobCksYj1yKG51bGwpLF89cighMSkseD10KGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSl7aChlKSwoZihlKT9lLnRvdWNoZXMubGVuZ3RoPjA6ZS5idXR0b25zPjApJiZtLmN1cnJlbnQ/ZyhkKG0uY3VycmVudCxlLGIuY3VycmVudCkpOnQoITEpfSxyPWZ1bmN0aW9uKCl7cmV0dXJuIHQoITEpfTtmdW5jdGlvbiB0KHQpe3ZhciBuPV8uY3VycmVudCxvPXYobS5jdXJyZW50KSxhPXQ/by5hZGRFdmVudExpc3RlbmVyOm8ucmVtb3ZlRXZlbnRMaXN0ZW5lcjthKG4/XCJ0b3VjaG1vdmVcIjpcIm1vdXNlbW92ZVwiLGUpLGEobj9cInRvdWNoZW5kXCI6XCJtb3VzZXVwXCIscil9cmV0dXJuW2Z1bmN0aW9uKGUpe3ZhciByPWUubmF0aXZlRXZlbnQsbj1tLmN1cnJlbnQ7aWYobiYmKGgociksIWZ1bmN0aW9uKGUscil7cmV0dXJuIHImJiFmKGUpfShyLF8uY3VycmVudCkmJm4pKXtpZihmKHIpKXtfLmN1cnJlbnQ9ITA7dmFyIG89ci5jaGFuZ2VkVG91Y2hlc3x8W107by5sZW5ndGgmJihiLmN1cnJlbnQ9b1swXS5pZGVudGlmaWVyKX1uLmZvY3VzKCksZyhkKG4scixiLmN1cnJlbnQpKSx0KCEwKX19LGZ1bmN0aW9uKGUpe3ZhciByPWUud2hpY2h8fGUua2V5Q29kZTtyPDM3fHxyPjQwfHwoZS5wcmV2ZW50RGVmYXVsdCgpLHAoe2xlZnQ6Mzk9PT1yPy4wNTozNz09PXI/LS4wNTowLHRvcDo0MD09PXI/LjA1OjM4PT09cj8tLjA1OjB9KSl9LHRdfSxbcCxnXSksQz14WzBdLEU9eFsxXSxIPXhbMl07cmV0dXJuIG4oZnVuY3Rpb24oKXtyZXR1cm4gSH0sW0hdKSxlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix1KHt9LHMse29uVG91Y2hTdGFydDpDLG9uTW91c2VEb3duOkMsY2xhc3NOYW1lOlwicmVhY3QtY29sb3JmdWxfX2ludGVyYWN0aXZlXCIscmVmOm0sb25LZXlEb3duOkUsdGFiSW5kZXg6MCxyb2xlOlwic2xpZGVyXCJ9KSl9KSxnPWZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKX0scD1mdW5jdGlvbihyKXt2YXIgdD1yLmNvbG9yLG49ci5sZWZ0LG89ci50b3AsYT12b2lkIDA9PT1vPy41Om8sbD1nKFtcInJlYWN0LWNvbG9yZnVsX19wb2ludGVyXCIsci5jbGFzc05hbWVdKTtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpsLHN0eWxlOnt0b3A6MTAwKmErXCIlXCIsbGVmdDoxMDAqbitcIiVcIn19LGUuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jb2xvcmZ1bF9fcG9pbnRlci1maWxsXCIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjp0fX0pKX0sYj1mdW5jdGlvbihlLHIsdCl7cmV0dXJuIHZvaWQgMD09PXImJihyPTApLHZvaWQgMD09PXQmJih0PU1hdGgucG93KDEwLHIpKSxNYXRoLnJvdW5kKHQqZSkvdH0sXz17Z3JhZDouOSx0dXJuOjM2MCxyYWQ6MzYwLygyKk1hdGguUEkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBMKEMoZSkpfSxDPWZ1bmN0aW9uKGUpe3JldHVyblwiI1wiPT09ZVswXSYmKGU9ZS5zdWJzdHJpbmcoMSkpLGUubGVuZ3RoPDY/e3I6cGFyc2VJbnQoZVswXStlWzBdLDE2KSxnOnBhcnNlSW50KGVbMV0rZVsxXSwxNiksYjpwYXJzZUludChlWzJdK2VbMl0sMTYpLGE6ND09PWUubGVuZ3RoP2IocGFyc2VJbnQoZVszXStlWzNdLDE2KS8yNTUsMik6MX06e3I6cGFyc2VJbnQoZS5zdWJzdHJpbmcoMCwyKSwxNiksZzpwYXJzZUludChlLnN1YnN0cmluZygyLDQpLDE2KSxiOnBhcnNlSW50KGUuc3Vic3RyaW5nKDQsNiksMTYpLGE6OD09PWUubGVuZ3RoP2IocGFyc2VJbnQoZS5zdWJzdHJpbmcoNiw4KSwxNikvMjU1LDIpOjF9fSxFPWZ1bmN0aW9uKGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPVwiZGVnXCIpLE51bWJlcihlKSooX1tyXXx8MSl9LEg9ZnVuY3Rpb24oZSl7dmFyIHI9L2hzbGE/XFwoP1xccyooLT9cXGQqXFwuP1xcZCspKGRlZ3xyYWR8Z3JhZHx0dXJuKT9bLFxcc10rKC0/XFxkKlxcLj9cXGQrKSU/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklPyw/XFxzKlsvXFxzXSooLT9cXGQqXFwuP1xcZCspPyglKT9cXHMqXFwpPy9pLmV4ZWMoZSk7cmV0dXJuIHI/Tih7aDpFKHJbMV0sclsyXSksczpOdW1iZXIoclszXSksbDpOdW1iZXIocls0XSksYTp2b2lkIDA9PT1yWzVdPzE6TnVtYmVyKHJbNV0pLyhyWzZdPzEwMDoxKX0pOntoOjAsczowLHY6MCxhOjF9fSxNPUgsTj1mdW5jdGlvbihlKXt2YXIgcj1lLnMsdD1lLmw7cmV0dXJue2g6ZS5oLHM6KHIqPSh0PDUwP3Q6MTAwLXQpLzEwMCk+MD8yKnIvKHQrcikqMTAwOjAsdjp0K3IsYTplLmF9fSx3PWZ1bmN0aW9uKGUpe3JldHVybiBLKEkoZSkpfSx5PWZ1bmN0aW9uKGUpe3ZhciByPWUucyx0PWUudixuPWUuYSxvPSgyMDAtcikqdC8xMDA7cmV0dXJue2g6YihlLmgpLHM6YihvPjAmJm88MjAwP3IqdC8xMDAvKG88PTEwMD9vOjIwMC1vKSoxMDA6MCksbDpiKG8vMiksYTpiKG4sMil9fSxxPWZ1bmN0aW9uKGUpe3ZhciByPXkoZSk7cmV0dXJuXCJoc2woXCIrci5oK1wiLCBcIityLnMrXCIlLCBcIityLmwrXCIlKVwifSxrPWZ1bmN0aW9uKGUpe3ZhciByPXkoZSk7cmV0dXJuXCJoc2xhKFwiK3IuaCtcIiwgXCIrci5zK1wiJSwgXCIrci5sK1wiJSwgXCIrci5hK1wiKVwifSxJPWZ1bmN0aW9uKGUpe3ZhciByPWUuaCx0PWUucyxuPWUudixvPWUuYTtyPXIvMzYwKjYsdC89MTAwLG4vPTEwMDt2YXIgYT1NYXRoLmZsb29yKHIpLGw9biooMS10KSx1PW4qKDEtKHItYSkqdCksYz1uKigxLSgxLXIrYSkqdCksaT1hJTY7cmV0dXJue3I6YigyNTUqW24sdSxsLGwsYyxuXVtpXSksZzpiKDI1NSpbYyxuLG4sdSxsLGxdW2ldKSxiOmIoMjU1KltsLGwsYyxuLG4sdV1baV0pLGE6YihvLDIpfX0sTz1mdW5jdGlvbihlKXt2YXIgcj0vaHN2YT9cXCg/XFxzKigtP1xcZCpcXC4/XFxkKykoZGVnfHJhZHxncmFkfHR1cm4pP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT9bLFxcc10rKC0/XFxkKlxcLj9cXGQrKSU/LD9cXHMqWy9cXHNdKigtP1xcZCpcXC4/XFxkKyk/KCUpP1xccypcXCk/L2kuZXhlYyhlKTtyZXR1cm4gcj9BKHtoOkUoclsxXSxyWzJdKSxzOk51bWJlcihyWzNdKSx2Ok51bWJlcihyWzRdKSxhOnZvaWQgMD09PXJbNV0/MTpOdW1iZXIocls1XSkvKHJbNl0/MTAwOjEpfSk6e2g6MCxzOjAsdjowLGE6MX19LGo9Tyx6PWZ1bmN0aW9uKGUpe3ZhciByPS9yZ2JhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKSglKT9bLFxcc10rKC0/XFxkKlxcLj9cXGQrKSglKT9bLFxcc10rKC0/XFxkKlxcLj9cXGQrKSglKT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaS5leGVjKGUpO3JldHVybiByP0woe3I6TnVtYmVyKHJbMV0pLyhyWzJdPzEwMC8yNTU6MSksZzpOdW1iZXIoclszXSkvKHJbNF0/MTAwLzI1NToxKSxiOk51bWJlcihyWzVdKS8ocls2XT8xMDAvMjU1OjEpLGE6dm9pZCAwPT09cls3XT8xOk51bWJlcihyWzddKS8ocls4XT8xMDA6MSl9KTp7aDowLHM6MCx2OjAsYToxfX0sQj16LEQ9ZnVuY3Rpb24oZSl7dmFyIHI9ZS50b1N0cmluZygxNik7cmV0dXJuIHIubGVuZ3RoPDI/XCIwXCIrcjpyfSxLPWZ1bmN0aW9uKGUpe3ZhciByPWUucix0PWUuZyxuPWUuYixvPWUuYSxhPW88MT9EKGIoMjU1Km8pKTpcIlwiO3JldHVyblwiI1wiK0QocikrRCh0KStEKG4pK2F9LEw9ZnVuY3Rpb24oZSl7dmFyIHI9ZS5yLHQ9ZS5nLG49ZS5iLG89ZS5hLGE9TWF0aC5tYXgocix0LG4pLGw9YS1NYXRoLm1pbihyLHQsbiksdT1sP2E9PT1yPyh0LW4pL2w6YT09PXQ/Misobi1yKS9sOjQrKHItdCkvbDowO3JldHVybntoOmIoNjAqKHU8MD91KzY6dSkpLHM6YihhP2wvYSoxMDA6MCksdjpiKGEvMjU1KjEwMCksYTpvfX0sQT1mdW5jdGlvbihlKXtyZXR1cm57aDpiKGUuaCksczpiKGUucyksdjpiKGUudiksYTpiKGUuYSwyKX19LFM9ZS5tZW1vKGZ1bmN0aW9uKHIpe3ZhciB0PXIuaHVlLG49ci5vbkNoYW5nZSxvPWcoW1wicmVhY3QtY29sb3JmdWxfX2h1ZVwiLHIuY2xhc3NOYW1lXSk7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6b30sZS5jcmVhdGVFbGVtZW50KG0se29uTW92ZTpmdW5jdGlvbihlKXtuKHtoOjM2MCplLmxlZnR9KX0sb25LZXk6ZnVuY3Rpb24oZSl7bih7aDpzKHQrMzYwKmUubGVmdCwwLDM2MCl9KX0sXCJhcmlhLWxhYmVsXCI6XCJIdWVcIixcImFyaWEtdmFsdWVub3dcIjpiKHQpLFwiYXJpYS12YWx1ZW1heFwiOlwiMzYwXCIsXCJhcmlhLXZhbHVlbWluXCI6XCIwXCJ9LGUuY3JlYXRlRWxlbWVudChwLHtjbGFzc05hbWU6XCJyZWFjdC1jb2xvcmZ1bF9faHVlLXBvaW50ZXJcIixsZWZ0OnQvMzYwLGNvbG9yOnEoe2g6dCxzOjEwMCx2OjEwMCxhOjF9KX0pKSl9KSxUPWUubWVtbyhmdW5jdGlvbihyKXt2YXIgdD1yLmhzdmEsbj1yLm9uQ2hhbmdlLG89e2JhY2tncm91bmRDb2xvcjpxKHtoOnQuaCxzOjEwMCx2OjEwMCxhOjF9KX07cmV0dXJuIGUuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJyZWFjdC1jb2xvcmZ1bF9fc2F0dXJhdGlvblwiLHN0eWxlOm99LGUuY3JlYXRlRWxlbWVudChtLHtvbk1vdmU6ZnVuY3Rpb24oZSl7bih7czoxMDAqZS5sZWZ0LHY6MTAwLTEwMCplLnRvcH0pfSxvbktleTpmdW5jdGlvbihlKXtuKHtzOnModC5zKzEwMCplLmxlZnQsMCwxMDApLHY6cyh0LnYtMTAwKmUudG9wLDAsMTAwKX0pfSxcImFyaWEtbGFiZWxcIjpcIkNvbG9yXCIsXCJhcmlhLXZhbHVldGV4dFwiOlwiU2F0dXJhdGlvbiBcIitiKHQucykrXCIlLCBCcmlnaHRuZXNzIFwiK2IodC52KStcIiVcIn0sZS5jcmVhdGVFbGVtZW50KHAse2NsYXNzTmFtZTpcInJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uLXBvaW50ZXJcIix0b3A6MS10LnYvMTAwLGxlZnQ6dC5zLzEwMCxjb2xvcjpxKHQpfSkpKX0pLEY9ZnVuY3Rpb24oZSxyKXtpZihlPT09cilyZXR1cm4hMDtmb3IodmFyIHQgaW4gZSlpZihlW3RdIT09clt0XSlyZXR1cm4hMTtyZXR1cm4hMH0sUD1mdW5jdGlvbihlLHIpe3JldHVybiBlLnJlcGxhY2UoL1xccy9nLFwiXCIpPT09ci5yZXBsYWNlKC9cXHMvZyxcIlwiKX0sWD1mdW5jdGlvbihlLHIpe3JldHVybiBlLnRvTG93ZXJDYXNlKCk9PT1yLnRvTG93ZXJDYXNlKCl8fEYoQyhlKSxDKHIpKX07ZnVuY3Rpb24gWShlLHQsbCl7dmFyIHU9aShsKSxjPW8oZnVuY3Rpb24oKXtyZXR1cm4gZS50b0hzdmEodCl9KSxzPWNbMF0sZj1jWzFdLHY9cih7Y29sb3I6dCxoc3ZhOnN9KTtuKGZ1bmN0aW9uKCl7aWYoIWUuZXF1YWwodCx2LmN1cnJlbnQuY29sb3IpKXt2YXIgcj1lLnRvSHN2YSh0KTt2LmN1cnJlbnQ9e2hzdmE6cixjb2xvcjp0fSxmKHIpfX0sW3QsZV0pLG4oZnVuY3Rpb24oKXt2YXIgcjtGKHMsdi5jdXJyZW50LmhzdmEpfHxlLmVxdWFsKHI9ZS5mcm9tSHN2YShzKSx2LmN1cnJlbnQuY29sb3IpfHwodi5jdXJyZW50PXtoc3ZhOnMsY29sb3I6cn0sdShyKSl9LFtzLGUsdV0pO3ZhciBkPWEoZnVuY3Rpb24oZSl7ZihmdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxyLGUpfSl9LFtdKTtyZXR1cm5bcyxkXX12YXIgUixWPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/bDpuLCQ9ZnVuY3Rpb24oKXtyZXR1cm4gUnx8KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXz9fX3dlYnBhY2tfbm9uY2VfXzp2b2lkIDApfSxHPWZ1bmN0aW9uKGUpe1I9ZX0sSj1uZXcgTWFwLFE9ZnVuY3Rpb24oZSl7VihmdW5jdGlvbigpe3ZhciByPWUuY3VycmVudD9lLmN1cnJlbnQub3duZXJEb2N1bWVudDpkb2N1bWVudDtpZih2b2lkIDAhPT1yJiYhSi5oYXMocikpe3ZhciB0PXIuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3QuaW5uZXJIVE1MPScucmVhY3QtY29sb3JmdWx7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDoyMDBweDtoZWlnaHQ6MjAwcHg7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5yZWFjdC1jb2xvcmZ1bF9fc2F0dXJhdGlvbntwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LWdyb3c6MTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbToxMnB4IHNvbGlkICMwMDA7Ym9yZGVyLXJhZGl1czo4cHggOHB4IDAgMDtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgwZGVnLCMwMDAsdHJhbnNwYXJlbnQpLGxpbmVhci1ncmFkaWVudCg5MGRlZywjZmZmLGhzbGEoMCwwJSwxMDAlLDApKX0ucmVhY3QtY29sb3JmdWxfX2FscGhhLWdyYWRpZW50LC5yZWFjdC1jb2xvcmZ1bF9fcG9pbnRlci1maWxse2NvbnRlbnQ6XCJcIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ucmVhY3QtY29sb3JmdWxfX2FscGhhLWdyYWRpZW50LC5yZWFjdC1jb2xvcmZ1bF9fc2F0dXJhdGlvbntib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDAsMCwwLC4wNSl9LnJlYWN0LWNvbG9yZnVsX19hbHBoYSwucmVhY3QtY29sb3JmdWxfX2h1ZXtwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6MjRweH0ucmVhY3QtY29sb3JmdWxfX2h1ZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyxyZWQgMCwjZmYwIDE3JSwjMGYwIDMzJSwjMGZmIDUwJSwjMDBmIDY3JSwjZjBmIDgzJSxyZWQpfS5yZWFjdC1jb2xvcmZ1bF9fbGFzdC1jb250cm9se2JvcmRlci1yYWRpdXM6MCAwIDhweCA4cHh9LnJlYWN0LWNvbG9yZnVsX19pbnRlcmFjdGl2ZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3V0bGluZTpub25lO3RvdWNoLWFjdGlvbjpub25lfS5yZWFjdC1jb2xvcmZ1bF9fcG9pbnRlcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MnB4IHNvbGlkICNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLDAsMCwuMil9LnJlYWN0LWNvbG9yZnVsX19pbnRlcmFjdGl2ZTpmb2N1cyAucmVhY3QtY29sb3JmdWxfX3BvaW50ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEuMSl9LnJlYWN0LWNvbG9yZnVsX19hbHBoYSwucmVhY3QtY29sb3JmdWxfX2FscGhhLXBvaW50ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JhY2tncm91bmQtaW1hZ2U6dXJsKFxcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGwtb3BhY2l0eT1cIi4wNVwiPjxwYXRoIGQ9XCJNOCAwaDh2OEg4ek0wIDhoOHY4SDB6XCIvPjwvc3ZnPlxcJyl9LnJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uLXBvaW50ZXJ7ei1pbmRleDozfS5yZWFjdC1jb2xvcmZ1bF9faHVlLXBvaW50ZXJ7ei1pbmRleDoyfScsSi5zZXQocix0KTt2YXIgbj0kKCk7biYmdC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLG4pLHIuaGVhZC5hcHBlbmRDaGlsZCh0KX19LFtdKX0sVT1mdW5jdGlvbih0KXt2YXIgbj10LmNsYXNzTmFtZSxvPXQuY29sb3JNb2RlbCxhPXQuY29sb3IsbD12b2lkIDA9PT1hP28uZGVmYXVsdENvbG9yOmEsaT10Lm9uQ2hhbmdlLHM9Yyh0LFtcImNsYXNzTmFtZVwiLFwiY29sb3JNb2RlbFwiLFwiY29sb3JcIixcIm9uQ2hhbmdlXCJdKSxmPXIobnVsbCk7UShmKTt2YXIgdj1ZKG8sbCxpKSxkPXZbMF0saD12WzFdLG09ZyhbXCJyZWFjdC1jb2xvcmZ1bFwiLG5dKTtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsdSh7fSxzLHtyZWY6ZixjbGFzc05hbWU6bX0pLGUuY3JlYXRlRWxlbWVudChULHtoc3ZhOmQsb25DaGFuZ2U6aH0pLGUuY3JlYXRlRWxlbWVudChTLHtodWU6ZC5oLG9uQ2hhbmdlOmgsY2xhc3NOYW1lOlwicmVhY3QtY29sb3JmdWxfX2xhc3QtY29udHJvbFwifSkpfSxXPXtkZWZhdWx0Q29sb3I6XCIwMDBcIix0b0hzdmE6eCxmcm9tSHN2YTpmdW5jdGlvbihlKXtyZXR1cm4gdyh7aDplLmgsczplLnMsdjplLnYsYToxfSl9LGVxdWFsOlh9LFo9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChVLHUoe30scix7Y29sb3JNb2RlbDpXfSkpfSxlZT1mdW5jdGlvbihyKXt2YXIgdD1yLmNsYXNzTmFtZSxuPXIuaHN2YSxvPXIub25DaGFuZ2UsYT17YmFja2dyb3VuZEltYWdlOlwibGluZWFyLWdyYWRpZW50KDkwZGVnLCBcIitrKE9iamVjdC5hc3NpZ24oe30sbix7YTowfSkpK1wiLCBcIitrKE9iamVjdC5hc3NpZ24oe30sbix7YToxfSkpK1wiKVwifSxsPWcoW1wicmVhY3QtY29sb3JmdWxfX2FscGhhXCIsdF0pLHU9YigxMDAqbi5hKTtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpsfSxlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOlwicmVhY3QtY29sb3JmdWxfX2FscGhhLWdyYWRpZW50XCIsc3R5bGU6YX0pLGUuY3JlYXRlRWxlbWVudChtLHtvbk1vdmU6ZnVuY3Rpb24oZSl7byh7YTplLmxlZnR9KX0sb25LZXk6ZnVuY3Rpb24oZSl7byh7YTpzKG4uYStlLmxlZnQpfSl9LFwiYXJpYS1sYWJlbFwiOlwiQWxwaGFcIixcImFyaWEtdmFsdWV0ZXh0XCI6dStcIiVcIixcImFyaWEtdmFsdWVub3dcIjp1LFwiYXJpYS12YWx1ZW1pblwiOlwiMFwiLFwiYXJpYS12YWx1ZW1heFwiOlwiMTAwXCJ9LGUuY3JlYXRlRWxlbWVudChwLHtjbGFzc05hbWU6XCJyZWFjdC1jb2xvcmZ1bF9fYWxwaGEtcG9pbnRlclwiLGxlZnQ6bi5hLGNvbG9yOmsobil9KSkpfSxyZT1mdW5jdGlvbih0KXt2YXIgbj10LmNsYXNzTmFtZSxvPXQuY29sb3JNb2RlbCxhPXQuY29sb3IsbD12b2lkIDA9PT1hP28uZGVmYXVsdENvbG9yOmEsaT10Lm9uQ2hhbmdlLHM9Yyh0LFtcImNsYXNzTmFtZVwiLFwiY29sb3JNb2RlbFwiLFwiY29sb3JcIixcIm9uQ2hhbmdlXCJdKSxmPXIobnVsbCk7UShmKTt2YXIgdj1ZKG8sbCxpKSxkPXZbMF0saD12WzFdLG09ZyhbXCJyZWFjdC1jb2xvcmZ1bFwiLG5dKTtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsdSh7fSxzLHtyZWY6ZixjbGFzc05hbWU6bX0pLGUuY3JlYXRlRWxlbWVudChULHtoc3ZhOmQsb25DaGFuZ2U6aH0pLGUuY3JlYXRlRWxlbWVudChTLHtodWU6ZC5oLG9uQ2hhbmdlOmh9KSxlLmNyZWF0ZUVsZW1lbnQoZWUse2hzdmE6ZCxvbkNoYW5nZTpoLGNsYXNzTmFtZTpcInJlYWN0LWNvbG9yZnVsX19sYXN0LWNvbnRyb2xcIn0pKX0sdGU9e2RlZmF1bHRDb2xvcjpcIjAwMDFcIix0b0hzdmE6eCxmcm9tSHN2YTp3LGVxdWFsOlh9LG5lPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQocmUsdSh7fSxyLHtjb2xvck1vZGVsOnRlfSkpfSxvZT17ZGVmYXVsdENvbG9yOntoOjAsczowLGw6MCxhOjF9LHRvSHN2YTpOLGZyb21Ic3ZhOnksZXF1YWw6Rn0sYWU9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChyZSx1KHt9LHIse2NvbG9yTW9kZWw6b2V9KSl9LGxlPXtkZWZhdWx0Q29sb3I6XCJoc2xhKDAsIDAlLCAwJSwgMSlcIix0b0hzdmE6SCxmcm9tSHN2YTprLGVxdWFsOlB9LHVlPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQocmUsdSh7fSxyLHtjb2xvck1vZGVsOmxlfSkpfSxjZT17ZGVmYXVsdENvbG9yOntoOjAsczowLGw6MH0sdG9Ic3ZhOmZ1bmN0aW9uKGUpe3JldHVybiBOKHtoOmUuaCxzOmUucyxsOmUubCxhOjF9KX0sZnJvbUhzdmE6ZnVuY3Rpb24oZSl7cmV0dXJue2g6KHI9eShlKSkuaCxzOnIucyxsOnIubH07dmFyIHJ9LGVxdWFsOkZ9LGllPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQoVSx1KHt9LHIse2NvbG9yTW9kZWw6Y2V9KSl9LHNlPXtkZWZhdWx0Q29sb3I6XCJoc2woMCwgMCUsIDAlKVwiLHRvSHN2YTpNLGZyb21Ic3ZhOnEsZXF1YWw6UH0sZmU9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChVLHUoe30scix7Y29sb3JNb2RlbDpzZX0pKX0sdmU9e2RlZmF1bHRDb2xvcjp7aDowLHM6MCx2OjAsYToxfSx0b0hzdmE6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZyb21Ic3ZhOkEsZXF1YWw6Rn0sZGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChyZSx1KHt9LHIse2NvbG9yTW9kZWw6dmV9KSl9LGhlPXtkZWZhdWx0Q29sb3I6XCJoc3ZhKDAsIDAlLCAwJSwgMSlcIix0b0hzdmE6Tyxmcm9tSHN2YTpmdW5jdGlvbihlKXt2YXIgcj1BKGUpO3JldHVyblwiaHN2YShcIityLmgrXCIsIFwiK3IucytcIiUsIFwiK3IuditcIiUsIFwiK3IuYStcIilcIn0sZXF1YWw6UH0sbWU9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChyZSx1KHt9LHIse2NvbG9yTW9kZWw6aGV9KSl9LGdlPXtkZWZhdWx0Q29sb3I6e2g6MCxzOjAsdjowfSx0b0hzdmE6ZnVuY3Rpb24oZSl7cmV0dXJue2g6ZS5oLHM6ZS5zLHY6ZS52LGE6MX19LGZyb21Ic3ZhOmZ1bmN0aW9uKGUpe3ZhciByPUEoZSk7cmV0dXJue2g6ci5oLHM6ci5zLHY6ci52fX0sZXF1YWw6Rn0scGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUuY3JlYXRlRWxlbWVudChVLHUoe30scix7Y29sb3JNb2RlbDpnZX0pKX0sYmU9e2RlZmF1bHRDb2xvcjpcImhzdigwLCAwJSwgMCUpXCIsdG9Ic3ZhOmosZnJvbUhzdmE6ZnVuY3Rpb24oZSl7dmFyIHI9QShlKTtyZXR1cm5cImhzdihcIityLmgrXCIsIFwiK3IucytcIiUsIFwiK3IuditcIiUpXCJ9LGVxdWFsOlB9LF9lPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQoVSx1KHt9LHIse2NvbG9yTW9kZWw6YmV9KSl9LHhlPXtkZWZhdWx0Q29sb3I6e3I6MCxnOjAsYjowLGE6MX0sdG9Ic3ZhOkwsZnJvbUhzdmE6SSxlcXVhbDpGfSxDZT1mdW5jdGlvbihyKXtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KHJlLHUoe30scix7Y29sb3JNb2RlbDp4ZX0pKX0sRWU9e2RlZmF1bHRDb2xvcjpcInJnYmEoMCwgMCwgMCwgMSlcIix0b0hzdmE6eixmcm9tSHN2YTpmdW5jdGlvbihlKXt2YXIgcj1JKGUpO3JldHVyblwicmdiYShcIityLnIrXCIsIFwiK3IuZytcIiwgXCIrci5iK1wiLCBcIityLmErXCIpXCJ9LGVxdWFsOlB9LEhlPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQocmUsdSh7fSxyLHtjb2xvck1vZGVsOkVlfSkpfSxNZT17ZGVmYXVsdENvbG9yOntyOjAsZzowLGI6MH0sdG9Ic3ZhOmZ1bmN0aW9uKGUpe3JldHVybiBMKHtyOmUucixnOmUuZyxiOmUuYixhOjF9KX0sZnJvbUhzdmE6ZnVuY3Rpb24oZSl7cmV0dXJue3I6KHI9SShlKSkucixnOnIuZyxiOnIuYn07dmFyIHJ9LGVxdWFsOkZ9LE5lPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQoVSx1KHt9LHIse2NvbG9yTW9kZWw6TWV9KSl9LHdlPXtkZWZhdWx0Q29sb3I6XCJyZ2IoMCwgMCwgMClcIix0b0hzdmE6Qixmcm9tSHN2YTpmdW5jdGlvbihlKXt2YXIgcj1JKGUpO3JldHVyblwicmdiKFwiK3IucitcIiwgXCIrci5nK1wiLCBcIityLmIrXCIpXCJ9LGVxdWFsOlB9LHllPWZ1bmN0aW9uKHIpe3JldHVybiBlLmNyZWF0ZUVsZW1lbnQoVSx1KHt9LHIse2NvbG9yTW9kZWw6d2V9KSl9LHFlPS9eIz8oWzAtOUEtRl17Myw4fSkkL2ksa2U9ZnVuY3Rpb24ocil7dmFyIHQ9ci5jb2xvcixsPXZvaWQgMD09PXQ/XCJcIjp0LHM9ci5vbkNoYW5nZSxmPXIub25CbHVyLHY9ci5lc2NhcGUsZD1yLnZhbGlkYXRlLGg9ci5mb3JtYXQsbT1yLnByb2Nlc3MsZz1jKHIsW1wiY29sb3JcIixcIm9uQ2hhbmdlXCIsXCJvbkJsdXJcIixcImVzY2FwZVwiLFwidmFsaWRhdGVcIixcImZvcm1hdFwiLFwicHJvY2Vzc1wiXSkscD1vKGZ1bmN0aW9uKCl7cmV0dXJuIHYobCl9KSxiPXBbMF0sXz1wWzFdLHg9aShzKSxDPWkoZiksRT1hKGZ1bmN0aW9uKGUpe3ZhciByPXYoZS50YXJnZXQudmFsdWUpO18ociksZChyKSYmeChtP20ocik6cil9LFt2LG0sZCx4XSksSD1hKGZ1bmN0aW9uKGUpe2QoZS50YXJnZXQudmFsdWUpfHxfKHYobCkpLEMoZSl9LFtsLHYsZCxDXSk7cmV0dXJuIG4oZnVuY3Rpb24oKXtfKHYobCkpfSxbbCx2XSksZS5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIix1KHt9LGcse3ZhbHVlOmg/aChiKTpiLHNwZWxsQ2hlY2s6XCJmYWxzZVwiLG9uQ2hhbmdlOkUsb25CbHVyOkh9KSl9LEllPWZ1bmN0aW9uKGUpe3JldHVyblwiI1wiK2V9LE9lPWZ1bmN0aW9uKHIpe3ZhciB0PXIucHJlZml4ZWQsbj1yLmFscGhhLG89YyhyLFtcInByZWZpeGVkXCIsXCJhbHBoYVwiXSksbD1hKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbXjAtOUEtRl0rKS9naSxcIlwiKS5zdWJzdHJpbmcoMCxuPzg6Nil9LFtuXSksaT1hKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciB0PXFlLmV4ZWMoZSksbj10P3RbMV0ubGVuZ3RoOjA7cmV0dXJuIDM9PT1ufHw2PT09bnx8ISFyJiY0PT09bnx8ISFyJiY4PT09bn0oZSxuKX0sW25dKTtyZXR1cm4gZS5jcmVhdGVFbGVtZW50KGtlLHUoe30sbyx7ZXNjYXBlOmwsZm9ybWF0OnQ/SWU6dm9pZCAwLHByb2Nlc3M6SWUsdmFsaWRhdGU6aX0pKX07ZXhwb3J0e25lIGFzIEhleEFscGhhQ29sb3JQaWNrZXIsT2UgYXMgSGV4Q29sb3JJbnB1dCxaIGFzIEhleENvbG9yUGlja2VyLGllIGFzIEhzbENvbG9yUGlja2VyLGZlIGFzIEhzbFN0cmluZ0NvbG9yUGlja2VyLGFlIGFzIEhzbGFDb2xvclBpY2tlcix1ZSBhcyBIc2xhU3RyaW5nQ29sb3JQaWNrZXIscGUgYXMgSHN2Q29sb3JQaWNrZXIsX2UgYXMgSHN2U3RyaW5nQ29sb3JQaWNrZXIsZGUgYXMgSHN2YUNvbG9yUGlja2VyLG1lIGFzIEhzdmFTdHJpbmdDb2xvclBpY2tlcixOZSBhcyBSZ2JDb2xvclBpY2tlcix5ZSBhcyBSZ2JTdHJpbmdDb2xvclBpY2tlcixDZSBhcyBSZ2JhQ29sb3JQaWNrZXIsSGUgYXMgUmdiYVN0cmluZ0NvbG9yUGlja2VyLEcgYXMgc2V0Tm9uY2V9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0IHsgZ2V0Q29udHJvbElkIH0gZnJvbSAnLi9jaHVuay1HV0FKNEtSVS5tanMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSGV4Q29sb3JQaWNrZXIsIFJnYmFTdHJpbmdDb2xvclBpY2tlciwgSHNsYVN0cmluZ0NvbG9yUGlja2VyIH0gZnJvbSAncmVhY3QtY29sb3JmdWwnO1xuaW1wb3J0IGNvbnZlcnQgZnJvbSAnY29sb3ItY29udmVydCc7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlLmpzJztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BzdG9yeWJvb2svdGhlbWluZyc7XG5pbXBvcnQgeyBXaXRoVG9vbHRpcCwgVG9vbHRpcE5vdGUsIEZvcm0gfSBmcm9tICdAc3Rvcnlib29rL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWFya3VwSWNvbiB9IGZyb20gJ0BzdG9yeWJvb2svaWNvbnMnO1xuXG52YXIgV3JhcHBlcj1zdHlsZWQuZGl2KHtwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWF4V2lkdGg6MjUwLCcmW2FyaWEtcmVhZG9ubHk9XCJ0cnVlXCJdJzp7b3BhY2l0eTouNX19KSxQaWNrZXJUb29sdGlwPXN0eWxlZChXaXRoVG9vbHRpcCkoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix6SW5kZXg6MSx0b3A6NCxsZWZ0OjQsXCJbYXJpYS1yZWFkb25seT10cnVlXSAmXCI6e2N1cnNvcjpcIm5vdC1hbGxvd2VkXCJ9fSksVG9vbHRpcENvbnRlbnQ9c3R5bGVkLmRpdih7d2lkdGg6MjAwLG1hcmdpbjo1LFwiLnJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uXCI6e2JvcmRlclJhZGl1czpcIjRweCA0cHggMCAwXCJ9LFwiLnJlYWN0LWNvbG9yZnVsX19odWVcIjp7Ym94U2hhZG93OlwiaW5zZXQgMCAwIDAgMXB4IHJnYigwIDAgMCAvIDUlKVwifSxcIi5yZWFjdC1jb2xvcmZ1bF9fbGFzdC1jb250cm9sXCI6e2JvcmRlclJhZGl1czpcIjAgMCA0cHggNHB4XCJ9fSksTm90ZT1zdHlsZWQoVG9vbHRpcE5vdGUpKCh7dGhlbWV9KT0+KHtmb250RmFtaWx5OnRoZW1lLnR5cG9ncmFwaHkuZm9udHMuYmFzZX0pKSxTd2F0Y2hlcz1zdHlsZWQuZGl2KHtkaXNwbGF5OlwiZ3JpZFwiLGdyaWRUZW1wbGF0ZUNvbHVtbnM6XCJyZXBlYXQoOSwgMTZweClcIixnYXA6NixwYWRkaW5nOjMsbWFyZ2luVG9wOjUsd2lkdGg6MjAwfSksU3dhdGNoQ29sb3I9c3R5bGVkLmRpdigoe3RoZW1lLGFjdGl2ZX0pPT4oe3dpZHRoOjE2LGhlaWdodDoxNixib3hTaGFkb3c6YWN0aXZlP2Ake3RoZW1lLmFwcEJvcmRlckNvbG9yfSAwIDAgMCAxcHggaW5zZXQsICR7dGhlbWUudGV4dE11dGVkQ29sb3J9NTAgMCAwIDAgNHB4YDpgJHt0aGVtZS5hcHBCb3JkZXJDb2xvcn0gMCAwIDAgMXB4IGluc2V0YCxib3JkZXJSYWRpdXM6dGhlbWUuYXBwQm9yZGVyUmFkaXVzfSkpLHN3YXRjaEJhY2tncm91bmQ9YHVybCgnZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbC1vcGFjaXR5PVwiLjA1XCI+PHBhdGggZD1cIk04IDBoOHY4SDh6TTAgOGg4djhIMHpcIi8+PC9zdmc+JylgLFN3YXRjaD0oe3ZhbHVlLHN0eWxlLC4uLnByb3BzfSk9PntsZXQgYmFja2dyb3VuZEltYWdlPWBsaW5lYXItZ3JhZGllbnQoJHt2YWx1ZX0sICR7dmFsdWV9KSwgJHtzd2F0Y2hCYWNrZ3JvdW5kfSwgbGluZWFyLWdyYWRpZW50KCNmZmYsICNmZmYpYDtyZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2hDb2xvcix7Li4ucHJvcHMsc3R5bGU6ey4uLnN0eWxlLGJhY2tncm91bmRJbWFnZX19KX0sSW5wdXQ9c3R5bGVkKEZvcm0uSW5wdXQpKCh7dGhlbWUscmVhZE9ubHl9KT0+KHt3aWR0aDpcIjEwMCVcIixwYWRkaW5nTGVmdDozMCxwYWRkaW5nUmlnaHQ6MzAsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLGZvbnRGYW1pbHk6dGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlfSkpLFRvZ2dsZUljb249c3R5bGVkKE1hcmt1cEljb24pKCh7dGhlbWV9KT0+KHtwb3NpdGlvbjpcImFic29sdXRlXCIsekluZGV4OjEsdG9wOjYscmlnaHQ6Nyx3aWR0aDoyMCxoZWlnaHQ6MjAscGFkZGluZzo0LGJveFNpemluZzpcImJvcmRlci1ib3hcIixjdXJzb3I6XCJwb2ludGVyXCIsY29sb3I6dGhlbWUuaW5wdXQuY29sb3J9KSksQ29sb3JTcGFjZT0oQ29sb3JTcGFjZTI9PihDb2xvclNwYWNlMi5SR0I9XCJyZ2JcIixDb2xvclNwYWNlMi5IU0w9XCJoc2xcIixDb2xvclNwYWNlMi5IRVg9XCJoZXhcIixDb2xvclNwYWNlMikpKENvbG9yU3BhY2V8fHt9KSxDT0xPUl9TUEFDRVM9T2JqZWN0LnZhbHVlcyhDb2xvclNwYWNlKSxDT0xPUl9SRUdFWFA9L1xcKChbMC05XSspLFxccyooWzAtOV0rKSU/LFxccyooWzAtOV0rKSU/LD9cXHMqKFswLTkuXSspP1xcKS8sUkdCX1JFR0VYUD0vXlxccypyZ2JhP1xcKChbMC05XSspLFxccyooWzAtOV0rKSxcXHMqKFswLTldKyksP1xccyooWzAtOS5dKyk/XFwpXFxzKiQvaSxIU0xfUkVHRVhQPS9eXFxzKmhzbGE/XFwoKFswLTldKyksXFxzKihbMC05XSspJSxcXHMqKFswLTldKyklLD9cXHMqKFswLTkuXSspP1xcKVxccyokL2ksSEVYX1JFR0VYUD0vXlxccyojPyhbMC05YS1mXXszfXxbMC05YS1mXXs2fSlcXHMqJC9pLFNIT1JUSEVYX1JFR0VYUD0vXlxccyojPyhbMC05YS1mXXszfSlcXHMqJC9pLENvbG9yUGlja2VyPXtoZXg6SGV4Q29sb3JQaWNrZXIscmdiOlJnYmFTdHJpbmdDb2xvclBpY2tlcixoc2w6SHNsYVN0cmluZ0NvbG9yUGlja2VyfSxmYWxsYmFja0NvbG9yPXtoZXg6XCJ0cmFuc3BhcmVudFwiLHJnYjpcInJnYmEoMCwgMCwgMCwgMClcIixoc2w6XCJoc2xhKDAsIDAlLCAwJSwgMClcIn0sc3RyaW5nVG9BcmdzPXZhbHVlPT57bGV0IG1hdGNoPXZhbHVlPy5tYXRjaChDT0xPUl9SRUdFWFApO2lmKCFtYXRjaClyZXR1cm4gWzAsMCwwLDFdO2xldFsseCx5LHosYT0xXT1tYXRjaDtyZXR1cm4gW3gseSx6LGFdLm1hcChOdW1iZXIpfSxwYXJzZVZhbHVlPXZhbHVlPT57aWYoIXZhbHVlKXJldHVybjtsZXQgdmFsaWQ9ITA7aWYoUkdCX1JFR0VYUC50ZXN0KHZhbHVlKSl7bGV0W3IsZyxiLGFdPXN0cmluZ1RvQXJncyh2YWx1ZSksW2gscyxsXT1jb252ZXJ0LnJnYi5oc2woW3IsZyxiXSl8fFswLDAsMF07cmV0dXJuIHt2YWxpZCx2YWx1ZSxrZXl3b3JkOmNvbnZlcnQucmdiLmtleXdvcmQoW3IsZyxiXSksY29sb3JTcGFjZTpcInJnYlwiLHJnYjp2YWx1ZSxoc2w6YGhzbGEoJHtofSwgJHtzfSUsICR7bH0lLCAke2F9KWAsaGV4OmAjJHtjb252ZXJ0LnJnYi5oZXgoW3IsZyxiXSkudG9Mb3dlckNhc2UoKX1gfX1pZihIU0xfUkVHRVhQLnRlc3QodmFsdWUpKXtsZXRbaCxzLGwsYV09c3RyaW5nVG9BcmdzKHZhbHVlKSxbcixnLGJdPWNvbnZlcnQuaHNsLnJnYihbaCxzLGxdKXx8WzAsMCwwXTtyZXR1cm4ge3ZhbGlkLHZhbHVlLGtleXdvcmQ6Y29udmVydC5oc2wua2V5d29yZChbaCxzLGxdKSxjb2xvclNwYWNlOlwiaHNsXCIscmdiOmByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YX0pYCxoc2w6dmFsdWUsaGV4OmAjJHtjb252ZXJ0LmhzbC5oZXgoW2gscyxsXSkudG9Mb3dlckNhc2UoKX1gfX1sZXQgcGxhaW49dmFsdWUucmVwbGFjZShcIiNcIixcIlwiKSxyZ2I9Y29udmVydC5rZXl3b3JkLnJnYihwbGFpbil8fGNvbnZlcnQuaGV4LnJnYihwbGFpbiksaHNsPWNvbnZlcnQucmdiLmhzbChyZ2IpLG1hcHBlZD12YWx1ZTtpZigvW14jYS1mMC05XS9pLnRlc3QodmFsdWUpP21hcHBlZD1wbGFpbjpIRVhfUkVHRVhQLnRlc3QodmFsdWUpJiYobWFwcGVkPWAjJHtwbGFpbn1gKSxtYXBwZWQuc3RhcnRzV2l0aChcIiNcIikpdmFsaWQ9SEVYX1JFR0VYUC50ZXN0KG1hcHBlZCk7ZWxzZSB0cnl7Y29udmVydC5rZXl3b3JkLmhleChtYXBwZWQpO31jYXRjaHt2YWxpZD0hMTt9cmV0dXJuIHt2YWxpZCx2YWx1ZTptYXBwZWQsa2V5d29yZDpjb252ZXJ0LnJnYi5rZXl3b3JkKHJnYiksY29sb3JTcGFjZTpcImhleFwiLHJnYjpgcmdiYSgke3JnYlswXX0sICR7cmdiWzFdfSwgJHtyZ2JbMl19LCAxKWAsaHNsOmBoc2xhKCR7aHNsWzBdfSwgJHtoc2xbMV19JSwgJHtoc2xbMl19JSwgMSlgLGhleDptYXBwZWR9fSxnZXRSZWFsVmFsdWU9KHZhbHVlLGNvbG9yLGNvbG9yU3BhY2UpPT57aWYoIXZhbHVlfHwhY29sb3I/LnZhbGlkKXJldHVybiBmYWxsYmFja0NvbG9yW2NvbG9yU3BhY2VdO2lmKGNvbG9yU3BhY2UhPT1cImhleFwiKXJldHVybiBjb2xvcj8uW2NvbG9yU3BhY2VdfHxmYWxsYmFja0NvbG9yW2NvbG9yU3BhY2VdO2lmKCFjb2xvci5oZXguc3RhcnRzV2l0aChcIiNcIikpdHJ5e3JldHVybiBgIyR7Y29udmVydC5rZXl3b3JkLmhleChjb2xvci5oZXgpfWB9Y2F0Y2h7cmV0dXJuIGZhbGxiYWNrQ29sb3IuaGV4fWxldCBzaG9ydD1jb2xvci5oZXgubWF0Y2goU0hPUlRIRVhfUkVHRVhQKTtpZighc2hvcnQpcmV0dXJuIEhFWF9SRUdFWFAudGVzdChjb2xvci5oZXgpP2NvbG9yLmhleDpmYWxsYmFja0NvbG9yLmhleDtsZXRbcixnLGJdPXNob3J0WzFdLnNwbGl0KFwiXCIpO3JldHVybiBgIyR7cn0ke3J9JHtnfSR7Z30ke2J9JHtifWB9LHVzZUNvbG9ySW5wdXQ9KGluaXRpYWxWYWx1ZSxvbkNoYW5nZSk9PntsZXRbdmFsdWUsc2V0VmFsdWVdPXVzZVN0YXRlKGluaXRpYWxWYWx1ZXx8XCJcIiksW2NvbG9yLHNldENvbG9yXT11c2VTdGF0ZSgoKT0+cGFyc2VWYWx1ZSh2YWx1ZSkpLFtjb2xvclNwYWNlLHNldENvbG9yU3BhY2VdPXVzZVN0YXRlKGNvbG9yPy5jb2xvclNwYWNlfHxcImhleFwiKTt1c2VFZmZlY3QoKCk9PntsZXQgbmV4dFZhbHVlPWluaXRpYWxWYWx1ZXx8XCJcIixuZXh0Q29sb3I9cGFyc2VWYWx1ZShuZXh0VmFsdWUpO3NldFZhbHVlKG5leHRWYWx1ZSksc2V0Q29sb3IobmV4dENvbG9yKSxzZXRDb2xvclNwYWNlKG5leHRDb2xvcj8uY29sb3JTcGFjZXx8XCJoZXhcIik7fSxbaW5pdGlhbFZhbHVlXSk7bGV0IHJlYWxWYWx1ZT11c2VNZW1vKCgpPT5nZXRSZWFsVmFsdWUodmFsdWUsY29sb3IsY29sb3JTcGFjZSkudG9Mb3dlckNhc2UoKSxbdmFsdWUsY29sb3IsY29sb3JTcGFjZV0pLHVwZGF0ZVZhbHVlPXVzZUNhbGxiYWNrKHVwZGF0ZT0+e2xldCBwYXJzZWQ9cGFyc2VWYWx1ZSh1cGRhdGUpLHY9cGFyc2VkPy52YWx1ZXx8dXBkYXRlfHxcIlwiO3NldFZhbHVlKHYpLHY9PT1cIlwiJiYoc2V0Q29sb3Iodm9pZCAwKSxvbkNoYW5nZSh2b2lkIDApKSxwYXJzZWQmJihzZXRDb2xvcihwYXJzZWQpLHNldENvbG9yU3BhY2UocGFyc2VkLmNvbG9yU3BhY2UpLG9uQ2hhbmdlKHBhcnNlZC52YWx1ZSkpO30sW29uQ2hhbmdlXSksY3ljbGVDb2xvclNwYWNlPXVzZUNhbGxiYWNrKCgpPT57bGV0IG5leHQ9Q09MT1JfU1BBQ0VTLmluZGV4T2YoY29sb3JTcGFjZSkrMTtuZXh0Pj1DT0xPUl9TUEFDRVMubGVuZ3RoJiYobmV4dD0wKSxzZXRDb2xvclNwYWNlKENPTE9SX1NQQUNFU1tuZXh0XSk7bGV0IHVwZGF0ZT1jb2xvcj8uW0NPTE9SX1NQQUNFU1tuZXh0XV18fFwiXCI7c2V0VmFsdWUodXBkYXRlKSxvbkNoYW5nZSh1cGRhdGUpO30sW2NvbG9yLGNvbG9yU3BhY2Usb25DaGFuZ2VdKTtyZXR1cm4ge3ZhbHVlLHJlYWxWYWx1ZSx1cGRhdGVWYWx1ZSxjb2xvcixjb2xvclNwYWNlLGN5Y2xlQ29sb3JTcGFjZX19LGlkPXZhbHVlPT52YWx1ZS5yZXBsYWNlKC9cXHMqLyxcIlwiKS50b0xvd2VyQ2FzZSgpLHVzZVByZXNldHM9KHByZXNldENvbG9ycyxjdXJyZW50Q29sb3IsY29sb3JTcGFjZSk9PntsZXRbc2VsZWN0ZWRDb2xvcnMsc2V0U2VsZWN0ZWRDb2xvcnNdPXVzZVN0YXRlKGN1cnJlbnRDb2xvcj8udmFsaWQ/W2N1cnJlbnRDb2xvcl06W10pO3VzZUVmZmVjdCgoKT0+e2N1cnJlbnRDb2xvcj09PXZvaWQgMCYmc2V0U2VsZWN0ZWRDb2xvcnMoW10pO30sW2N1cnJlbnRDb2xvcl0pO2xldCBwcmVzZXRzPXVzZU1lbW8oKCk9PihwcmVzZXRDb2xvcnN8fFtdKS5tYXAocHJlc2V0PT50eXBlb2YgcHJlc2V0PT1cInN0cmluZ1wiP3BhcnNlVmFsdWUocHJlc2V0KTpwcmVzZXQudGl0bGU/ey4uLnBhcnNlVmFsdWUocHJlc2V0LmNvbG9yKSxrZXl3b3JkOnByZXNldC50aXRsZX06cGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpKS5jb25jYXQoc2VsZWN0ZWRDb2xvcnMpLmZpbHRlcihCb29sZWFuKS5zbGljZSgtMjcpLFtwcmVzZXRDb2xvcnMsc2VsZWN0ZWRDb2xvcnNdKSxhZGRQcmVzZXQ9dXNlQ2FsbGJhY2soY29sb3I9Pntjb2xvcj8udmFsaWQmJihwcmVzZXRzLnNvbWUocHJlc2V0PT5pZChwcmVzZXRbY29sb3JTcGFjZV0pPT09aWQoY29sb3JbY29sb3JTcGFjZV0pKXx8c2V0U2VsZWN0ZWRDb2xvcnMoYXJyPT5hcnIuY29uY2F0KGNvbG9yKSkpO30sW2NvbG9yU3BhY2UscHJlc2V0c10pO3JldHVybiB7cHJlc2V0cyxhZGRQcmVzZXR9fSxDb2xvckNvbnRyb2w9KHtuYW1lLHZhbHVlOmluaXRpYWxWYWx1ZSxvbkNoYW5nZSxvbkZvY3VzLG9uQmx1cixwcmVzZXRDb2xvcnMsc3RhcnRPcGVuPSExLGFyZ1R5cGV9KT0+e2xldCB0aHJvdHRsZWRPbkNoYW5nZT11c2VDYWxsYmFjayh0aHJvdHRsZShvbkNoYW5nZSwyMDApLFtvbkNoYW5nZV0pLHt2YWx1ZSxyZWFsVmFsdWUsdXBkYXRlVmFsdWUsY29sb3IsY29sb3JTcGFjZSxjeWNsZUNvbG9yU3BhY2V9PXVzZUNvbG9ySW5wdXQoaW5pdGlhbFZhbHVlLHRocm90dGxlZE9uQ2hhbmdlKSx7cHJlc2V0cyxhZGRQcmVzZXR9PXVzZVByZXNldHMocHJlc2V0Q29sb3JzLGNvbG9yLGNvbG9yU3BhY2UpLFBpY2tlcj1Db2xvclBpY2tlcltjb2xvclNwYWNlXSxyZWFkb25seT0hIWFyZ1R5cGU/LnRhYmxlPy5yZWFkb25seTtyZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVyLHtcImFyaWEtcmVhZG9ubHlcIjpyZWFkb25seX0sUmVhY3QuY3JlYXRlRWxlbWVudChQaWNrZXJUb29sdGlwLHtzdGFydE9wZW4sdHJpZ2dlcjpyZWFkb25seT9bbnVsbF06dm9pZCAwLGNsb3NlT25PdXRzaWRlQ2xpY2s6ITAsb25WaXNpYmxlQ2hhbmdlOigpPT5hZGRQcmVzZXQoY29sb3IpLHRvb2x0aXA6UmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQ29udGVudCxudWxsLFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGlja2VyLHtjb2xvcjpyZWFsVmFsdWU9PT1cInRyYW5zcGFyZW50XCI/XCIjMDAwMDAwXCI6cmVhbFZhbHVlLG9uQ2hhbmdlOnVwZGF0ZVZhbHVlLG9uRm9jdXMsb25CbHVyfSkscHJlc2V0cy5sZW5ndGg+MCYmUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2hlcyxudWxsLHByZXNldHMubWFwKChwcmVzZXQsaW5kZXgpPT5SZWFjdC5jcmVhdGVFbGVtZW50KFdpdGhUb29sdGlwLHtrZXk6YCR7cHJlc2V0LnZhbHVlfS0ke2luZGV4fWAsaGFzQ2hyb21lOiExLHRvb2x0aXA6UmVhY3QuY3JlYXRlRWxlbWVudChOb3RlLHtub3RlOnByZXNldC5rZXl3b3JkfHxwcmVzZXQudmFsdWV9KX0sUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2gse3ZhbHVlOnByZXNldFtjb2xvclNwYWNlXSxhY3RpdmU6Y29sb3ImJmlkKHByZXNldFtjb2xvclNwYWNlXSk9PT1pZChjb2xvcltjb2xvclNwYWNlXSksb25DbGljazooKT0+dXBkYXRlVmFsdWUocHJlc2V0LnZhbHVlKX0pKSkpKX0sUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2gse3ZhbHVlOnJlYWxWYWx1ZSxzdHlsZTp7bWFyZ2luOjR9fSkpLFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5wdXQse2lkOmdldENvbnRyb2xJZChuYW1lKSx2YWx1ZSxvbkNoYW5nZTplPT51cGRhdGVWYWx1ZShlLnRhcmdldC52YWx1ZSksb25Gb2N1czplPT5lLnRhcmdldC5zZWxlY3QoKSxyZWFkT25seTpyZWFkb25seSxwbGFjZWhvbGRlcjpcIkNob29zZSBjb2xvci4uLlwifSksdmFsdWU/UmVhY3QuY3JlYXRlRWxlbWVudChUb2dnbGVJY29uLHtvbkNsaWNrOmN5Y2xlQ29sb3JTcGFjZX0pOm51bGwpfSxDb2xvcl9kZWZhdWx0PUNvbG9yQ29udHJvbDtcblxuZXhwb3J0IHsgQ29sb3JDb250cm9sLCBDb2xvcl9kZWZhdWx0IGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJjc3NLZXl3b3JkcyIsInJldmVyc2VLZXl3b3JkcyIsImtleSIsIk9iamVjdCIsImtleXMiLCJjb252ZXJ0IiwicmdiIiwiY2hhbm5lbHMiLCJsYWJlbHMiLCJoc2wiLCJoc3YiLCJod2IiLCJjbXlrIiwieHl6IiwibGFiIiwibGNoIiwiaGV4Iiwia2V5d29yZCIsImFuc2kxNiIsImFuc2kyNTYiLCJoY2ciLCJhcHBsZSIsImdyYXkiLCJtb2R1bGUiLCJleHBvcnRzIiwibW9kZWwiLCJFcnJvciIsImxlbmd0aCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJyIiwiZyIsImIiLCJtaW4iLCJNYXRoIiwibWF4IiwiZGVsdGEiLCJoIiwicyIsImwiLCJyZGlmIiwiZ2RpZiIsImJkaWYiLCJ2IiwiZGlmZiIsImRpZmZjIiwiYyIsInciLCJrIiwicmV2ZXJzZWQiLCJjdXJyZW50Q2xvc2VzdEtleXdvcmQiLCJjdXJyZW50Q2xvc2VzdERpc3RhbmNlIiwiSW5maW5pdHkiLCJkaXN0YW5jZSIsInkiLCJ4IiwieiIsInQyIiwidDMiLCJ2YWwiLCJ0MSIsImkiLCJzbWluIiwibG1pbiIsImhpIiwiZmxvb3IiLCJmIiwicCIsInEiLCJ0Iiwidm1pbiIsInNsIiwid2giLCJibCIsInJhdGlvIiwibiIsIm0iLCJ5MiIsIngyIiwiejIiLCJhIiwiYXRhbjIiLCJQSSIsInNxcnQiLCJociIsImNvcyIsInNpbiIsImFyZ3MiLCJzYXR1cmF0aW9uIiwicm91bmQiLCJhbnNpIiwiY29sb3IiLCJtdWx0IiwicmVtIiwic3RyaW5nIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsInN1YnN0cmluZyIsIm1hdGNoIiwiY29sb3JTdHJpbmciLCJzcGxpdCIsIm1hcCIsImNoYXIiLCJqb2luIiwiaW50ZWdlciIsInBhcnNlSW50IiwiY2hyb21hIiwiZ3JheXNjYWxlIiwiaHVlIiwicHVyZSIsIm1nIiwiY29udmVyc2lvbnMiLCJyb3V0ZSIsImZvckVhY2giLCJmcm9tTW9kZWwiLCJyb3V0ZXMiLCJ0b01vZGVsIiwiZm4iLCJ3cmFwUm91bmRlZCIsIndyYXBwZWRGbiIsImFyZzAiLCJyZXN1bHQiLCJsZW4iLCJjb252ZXJzaW9uIiwicmF3Iiwid3JhcFJhdyIsImRlcml2ZUJGUyIsImdyYXBoIiwiYnVpbGRHcmFwaCIsIm1vZGVscyIsInBhcmVudCIsInF1ZXVlIiwiY3VycmVudCIsInBvcCIsImFkamFjZW50cyIsImFkamFjZW50Iiwibm9kZSIsInVuc2hpZnQiLCJsaW5rIiwiZnJvbSIsInRvIiwid3JhcENvbnZlcnNpb24iLCJwYXRoIiwiY3VyIiwidHJpbW1lZEVuZEluZGV4IiwicmVUcmltU3RhcnQiLCJiYXNlVHJpbSIsInNsaWNlIiwicmVwbGFjZSIsInJlV2hpdGVzcGFjZSIsImluZGV4IiwidGVzdCIsImNoYXJBdCIsImlzT2JqZWN0Iiwibm93IiwidG9OdW1iZXIiLCJuYXRpdmVNYXgiLCJuYXRpdmVNaW4iLCJkZWJvdW5jZSIsImZ1bmMiLCJ3YWl0Iiwib3B0aW9ucyIsImxhc3RBcmdzIiwibGFzdFRoaXMiLCJtYXhXYWl0IiwidGltZXJJZCIsImxhc3RDYWxsVGltZSIsImxhc3RJbnZva2VUaW1lIiwibGVhZGluZyIsIm1heGluZyIsInRyYWlsaW5nIiwiVHlwZUVycm9yIiwiaW52b2tlRnVuYyIsInRpbWUiLCJ0aGlzQXJnIiwidW5kZWZpbmVkIiwiYXBwbHkiLCJzaG91bGRJbnZva2UiLCJ0aW1lU2luY2VMYXN0Q2FsbCIsInRpbWVyRXhwaXJlZCIsInRyYWlsaW5nRWRnZSIsInNldFRpbWVvdXQiLCJyZW1haW5pbmdXYWl0IiwidGltZVdhaXRpbmciLCJkZWJvdW5jZWQiLCJpc0ludm9raW5nIiwiYXJndW1lbnRzIiwidGhpcyIsImxlYWRpbmdFZGdlIiwiY2xlYXJUaW1lb3V0IiwiY2FuY2VsIiwiZmx1c2giLCJyb290IiwiRGF0ZSIsInRocm90dGxlIiwiaXNTeW1ib2wiLCJyZUlzQmFkSGV4IiwicmVJc0JpbmFyeSIsInJlSXNPY3RhbCIsImZyZWVQYXJzZUludCIsIm90aGVyIiwidmFsdWVPZiIsImlzQmluYXJ5IiwidSIsImFzc2lnbiIsImUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvIiwiaW5kZXhPZiIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsInNlbGYiLCJkIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaWRlbnRpZmllciIsInRvdWNoZXMiLCJsZWZ0IiwicGFnZVgiLCJwYWdlWE9mZnNldCIsIndpZHRoIiwidG9wIiwicGFnZVkiLCJwYWdlWU9mZnNldCIsImhlaWdodCIsInByZXZlbnREZWZhdWx0Iiwib25Nb3ZlIiwib25LZXkiLCJfIiwiYnV0dG9ucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmF0aXZlRXZlbnQiLCJjaGFuZ2VkVG91Y2hlcyIsImZvY3VzIiwid2hpY2giLCJrZXlDb2RlIiwiQyIsIkUiLCJIIiwib25Ub3VjaFN0YXJ0Iiwib25Nb3VzZURvd24iLCJjbGFzc05hbWUiLCJyZWYiLCJvbktleURvd24iLCJ0YWJJbmRleCIsInJvbGUiLCJmaWx0ZXIiLCJCb29sZWFuIiwic3R5bGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwb3ciLCJncmFkIiwidHVybiIsInJhZCIsIkwiLCJOdW1iZXIiLCJleGVjIiwiTiIsIksiLCJJIiwiRCIsIlMiLCJvbkNoYW5nZSIsIlQiLCJoc3ZhIiwiRiIsIlAiLCJYIiwidG9Mb3dlckNhc2UiLCJZIiwidG9Ic3ZhIiwiZXF1YWwiLCJmcm9tSHN2YSIsIlIiLCJDb2xvclNwYWNlMiIsIlYiLCJ3aW5kb3ciLCJKIiwiTWFwIiwiUSIsImRvY3VtZW50IiwiaGFzIiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInNldCIsInNldEF0dHJpYnV0ZSIsImhlYWQiLCJhcHBlbmRDaGlsZCIsIlUiLCJjb2xvck1vZGVsIiwiZGVmYXVsdENvbG9yIiwiVyIsImVlIiwiYmFja2dyb3VuZEltYWdlIiwicmUiLCJsZSIsIkVlIiwiV3JhcHBlciIsImRpdiIsInBvc2l0aW9uIiwibWF4V2lkdGgiLCJvcGFjaXR5IiwiUGlja2VyVG9vbHRpcCIsInpJbmRleCIsImN1cnNvciIsIlRvb2x0aXBDb250ZW50IiwibWFyZ2luIiwiYm9yZGVyUmFkaXVzIiwiYm94U2hhZG93IiwiTm90ZSIsInRoZW1lIiwiZm9udEZhbWlseSIsInR5cG9ncmFwaHkiLCJmb250cyIsImJhc2UiLCJTd2F0Y2hlcyIsImRpc3BsYXkiLCJncmlkVGVtcGxhdGVDb2x1bW5zIiwiZ2FwIiwicGFkZGluZyIsIm1hcmdpblRvcCIsIlN3YXRjaENvbG9yIiwiYWN0aXZlIiwiYXBwQm9yZGVyQ29sb3IiLCJ0ZXh0TXV0ZWRDb2xvciIsImFwcEJvcmRlclJhZGl1cyIsIlN3YXRjaCIsInByb3BzIiwiSW5wdXQiLCJyZWFkT25seSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiYm94U2l6aW5nIiwiVG9nZ2xlSWNvbiIsInJpZ2h0IiwiaW5wdXQiLCJDb2xvclNwYWNlIiwiUkdCIiwiSFNMIiwiSEVYIiwiQ09MT1JfU1BBQ0VTIiwidmFsdWVzIiwiQ09MT1JfUkVHRVhQIiwiUkdCX1JFR0VYUCIsIkhTTF9SRUdFWFAiLCJIRVhfUkVHRVhQIiwiU0hPUlRIRVhfUkVHRVhQIiwiQ29sb3JQaWNrZXIiLCJmYWxsYmFja0NvbG9yIiwic3RyaW5nVG9BcmdzIiwicGFyc2VWYWx1ZSIsInZhbGlkIiwiY29sb3JTcGFjZSIsInBsYWluIiwibWFwcGVkIiwic3RhcnRzV2l0aCIsInVzZUNvbG9ySW5wdXQiLCJpbml0aWFsVmFsdWUiLCJzZXRWYWx1ZSIsInVzZVN0YXRlIiwic2V0Q29sb3IiLCJzZXRDb2xvclNwYWNlIiwidXNlRWZmZWN0IiwibmV4dFZhbHVlIiwibmV4dENvbG9yIiwicmVhbFZhbHVlIiwidXNlTWVtbyIsInNob3J0IiwiZ2V0UmVhbFZhbHVlIiwidXBkYXRlVmFsdWUiLCJ1c2VDYWxsYmFjayIsInVwZGF0ZSIsInBhcnNlZCIsImN5Y2xlQ29sb3JTcGFjZSIsIm5leHQiLCJpZCIsIkNvbG9yQ29udHJvbCIsIm5hbWUiLCJvbkZvY3VzIiwib25CbHVyIiwicHJlc2V0Q29sb3JzIiwic3RhcnRPcGVuIiwiYXJnVHlwZSIsInRocm90dGxlZE9uQ2hhbmdlIiwiY3VycmVudENvbG9yIiwic2VsZWN0ZWRDb2xvcnMiLCJzZXRTZWxlY3RlZENvbG9ycyIsInByZXNldHMiLCJwcmVzZXQiLCJ0aXRsZSIsImNvbmNhdCIsImFkZFByZXNldCIsInNvbWUiLCJhcnIiLCJ1c2VQcmVzZXRzIiwiUGlja2VyIiwicmVhZG9ubHkiLCJ0YWJsZSIsInRyaWdnZXIiLCJjbG9zZU9uT3V0c2lkZUNsaWNrIiwib25WaXNpYmxlQ2hhbmdlIiwidG9vbHRpcCIsImhhc0Nocm9tZSIsIm5vdGUiLCJvbkNsaWNrIiwidGFyZ2V0Iiwic2VsZWN0IiwicGxhY2Vob2xkZXIiLCJDb2xvcl9kZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==