unpkg.com Open in urlscan Pro
2606:4700::6811:f6cb  Public Scan

Submitted URL: https://unpkg.com/@botpoison/browser
Effective URL: https://unpkg.com/@botpoison/browser@0.1.30/dist/index.js
Submission: On November 19 via manual from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

/*! For license information please see index.js.LICENSE.txt */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Botpoison",[],e):"object"==typeof exports?exports.Botpoison=e():t.Botpoison=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={434:(t,e,r)=>{var n;!function(){"use strict";var e="input is invalid type",i="object"==typeof window,h=i?window:{};h.JS_SHA512_NO_WINDOW&&(i=!1);var o=!i&&"object"==typeof self;!h.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?h=r.g:o&&(h=self);var s=!h.JS_SHA512_NO_COMMON_JS&&t.exports,a=r.amdO,l=!h.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,c="0123456789abcdef".split(""),u=[-2147483648,8388608,32768,128],f=[24,16,8,0],p=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],y=["hex","array","digest","arrayBuffer"],d=[];!h.JS_SHA512_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!l||!h.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(t,e){return function(r){return new m(e,!0).update(r)[t]()}},_=function(t){var e=b("hex",t);e.create=function(){return new m(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=b(n,t)}return e},v=function(t,e){return function(r,n){return new g(r,e,!0).update(n)[t]()}},w=function(t){var e=v("hex",t);e.create=function(e){return new g(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=v(n,t)}return e};function m(t,e){e?(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=d[16]=d[17]=d[18]=d[19]=d[20]=d[21]=d[22]=d[23]=d[24]=d[25]=d[26]=d[27]=d[28]=d[29]=d[30]=d[31]=d[32]=0,this.blocks=d):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==t?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==t?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==t?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=t,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}function g(t,r,n){var i,h=typeof t;if("string"!==h){if("object"!==h)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);i=!0}var o=t.length;if(!i){for(var s,a=[],c=(o=t.length,0),u=0;u<o;++u)(s=t.charCodeAt(u))<128?a[c++]=s:s<2048?(a[c++]=192|s>>6,a[c++]=128|63&s):s<55296||s>=57344?(a[c++]=224|s>>12,a[c++]=128|s>>6&63,a[c++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++u)),a[c++]=240|s>>18,a[c++]=128|s>>12&63,a[c++]=128|s>>6&63,a[c++]=128|63&s);t=a}t.length>128&&(t=new m(r,!0).update(t).array());var f=[],p=[];for(u=0;u<128;++u){var y=t[u]||0;f[u]=92^y,p[u]=54^y}m.call(this,r,n),this.update(p),this.oKeyPad=f,this.inner=!0,this.sharedMemory=n}m.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,h,o=0,s=t.length,a=this.blocks;o<s;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),r)for(h=this.start;o<s&&h<128;++o)a[h>>2]|=t[o]<<f[3&h++];else for(h=this.start;o<s&&h<128;++o)(i=t.charCodeAt(o))<128?a[h>>2]|=i<<f[3&h++]:i<2048?(a[h>>2]|=(192|i>>6)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):i<55296||i>=57344?(a[h>>2]|=(224|i>>12)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),a[h>>2]|=(240|i>>18)<<f[3&h++],a[h>>2]|=(128|i>>12&63)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]);this.lastByteIndex=h,this.bytes+=h-this.start,h>=128?(this.block=a[32],this.start=h-128,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},m.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[32]=this.block,t[e>>2]|=u[3&e],this.block=t[32],e>=112&&(this.hashed||this.hash(),t[0]=this.block,t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=t[16]=t[17]=t[18]=t[19]=t[20]=t[21]=t[22]=t[23]=t[24]=t[25]=t[26]=t[27]=t[28]=t[29]=t[30]=t[31]=t[32]=0),t[30]=this.hBytes<<3|this.bytes>>>29,t[31]=this.bytes<<3,this.hash()}},m.prototype.hash=function(){var t,e,r,n,i,h,o,s,a,l,c,u,f,y,d,b,_,v,w,m,g,O,S,A,P,j=this.h0h,E=this.h0l,x=this.h1h,T=this.h1l,B=this.h2h,I=this.h2l,U=this.h3h,N=this.h3l,k=this.h4h,R=this.h4l,C=this.h5h,z=this.h5l,M=this.h6h,D=this.h6l,H=this.h7h,J=this.h7l,K=this.blocks;for(t=32;t<160;t+=2)e=((m=K[t-30])>>>1|(g=K[t-29])<<31)^(m>>>8|g<<24)^m>>>7,r=(g>>>1|m<<31)^(g>>>8|m<<24)^(g>>>7|m<<25),n=((m=K[t-4])>>>19|(g=K[t-3])<<13)^(g>>>29|m<<3)^m>>>6,i=(g>>>19|m<<13)^(m>>>29|g<<3)^(g>>>6|m<<26),m=K[t-32],g=K[t-31],a=((O=K[t-14])>>>16)+(m>>>16)+(e>>>16)+(n>>>16)+((s=(65535&O)+(65535&m)+(65535&e)+(65535&n)+((o=((S=K[t-13])>>>16)+(g>>>16)+(r>>>16)+(i>>>16)+((h=(65535&S)+(65535&g)+(65535&r)+(65535&i))>>>16))>>>16))>>>16),K[t]=a<<16|65535&s,K[t+1]=o<<16|65535&h;var F=j,V=E,L=x,G=T,W=B,Y=I,q=U,Q=N,X=k,Z=R,$=C,tt=z,et=M,rt=D,nt=H,it=J;for(b=L&W,_=G&Y,t=0;t<160;t+=8)e=(F>>>28|V<<4)^(V>>>2|F<<30)^(V>>>7|F<<25),r=(V>>>28|F<<4)^(F>>>2|V<<30)^(F>>>7|V<<25),n=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),i=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),v=(l=F&L)^F&W^b,w=(c=V&G)^V&Y^_,A=X&$^~X&et,P=Z&tt^~Z&rt,m=K[t],g=K[t+1],m=(a=((O=p[t])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(nt>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&nt)+((o=((S=p[t+1])>>>16)+(g>>>16)+(P>>>16)+(i>>>16)+(it>>>16)+((h=(65535&S)+(65535&g)+(65535&P)+(65535&i)+(65535&it))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,nt=(a=(q>>>16)+(m>>>16)+((s=(65535&q)+(65535&m)+((o=(Q>>>16)+(g>>>16)+((h=(65535&Q)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,it=o<<16|65535&h,e=((q=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Q=o<<16|65535&h)<<4)^(Q>>>2|q<<30)^(Q>>>7|q<<25),r=(Q>>>28|q<<4)^(q>>>2|Q<<30)^(q>>>7|Q<<25),n=(nt>>>14|it<<18)^(nt>>>18|it<<14)^(it>>>9|nt<<23),i=(it>>>14|nt<<18)^(it>>>18|nt<<14)^(nt>>>9|it<<23),v=(u=q&F)^q&L^l,w=(f=Q&V)^Q&G^c,A=nt&X^~nt&$,P=it&Z^~it&tt,m=K[t+2],g=K[t+3],m=(a=((O=p[t+2])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(et>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&et)+((o=((S=p[t+3])>>>16)+(g>>>16)+(P>>>16)+(i>>>16)+(rt>>>16)+((h=(65535&S)+(65535&g)+(65535&P)+(65535&i)+(65535&rt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,et=(a=(W>>>16)+(m>>>16)+((s=(65535&W)+(65535&m)+((o=(Y>>>16)+(g>>>16)+((h=(65535&Y)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,rt=o<<16|65535&h,e=((W=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Y=o<<16|65535&h)<<4)^(Y>>>2|W<<30)^(Y>>>7|W<<25),r=(Y>>>28|W<<4)^(W>>>2|Y<<30)^(W>>>7|Y<<25),n=(et>>>14|rt<<18)^(et>>>18|rt<<14)^(rt>>>9|et<<23),i=(rt>>>14|et<<18)^(rt>>>18|et<<14)^(et>>>9|rt<<23),v=(y=W&q)^W&F^u,w=(d=Y&Q)^Y&V^f,A=et&nt^~et&X,P=rt&it^~rt&Z,m=K[t+4],g=K[t+5],m=(a=((O=p[t+4])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+($>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&$)+((o=((S=p[t+5])>>>16)+(g>>>16)+(P>>>16)+(i>>>16)+(tt>>>16)+((h=(65535&S)+(65535&g)+(65535&P)+(65535&i)+(65535&tt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,$=(a=(L>>>16)+(m>>>16)+((s=(65535&L)+(65535&m)+((o=(G>>>16)+(g>>>16)+((h=(65535&G)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,tt=o<<16|65535&h,e=((L=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(G=o<<16|65535&h)<<4)^(G>>>2|L<<30)^(G>>>7|L<<25),r=(G>>>28|L<<4)^(L>>>2|G<<30)^(L>>>7|G<<25),n=($>>>14|tt<<18)^($>>>18|tt<<14)^(tt>>>9|$<<23),i=(tt>>>14|$<<18)^(tt>>>18|$<<14)^($>>>9|tt<<23),v=(b=L&W)^L&q^y,w=(_=G&Y)^G&Q^d,A=$&et^~$&nt,P=tt&rt^~tt&it,m=K[t+6],g=K[t+7],m=(a=((O=p[t+6])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(X>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&X)+((o=((S=p[t+7])>>>16)+(g>>>16)+(P>>>16)+(i>>>16)+(Z>>>16)+((h=(65535&S)+(65535&g)+(65535&P)+(65535&i)+(65535&Z))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,X=(a=(F>>>16)+(m>>>16)+((s=(65535&F)+(65535&m)+((o=(V>>>16)+(g>>>16)+((h=(65535&V)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,Z=o<<16|65535&h,F=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,V=o<<16|65535&h;a=(j>>>16)+(F>>>16)+((s=(65535&j)+(65535&F)+((o=(E>>>16)+(V>>>16)+((h=(65535&E)+(65535&V))>>>16))>>>16))>>>16),this.h0h=a<<16|65535&s,this.h0l=o<<16|65535&h,a=(x>>>16)+(L>>>16)+((s=(65535&x)+(65535&L)+((o=(T>>>16)+(G>>>16)+((h=(65535&T)+(65535&G))>>>16))>>>16))>>>16),this.h1h=a<<16|65535&s,this.h1l=o<<16|65535&h,a=(B>>>16)+(W>>>16)+((s=(65535&B)+(65535&W)+((o=(I>>>16)+(Y>>>16)+((h=(65535&I)+(65535&Y))>>>16))>>>16))>>>16),this.h2h=a<<16|65535&s,this.h2l=o<<16|65535&h,a=(U>>>16)+(q>>>16)+((s=(65535&U)+(65535&q)+((o=(N>>>16)+(Q>>>16)+((h=(65535&N)+(65535&Q))>>>16))>>>16))>>>16),this.h3h=a<<16|65535&s,this.h3l=o<<16|65535&h,a=(k>>>16)+(X>>>16)+((s=(65535&k)+(65535&X)+((o=(R>>>16)+(Z>>>16)+((h=(65535&R)+(65535&Z))>>>16))>>>16))>>>16),this.h4h=a<<16|65535&s,this.h4l=o<<16|65535&h,a=(C>>>16)+($>>>16)+((s=(65535&C)+(65535&$)+((o=(z>>>16)+(tt>>>16)+((h=(65535&z)+(65535&tt))>>>16))>>>16))>>>16),this.h5h=a<<16|65535&s,this.h5l=o<<16|65535&h,a=(M>>>16)+(et>>>16)+((s=(65535&M)+(65535&et)+((o=(D>>>16)+(rt>>>16)+((h=(65535&D)+(65535&rt))>>>16))>>>16))>>>16),this.h6h=a<<16|65535&s,this.h6l=o<<16|65535&h,a=(H>>>16)+(nt>>>16)+((s=(65535&H)+(65535&nt)+((o=(J>>>16)+(it>>>16)+((h=(65535&J)+(65535&it))>>>16))>>>16))>>>16),this.h7h=a<<16|65535&s,this.h7l=o<<16|65535&h},m.prototype.hex=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,u=this.h5h,f=this.h5l,p=this.h6h,y=this.h6l,d=this.h7h,b=this.h7l,_=this.bits,v=c[t>>28&15]+c[t>>24&15]+c[t>>20&15]+c[t>>16&15]+c[t>>12&15]+c[t>>8&15]+c[t>>4&15]+c[15&t]+c[e>>28&15]+c[e>>24&15]+c[e>>20&15]+c[e>>16&15]+c[e>>12&15]+c[e>>8&15]+c[e>>4&15]+c[15&e]+c[r>>28&15]+c[r>>24&15]+c[r>>20&15]+c[r>>16&15]+c[r>>12&15]+c[r>>8&15]+c[r>>4&15]+c[15&r]+c[n>>28&15]+c[n>>24&15]+c[n>>20&15]+c[n>>16&15]+c[n>>12&15]+c[n>>8&15]+c[n>>4&15]+c[15&n]+c[i>>28&15]+c[i>>24&15]+c[i>>20&15]+c[i>>16&15]+c[i>>12&15]+c[i>>8&15]+c[i>>4&15]+c[15&i]+c[h>>28&15]+c[h>>24&15]+c[h>>20&15]+c[h>>16&15]+c[h>>12&15]+c[h>>8&15]+c[h>>4&15]+c[15&h]+c[o>>28&15]+c[o>>24&15]+c[o>>20&15]+c[o>>16&15]+c[o>>12&15]+c[o>>8&15]+c[o>>4&15]+c[15&o];return _>=256&&(v+=c[s>>28&15]+c[s>>24&15]+c[s>>20&15]+c[s>>16&15]+c[s>>12&15]+c[s>>8&15]+c[s>>4&15]+c[15&s]),_>=384&&(v+=c[a>>28&15]+c[a>>24&15]+c[a>>20&15]+c[a>>16&15]+c[a>>12&15]+c[a>>8&15]+c[a>>4&15]+c[15&a]+c[l>>28&15]+c[l>>24&15]+c[l>>20&15]+c[l>>16&15]+c[l>>12&15]+c[l>>8&15]+c[l>>4&15]+c[15&l]+c[u>>28&15]+c[u>>24&15]+c[u>>20&15]+c[u>>16&15]+c[u>>12&15]+c[u>>8&15]+c[u>>4&15]+c[15&u]+c[f>>28&15]+c[f>>24&15]+c[f>>20&15]+c[f>>16&15]+c[f>>12&15]+c[f>>8&15]+c[f>>4&15]+c[15&f]),512==_&&(v+=c[p>>28&15]+c[p>>24&15]+c[p>>20&15]+c[p>>16&15]+c[p>>12&15]+c[p>>8&15]+c[p>>4&15]+c[15&p]+c[y>>28&15]+c[y>>24&15]+c[y>>20&15]+c[y>>16&15]+c[y>>12&15]+c[y>>8&15]+c[y>>4&15]+c[15&y]+c[d>>28&15]+c[d>>24&15]+c[d>>20&15]+c[d>>16&15]+c[d>>12&15]+c[d>>8&15]+c[d>>4&15]+c[15&d]+c[b>>28&15]+c[b>>24&15]+c[b>>20&15]+c[b>>16&15]+c[b>>12&15]+c[b>>8&15]+c[b>>4&15]+c[15&b]),v},m.prototype.toString=m.prototype.hex,m.prototype.digest=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,c=this.h5h,u=this.h5l,f=this.h6h,p=this.h6l,y=this.h7h,d=this.h7l,b=this.bits,_=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,h>>24&255,h>>16&255,h>>8&255,255&h,o>>24&255,o>>16&255,o>>8&255,255&o];return b>=256&&_.push(s>>24&255,s>>16&255,s>>8&255,255&s),b>=384&&_.push(a>>24&255,a>>16&255,a>>8&255,255&a,l>>24&255,l>>16&255,l>>8&255,255&l,c>>24&255,c>>16&255,c>>8&255,255&c,u>>24&255,u>>16&255,u>>8&255,255&u),512==b&&_.push(f>>24&255,f>>16&255,f>>8&255,255&f,p>>24&255,p>>16&255,p>>8&255,255&p,y>>24&255,y>>16&255,y>>8&255,255&y,d>>24&255,d>>16&255,d>>8&255,255&d),_},m.prototype.array=m.prototype.digest,m.prototype.arrayBuffer=function(){this.finalize();var t=this.bits,e=new ArrayBuffer(t/8),r=new DataView(e);return r.setUint32(0,this.h0h),r.setUint32(4,this.h0l),r.setUint32(8,this.h1h),r.setUint32(12,this.h1l),r.setUint32(16,this.h2h),r.setUint32(20,this.h2l),r.setUint32(24,this.h3h),t>=256&&r.setUint32(28,this.h3l),t>=384&&(r.setUint32(32,this.h4h),r.setUint32(36,this.h4l),r.setUint32(40,this.h5h),r.setUint32(44,this.h5l)),512==t&&(r.setUint32(48,this.h6h),r.setUint32(52,this.h6l),r.setUint32(56,this.h7h),r.setUint32(60,this.h7l)),e},m.prototype.clone=function(){var t=new m(this.bits,!1);return this.copyTo(t),t},m.prototype.copyTo=function(t){var e=0,r=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(e=0;e<r.length;++e)t[r[e]]=this[r[e]];for(e=0;e<this.blocks.length;++e)t.blocks[e]=this.blocks[e]},g.prototype=new m,g.prototype.finalize=function(){if(m.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();m.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(t),m.prototype.finalize.call(this)}},g.prototype.clone=function(){var t=new g([],this.bits,!1);this.copyTo(t),t.inner=this.inner;for(var e=0;e<this.oKeyPad.length;++e)t.oKeyPad[e]=this.oKeyPad[e];return t};var O=_(512);O.sha512=O,O.sha384=_(384),O.sha512_256=_(256),O.sha512_224=_(224),O.sha512.hmac=w(512),O.sha384.hmac=w(384),O.sha512_256.hmac=w(256),O.sha512_224.hmac=w(224),s?t.exports=O:(h.sha512=O.sha512,h.sha384=O.sha384,h.sha512_256=O.sha512_256,h.sha512_224=O.sha512_224,a&&(void 0===(n=function(){return O}.call(O,r,O,t))||(t.exports=n)))}()},900:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(655),i=r(434),h=function(t){var e=t.input,r=t.expected;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,h;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=0,n.label=1;case 1:return h=(0,i.sha512)(e+":"+t),t%4e4!=0?[3,3]:[4,o(0)];case 2:n.sent(),n.label=3;case 3:return h.substring(0,r.length)===r?[2,t.toString()]:(t++,[3,1]);case 4:return[2]}}))}))},o=function(t){return new Promise((function(e){return setTimeout(e,t)}))};e.default=function(t){var e=t.challenge,r=t.onProgress;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,i,s,a,l,c,u;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=e.payload,i=t.nonce,s=t.difficulty,a=t.hardness,l=[],null==r||r(0),c=0,n.label=1;case 1:return c<a?[4,h({input:i+":"+c,expected:"0".repeat(s)})]:[3,5];case 2:return u=n.sent(),l.push(u),null==r||r(l.length/a),[4,o(0)];case 3:n.sent(),n.label=4;case 4:return c++,[3,1];case 5:return[2,l]}}))}))}},655:(t,e,r)=>{"use strict";r.r(e),r.d(e,{__extends:()=>i,__assign:()=>h,__rest:()=>o,__decorate:()=>s,__param:()=>a,__metadata:()=>l,__awaiter:()=>c,__generator:()=>u,__createBinding:()=>f,__exportStar:()=>p,__values:()=>y,__read:()=>d,__spread:()=>b,__spreadArrays:()=>_,__spreadArray:()=>v,__await:()=>w,__asyncGenerator:()=>m,__asyncDelegator:()=>g,__asyncValues:()=>O,__makeTemplateObject:()=>S,__importStar:()=>P,__importDefault:()=>j,__classPrivateFieldGet:()=>E,__classPrivateFieldSet:()=>x});var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},n(t,e)};function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var h=function(){return h=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},h.apply(this,arguments)};function o(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}function s(t,e,r,n){var i,h=arguments.length,o=h<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,r,n);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(o=(h<3?i(o):h>3?i(e,r,o):i(e,r))||o);return h>3&&o&&Object.defineProperty(e,r,o),o}function a(t,e){return function(r,n){e(r,n,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function c(t,e,r,n){return new(r||(r=Promise))((function(i,h){function o(t){try{a(n.next(t))}catch(t){h(t)}}function s(t){try{a(n.throw(t))}catch(t){h(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}a((n=n.apply(t,e||[])).next())}))}function u(t,e){var r,n,i,h,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return h={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(h[Symbol.iterator]=function(){return this}),h;function s(h){return function(s){return function(h){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&h[0]?n.return:h[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,h[1])).done)return i;switch(n=0,i&&(h=[2&h[0],i.value]),h[0]){case 0:case 1:i=h;break;case 4:return o.label++,{value:h[1],done:!1};case 5:o.label++,n=h[1],h=[0];continue;case 7:h=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==h[0]&&2!==h[0])){o=0;continue}if(3===h[0]&&(!i||h[1]>i[0]&&h[1]<i[3])){o.label=h[1];break}if(6===h[0]&&o.label<i[1]){o.label=i[1],i=h;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(h);break}i[2]&&o.ops.pop(),o.trys.pop();continue}h=e.call(t,o)}catch(t){h=[6,t],n=0}finally{r=i=0}if(5&h[0])throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}([h,s])}}}var f=Object.create?function(t,e,r,n){void 0===n&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};function p(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||f(e,t,r)}function y(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,h=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=h.next()).done;)o.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=h.return)&&r.call(h)}finally{if(i)throw i.error}}return o}function b(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(d(arguments[e]));return t}function _(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),i=0;for(e=0;e<r;e++)for(var h=arguments[e],o=0,s=h.length;o<s;o++,i++)n[i]=h[o];return n}function v(t,e,r){if(r||2===arguments.length)for(var n,i=0,h=e.length;i<h;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))}function w(t){return this instanceof w?(this.v=t,this):new w(t)}function m(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(t,e||[]),h=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(t){i[t]&&(n[t]=function(e){return new Promise((function(r,n){h.push([t,e,r,n])>1||s(t,e)}))})}function s(t,e){try{(r=i[t](e)).value instanceof w?Promise.resolve(r.value.v).then(a,l):c(h[0][2],r)}catch(t){c(h[0][3],t)}var r}function a(t){s("next",t)}function l(t){s("throw",t)}function c(t,e){t(e),h.shift(),h.length&&s(h[0][0],h[0][1])}}function g(t){var e,r;return e={},n("next"),n("throw",(function(t){throw t})),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,i){e[n]=t[n]?function(e){return(r=!r)?{value:w(t[n](e)),done:"return"===n}:i?i(e):e}:i}}function O(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=y(t),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,i){!function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)}(n,i,(e=t[r](e)).done,e.value)}))}}}function S(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}var A=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};function P(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&f(e,t,r);return A(e,t),e}function j(t){return t&&t.__esModule?t:{default:t}}function E(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)}function x(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(t,r):i?i.value=r:e.set(t,r),r}},147:t=>{"use strict";t.exports={i8:"0.1.30"}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var h=e[n]={exports:{}};return t[n](h,h.exports,r),h.exports}r.amdO={},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";var t=n,e=r(655),i=(0,e.__importDefault)(r(900)),h=function(){s(),a(),l()},o=function(){function t(t){var e=t.publicKey;this.publicKey=e}return t.init=function(){h()},t.prototype.challenge=function(t){return(0,e.__awaiter)(this,void 0,void 0,(function(){var r,n,h;return(0,e.__generator)(this,(function(e){switch(e.label){case 0:return r=(t||{}).onProgress,[4,fetch("https://api.botpoison.com/challenge",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({publicKey:this.publicKey,hostname:location.hostname})})];case 1:return[4,e.sent().json()];case 2:return n=e.sent(),[4,(0,i.default)({challenge:n,onProgress:r})];case 3:return h=e.sent(),[2,{solution:btoa(JSON.stringify({challenge:n,solutions:h}))}]}}))}))},t}();t.default=o;var s=function(){"undefined"!=typeof document&&(window.__BOTPOISON_VERSION__=r(147).i8)},a=function(){"undefined"!=typeof document&&(window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_SUBMIT_LISTENER__=!0,document.addEventListener("submit",(function(t){try{var e=t.target;if(e){var r=e,n=r.dataset.botpoisonPublicKey;if(n){t.preventDefault(),r.dispatchEvent(new CustomEvent("botpoison-challenge-start"));var i=new o({publicKey:n});i.challenge().then((function(t){var e=t.solution;r.dispatchEvent(new CustomEvent("botpoison-challenge-success")),function(t){var e=t.formElement,r=t.id,n=t.name,i=t.value,h=document.getElementById(r);if(!h){var o=document.createElement("input");o.setAttribute("type","hidden"),o.setAttribute("id",r),o.setAttribute("name",n),e.appendChild(o),h=o}h.setAttribute("value",i)}({formElement:r,id:"_botpoison",name:"_botpoison",value:e}),HTMLFormElement.prototype.submit.call(r)})).catch((function(t){console.error(t),r.dispatchEvent(new CustomEvent("botpoison-challenge-error"))}))}}}catch(t){console.error(t)}return!0}))))},l=function(){"undefined"==typeof document||window.__BOTPOISON_HEARTBEAT_DISPATCHER__||(window.__BOTPOISON_HEARTBEAT_DISPATCHER__=!0)};h()})(),n.default})()}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVlILEdBQ3hCdEwsRUFBUXNMLEVBRVZ0TCxFQUFNd0wsYUFBYSxRQUFTdkgsR0FtQ1p5SCxDQUE2QixDQUMzQlIsWUFBVyxFQUNYQyxHQVZLLGFBV0xDLEtBVk8sYUFXUG5ILE1BQU8vQyxJQUVUeUssZ0JBQWdCbFQsVUFBVW1ULE9BQU9qVCxLQUFLLE1BRXZDa1QsT0FBTSxTQUFDMUYsR0FDTjJGLFFBQVEzRixNQUFNQSxHQUNkLEVBQVkyRSxjQUNWLElBQUlDLFlBQVksbUNBSzFCLE1BQU8xSSxHQUNQeUosUUFBUTNGLE1BQU05RCxHQUVoQixPQUFPLFFBTVRtSCxFQUF5QixXQUNMLG9CQUFiYSxVQUNKclQsT0FBTytVLHFDQUNWL1UsT0FBTytVLG9DQUFxQyxJQXlCbEQxQyIsInNvdXJjZXMiOlsid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vbm9kZV9tb2R1bGVzL2pzLXNoYTUxMi9zcmMvc2hhNTEyLmpzIiwid2VicGFjazovL0JvdHBvaXNvbi8uL3NyYy9jb21wdXRlU29sdXRpb25zLnRzIiwid2VicGFjazovL0JvdHBvaXNvbi8uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvYW1kIG9wdGlvbnMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJCb3Rwb2lzb25cIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiQm90cG9pc29uXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkJvdHBvaXNvblwiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKlxuICogW2pzLXNoYTUxMl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2VtbjE3OC9qcy1zaGE1MTJ9XG4gKlxuICogQHZlcnNpb24gMC44LjBcbiAqIEBhdXRob3IgQ2hlbiwgWWktQ3l1YW4gW2VtbjE3OEBnbWFpbC5jb21dXG4gKiBAY29weXJpZ2h0IENoZW4sIFlpLUN5dWFuIDIwMTQtMjAxOFxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbi8qanNsaW50IGJpdHdpc2U6IHRydWUgKi9cbihmdW5jdGlvbiAoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICB2YXIgSU5QVVRfRVJST1IgPSAnaW5wdXQgaXMgaW52YWxpZCB0eXBlJztcbiAgdmFyIEZJTkFMSVpFX0VSUk9SID0gJ2ZpbmFsaXplIGFscmVhZHkgY2FsbGVkJztcbiAgdmFyIFdJTkRPVyA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICB2YXIgcm9vdCA9IFdJTkRPVyA/IHdpbmRvdyA6IHt9O1xuICBpZiAocm9vdC5KU19TSEE1MTJfTk9fV0lORE9XKSB7XG4gICAgV0lORE9XID0gZmFsc2U7XG4gIH1cbiAgdmFyIFdFQl9XT1JLRVIgPSAhV0lORE9XICYmIHR5cGVvZiBzZWxmID09PSAnb2JqZWN0JztcbiAgdmFyIE5PREVfSlMgPSAhcm9vdC5KU19TSEE1MTJfTk9fTk9ERV9KUyAmJiB0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGU7XG4gIGlmIChOT0RFX0pTKSB7XG4gICAgcm9vdCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChXRUJfV09SS0VSKSB7XG4gICAgcm9vdCA9IHNlbGY7XG4gIH1cbiAgdmFyIENPTU1PTl9KUyA9ICFyb290LkpTX1NIQTUxMl9OT19DT01NT05fSlMgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHM7XG4gIHZhciBBTUQgPSB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQ7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAhcm9vdC5KU19TSEE1MTJfTk9fQVJSQVlfQlVGRkVSICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBIRVhfQ0hBUlMgPSAnMDEyMzQ1Njc4OWFiY2RlZicuc3BsaXQoJycpO1xuICB2YXIgRVhUUkEgPSBbLTIxNDc0ODM2NDgsIDgzODg2MDgsIDMyNzY4LCAxMjhdO1xuICB2YXIgU0hJRlQgPSBbMjQsIDE2LCA4LCAwXTtcbiAgdmFyIEsgPSBbXG4gICAgMHg0MjhBMkY5OCwgMHhENzI4QUUyMiwgMHg3MTM3NDQ5MSwgMHgyM0VGNjVDRCxcbiAgICAweEI1QzBGQkNGLCAweEVDNEQzQjJGLCAweEU5QjVEQkE1LCAweDgxODlEQkJDLFxuICAgIDB4Mzk1NkMyNUIsIDB4RjM0OEI1MzgsIDB4NTlGMTExRjEsIDB4QjYwNUQwMTksXG4gICAgMHg5MjNGODJBNCwgMHhBRjE5NEY5QiwgMHhBQjFDNUVENSwgMHhEQTZEODExOCxcbiAgICAweEQ4MDdBQTk4LCAweEEzMDMwMjQyLCAweDEyODM1QjAxLCAweDQ1NzA2RkJFLFxuICAgIDB4MjQzMTg1QkUsIDB4NEVFNEIyOEMsIDB4NTUwQzdEQzMsIDB4RDVGRkI0RTIsXG4gICAgMHg3MkJFNUQ3NCwgMHhGMjdCODk2RiwgMHg4MERFQjFGRSwgMHgzQjE2OTZCMSxcbiAgICAweDlCREMwNkE3LCAweDI1QzcxMjM1LCAweEMxOUJGMTc0LCAweENGNjkyNjk0LFxuICAgIDB4RTQ5QjY5QzEsIDB4OUVGMTRBRDIsIDB4RUZCRTQ3ODYsIDB4Mzg0RjI1RTMsXG4gICAgMHgwRkMxOURDNiwgMHg4QjhDRDVCNSwgMHgyNDBDQTFDQywgMHg3N0FDOUM2NSxcbiAgICAweDJERTkyQzZGLCAweDU5MkIwMjc1LCAweDRBNzQ4NEFBLCAweDZFQTZFNDgzLFxuICAgIDB4NUNCMEE5REMsIDB4QkQ0MUZCRDQsIDB4NzZGOTg4REEsIDB4ODMxMTUzQjUsXG4gICAgMHg5ODNFNTE1MiwgMHhFRTY2REZBQiwgMHhBODMxQzY2RCwgMHgyREI0MzIxMCxcbiAgICAweEIwMDMyN0M4LCAweDk4RkIyMTNGLCAweEJGNTk3RkM3LCAweEJFRUYwRUU0LFxuICAgIDB4QzZFMDBCRjMsIDB4M0RBODhGQzIsIDB4RDVBNzkxNDcsIDB4OTMwQUE3MjUsXG4gICAgMHgwNkNBNjM1MSwgMHhFMDAzODI2RiwgMHgxNDI5Mjk2NywgMHgwQTBFNkU3MCxcbiAgICAweDI3QjcwQTg1LCAweDQ2RDIyRkZDLCAweDJFMUIyMTM4LCAweDVDMjZDOTI2LFxuICAgIDB4NEQyQzZERkMsIDB4NUFDNDJBRUQsIDB4NTMzODBEMTMsIDB4OUQ5NUIzREYsXG4gICAgMHg2NTBBNzM1NCwgMHg4QkFGNjNERSwgMHg3NjZBMEFCQiwgMHgzQzc3QjJBOCxcbiAgICAweDgxQzJDOTJFLCAweDQ3RURBRUU2LCAweDkyNzIyQzg1LCAweDE0ODIzNTNCLFxuICAgIDB4QTJCRkU4QTEsIDB4NENGMTAzNjQsIDB4QTgxQTY2NEIsIDB4QkM0MjMwMDEsXG4gICAgMHhDMjRCOEI3MCwgMHhEMEY4OTc5MSwgMHhDNzZDNTFBMywgMHgwNjU0QkUzMCxcbiAgICAweEQxOTJFODE5LCAweEQ2RUY1MjE4LCAweEQ2OTkwNjI0LCAweDU1NjVBOTEwLFxuICAgIDB4RjQwRTM1ODUsIDB4NTc3MTIwMkEsIDB4MTA2QUEwNzAsIDB4MzJCQkQxQjgsXG4gICAgMHgxOUE0QzExNiwgMHhCOEQyRDBDOCwgMHgxRTM3NkMwOCwgMHg1MTQxQUI1MyxcbiAgICAweDI3NDg3NzRDLCAweERGOEVFQjk5LCAweDM0QjBCQ0I1LCAweEUxOUI0OEE4LFxuICAgIDB4MzkxQzBDQjMsIDB4QzVDOTVBNjMsIDB4NEVEOEFBNEEsIDB4RTM0MThBQ0IsXG4gICAgMHg1QjlDQ0E0RiwgMHg3NzYzRTM3MywgMHg2ODJFNkZGMywgMHhENkIyQjhBMyxcbiAgICAweDc0OEY4MkVFLCAweDVERUZCMkZDLCAweDc4QTU2MzZGLCAweDQzMTcyRjYwLFxuICAgIDB4ODRDODc4MTQsIDB4QTFGMEFCNzIsIDB4OENDNzAyMDgsIDB4MUE2NDM5RUMsXG4gICAgMHg5MEJFRkZGQSwgMHgyMzYzMUUyOCwgMHhBNDUwNkNFQiwgMHhERTgyQkRFOSxcbiAgICAweEJFRjlBM0Y3LCAweEIyQzY3OTE1LCAweEM2NzE3OEYyLCAweEUzNzI1MzJCLFxuICAgIDB4Q0EyNzNFQ0UsIDB4RUEyNjYxOUMsIDB4RDE4NkI4QzcsIDB4MjFDMEMyMDcsXG4gICAgMHhFQURBN0RENiwgMHhDREUwRUIxRSwgMHhGNTdENEY3RiwgMHhFRTZFRDE3OCxcbiAgICAweDA2RjA2N0FBLCAweDcyMTc2RkJBLCAweDBBNjM3REM1LCAweEEyQzg5OEE2LFxuICAgIDB4MTEzRjk4MDQsIDB4QkVGOTBEQUUsIDB4MUI3MTBCMzUsIDB4MTMxQzQ3MUIsXG4gICAgMHgyOERCNzdGNSwgMHgyMzA0N0Q4NCwgMHgzMkNBQUI3QiwgMHg0MEM3MjQ5MyxcbiAgICAweDNDOUVCRTBBLCAweDE1QzlCRUJDLCAweDQzMUQ2N0M0LCAweDlDMTAwRDRDLFxuICAgIDB4NENDNUQ0QkUsIDB4Q0IzRTQyQjYsIDB4NTk3RjI5OUMsIDB4RkM2NTdFMkEsXG4gICAgMHg1RkNCNkZBQiwgMHgzQUQ2RkFFQywgMHg2QzQ0MTk4QywgMHg0QTQ3NTgxN1xuICBdO1xuXG4gIHZhciBPVVRQVVRfVFlQRVMgPSBbJ2hleCcsICdhcnJheScsICdkaWdlc3QnLCAnYXJyYXlCdWZmZXInXTtcblxuICB2YXIgYmxvY2tzID0gW107XG5cbiAgaWYgKHJvb3QuSlNfU0hBNTEyX05PX05PREVfSlMgfHwgIUFycmF5LmlzQXJyYXkpIHtcbiAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH1cblxuICBpZiAoQVJSQVlfQlVGRkVSICYmIChyb290LkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVJfSVNfVklFVyB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIEFycmF5QnVmZmVyLmlzVmlldyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmouYnVmZmVyICYmIG9iai5idWZmZXIuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyO1xuICAgIH07XG4gIH1cblxuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKG91dHB1dFR5cGUsIGJpdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgU2hhNTEyKGJpdHMsIHRydWUpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzKSB7XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZU91dHB1dE1ldGhvZCgnaGV4JywgYml0cyk7XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgU2hhNTEyKGJpdHMpO1xuICAgIH07XG4gICAgbWV0aG9kLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZSgpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcbiAgICAgIG1ldGhvZFt0eXBlXSA9IGNyZWF0ZU91dHB1dE1ldGhvZCh0eXBlLCBiaXRzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZDtcbiAgfTtcblxuICB2YXIgY3JlYXRlSG1hY091dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChvdXRwdXRUeXBlLCBiaXRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgSG1hY1NoYTUxMihrZXksIGJpdHMsIHRydWUpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGNyZWF0ZUhtYWNNZXRob2QgPSBmdW5jdGlvbiAoYml0cykge1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kKCdoZXgnLCBiaXRzKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIG5ldyBIbWFjU2hhNTEyKGtleSwgYml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUoa2V5KS51cGRhdGUobWVzc2FnZSk7XG4gICAgfTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE9VVFBVVF9UWVBFUy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHR5cGUgPSBPVVRQVVRfVFlQRVNbaV07XG4gICAgICBtZXRob2RbdHlwZV0gPSBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kKHR5cGUsIGJpdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFNoYTUxMihiaXRzLCBzaGFyZWRNZW1vcnkpIHtcbiAgICBpZiAoc2hhcmVkTWVtb3J5KSB7XG4gICAgICBibG9ja3NbMF0gPSBibG9ja3NbMV0gPSBibG9ja3NbMl0gPSBibG9ja3NbM10gPSBibG9ja3NbNF0gPVxuICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICBibG9ja3NbMTNdID0gYmxvY2tzWzE0XSA9IGJsb2Nrc1sxNV0gPSBibG9ja3NbMTZdID1cbiAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICBibG9ja3NbMjVdID0gYmxvY2tzWzI2XSA9IGJsb2Nrc1syN10gPSBibG9ja3NbMjhdID1cbiAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgICAgdGhpcy5ibG9ja3MgPSBibG9ja3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmxvY2tzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIH1cblxuICAgIGlmIChiaXRzID09IDM4NCkge1xuICAgICAgdGhpcy5oMGggPSAweENCQkI5RDVEO1xuICAgICAgdGhpcy5oMGwgPSAweEMxMDU5RUQ4O1xuICAgICAgdGhpcy5oMWggPSAweDYyOUEyOTJBO1xuICAgICAgdGhpcy5oMWwgPSAweDM2N0NENTA3O1xuICAgICAgdGhpcy5oMmggPSAweDkxNTkwMTVBO1xuICAgICAgdGhpcy5oMmwgPSAweDMwNzBERDE3O1xuICAgICAgdGhpcy5oM2ggPSAweDE1MkZFQ0Q4O1xuICAgICAgdGhpcy5oM2wgPSAweEY3MEU1OTM5O1xuICAgICAgdGhpcy5oNGggPSAweDY3MzMyNjY3O1xuICAgICAgdGhpcy5oNGwgPSAweEZGQzAwQjMxO1xuICAgICAgdGhpcy5oNWggPSAweDhFQjQ0QTg3O1xuICAgICAgdGhpcy5oNWwgPSAweDY4NTgxNTExO1xuICAgICAgdGhpcy5oNmggPSAweERCMEMyRTBEO1xuICAgICAgdGhpcy5oNmwgPSAweDY0Rjk4RkE3O1xuICAgICAgdGhpcy5oN2ggPSAweDQ3QjU0ODFEO1xuICAgICAgdGhpcy5oN2wgPSAweEJFRkE0RkE0O1xuICAgIH0gZWxzZSBpZiAoYml0cyA9PSAyNTYpIHtcbiAgICAgIHRoaXMuaDBoID0gMHgyMjMxMjE5NDtcbiAgICAgIHRoaXMuaDBsID0gMHhGQzJCRjcyQztcbiAgICAgIHRoaXMuaDFoID0gMHg5RjU1NUZBMztcbiAgICAgIHRoaXMuaDFsID0gMHhDODRDNjRDMjtcbiAgICAgIHRoaXMuaDJoID0gMHgyMzkzQjg2QjtcbiAgICAgIHRoaXMuaDJsID0gMHg2RjUzQjE1MTtcbiAgICAgIHRoaXMuaDNoID0gMHg5NjM4NzcxOTtcbiAgICAgIHRoaXMuaDNsID0gMHg1OTQwRUFCRDtcbiAgICAgIHRoaXMuaDRoID0gMHg5NjI4M0VFMjtcbiAgICAgIHRoaXMuaDRsID0gMHhBODhFRkZFMztcbiAgICAgIHRoaXMuaDVoID0gMHhCRTVFMUUyNTtcbiAgICAgIHRoaXMuaDVsID0gMHg1Mzg2Mzk5MjtcbiAgICAgIHRoaXMuaDZoID0gMHgyQjAxOTlGQztcbiAgICAgIHRoaXMuaDZsID0gMHgyQzg1QjhBQTtcbiAgICAgIHRoaXMuaDdoID0gMHgwRUI3MkREQztcbiAgICAgIHRoaXMuaDdsID0gMHg4MUM1MkNBMjtcbiAgICB9IGVsc2UgaWYgKGJpdHMgPT0gMjI0KSB7XG4gICAgICB0aGlzLmgwaCA9IDB4OEMzRDM3Qzg7XG4gICAgICB0aGlzLmgwbCA9IDB4MTk1NDREQTI7XG4gICAgICB0aGlzLmgxaCA9IDB4NzNFMTk5NjY7XG4gICAgICB0aGlzLmgxbCA9IDB4ODlEQ0Q0RDY7XG4gICAgICB0aGlzLmgyaCA9IDB4MURGQUI3QUU7XG4gICAgICB0aGlzLmgybCA9IDB4MzJGRjlDODI7XG4gICAgICB0aGlzLmgzaCA9IDB4Njc5REQ1MTQ7XG4gICAgICB0aGlzLmgzbCA9IDB4NTgyRjlGQ0Y7XG4gICAgICB0aGlzLmg0aCA9IDB4MEY2RDJCNjk7XG4gICAgICB0aGlzLmg0bCA9IDB4N0JENDREQTg7XG4gICAgICB0aGlzLmg1aCA9IDB4NzdFMzZGNzM7XG4gICAgICB0aGlzLmg1bCA9IDB4MDRDNDg5NDI7XG4gICAgICB0aGlzLmg2aCA9IDB4M0Y5RDg1QTg7XG4gICAgICB0aGlzLmg2bCA9IDB4NkExRDM2Qzg7XG4gICAgICB0aGlzLmg3aCA9IDB4MTExMkU2QUQ7XG4gICAgICB0aGlzLmg3bCA9IDB4OTFENjkyQTE7XG4gICAgfSBlbHNlIHsgLy8gNTEyXG4gICAgICB0aGlzLmgwaCA9IDB4NkEwOUU2Njc7XG4gICAgICB0aGlzLmgwbCA9IDB4RjNCQ0M5MDg7XG4gICAgICB0aGlzLmgxaCA9IDB4QkI2N0FFODU7XG4gICAgICB0aGlzLmgxbCA9IDB4ODRDQUE3M0I7XG4gICAgICB0aGlzLmgyaCA9IDB4M0M2RUYzNzI7XG4gICAgICB0aGlzLmgybCA9IDB4RkU5NEY4MkI7XG4gICAgICB0aGlzLmgzaCA9IDB4QTU0RkY1M0E7XG4gICAgICB0aGlzLmgzbCA9IDB4NUYxRDM2RjE7XG4gICAgICB0aGlzLmg0aCA9IDB4NTEwRTUyN0Y7XG4gICAgICB0aGlzLmg0bCA9IDB4QURFNjgyRDE7XG4gICAgICB0aGlzLmg1aCA9IDB4OUIwNTY4OEM7XG4gICAgICB0aGlzLmg1bCA9IDB4MkIzRTZDMUY7XG4gICAgICB0aGlzLmg2aCA9IDB4MUY4M0Q5QUI7XG4gICAgICB0aGlzLmg2bCA9IDB4RkI0MUJENkI7XG4gICAgICB0aGlzLmg3aCA9IDB4NUJFMENEMTk7XG4gICAgICB0aGlzLmg3bCA9IDB4MTM3RTIxNzk7XG4gICAgfVxuICAgIHRoaXMuYml0cyA9IGJpdHM7XG5cbiAgICB0aGlzLmJsb2NrID0gdGhpcy5zdGFydCA9IHRoaXMuYnl0ZXMgPSB0aGlzLmhCeXRlcyA9IDA7XG4gICAgdGhpcy5maW5hbGl6ZWQgPSB0aGlzLmhhc2hlZCA9IGZhbHNlO1xuICB9XG5cbiAgU2hhNTEyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgIGlmICh0aGlzLmZpbmFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEZJTkFMSVpFX0VSUk9SKTtcbiAgICB9XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBtZXNzYWdlO1xuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgbWVzc2FnZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIG5vdFN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBjb2RlLCBpbmRleCA9IDAsIGksIGxlbmd0aCA9IG1lc3NhZ2UubGVuZ3RoLCBibG9ja3MgPSB0aGlzLmJsb2NrcztcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaGFzaGVkKSB7XG4gICAgICAgIHRoaXMuaGFzaGVkID0gZmFsc2U7XG4gICAgICAgIGJsb2Nrc1swXSA9IHRoaXMuYmxvY2s7XG4gICAgICAgIGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICAgIGJsb2Nrc1s1XSA9IGJsb2Nrc1s2XSA9IGJsb2Nrc1s3XSA9IGJsb2Nrc1s4XSA9XG4gICAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgICBibG9ja3NbMTddID0gYmxvY2tzWzE4XSA9IGJsb2Nrc1sxOV0gPSBibG9ja3NbMjBdID1cbiAgICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgICBibG9ja3NbMjldID0gYmxvY2tzWzMwXSA9IGJsb2Nrc1szMV0gPSBibG9ja3NbMzJdID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYobm90U3RyaW5nKSB7XG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCAxMjg7ICsraW5kZXgpIHtcbiAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBtZXNzYWdlW2luZGV4XSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IDEyODsgKytpbmRleCkge1xuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gY29kZSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4YzAgfCAoY29kZSA+PiA2KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ZTAgfCAoY29kZSA+PiAxMikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKG1lc3NhZ2UuY2hhckNvZGVBdCgrK2luZGV4KSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiAxMikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdEJ5dGVJbmRleCA9IGk7XG4gICAgICB0aGlzLmJ5dGVzICs9IGkgLSB0aGlzLnN0YXJ0O1xuICAgICAgaWYgKGkgPj0gMTI4KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbMzJdO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaSAtIDEyODtcbiAgICAgICAgdGhpcy5oYXNoKCk7XG4gICAgICAgIHRoaXMuaGFzaGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5ieXRlcyA+IDQyOTQ5NjcyOTUpIHtcbiAgICAgIHRoaXMuaEJ5dGVzICs9IHRoaXMuYnl0ZXMgLyA0Mjk0OTY3Mjk2IDw8IDA7XG4gICAgICB0aGlzLmJ5dGVzID0gdGhpcy5ieXRlcyAlIDQyOTQ5NjcyOTY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZmluYWxpemVkID0gdHJ1ZTtcbiAgICB2YXIgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGkgPSB0aGlzLmxhc3RCeXRlSW5kZXg7XG4gICAgYmxvY2tzWzMyXSA9IHRoaXMuYmxvY2s7XG4gICAgYmxvY2tzW2kgPj4gMl0gfD0gRVhUUkFbaSAmIDNdO1xuICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbMzJdO1xuICAgIGlmIChpID49IDExMikge1xuICAgICAgaWYgKCF0aGlzLmhhc2hlZCkge1xuICAgICAgICB0aGlzLmhhc2goKTtcbiAgICAgIH1cbiAgICAgIGJsb2Nrc1swXSA9IHRoaXMuYmxvY2s7XG4gICAgICBibG9ja3NbMV0gPSBibG9ja3NbMl0gPSBibG9ja3NbM10gPSBibG9ja3NbNF0gPVxuICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICBibG9ja3NbMTNdID0gYmxvY2tzWzE0XSA9IGJsb2Nrc1sxNV0gPSBibG9ja3NbMTZdID1cbiAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICBibG9ja3NbMjVdID0gYmxvY2tzWzI2XSA9IGJsb2Nrc1syN10gPSBibG9ja3NbMjhdID1cbiAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgIH1cbiAgICBibG9ja3NbMzBdID0gdGhpcy5oQnl0ZXMgPDwgMyB8IHRoaXMuYnl0ZXMgPj4+IDI5O1xuICAgIGJsb2Nrc1szMV0gPSB0aGlzLmJ5dGVzIDw8IDM7XG4gICAgdGhpcy5oYXNoKCk7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5oYXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBqLCBzMGgsIHMwbCwgczFoLCBzMWwsIGMxLCBjMiwgYzMsIGM0LFxuICAgICAgYWJoLCBhYmwsIGRhaCwgZGFsLCBjZGgsIGNkbCwgYmNoLCBiY2wsXG4gICAgICBtYWpoLCBtYWpsLCB0MWgsIHQxbCwgdDJoLCB0MmwsIGNoaCwgY2hsO1xuXG4gICAgZm9yIChqID0gMzI7IGogPCAxNjA7IGogKz0gMikge1xuICAgICAgdDFoID0gYmxvY2tzW2ogLSAzMF07XG4gICAgICB0MWwgPSBibG9ja3NbaiAtIDI5XTtcbiAgICAgIHMwaCA9ICgodDFoID4+PiAxKSB8ICh0MWwgPDwgMzEpKSBeICgodDFoID4+PiA4KSB8ICh0MWwgPDwgMjQpKSBeICh0MWggPj4+IDcpO1xuICAgICAgczBsID0gKCh0MWwgPj4+IDEpIHwgKHQxaCA8PCAzMSkpIF4gKCh0MWwgPj4+IDgpIHwgKHQxaCA8PCAyNCkpIF4gKCh0MWwgPj4+IDcpIHwgdDFoIDw8IDI1KTtcblxuICAgICAgdDFoID0gYmxvY2tzW2ogLSA0XTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gM107XG4gICAgICBzMWggPSAoKHQxaCA+Pj4gMTkpIHwgKHQxbCA8PCAxMykpIF4gKCh0MWwgPj4+IDI5KSB8ICh0MWggPDwgMykpIF4gKHQxaCA+Pj4gNik7XG4gICAgICBzMWwgPSAoKHQxbCA+Pj4gMTkpIHwgKHQxaCA8PCAxMykpIF4gKCh0MWggPj4+IDI5KSB8ICh0MWwgPDwgMykpIF4gKCh0MWwgPj4+IDYpIHwgdDFoIDw8IDI2KTtcblxuICAgICAgdDFoID0gYmxvY2tzW2ogLSAzMl07XG4gICAgICB0MWwgPSBibG9ja3NbaiAtIDMxXTtcbiAgICAgIHQyaCA9IGJsb2Nrc1tqIC0gMTRdO1xuICAgICAgdDJsID0gYmxvY2tzW2ogLSAxM107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKHMwaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYmxvY2tzW2pdID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBibG9ja3NbaiArIDFdID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG4gICAgfVxuXG4gICAgdmFyIGFoID0gaDBoLCBhbCA9IGgwbCwgYmggPSBoMWgsIGJsID0gaDFsLCBjaCA9IGgyaCwgY2wgPSBoMmwsIGRoID0gaDNoLCBkbCA9IGgzbCwgZWggPSBoNGgsIGVsID0gaDRsLCBmaCA9IGg1aCwgZmwgPSBoNWwsIGdoID0gaDZoLCBnbCA9IGg2bCwgaGggPSBoN2gsIGhsID0gaDdsO1xuICAgIGJjaCA9IGJoICYgY2g7XG4gICAgYmNsID0gYmwgJiBjbDtcbiAgICBmb3IgKGogPSAwOyBqIDwgMTYwOyBqICs9IDgpIHtcbiAgICAgIHMwaCA9ICgoYWggPj4+IDI4KSB8IChhbCA8PCA0KSkgXiAoKGFsID4+PiAyKSB8IChhaCA8PCAzMCkpIF4gKChhbCA+Pj4gNykgfCAoYWggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoYWwgPj4+IDI4KSB8IChhaCA8PCA0KSkgXiAoKGFoID4+PiAyKSB8IChhbCA8PCAzMCkpIF4gKChhaCA+Pj4gNykgfCAoYWwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChlaCA+Pj4gMTQpIHwgKGVsIDw8IDE4KSkgXiAoKGVoID4+PiAxOCkgfCAoZWwgPDwgMTQpKSBeICgoZWwgPj4+IDkpIHwgKGVoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGVsID4+PiAxNCkgfCAoZWggPDwgMTgpKSBeICgoZWwgPj4+IDE4KSB8IChlaCA8PCAxNCkpIF4gKChlaCA+Pj4gOSkgfCAoZWwgPDwgMjMpKTtcblxuICAgICAgYWJoID0gYWggJiBiaDtcbiAgICAgIGFibCA9IGFsICYgYmw7XG4gICAgICBtYWpoID0gYWJoIF4gKGFoICYgY2gpIF4gYmNoO1xuICAgICAgbWFqbCA9IGFibCBeIChhbCAmIGNsKSBeIGJjbDtcblxuICAgICAgY2hoID0gKGVoICYgZmgpIF4gKH5laCAmIGdoKTtcbiAgICAgIGNobCA9IChlbCAmIGZsKSBeICh+ZWwgJiBnbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqICsgMV07XG4gICAgICB0MmggPSBLW2pdO1xuICAgICAgdDJsID0gS1tqICsgMV07XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoaGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoaGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChoaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGhoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGRsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoZGwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoZGggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGRoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgaGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGhsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGRoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBkbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGRoID4+PiAyOCkgfCAoZGwgPDwgNCkpIF4gKChkbCA+Pj4gMikgfCAoZGggPDwgMzApKSBeICgoZGwgPj4+IDcpIHwgKGRoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGRsID4+PiAyOCkgfCAoZGggPDwgNCkpIF4gKChkaCA+Pj4gMikgfCAoZGwgPDwgMzApKSBeICgoZGggPj4+IDcpIHwgKGRsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoaGggPj4+IDE0KSB8IChobCA8PCAxOCkpIF4gKChoaCA+Pj4gMTgpIHwgKGhsIDw8IDE0KSkgXiAoKGhsID4+PiA5KSB8IChoaCA8PCAyMykpO1xuICAgICAgczFsID0gKChobCA+Pj4gMTQpIHwgKGhoIDw8IDE4KSkgXiAoKGhsID4+PiAxOCkgfCAoaGggPDwgMTQpKSBeICgoaGggPj4+IDkpIHwgKGhsIDw8IDIzKSk7XG5cbiAgICAgIGRhaCA9IGRoICYgYWg7XG4gICAgICBkYWwgPSBkbCAmIGFsO1xuICAgICAgbWFqaCA9IGRhaCBeIChkaCAmIGJoKSBeIGFiaDtcbiAgICAgIG1hamwgPSBkYWwgXiAoZGwgJiBibCkgXiBhYmw7XG5cbiAgICAgIGNoaCA9IChoaCAmIGVoKSBeICh+aGggJiBmaCk7XG4gICAgICBjaGwgPSAoaGwgJiBlbCkgXiAofmhsICYgZmwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDJdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyAzXTtcbiAgICAgIHQyaCA9IEtbaiArIDJdO1xuICAgICAgdDJsID0gS1tqICsgM107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZ2wgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZ2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChnaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGdoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGNsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoY2wgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoY2ggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGNoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZ2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGdsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGNoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBjbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGNoID4+PiAyOCkgfCAoY2wgPDwgNCkpIF4gKChjbCA+Pj4gMikgfCAoY2ggPDwgMzApKSBeICgoY2wgPj4+IDcpIHwgKGNoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGNsID4+PiAyOCkgfCAoY2ggPDwgNCkpIF4gKChjaCA+Pj4gMikgfCAoY2wgPDwgMzApKSBeICgoY2ggPj4+IDcpIHwgKGNsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoZ2ggPj4+IDE0KSB8IChnbCA8PCAxOCkpIF4gKChnaCA+Pj4gMTgpIHwgKGdsIDw8IDE0KSkgXiAoKGdsID4+PiA5KSB8IChnaCA8PCAyMykpO1xuICAgICAgczFsID0gKChnbCA+Pj4gMTQpIHwgKGdoIDw8IDE4KSkgXiAoKGdsID4+PiAxOCkgfCAoZ2ggPDwgMTQpKSBeICgoZ2ggPj4+IDkpIHwgKGdsIDw8IDIzKSk7XG5cbiAgICAgIGNkaCA9IGNoICYgZGg7XG4gICAgICBjZGwgPSBjbCAmIGRsO1xuICAgICAgbWFqaCA9IGNkaCBeIChjaCAmIGFoKSBeIGRhaDtcbiAgICAgIG1hamwgPSBjZGwgXiAoY2wgJiBhbCkgXiBkYWw7XG5cbiAgICAgIGNoaCA9IChnaCAmIGhoKSBeICh+Z2ggJiBlaCk7XG4gICAgICBjaGwgPSAoZ2wgJiBobCkgXiAofmdsICYgZWwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDRdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyA1XTtcbiAgICAgIHQyaCA9IEtbaiArIDRdO1xuICAgICAgdDJsID0gS1tqICsgNV07XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZmwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChmaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGZoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoYmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoYmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGZsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBibCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGJoID4+PiAyOCkgfCAoYmwgPDwgNCkpIF4gKChibCA+Pj4gMikgfCAoYmggPDwgMzApKSBeICgoYmwgPj4+IDcpIHwgKGJoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGJsID4+PiAyOCkgfCAoYmggPDwgNCkpIF4gKChiaCA+Pj4gMikgfCAoYmwgPDwgMzApKSBeICgoYmggPj4+IDcpIHwgKGJsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoZmggPj4+IDE0KSB8IChmbCA8PCAxOCkpIF4gKChmaCA+Pj4gMTgpIHwgKGZsIDw8IDE0KSkgXiAoKGZsID4+PiA5KSB8IChmaCA8PCAyMykpO1xuICAgICAgczFsID0gKChmbCA+Pj4gMTQpIHwgKGZoIDw8IDE4KSkgXiAoKGZsID4+PiAxOCkgfCAoZmggPDwgMTQpKSBeICgoZmggPj4+IDkpIHwgKGZsIDw8IDIzKSk7XG5cbiAgICAgIGJjaCA9IGJoICYgY2g7XG4gICAgICBiY2wgPSBibCAmIGNsO1xuICAgICAgbWFqaCA9IGJjaCBeIChiaCAmIGRoKSBeIGNkaDtcbiAgICAgIG1hamwgPSBiY2wgXiAoYmwgJiBkbCkgXiBjZGw7XG5cbiAgICAgIGNoaCA9IChmaCAmIGdoKSBeICh+ZmggJiBoaCk7XG4gICAgICBjaGwgPSAoZmwgJiBnbCkgXiAofmZsICYgaGwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDZdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyA3XTtcbiAgICAgIHQyaCA9IEtbaiArIDZdO1xuICAgICAgdDJsID0gS1tqICsgN107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChlaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGVoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGFsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoYWwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoYWggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGFoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGVsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBhbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuICAgIH1cblxuICAgIGMxID0gKGgwbCAmIDB4RkZGRikgKyAoYWwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgwbCA+Pj4gMTYpICsgKGFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMGggJiAweEZGRkYpICsgKGFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgwaCA+Pj4gMTYpICsgKGFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDBoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgxbCAmIDB4RkZGRikgKyAoYmwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgxbCA+Pj4gMTYpICsgKGJsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMWggJiAweEZGRkYpICsgKGJoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgxaCA+Pj4gMTYpICsgKGJoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgybCAmIDB4RkZGRikgKyAoY2wgJiAweEZGRkYpO1xuICAgIGMyID0gKGgybCA+Pj4gMTYpICsgKGNsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMmggJiAweEZGRkYpICsgKGNoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgyaCA+Pj4gMTYpICsgKGNoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgzbCAmIDB4RkZGRikgKyAoZGwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgzbCA+Pj4gMTYpICsgKGRsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoM2ggJiAweEZGRkYpICsgKGRoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgzaCA+Pj4gMTYpICsgKGRoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDNoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oM2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg0bCAmIDB4RkZGRikgKyAoZWwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg0bCA+Pj4gMTYpICsgKGVsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNGggJiAweEZGRkYpICsgKGVoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg0aCA+Pj4gMTYpICsgKGVoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDRoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg1bCAmIDB4RkZGRikgKyAoZmwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg1bCA+Pj4gMTYpICsgKGZsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNWggJiAweEZGRkYpICsgKGZoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg1aCA+Pj4gMTYpICsgKGZoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDVoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg2bCAmIDB4RkZGRikgKyAoZ2wgJiAweEZGRkYpO1xuICAgIGMyID0gKGg2bCA+Pj4gMTYpICsgKGdsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNmggJiAweEZGRkYpICsgKGdoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg2aCA+Pj4gMTYpICsgKGdoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDZoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg3bCAmIDB4RkZGRikgKyAoaGwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg3bCA+Pj4gMTYpICsgKGhsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoN2ggJiAweEZGRkYpICsgKGhoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg3aCA+Pj4gMTYpICsgKGhoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDdoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oN2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDBoID0gdGhpcy5oMGgsIGgwbCA9IHRoaXMuaDBsLCBoMWggPSB0aGlzLmgxaCwgaDFsID0gdGhpcy5oMWwsXG4gICAgICBoMmggPSB0aGlzLmgyaCwgaDJsID0gdGhpcy5oMmwsIGgzaCA9IHRoaXMuaDNoLCBoM2wgPSB0aGlzLmgzbCxcbiAgICAgIGg0aCA9IHRoaXMuaDRoLCBoNGwgPSB0aGlzLmg0bCwgaDVoID0gdGhpcy5oNWgsIGg1bCA9IHRoaXMuaDVsLFxuICAgICAgaDZoID0gdGhpcy5oNmgsIGg2bCA9IHRoaXMuaDZsLCBoN2ggPSB0aGlzLmg3aCwgaDdsID0gdGhpcy5oN2wsXG4gICAgICBiaXRzID0gdGhpcy5iaXRzO1xuXG4gICAgdmFyIGhleCA9IEhFWF9DSEFSU1soaDBoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDBoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMGggJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwbCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDBsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwbCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDBsICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gxaCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxbCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDFsID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMWwgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyaCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyaCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDJoICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgybCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmwgPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gybCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDNoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2ggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDNoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toM2ggJiAweDBGXTtcbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGgzbCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzbCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDNsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2wgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDNsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDNsICYgMHgwRl07XG4gICAgfVxuICAgIGlmIChiaXRzID49IDM4NCkge1xuICAgICAgaGV4ICs9IEhFWF9DSEFSU1soaDRoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDRoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0aCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNGggJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDRsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0bCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNGwgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDVoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1aCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNWggJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDVsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1bCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNWwgJiAweDBGXTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBoZXggKz0gSEVYX0NIQVJTWyhoNmggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDZoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g2aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDZsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g2bCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2ggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2ggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDdoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g3aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2wgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2wgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDdsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g3bCAmIDB4MEZdO1xuICAgIH1cbiAgICByZXR1cm4gaGV4O1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUudG9TdHJpbmcgPSBTaGE1MTIucHJvdG90eXBlLmhleDtcblxuICBTaGE1MTIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDBoID0gdGhpcy5oMGgsIGgwbCA9IHRoaXMuaDBsLCBoMWggPSB0aGlzLmgxaCwgaDFsID0gdGhpcy5oMWwsXG4gICAgICBoMmggPSB0aGlzLmgyaCwgaDJsID0gdGhpcy5oMmwsIGgzaCA9IHRoaXMuaDNoLCBoM2wgPSB0aGlzLmgzbCxcbiAgICAgIGg0aCA9IHRoaXMuaDRoLCBoNGwgPSB0aGlzLmg0bCwgaDVoID0gdGhpcy5oNWgsIGg1bCA9IHRoaXMuaDVsLFxuICAgICAgaDZoID0gdGhpcy5oNmgsIGg2bCA9IHRoaXMuaDZsLCBoN2ggPSB0aGlzLmg3aCwgaDdsID0gdGhpcy5oN2wsXG4gICAgICBiaXRzID0gdGhpcy5iaXRzO1xuXG4gICAgdmFyIGFyciA9IFtcbiAgICAgIChoMGggPj4gMjQpICYgMHhGRiwgKGgwaCA+PiAxNikgJiAweEZGLCAoaDBoID4+IDgpICYgMHhGRiwgaDBoICYgMHhGRixcbiAgICAgIChoMGwgPj4gMjQpICYgMHhGRiwgKGgwbCA+PiAxNikgJiAweEZGLCAoaDBsID4+IDgpICYgMHhGRiwgaDBsICYgMHhGRixcbiAgICAgIChoMWggPj4gMjQpICYgMHhGRiwgKGgxaCA+PiAxNikgJiAweEZGLCAoaDFoID4+IDgpICYgMHhGRiwgaDFoICYgMHhGRixcbiAgICAgIChoMWwgPj4gMjQpICYgMHhGRiwgKGgxbCA+PiAxNikgJiAweEZGLCAoaDFsID4+IDgpICYgMHhGRiwgaDFsICYgMHhGRixcbiAgICAgIChoMmggPj4gMjQpICYgMHhGRiwgKGgyaCA+PiAxNikgJiAweEZGLCAoaDJoID4+IDgpICYgMHhGRiwgaDJoICYgMHhGRixcbiAgICAgIChoMmwgPj4gMjQpICYgMHhGRiwgKGgybCA+PiAxNikgJiAweEZGLCAoaDJsID4+IDgpICYgMHhGRiwgaDJsICYgMHhGRixcbiAgICAgIChoM2ggPj4gMjQpICYgMHhGRiwgKGgzaCA+PiAxNikgJiAweEZGLCAoaDNoID4+IDgpICYgMHhGRiwgaDNoICYgMHhGRlxuICAgIF07XG5cbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGFyci5wdXNoKChoM2wgPj4gMjQpICYgMHhGRiwgKGgzbCA+PiAxNikgJiAweEZGLCAoaDNsID4+IDgpICYgMHhGRiwgaDNsICYgMHhGRik7XG4gICAgfVxuICAgIGlmIChiaXRzID49IDM4NCkge1xuICAgICAgYXJyLnB1c2goXG4gICAgICAgIChoNGggPj4gMjQpICYgMHhGRiwgKGg0aCA+PiAxNikgJiAweEZGLCAoaDRoID4+IDgpICYgMHhGRiwgaDRoICYgMHhGRixcbiAgICAgICAgKGg0bCA+PiAyNCkgJiAweEZGLCAoaDRsID4+IDE2KSAmIDB4RkYsIChoNGwgPj4gOCkgJiAweEZGLCBoNGwgJiAweEZGLFxuICAgICAgICAoaDVoID4+IDI0KSAmIDB4RkYsIChoNWggPj4gMTYpICYgMHhGRiwgKGg1aCA+PiA4KSAmIDB4RkYsIGg1aCAmIDB4RkYsXG4gICAgICAgIChoNWwgPj4gMjQpICYgMHhGRiwgKGg1bCA+PiAxNikgJiAweEZGLCAoaDVsID4+IDgpICYgMHhGRiwgaDVsICYgMHhGRlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBhcnIucHVzaChcbiAgICAgICAgKGg2aCA+PiAyNCkgJiAweEZGLCAoaDZoID4+IDE2KSAmIDB4RkYsIChoNmggPj4gOCkgJiAweEZGLCBoNmggJiAweEZGLFxuICAgICAgICAoaDZsID4+IDI0KSAmIDB4RkYsIChoNmwgPj4gMTYpICYgMHhGRiwgKGg2bCA+PiA4KSAmIDB4RkYsIGg2bCAmIDB4RkYsXG4gICAgICAgIChoN2ggPj4gMjQpICYgMHhGRiwgKGg3aCA+PiAxNikgJiAweEZGLCAoaDdoID4+IDgpICYgMHhGRiwgaDdoICYgMHhGRixcbiAgICAgICAgKGg3bCA+PiAyNCkgJiAweEZGLCAoaDdsID4+IDE2KSAmIDB4RkYsIChoN2wgPj4gOCkgJiAweEZGLCBoN2wgJiAweEZGXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuYXJyYXkgPSBTaGE1MTIucHJvdG90eXBlLmRpZ2VzdDtcblxuICBTaGE1MTIucHJvdG90eXBlLmFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYml0cyAvIDgpO1xuICAgIHZhciBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigwLCB0aGlzLmgwaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDQsIHRoaXMuaDBsKTtcbiAgICBkYXRhVmlldy5zZXRVaW50MzIoOCwgdGhpcy5oMWgpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigxMiwgdGhpcy5oMWwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigxNiwgdGhpcy5oMmgpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigyMCwgdGhpcy5oMmwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigyNCwgdGhpcy5oM2gpO1xuXG4gICAgaWYgKGJpdHMgPj0gMjU2KSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoMjgsIHRoaXMuaDNsKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoMzIsIHRoaXMuaDRoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigzNiwgdGhpcy5oNGwpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDQwLCB0aGlzLmg1aCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDQsIHRoaXMuaDVsKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDgsIHRoaXMuaDZoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig1MiwgdGhpcy5oNmwpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDU2LCB0aGlzLmg3aCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNjAsIHRoaXMuaDdsKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYXNoID0gbmV3IFNoYTUxMih0aGlzLmJpdHMsIGZhbHNlKTtcbiAgICB0aGlzLmNvcHlUbyhoYXNoKTtcbiAgICByZXR1cm4gaGFzaDtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmNvcHlUbyA9IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgdmFyIGkgPSAwLCBhdHRycyA9IFtcbiAgICAgICdoMGgnLCAnaDBsJywgJ2gxaCcsICdoMWwnLCAnaDJoJywgJ2gybCcsICdoM2gnLCAnaDNsJywgJ2g0aCcsICdoNGwnLCAnaDVoJywgJ2g1bCcsICdoNmgnLCAnaDZsJywgJ2g3aCcsICdoN2wnLFxuICAgICAgJ3N0YXJ0JywgJ2J5dGVzJywgJ2hCeXRlcycsICdmaW5hbGl6ZWQnLCAnaGFzaGVkJywgJ2xhc3RCeXRlSW5kZXgnXG4gICAgXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGhhc2hbYXR0cnNbaV1dID0gdGhpc1thdHRyc1tpXV07XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7ICsraSkge1xuICAgICAgaGFzaC5ibG9ja3NbaV0gPSB0aGlzLmJsb2Nrc1tpXTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gSG1hY1NoYTUxMihrZXksIGJpdHMsIHNoYXJlZE1lbW9yeSkge1xuICAgIHZhciBub3RTdHJpbmcsIHR5cGUgPSB0eXBlb2Yga2V5O1xuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBrZXkuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAga2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgaWYgKCFBUlJBWV9CVUZGRVIgfHwgIUFycmF5QnVmZmVyLmlzVmlldyhrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIG5vdFN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBrZXkubGVuZ3RoO1xuICAgIGlmICghbm90U3RyaW5nKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBbXSwgbGVuZ3RoID0ga2V5Lmxlbmd0aCwgaW5kZXggPSAwLCBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBjb2RlID0ga2V5LmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gY29kZTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGMwIHwgKGNvZGUgPj4gNikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHhkODAwIHx8IGNvZGUgPj0gMHhlMDAwKSB7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHhlMCB8IChjb2RlID4+IDEyKSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKGNvZGUgJiAweDNmKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChrZXkuY2hhckNvZGVBdCgrK2kpICYgMHgzZmYpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGYwIHwgKGNvZGUgPj4gMTgpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAga2V5ID0gYnl0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGtleS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIGtleSA9IChuZXcgU2hhNTEyKGJpdHMsIHRydWUpKS51cGRhdGUoa2V5KS5hcnJheSgpO1xuICAgIH1cblxuICAgIHZhciBvS2V5UGFkID0gW10sIGlLZXlQYWQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyODsgKytpKSB7XG4gICAgICB2YXIgYiA9IGtleVtpXSB8fCAwO1xuICAgICAgb0tleVBhZFtpXSA9IDB4NWMgXiBiO1xuICAgICAgaUtleVBhZFtpXSA9IDB4MzYgXiBiO1xuICAgIH1cblxuICAgIFNoYTUxMi5jYWxsKHRoaXMsIGJpdHMsIHNoYXJlZE1lbW9yeSk7XG5cbiAgICB0aGlzLnVwZGF0ZShpS2V5UGFkKTtcbiAgICB0aGlzLm9LZXlQYWQgPSBvS2V5UGFkO1xuICAgIHRoaXMuaW5uZXIgPSB0cnVlO1xuICAgIHRoaXMuc2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5O1xuICB9XG4gIEhtYWNTaGE1MTIucHJvdG90eXBlID0gbmV3IFNoYTUxMigpO1xuXG4gIEhtYWNTaGE1MTIucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUuY2FsbCh0aGlzKTtcbiAgICBpZiAodGhpcy5pbm5lcikge1xuICAgICAgdGhpcy5pbm5lciA9IGZhbHNlO1xuICAgICAgdmFyIGlubmVySGFzaCA9IHRoaXMuYXJyYXkoKTtcbiAgICAgIFNoYTUxMi5jYWxsKHRoaXMsIHRoaXMuYml0cywgdGhpcy5zaGFyZWRNZW1vcnkpO1xuICAgICAgdGhpcy51cGRhdGUodGhpcy5vS2V5UGFkKTtcbiAgICAgIHRoaXMudXBkYXRlKGlubmVySGFzaCk7XG4gICAgICBTaGE1MTIucHJvdG90eXBlLmZpbmFsaXplLmNhbGwodGhpcyk7XG4gICAgfVxuICB9O1xuXG4gIEhtYWNTaGE1MTIucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYXNoID0gbmV3IEhtYWNTaGE1MTIoW10sIHRoaXMuYml0cywgZmFsc2UpO1xuICAgIHRoaXMuY29weVRvKGhhc2gpO1xuICAgIGhhc2guaW5uZXIgPSB0aGlzLmlubmVyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vS2V5UGFkLmxlbmd0aDsgKytpKSB7XG4gICAgICBoYXNoLm9LZXlQYWRbaV0gPSB0aGlzLm9LZXlQYWRbaV07XG4gICAgfVxuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIHZhciBleHBvcnRzID0gY3JlYXRlTWV0aG9kKDUxMik7XG4gIGV4cG9ydHMuc2hhNTEyID0gZXhwb3J0cztcbiAgZXhwb3J0cy5zaGEzODQgPSBjcmVhdGVNZXRob2QoMzg0KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjU2ID0gY3JlYXRlTWV0aG9kKDI1Nik7XG4gIGV4cG9ydHMuc2hhNTEyXzIyNCA9IGNyZWF0ZU1ldGhvZCgyMjQpO1xuICBleHBvcnRzLnNoYTUxMi5obWFjID0gY3JlYXRlSG1hY01ldGhvZCg1MTIpO1xuICBleHBvcnRzLnNoYTM4NC5obWFjID0gY3JlYXRlSG1hY01ldGhvZCgzODQpO1xuICBleHBvcnRzLnNoYTUxMl8yNTYuaG1hYyA9IGNyZWF0ZUhtYWNNZXRob2QoMjU2KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjI0LmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDIyNCk7XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiAgfSBlbHNlIHtcbiAgICByb290LnNoYTUxMiA9IGV4cG9ydHMuc2hhNTEyO1xuICAgIHJvb3Quc2hhMzg0ID0gZXhwb3J0cy5zaGEzODQ7XG4gICAgcm9vdC5zaGE1MTJfMjU2ID0gZXhwb3J0cy5zaGE1MTJfMjU2O1xuICAgIHJvb3Quc2hhNTEyXzIyNCA9IGV4cG9ydHMuc2hhNTEyXzIyNDtcbiAgICBpZiAoQU1EKSB7XG4gICAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiIsImltcG9ydCB7IHNoYTUxMiB9IGZyb20gXCJqcy1zaGE1MTJcIjtcbmltcG9ydCB7IFByb2dyZXNzQ2FsbGJhY2ssIFNpZ25lZENoYWxsZW5nZSB9IGZyb20gXCIuL2luZGV4XCI7XG5cbmNvbnN0IGNvbXB1dGVDb2xsaXNpb25JbnRlZ2VyID0gYXN5bmMgKHtcbiAgaW5wdXQsXG4gIGV4cGVjdGVkLFxufToge1xuICBpbnB1dDogc3RyaW5nO1xuICBleHBlY3RlZDogc3RyaW5nO1xufSkgPT4ge1xuICBsZXQgYXR0ZW1wdCA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBoYXNoID0gc2hhNTEyKGAke2lucHV0fToke2F0dGVtcHR9YCk7XG4gICAgaWYgKGF0dGVtcHQgJSA0ZTQgPT09IDApIHtcbiAgICAgIGF3YWl0IHNsZWVwKDApO1xuICAgIH1cbiAgICBpZiAoaGFzaC5zdWJzdHJpbmcoMCwgZXhwZWN0ZWQubGVuZ3RoKSA9PT0gZXhwZWN0ZWQpIHtcbiAgICAgIHJldHVybiBhdHRlbXB0LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGF0dGVtcHQrKztcbiAgfVxufTtcblxuY29uc3Qgc2xlZXAgPSAodGltZTogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lKSk7XG5cbmNvbnN0IGNvbXB1dGVTb2x1dGlvbnMgPSBhc3luYyAoe1xuICBjaGFsbGVuZ2UsXG4gIG9uUHJvZ3Jlc3MsXG59OiB7XG4gIGNoYWxsZW5nZTogU2lnbmVkQ2hhbGxlbmdlO1xuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbn0pID0+IHtcbiAgY29uc3QgeyBub25jZSwgZGlmZmljdWx0eSwgaGFyZG5lc3MgfSA9IGNoYWxsZW5nZS5wYXlsb2FkO1xuXG4gIGNvbnN0IHNvbHV0aW9ucyA9IFtdO1xuXG4gIG9uUHJvZ3Jlc3M/LigwKTtcblxuICBmb3IgKGxldCBoID0gMDsgaCA8IGhhcmRuZXNzOyBoKyspIHtcbiAgICBjb25zdCBzb2x1dGlvbiA9IGF3YWl0IGNvbXB1dGVDb2xsaXNpb25JbnRlZ2VyKHtcbiAgICAgIGlucHV0OiBgJHtub25jZX06JHtofWAsXG4gICAgICBleHBlY3RlZDogXCIwXCIucmVwZWF0KGRpZmZpY3VsdHkpLFxuICAgIH0pO1xuICAgIHNvbHV0aW9ucy5wdXNoKHNvbHV0aW9uKTtcbiAgICBvblByb2dyZXNzPy4oc29sdXRpb25zLmxlbmd0aCAvIGhhcmRuZXNzKTtcbiAgICBhd2FpdCBzbGVlcCgwKTtcbiAgfVxuXG4gIHJldHVybiBzb2x1dGlvbnM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wdXRlU29sdXRpb25zO1xuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5hbWRPID0ge307IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IGNvbXB1dGVTb2x1dGlvbnMgZnJvbSBcIi4vY29tcHV0ZVNvbHV0aW9uc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fQk9UUE9JU09OX1ZFUlNJT05fXzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIF9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIF9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX186IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIH1cbn1cblxudHlwZSBCb3Rwb2lzb25PcHRpb25zID0geyBwdWJsaWNLZXk6IHN0cmluZyB9O1xuXG50eXBlIENoYWxsZW5nZU9wdGlvbnMgPSB7IG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrIH07XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzQ2FsbGJhY2sgPSAocHJvZ3Jlc3M6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgU2lnbmVkQ2hhbGxlbmdlID0ge1xuICBwYXlsb2FkOiB7XG4gICAgbm9uY2U6IHN0cmluZztcbiAgICBkaWZmaWN1bHR5OiBudW1iZXI7XG4gICAgaGFyZG5lc3M6IG51bWJlcjtcbiAgfTtcbn07XG5cbmNvbnN0IEJBU0VfVVJMID0gXCJodHRwczovL2FwaS5ib3Rwb2lzb24uY29tXCI7XG5cbmNvbnN0IGluaXQgPSAoKSA9PiB7XG4gIGFkZFZlcnNpb24oKTtcbiAgYWRkU3VibWl0TGlzdGVuZXIoKTtcbiAgYWRkSGVhcnRiZWF0RGlzcGF0Y2hlcigpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm90cG9pc29uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwdWJsaWNLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IHB1YmxpY0tleSB9OiBCb3Rwb2lzb25PcHRpb25zKSB7XG4gICAgdGhpcy5wdWJsaWNLZXkgPSBwdWJsaWNLZXk7XG4gIH1cblxuICBzdGF0aWMgaW5pdCgpIHtcbiAgICBpbml0KCk7XG4gIH1cblxuICBhc3luYyBjaGFsbGVuZ2Uob3B0aW9ucz86IENoYWxsZW5nZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7IG9uUHJvZ3Jlc3MgfSA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vY2hhbGxlbmdlYCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBwdWJsaWNLZXk6IHRoaXMucHVibGljS2V5LFxuICAgICAgICBob3N0bmFtZTogbG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFNpZ25lZENoYWxsZW5nZTtcblxuICAgIGNvbnN0IHNvbHV0aW9ucyA9IGF3YWl0IGNvbXB1dGVTb2x1dGlvbnMoe1xuICAgICAgY2hhbGxlbmdlLFxuICAgICAgb25Qcm9ncmVzcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBidG9hKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjaGFsbGVuZ2UsXG4gICAgICAgIHNvbHV0aW9ucyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzb2x1dGlvbjogc2VyaWFsaXplZCxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IGFwcGVuZE9yVXBkYXRlQm90cG9pc29uSW5wdXQgPSAoe1xuICBmb3JtRWxlbWVudCxcbiAgaWQsXG4gIG5hbWUsXG4gIHZhbHVlLFxufToge1xuICBmb3JtRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn0pID0+IHtcbiAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICBpZiAoIWlucHV0KSB7XG4gICAgY29uc3QgbmV3SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImhpZGRlblwiKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBpZCk7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwibmFtZVwiLCBuYW1lKTtcbiAgICBmb3JtRWxlbWVudC5hcHBlbmRDaGlsZChuZXdJbnB1dCk7XG4gICAgaW5wdXQgPSBuZXdJbnB1dDtcbiAgfVxuICBpbnB1dC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCB2YWx1ZSk7XG59O1xuXG5jb25zdCBhZGRWZXJzaW9uID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgd2luZG93Ll9fQk9UUE9JU09OX1ZFUlNJT05fXyA9IHJlcXVpcmUoXCIuLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIH1cbn07XG5cbmNvbnN0IGFkZFN1Ym1pdExpc3RlbmVyID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKCF3aW5kb3cuX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9TVUJNSVRfTElTVEVORVJfXyA9IHRydWU7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChldmVudCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGZvcm1FdmVudFRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICBpZiAoZm9ybUV2ZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRWxlbWVudCA9IGZvcm1FdmVudFRhcmdldCBhcyBIVE1MRm9ybUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSBmb3JtRWxlbWVudC5kYXRhc2V0LmJvdHBvaXNvblB1YmxpY0tleTtcbiAgICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJib3Rwb2lzb24tY2hhbGxlbmdlLXN0YXJ0XCIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGJvdHBvaXNvbiA9IG5ldyBCb3Rwb2lzb24oe1xuICAgICAgICAgICAgICAgIHB1YmxpY0tleSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlkID0gYF9ib3Rwb2lzb25gO1xuICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaWQ7XG4gICAgICAgICAgICAgIGJvdHBvaXNvblxuICAgICAgICAgICAgICAgIC5jaGFsbGVuZ2UoKVxuICAgICAgICAgICAgICAgIC50aGVuKCh7IHNvbHV0aW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2Utc3VjY2Vzc1wiKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGFwcGVuZE9yVXBkYXRlQm90cG9pc29uSW5wdXQoe1xuICAgICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzb2x1dGlvbixcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQuY2FsbChmb3JtRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2UtZXJyb3JcIilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGlmICghd2luZG93Ll9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9IRUFSVEJFQVRfRElTUEFUQ0hFUl9fID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkaXNwYXRjaCA9ICgpID0+IHtcbiAgICAgICAgdm9pZCBmZXRjaChgJHtCQVNFX1VSTH0vaGVhcnRiZWF0YCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgaG9zdG5hbWU6IGxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkaXNwYXRjaCgpO1xuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCgpO1xuICAgICAgfSwgNSAqIDYwICogMTAwMCk7IC8vIEV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICB9XG4gIH1cbn07XG5cbmluaXQoKTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIklOUFVUX0VSUk9SIiwiV0lORE9XIiwid2luZG93IiwiSlNfU0hBNTEyX05PX1dJTkRPVyIsIldFQl9XT1JLRVIiLCJKU19TSEE1MTJfTk9fTk9ERV9KUyIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJnIiwiQ09NTU9OX0pTIiwiSlNfU0hBNTEyX05PX0NPTU1PTl9KUyIsIkFNRCIsIkFSUkFZX0JVRkZFUiIsIkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVIiLCJBcnJheUJ1ZmZlciIsIkhFWF9DSEFSUyIsInNwbGl0IiwiRVhUUkEiLCJTSElGVCIsIksiLCJPVVRQVVRfVFlQRVMiLCJibG9ja3MiLCJBcnJheSIsImlzQXJyYXkiLCJvYmoiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJKU19TSEE1MTJfTk9fQVJSQVlfQlVGRkVSX0lTX1ZJRVciLCJpc1ZpZXciLCJidWZmZXIiLCJjb25zdHJ1Y3RvciIsImNyZWF0ZU91dHB1dE1ldGhvZCIsIm91dHB1dFR5cGUiLCJiaXRzIiwibWVzc2FnZSIsIlNoYTUxMiIsInVwZGF0ZSIsImNyZWF0ZU1ldGhvZCIsIm1ldGhvZCIsImNyZWF0ZSIsImkiLCJsZW5ndGgiLCJ0eXBlIiwiY3JlYXRlSG1hY091dHB1dE1ldGhvZCIsImtleSIsIkhtYWNTaGE1MTIiLCJjcmVhdGVIbWFjTWV0aG9kIiwic2hhcmVkTWVtb3J5IiwiaDBoIiwiaDBsIiwiaDFoIiwiaDFsIiwiaDJoIiwiaDJsIiwiaDNoIiwiaDNsIiwiaDRoIiwiaDRsIiwiaDVoIiwiaDVsIiwiaDZoIiwiaDZsIiwiaDdoIiwiaDdsIiwiYmxvY2siLCJzdGFydCIsImJ5dGVzIiwiaEJ5dGVzIiwiZmluYWxpemVkIiwiaGFzaGVkIiwibm90U3RyaW5nIiwiRXJyb3IiLCJVaW50OEFycmF5IiwiY29kZSIsImluZGV4IiwiY2hhckNvZGVBdCIsImFycmF5Iiwib0tleVBhZCIsImlLZXlQYWQiLCJiIiwiaW5uZXIiLCJsYXN0Qnl0ZUluZGV4IiwiaGFzaCIsImZpbmFsaXplIiwiaiIsInMwaCIsInMwbCIsInMxaCIsInMxbCIsImMxIiwiYzIiLCJjMyIsImM0IiwiYWJoIiwiYWJsIiwiZGFoIiwiZGFsIiwiY2RoIiwiY2RsIiwiYmNoIiwiYmNsIiwibWFqaCIsIm1hamwiLCJ0MWgiLCJ0MWwiLCJ0MmgiLCJ0MmwiLCJjaGgiLCJjaGwiLCJhaCIsImFsIiwiYmgiLCJibCIsImNoIiwiY2wiLCJkaCIsImRsIiwiZWgiLCJlbCIsImZoIiwiZmwiLCJnaCIsImdsIiwiaGgiLCJobCIsImhleCIsImRpZ2VzdCIsImFyciIsInB1c2giLCJhcnJheUJ1ZmZlciIsImRhdGFWaWV3IiwiRGF0YVZpZXciLCJzZXRVaW50MzIiLCJjbG9uZSIsImNvcHlUbyIsImF0dHJzIiwiaW5uZXJIYXNoIiwic2hhNTEyIiwic2hhMzg0Iiwic2hhNTEyXzI1NiIsInNoYTUxMl8yMjQiLCJobWFjIiwiY29tcHV0ZUNvbGxpc2lvbkludGVnZXIiLCJpbnB1dCIsImV4cGVjdGVkIiwiYXR0ZW1wdCIsInNsZWVwIiwic3Vic3RyaW5nIiwidGltZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsImNoYWxsZW5nZSIsIm9uUHJvZ3Jlc3MiLCJwYXlsb2FkIiwibm9uY2UiLCJkaWZmaWN1bHR5IiwiaGFyZG5lc3MiLCJzb2x1dGlvbnMiLCJoIiwicmVwZWF0Iiwic29sdXRpb24iLCJleHRlbmRTdGF0aWNzIiwiZCIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwicCIsImhhc093blByb3BlcnR5IiwiX19leHRlbmRzIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiX18iLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwibiIsImFyZ3VtZW50cyIsImFwcGx5IiwiX19yZXN0IiwiZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9fZGVjb3JhdGUiLCJkZWNvcmF0b3JzIiwidGFyZ2V0IiwiZGVzYyIsImMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJSZWZsZWN0IiwiZGVjb3JhdGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl9fcGFyYW0iLCJwYXJhbUluZGV4IiwiZGVjb3JhdG9yIiwiX19tZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsIm1ldGFkYXRhIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwiZiIsInkiLCJfIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsInYiLCJvcCIsInBvcCIsIl9fY3JlYXRlQmluZGluZyIsIm8iLCJtIiwiayIsImsyIiwidW5kZWZpbmVkIiwiZW51bWVyYWJsZSIsImdldCIsIl9fZXhwb3J0U3RhciIsIl9fdmFsdWVzIiwiX19yZWFkIiwiYXIiLCJlcnJvciIsIl9fc3ByZWFkIiwiY29uY2F0IiwiX19zcHJlYWRBcnJheXMiLCJpbCIsImEiLCJqbCIsIl9fc3ByZWFkQXJyYXkiLCJ0byIsImZyb20iLCJwYWNrIiwibCIsInNsaWNlIiwiX19hd2FpdCIsIl9fYXN5bmNHZW5lcmF0b3IiLCJhc3luY0l0ZXJhdG9yIiwicSIsInJlc3VtZSIsImZ1bGZpbGwiLCJzZXR0bGUiLCJzaGlmdCIsIl9fYXN5bmNEZWxlZ2F0b3IiLCJfX2FzeW5jVmFsdWVzIiwiX19tYWtlVGVtcGxhdGVPYmplY3QiLCJjb29rZWQiLCJyYXciLCJfX3NldE1vZHVsZURlZmF1bHQiLCJfX2ltcG9ydFN0YXIiLCJtb2QiLCJfX2VzTW9kdWxlIiwiX19pbXBvcnREZWZhdWx0IiwiZGVmYXVsdCIsIl9fY2xhc3NQcml2YXRlRmllbGRHZXQiLCJyZWNlaXZlciIsInN0YXRlIiwia2luZCIsImhhcyIsIl9fY2xhc3NQcml2YXRlRmllbGRTZXQiLCJzZXQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiYW1kTyIsImRlZmluaXRpb24iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJwcm9wIiwidG9TdHJpbmdUYWciLCJpbml0IiwiYWRkVmVyc2lvbiIsImFkZFN1Ym1pdExpc3RlbmVyIiwiYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciIsInB1YmxpY0tleSIsIm9wdGlvbnMiLCJmZXRjaCIsIkJBU0VfVVJMIiwiaGVhZGVycyIsIkFjY2VwdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJob3N0bmFtZSIsImxvY2F0aW9uIiwianNvbiIsImJ0b2EiLCJkb2N1bWVudCIsIl9fQk9UUE9JU09OX1ZFUlNJT05fXyIsIl9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwiZGF0YXNldCIsImJvdHBvaXNvblB1YmxpY0tleSIsInByZXZlbnREZWZhdWx0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiYm90cG9pc29uIiwiQm90cG9pc29uIiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCIsIkhUTUxGb3JtRWxlbWVudCIsInN1Ym1pdCIsImNhdGNoIiwiY29uc29sZSIsIl9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18iXSwic291cmNlUm9vdCI6IiJ9