Reusable 3D Earth globe widget (pure OCaml + WebGL)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(ocaml-globe): density heatmap + camera position accessor

New modules:
- Globe.Heatmap: bin positions into lat/lon grid, density colors
- Globe_webgl.Density: render heatmap cells with additive blending
- Camera.position + Scene.camera_position

9 heatmap tests. 101 native tests passing.

+446 -41
+33 -31
demo/main.bc.js
··· 9430 9430 (globalThis)); 9431 9431 9432 9432 (function(a){"use strict";var 9433 - i=a.jsoo_runtime,c=i.caml_get_global_data(),ec="caml_unix_stat_64",eb="unix_lseek",l="caml_unix_inchannel_of_filedescr",d$="caml_unix_stat",d9="caml_unix_write_bigarray",fI="caml_nativeint_format",bf="caml_int64_of_nativeint",d8="caml_unix_closedir",bd="caml_unix_getgrnam",cB="caml_unix_truncate",cA="caml_unix_getcwd",fE="caml_unix_readlink",fF="caml_floatarray_set",bb="caml_fill_bytes",ba="unix_error_message",cz="win_inchannel_of_filedescr",a$="caml_unix_time",cv="caml_unix_write",d4="unix_lstat",fB="unix_open",d1="unix_rename",fA="caml_unix_chmod",a7="unix_access",a5="caml_unix_lseek",a6="unix_fsync",d0="caml_unix_findnext",a3="caml_weak_get_copy",h="caml_array_set",dY="caml_unix_opendir",fy="caml_unix_lookup_file",a2="caml_unix_getegid",fx="caml_unix_getgid",cq="caml_js_from_nativeint",aX="caml_unix_gmtime",aY="caml_signbit_float",fw="caml_unix_close",fv="caml_js_from_int32",fu="caml_int64_to_int",cn="caml_check_bound_gen",p="caml_format_int",dT="unix_link",ck="unix_mkdir",aR="unix_rewinddir",aS="unix_read",dO="caml_unix_unlink",aN="unix_getgid",dM="caml_unix_error_message",fq="caml_unix_findclose",aJ="caml_unix_lseek_64",fn="caml_array_get_float",cg="win_outchannel_of_filedescr",dJ="caml_unix_fstat",cd="caml_unix_geteuid",dH="unix_lstat_64",aI="unix_inchannel_of_filedescr",b_="unix_getpwnam",b$="unix_geteuid",aH="caml_unix_getuid",dG="caml_unix_utimes",fg="caml_unix_getpwuid",fh="unix_getpwuid",o="caml_check_bound",ff="unix_ftruncate_64",aF="unix_isatty",b9="caml_unix_times",dD="caml_unix_exit",fe="unix_exit",aC="caml_unix_single_write",b8="caml_ephe_blit_key",dB="caml_nativeint_of_string",aB="unix_write",dz="caml_unix_ftruncate_64",dA="unix_close",fa="caml_js_to_int32",k="caml_sys_getcwd",dy="caml_unix_readdir",b6="win_findclose",av="%int_mul",dv="caml_int32_format",e8="caml_weak_blit",dt="caml_unix_localtime",du="unix_times",e7="caml_array_set_addr",ds="caml_unix_inet_addr_of_string",e6="unix_ftruncate",dr="caml_weak_check",e4="caml_unix_symlink",at="unix_outchannel_of_filedescr",aq="caml_unix_has_symlink",dn="unix_mktime",s="caml_int64_to_int32",b2="unix_fstat",e1="caml_unix_link",ap="caml_unix_fchmod",bY="unix_symlink",an="unix_localtime",eZ="unix_chdir",am="unix_getgrgid",al="caml_int32_compare",aj="caml_unix_mkdir",eW="win_startup",eV="caml_int32_bswap",ai="caml_weak_get",eU="unix_readlink",ag="caml_unix_rmdir",e="caml_array_get",af="caml_unix_lstat_64",ad="unix_inet_addr_of_string",bS="caml_unix_gettimeofday",r="caml_unix_outchannel_of_filedescr",bQ="unix_stat",dg="caml_unix_chdir",ab="unix_closedir",ac="win_cleanup",bO="caml_nativeint_bswap",_="caml_unix_mktime",$="caml_ephe_get_key",aa="%int_mod",bN="unix_stat_64",de="unix_getegid",df="caml_unix_access",dc="caml_unix_isatty",Y="caml_int32_mul",da="caml_nativeint_compare",q="caml_int64_of_int32",W="caml_unix_fsync",eQ="win_findnext",T="caml_nativeint_mul",eP="unix_single_write",S="caml_int32_mod",n="caml_js_from_float",c9="unix_truncate_64",c8="caml_ephe_check_key",eN="unix_opendir",bJ="caml_array_set_float",eM="caml_ephe_get_key_copy",O="unix_getuid",d="caml_mul",M="caml_fill_string",g="caml_div",c4="caml_int64_of_int",eK="caml_unix_read_bigarray",L="unix_getgrnam",eJ="win_findfirst",eI="caml_unix_startup",bG="caml_unix_filedescr_of_fd",eH="caml_unix_ftruncate",f="caml_mod",c2="caml_check_bound_float",bE="unix_utimes",bF="caml_unix_getgrgid",eG="caml_int64_to_nativeint",bD="unix_time",eF="unix_fstat_64",I="caml_unix_fstat_64",c0="unix_truncate",bB="unix_gmtime",bA="caml_unix_cleanup",eD="unix_getcwd",eC="unix_readdir",j="caml_sys_exit",G="caml_channel_descriptor",bw="unix_lseek_64",t="caml_int_compare",E="caml_array_get_addr",et="unix_chmod",eu="caml_unix_lstat",es="caml_js_to_nativeint",C="caml_int32_div",cU="caml_unix_findfirst",B="caml_unix_truncate_64",A="caml_unix_rewinddir",z="unix_has_symlink",m="caml_int_of_string",eq="caml_unix_rename",bt="win_filedescr_of_channel",y="unix_gettimeofday",ep="win_handle_fd",b="caml_unix_getpwnam",cP="caml_int32_of_string",en="caml_nativeint_mod",w="unix_rmdir",cL="caml_unix_read",cM="unix_read_bigarray",eh="caml_floatarray_get",v="unix_unlink",bn="caml_unix_open",ef="caml_signbit",u="unix_fchmod",bl="caml_nativeint_div",ed="%int_div";c.aliases=i.caml_list_of_js_array([[0,cn,o],[0,fu,s],[0,ed,g],[0,fv,n],[0,eJ,cU],[0,bl,g],[0,u,ap],[0,L,b],[0,at,r],[0,c4,q],[0,cq,n],[0,ef,aY],[0,dr,c8],[0,M,bb],[0,v,dO],[0,e6,eH],[0,eh,e],[0,e7,h],[0,O,aH],[0,cM,eK],[0,w,ag],[0,du,b9],[0,e8,b8],[0,dv,p],[0,fy,d9],[0,bJ,h],[0,av,d],[0,eN,dY],[0,b6,fq],[0,cP,m],[0,en,f],[0,c9,B],[0,S,f],[0,a3,eM],[0,T,d],[0,eP,aC],[0,dA,fw],[0,a6,W],[0,aB,cv],[0,dB,m],[0,a7,df],[0,ep,bG],[0,eQ,d0],[0,y,bS],[0,bt,G],[0,fe,j],[0,da,t],[0,Y,d],[0,dD,j],[0,z,aq],[0,d1,eq],[0,aF,dc],[0,ff,dz],[0,de,a2],[0,d4,eu],[0,fB,bn],[0,C,g],[0,fh,b],[0,fg,b],[0,bN,ec],[0,es,fa],[0,aa,f],[0,bO,eV],[0,b$,cd],[0,b_,b],[0,ac,bA],[0,ab,d8],[0,cz,l],[0,et,fA],[0,bQ,d$],[0,E,e],[0,aI,l],[0,ad,ds],[0,dH,af],[0,fF,h],[0,cA,k],[0,cg,r],[0,fn,e],[0,eU,fE],[0,ai,$],[0,bd,b],[0,bw,aJ],[0,eW,eI],[0,eC,dy],[0,aN,fx],[0,dM,ba],[0,al,t],[0,eD,k],[0,bB,aX],[0,bf,q],[0,am,b],[0,c0,cB],[0,eZ,dg],[0,an,dt],[0,fI,p],[0,eF,I],[0,bY,e4],[0,bD,a$],[0,eG,s],[0,aS,cL],[0,aR,A],[0,ck,aj],[0,bF,b],[0,dT,e1],[0,bE,dG],[0,c2,o],[0,b2,dJ],[0,eb,a5],[0,dn,_]]);c.prim_count=981;var 9434 - cF="Stdweb__Stdweb_map",ea=133,bh=102,d_="Helix__Http",cD=114,cE="Stdlib__Type",bg="Stdweb__Stdweb_form_data",be="Globe__Sphere",cC="Helix__Router",fH="Stdlib__Buffer",d7="Stdlib__Out_channel",d6="Kepler",fG="Match_failure",bc="Stdlib__Gc",d5="Kepler__Propagate",fD="Stdlib__Unit",fC=136,cy="Jsoo_runtime__Runtime_version",cw="Kepler__Vec3",cx="Stdlib__Map",d3="Stdlib__Parsing",a_="Stdlib__Effect",d2="Brr",a9="Globe_webgl__Coverage",cu=108,a8="Stdlib__String",a4="Stdlib__BytesLabels",dZ="Jv",dX="Stdlib__Condition",fz="Stdlib__Repr",ct=148,dW="Stdlib__Filename",a1="Stdlib__In_channel",dV="Not_found",cs=154,cr="Helix",aZ="CamlinternalLazy",a0="Jstr",cp="Division_by_zero",aV="Stdweb__Stdweb_promise",aW="Stdweb__Stdweb_storage",aU=117,dU="Globe_webgl__Orbit",co=104,cm="Stdlib__Either",aT="Stdweb__Stdweb_dict",cl=109,cj="Stdweb__Stdweb_global",ci="Globe__Gl_coord",dS="Stdlib__Callback",aQ="Stdweb__Stdweb_fetch",dR=155,aP="Stdlib__Lexing",ch="Undefined_recursive_module",dP="Stdlib__Printf",dQ="Stdweb__Stdweb_url_search_params",ft=111,aO="Stdlib__Bool",dN="Stdlib__Int",fs="Brr_webworkers",fr=153,dL="Stdlib__MoreLabels",aL=103,aM=127,dK="Sys_error",aK=100,fo="Stdlib__Digest",fp="Stdweb__Stdweb_json",fm="Stdlib__Pqueue",dI=101,fl="Brr_webcrypto",cf="Stdweb__",ce=151,cc="Stdlib__Queue",fk=110,cb="Helix__View",ca="Stdlib__Set",fj="Stdlib__Stack",dE="Stdlib__Complex",dF="Stdweb__Stdweb_iterator",fi="Jx__",aG="Jsoo_runtime__",aE="Globe",dC="Jsoo_runtime",fc="Globe_webgl__Camera",fd=130,aD="Stdlib__Nativeint",fb=128,aA=113,b7=146,e$=156,dx="Sys_blocked_io",az="Stdlib__Random",dw="Jx",ay=135,b5=144,e_="Globe_webgl__Scene",aw=106,ax="Stdlib__Marshal",e9=140,b4="Stdlib__Ephemeron",e5="Brr_webaudio",au="CamlinternalMod",b3="Stdweb__Stdweb_object",as="Helix__History",ar="Signal",dq="Stdweb__Stdweb_websocket",e3="Stdlib__Fun",e2="Stdlib__Char",dp=125,bZ=116,b0="Stdlib__Pair",b1=138,e0=126,ao="Globe__Math",ak="Brr_io",dm=150,eY="CamlinternalFormatBasics",dl="Stdlib__Weak",bX=105,dk="Stdlib__Format",eX="Stdlib__StdLabels",dj="Stdlib__Int64",di="Stdweb__Stdweb_console",ah="Stdlib__ArrayLabels",bW=129,bV="Brr_canvas",bU="Stdlib__Bigarray",ae="Stdweb__Stdweb_dom",bT=137,bR=132,dh="Globe__Raycast",bP="Globe_webgl",Z="Jx__Jx_ffi",dd="Dune__exe__Main",db="Stdweb__Stdweb_clipboard",X=115,c$=131,eR=122,eS="Stdlib",eT="Stdlib__StringLabels",V="Stdlib__Atomic",bM="Globe_webgl__Earth",U="Stdlib__ListLabels",c_="Stdlib__Seq",eO="Stdlib__Iarray",bL="Globe__Color",R=134,bK="Stdweb__Stdweb_array",Q="Stdlib__Uchar",P=152,c7="Stdlib__Arg",N="Brr_webmidi",c6="Stdlib__Scanf",eL=112,c5="Globe_webgl__Shader",K="Html",c3="Globe__Satellite",bI=107,bH="Stdlib__Printexc",c1=147,J="Globe__Geometry",bC="Stdlib__Dynarray",eE="Assert_failure",H=141,by=118,bz=121,bx=120,cZ="Stdlib__Array",cY="Stdlib__Obj",eB="Stdlib__Hashtbl",ez="Stdlib__Domain",eA="Stdlib__Option",ey=124,bv="Brr_webgpu",ex="Std_exit",ev="Brr_css",ew=149,F="Globe_webgl__Grid",D="Helix__Time",bu=145,cX="Globe_webgl__Stars",cV="Invalid_argument",cW="Stack_overflow",cT="End_of_file",er="Failure",eo="Stdlib__Lazy",cS="Ptime",bs="Stdlib__Semaphore",cR="Out_of_memory",cQ="Globe__Visibility",x="Stdlib__Bytes",br="Stdlib__Sys",em=143,cO="Fut",el="CamlinternalOO",cN="Stdlib__Int32",ek="Stdlib__Oo",bp="Helix__",bq=123,ei=119,ej="Stdlib__Mutex",bo="Stdlib__List",cK=139,cJ="Jx__jx_jsoo__",bm="Stdweb",eg="Stdlib__Float",bk=142,cI="CamlinternalFormat",ee="Fmt",bj="Kepler__Analytic",cH="Helix__Mouse",bi="Coordinate",cG="Stdlib__Result";c.symbols=[0,[0,ch,11],[0,dK,10],[0,dx,9],[0,dq,bR],[0,dQ,ea],[0,aW,R],[0,aV,fd],[0,b3,ay],[0,cF,bT],[0,fp,b1],[0,dF,fC],[0,cj,bW],[0,bg,cK],[0,aQ,e9],[0,ae,c$],[0,aT,H],[0,di,bk],[0,db,em],[0,bK,b5],[0,cf,fb],[0,bm,bu],[0,dl,64],[0,fD,34],[0,Q,27],[0,cE,17],[0,br,15],[0,eT,79],[0,a8,33],[0,eX,81],[0,fj,45],[0,ca,43],[0,c_,21],[0,bs,50],[0,c6,66],[0,cG,24],[0,fz,42],[0,az,62],[0,cc,46],[0,dP,53],[0,bH,55],[0,fm,72],[0,d3,41],[0,b0,23],[0,d7,59],[0,eA,22],[0,ek,69],[0,cY,16],[0,aD,39],[0,ej,48],[0,dL,80],[0,ax,35],[0,cx,44],[0,U,77],[0,bo,28],[0,aP,40],[0,eo,20],[0,dj,38],[0,cN,37],[0,dN,29],[0,a1,58],[0,eO,31],[0,eB,63],[0,bc,57],[0,e3,56],[0,dk,65],[0,eg,36],[0,dW,74],[0,b4,73],[0,cm,14],[0,a_,82],[0,bC,71],[0,ez,51],[0,fo,60],[0,dX,49],[0,dE,75],[0,e2,26],[0,dS,67],[0,a4,78],[0,x,32],[0,fH,47],[0,aO,25],[0,bU,61],[0,V,18],[0,ah,76],[0,cZ,30],[0,c7,54],[0,eS,13],[0,ex,e$],[0,cW,8],[0,ar,bq],[0,cS,88],[0,cR,7],[0,dV,6],[0,fG,5],[0,cw,85],[0,d5,86],[0,bj,87],[0,d6,84],[0,cJ,ey],[0,Z,dp],[0,fi,aM],[0,dw,e0],[0,dZ,aL],[0,a0,bh],[0,cy,aK],[0,aG,99],[0,dC,dI],[0,cV,4],[0,K,b7],[0,cb,ct],[0,D,ew],[0,cC,dm],[0,cH,ce],[0,d_,P],[0,as,fr],[0,bp,c1],[0,cr,cs],[0,cX,bZ],[0,c5,X],[0,e_,eR],[0,dU,bz],[0,F,bx],[0,bM,ei],[0,a9,by],[0,fc,aU],[0,bP,cD],[0,cQ,92],[0,be,93],[0,c3,96],[0,dh,97],[0,ao,91],[0,ci,95],[0,J,98],[0,bL,94],[0,aE,90],[0,cO,co],[0,ee,83],[0,er,3],[0,cT,2],[0,dd,dR],[0,cp,1],[0,bi,89],[0,el,68],[0,au,70],[0,aZ,19],[0,eY,12],[0,cI,52],[0,fs,aA],[0,N,eL],[0,bv,cl],[0,fl,ft],[0,e5,fk],[0,ak,bI],[0,ev,aw],[0,bV,cu],[0,d2,bX],[0,eE,0]];c.sections=[0,[0,157,[0,[0,[0,[0,[0,[0,[0,0,[0,eE],0,0,1],[0,d2],bX,[0,0,[0,bV],cu,0,1],2],[0,ev],aw,[0,[0,[0,0,[0,ak],bI,0,1],[0,e5],fk,[0,0,[0,fl],ft,0,1],2],[0,bv],cl,[0,[0,0,[0,N],eL,[0,0,[0,fs],aA,0,1],2],[0,cI],52,[0,0,[0,eY],12,0,1],3],4],5],[0,aZ],19,[0,[0,[0,0,[0,au],70,0,1],[0,el],68,[0,0,[0,bi],89,0,1],2],[0,cp],1,[0,[0,0,[0,dd],dR,0,1],[0,cT],2,0,2],3],6],[0,er],3,[0,[0,[0,0,[0,ee],83,[0,0,[0,cO],co,0,1],2],[0,aE],90,[0,0,[0,bL],94,[0,[0,0,[0,J],98,0,1],[0,ci],95,0,2],3],4],[0,ao],91,[0,[0,[0,[0,[0,0,[0,dh],97,0,1],[0,c3],96,0,2],[0,be],93,[0,[0,0,[0,cQ],92,0,1],[0,bP],cD,0,2],3],[0,fc],aU,[0,[0,[0,0,[0,a9],by,0,1],[0,bM],ei,0,2],[0,F],bx,[0,0,[0,dU],bz,[0,0,[0,e_],eR,0,1],2],3],4],[0,c5],X,[0,[0,[0,0,[0,cX],bZ,[0,0,[0,cr],cs,0,1],2],[0,bp],c1,[0,[0,[0,0,[0,as],fr,0,1],[0,d_],P,0,2],[0,cH],ce,[0,0,[0,cC],dm,0,1],3],4],[0,D],ew,[0,0,[0,cb],ct,[0,0,[0,K],b7,0,1],2],5],6],7],8],[0,cV],4,[0,[0,[0,[0,[0,[0,0,[0,dC],dI,0,1],[0,aG],99,[0,0,[0,cy],aK,0,1],2],[0,a0],bh,[0,0,[0,dZ],aL,[0,0,[0,dw],e0,[0,0,[0,fi],aM,0,1],2],3],4],[0,Z],dp,[0,[0,0,[0,cJ],ey,0,1],[0,d6],84,[0,[0,0,[0,bj],87,0,1],[0,d5],86,[0,0,[0,cw],85,0,1],2],3],5],[0,fG],5,[0,[0,0,[0,dV],6,0,1],[0,cR],7,[0,[0,0,[0,cS],88,[0,0,[0,ar],bq,0,1],2],[0,cW],8,[0,0,[0,ex],e$,0,1],3],4],6],[0,eS],13,[0,[0,[0,[0,0,[0,c7],54,0,1],[0,cZ],30,[0,0,[0,ah],76,0,1],2],[0,V],18,[0,[0,0,[0,bU],61,0,1],[0,aO],25,[0,0,[0,fH],47,0,1],2],3],[0,x],32,[0,[0,[0,[0,0,[0,a4],78,0,1],[0,dS],67,0,2],[0,e2],26,[0,0,[0,dE],75,0,1],3],[0,dX],49,[0,[0,0,[0,fo],60,0,1],[0,ez],51,[0,0,[0,bC],71,[0,0,[0,a_],82,0,1],2],3],4],5],7],9],[0,cm],14,[0,[0,[0,[0,[0,[0,0,[0,b4],73,[0,0,[0,dW],74,0,1],2],[0,eg],36,[0,0,[0,dk],65,0,1],3],[0,e3],56,[0,[0,0,[0,bc],57,[0,0,[0,eB],63,0,1],2],[0,eO],31,[0,0,[0,a1],58,0,1],3],4],[0,dN],29,[0,0,[0,cN],37,[0,0,[0,dj],38,0,1],2],5],[0,eo],20,[0,[0,[0,0,[0,aP],40,0,1],[0,bo],28,[0,[0,0,[0,U],77,0,1],[0,cx],44,0,2],3],[0,ax],35,[0,[0,[0,0,[0,dL],80,0,1],[0,ej],48,0,2],[0,aD],39,0,3],4],6],[0,cY],16,[0,[0,[0,[0,[0,[0,0,[0,ek],69,0,1],[0,eA],22,[0,0,[0,d7],59,0,1],2],[0,b0],23,0,3],[0,d3],41,[0,[0,[0,[0,0,[0,fm],72,0,1],[0,bH],55,0,2],[0,dP],53,0,3],[0,cc],46,[0,[0,0,[0,az],62,0,1],[0,fz],42,0,2],4],5],[0,cG],24,[0,[0,[0,[0,0,[0,c6],66,0,1],[0,bs],50,0,2],[0,c_],21,0,3],[0,ca],43,[0,[0,0,[0,fj],45,[0,0,[0,eX],81,0,1],2],[0,a8],33,[0,0,[0,eT],79,0,1],3],4],6],[0,br],15,[0,[0,[0,[0,[0,0,[0,cE],17,0,1],[0,Q],27,[0,0,[0,fD],34,0,1],2],[0,dl],64,[0,[0,0,[0,bm],bu,0,1],[0,cf],fb,[0,[0,0,[0,bK],b5,0,1],[0,db],em,0,2],3],4],[0,di],bk,[0,[0,0,[0,aT],H,0,1],[0,ae],c$,[0,[0,0,[0,aQ],e9,0,1],[0,bg],cK,0,2],3],5],[0,cj],bW,[0,[0,[0,[0,0,[0,dF],fC,[0,0,[0,fp],b1,0,1],2],[0,cF],bT,[0,0,[0,b3],ay,0,1],3],[0,aV],fd,[0,[0,0,[0,aW],R,0,1],[0,dQ],ea,[0,0,[0,dq],bR,0,1],2],4],[0,dx],9,[0,0,[0,dK],10,[0,0,[0,ch],11,0,1],2],5],6],7],8],10]],0,i.caml_list_of_js_array(["%caml_format_int_special","%direct_int_div","%direct_int_mod","%direct_int_mul","%direct_obj_tag","%int_add","%int_and","%int_asr",ed,"%int_lsl","%int_lsr",aa,av,"%int_neg","%int_or","%int_sub","%int_xor","JsStringReader","MlBytes","MlChanid","MlFakeDevice","MlFakeFd","MlFakeFd_out","MlFakeFile","MlFile","MlInt64","MlMutex","MlNat","MlNodeDevice","MlNodeFd","MlObjectTable","Ml_Bigarray","Ml_Bigarray_c_1_1","UInt8ArrayReader","add_nat","bigstring_of_array_buffer","bigstring_of_typed_array","bigstring_to_array_buffer","bigstring_to_typed_array","blake2b","blit_nat","caml_MD5Final","caml_MD5Init","caml_MD5Transform","caml_MD5Update","caml_abs_float","caml_acos_float","caml_acosh_float","caml_add_float","caml_alloc_dummy","caml_alloc_dummy_float","caml_alloc_dummy_lazy","caml_alloc_stack","caml_argv","caml_array_append","caml_array_blit","caml_array_bound_error","caml_array_concat","caml_array_create_float","caml_array_fill",e,E,fn,"caml_array_make","caml_array_of_bytes","caml_array_of_string",h,e7,bJ,"caml_array_sub","caml_array_unsafe_get","caml_array_unsafe_get_float","caml_array_unsafe_set","caml_array_unsafe_set_addr","caml_array_unsafe_set_float","caml_asin_float","caml_asinh_float","caml_atan2_float","caml_atan_float","caml_atanh_float","caml_atomic_cas","caml_atomic_cas_field","caml_atomic_exchange","caml_atomic_exchange_field","caml_atomic_fetch_add","caml_atomic_fetch_add_field","caml_atomic_load","caml_atomic_load_field","caml_atomic_make_contended","caml_ba_blit","caml_ba_change_layout","caml_ba_compare","caml_ba_create","caml_ba_create_buffer","caml_ba_create_from","caml_ba_create_unsafe","caml_ba_custom_name","caml_ba_deserialize","caml_ba_dim","caml_ba_dim_1","caml_ba_dim_2","caml_ba_dim_3","caml_ba_fill","caml_ba_from_typed_array","caml_ba_get_1","caml_ba_get_2","caml_ba_get_3","caml_ba_get_generic","caml_ba_get_size","caml_ba_get_size_per_element","caml_ba_hash","caml_ba_init","caml_ba_kind","caml_ba_kind_of_typed_array","caml_ba_layout","caml_ba_map_file","caml_ba_map_file_bytecode","caml_ba_num_dims","caml_ba_reshape","caml_ba_serialize","caml_ba_set_1","caml_ba_set_2","caml_ba_set_3","caml_ba_set_generic","caml_ba_slice","caml_ba_sub","caml_ba_to_typed_array","caml_ba_uint8_get16","caml_ba_uint8_get32","caml_ba_uint8_get64","caml_ba_uint8_set16","caml_ba_uint8_set32","caml_ba_uint8_set64","caml_backtrace_status","caml_bigstring_blit_ba_to_ba","caml_bigstring_blit_ba_to_bytes","caml_bigstring_blit_bytes_to_ba","caml_bigstring_blit_string_to_ba","caml_bigstring_memcmp","caml_blake2_bytes","caml_blake2_create","caml_blake2_final","caml_blake2_string","caml_blake2_update","caml_blit_bytes","caml_blit_string","caml_bswap16","caml_build_symbols","caml_bytes_bound_error","caml_bytes_compare","caml_bytes_equal","caml_bytes_get","caml_bytes_get16","caml_bytes_get32","caml_bytes_get64","caml_bytes_greaterequal","caml_bytes_greaterthan","caml_bytes_lessequal","caml_bytes_lessthan","caml_bytes_notequal","caml_bytes_of_array","caml_bytes_of_jsbytes","caml_bytes_of_string","caml_bytes_of_uint8_array","caml_bytes_of_utf16_jsstring","caml_bytes_set","caml_bytes_set16","caml_bytes_set32","caml_bytes_set64","caml_bytes_unsafe_get","caml_bytes_unsafe_set","caml_call_gen","caml_callback","caml_cbrt_float","caml_ceil_float",G,o,c2,cn,"caml_classify_float","caml_compare","caml_compare_val","caml_compare_val_get_custom","caml_compare_val_number_custom","caml_compare_val_tag","caml_continuation_use_and_update_handler_noexc","caml_continuation_use_noexc","caml_convert_bytes_to_array","caml_convert_raw_backtrace","caml_convert_raw_backtrace_slot","caml_convert_string_to_bytes","caml_copysign_float","caml_cos_float","caml_cosh_float","caml_create_bytes","caml_create_file","caml_create_string","caml_current_dir","caml_custom_event_index","caml_custom_identifier","caml_custom_ops","caml_decompress_input",g,"caml_div_float","caml_domain_dls","caml_domain_dls_compare_and_set","caml_domain_dls_get","caml_domain_dls_set","caml_domain_id","caml_domain_spawn","caml_ephe_blit_data",b8,"caml_ephe_check_data",c8,"caml_ephe_create","caml_ephe_data_offset","caml_ephe_get_data","caml_ephe_get_data_copy",$,eM,"caml_ephe_key_offset","caml_ephe_none","caml_ephe_set_data","caml_ephe_set_data_opt","caml_ephe_set_key","caml_ephe_unset_data","caml_ephe_unset_key","caml_eq_float","caml_equal","caml_erf_float","caml_erfc_float","caml_executable_name","caml_exn_with_js_backtrace","caml_exp2_float","caml_exp_float","caml_expm1_float","caml_failwith","caml_fatal_uncaught_exception",bb,M,"caml_final_register","caml_final_register_called_without_value","caml_final_release","caml_finish_formatting","caml_float_compare","caml_float_of_bytes","caml_float_of_int","caml_float_of_string","caml_floatarray_append","caml_floatarray_blit","caml_floatarray_concat","caml_floatarray_create","caml_floatarray_fill","caml_floatarray_fill_unboxed",eh,"caml_floatarray_make","caml_floatarray_make_unboxed",fF,"caml_floatarray_sub","caml_floatarray_unsafe_get","caml_floatarray_unsafe_set","caml_floor_float","caml_fma_float","caml_fmod_float","caml_format_exception","caml_format_float",p,"caml_fresh_oo_id","caml_frexp_float","caml_fs_init","caml_gc_compaction","caml_gc_counters","caml_gc_full_major","caml_gc_get","caml_gc_major","caml_gc_major_slice","caml_gc_minor","caml_gc_minor_words","caml_gc_quick_stat","caml_gc_set","caml_gc_stat","caml_ge_float","caml_get_cached_method","caml_get_continuation_callstack","caml_get_current_callstack","caml_get_exception_backtrace","caml_get_exception_raw_backtrace","caml_get_global_data","caml_get_minor_free","caml_get_public_method","caml_get_root","caml_global_data","caml_gr_arc_aux","caml_gr_blit_image","caml_gr_clear_graph","caml_gr_close_graph","caml_gr_close_subwindow","caml_gr_create_image","caml_gr_current_x","caml_gr_current_y","caml_gr_display_mode","caml_gr_doc_of_state","caml_gr_draw_arc","caml_gr_draw_char","caml_gr_draw_image","caml_gr_draw_rect","caml_gr_draw_str","caml_gr_draw_string","caml_gr_dump_image","caml_gr_fill_arc","caml_gr_fill_poly","caml_gr_fill_rect","caml_gr_lineto","caml_gr_make_image","caml_gr_moveto","caml_gr_open_graph","caml_gr_open_subwindow","caml_gr_plot","caml_gr_point_color","caml_gr_remember_mode","caml_gr_resize_window","caml_gr_set_color","caml_gr_set_font","caml_gr_set_line_width","caml_gr_set_text_size","caml_gr_set_window_title","caml_gr_sigio_handler","caml_gr_sigio_signal","caml_gr_size_x","caml_gr_size_y","caml_gr_state","caml_gr_state_create","caml_gr_state_get","caml_gr_state_init","caml_gr_state_set","caml_gr_synchronize","caml_gr_text_size","caml_gr_wait_event","caml_gr_window_id","caml_greaterequal","caml_greaterthan","caml_gt_float","caml_hash","caml_hash_mix_bigstring","caml_hash_mix_bytes","caml_hash_mix_bytes_arr","caml_hash_mix_final","caml_hash_mix_float","caml_hash_mix_float16","caml_hash_mix_float32","caml_hash_mix_int","caml_hash_mix_int64","caml_hash_mix_jsbytes","caml_hash_mix_string","caml_hash_nat","caml_hexstring_of_float","caml_hypot_float","caml_input_value","caml_input_value_from_bytes","caml_input_value_from_reader","caml_input_value_to_outside_heap","caml_install_signal_handler","caml_int32_add","caml_int32_and","caml_int32_bits_of_float",eV,al,C,"caml_int32_float_of_bits",dv,S,Y,"caml_int32_neg","caml_int32_of_float","caml_int32_of_int",cP,"caml_int32_or","caml_int32_shift_left","caml_int32_shift_right","caml_int32_shift_right_unsigned","caml_int32_sub","caml_int32_to_float","caml_int32_to_int","caml_int32_unmarshal","caml_int32_xor","caml_int64_add","caml_int64_and","caml_int64_bits_of_float","caml_int64_bswap","caml_int64_compare","caml_int64_create_lo_hi","caml_int64_create_lo_mi_hi","caml_int64_div","caml_int64_float_of_bits","caml_int64_format","caml_int64_hash","caml_int64_hi32","caml_int64_is_negative","caml_int64_is_zero","caml_int64_lo32","caml_int64_marshal","caml_int64_mod","caml_int64_mul","caml_int64_neg","caml_int64_of_bytes","caml_int64_of_float",c4,q,bf,"caml_int64_of_string","caml_int64_offset","caml_int64_or","caml_int64_shift_left","caml_int64_shift_right","caml_int64_shift_right_unsigned","caml_int64_sub","caml_int64_to_bytes","caml_int64_to_float",fu,s,eG,"caml_int64_ult","caml_int64_unmarshal","caml_int64_xor",t,"caml_int_of_float",m,"caml_invalid_argument","caml_io_buffer_size","caml_is_continuation_tag","caml_is_js","caml_is_ml_bytes","caml_is_ml_string","caml_is_printable","caml_is_special_exception","caml_js_call","caml_js_delete","caml_js_equals","caml_js_error_of_exception","caml_js_error_option_of_exception","caml_js_eval_string","caml_js_expr","caml_js_from_array","caml_js_from_bool",n,fv,cq,"caml_js_from_string","caml_js_fun_call","caml_js_function_arity","caml_js_get","caml_js_get_console","caml_js_html_entities","caml_js_html_escape","caml_js_instanceof","caml_js_meth_call","caml_js_new","caml_js_object","caml_js_pure_expr","caml_js_set","caml_js_strict_equals","caml_js_to_array","caml_js_to_bool","caml_js_to_byte_string","caml_js_to_float",fa,es,"caml_js_to_string","caml_js_typeof","caml_js_var","caml_js_wrap_callback","caml_js_wrap_callback_arguments","caml_js_wrap_callback_strict","caml_js_wrap_callback_unsafe","caml_js_wrap_meth_callback","caml_js_wrap_meth_callback_arguments","caml_js_wrap_meth_callback_strict","caml_js_wrap_meth_callback_unsafe","caml_jsbytes_of_string","caml_jsoo_flags_effects","caml_jsoo_flags_use_js_string","caml_jsstring_of_string","caml_lazy_make_forward","caml_lazy_read_result","caml_lazy_reset_to_lazy","caml_lazy_update_to_forcing","caml_lazy_update_to_forward","caml_ldexp_float","caml_le_float","caml_lessequal","caml_lessthan","caml_lex_array","caml_lex_engine","caml_list_mount_point","caml_list_of_js_array","caml_list_to_js_array","caml_log10_float","caml_log1p_float","caml_log2_float","caml_log_float","caml_lt_float","caml_lxm_M","caml_lxm_daba","caml_lxm_next","caml_make_float_vect","caml_make_path","caml_make_vect","caml_marshal_constants","caml_marshal_data_size","caml_marshal_header_size","caml_maybe_attach_backtrace","caml_maybe_print_stats","caml_md5_bytes","caml_md5_chan","caml_md5_string","caml_memprof_discard","caml_memprof_start","caml_memprof_stop","caml_method_cache","caml_ml_bytes_content","caml_ml_bytes_length","caml_ml_channel_get","caml_ml_channel_redirect","caml_ml_channel_restore","caml_ml_channel_size","caml_ml_channel_size_64","caml_ml_channels","caml_ml_close_channel","caml_ml_condition_broadcast","caml_ml_condition_new","caml_ml_condition_signal","caml_ml_condition_wait","caml_ml_debug_info_status","caml_ml_domain_cpu_relax","caml_ml_domain_id","caml_ml_domain_index","caml_ml_enable_runtime_warnings","caml_ml_flush","caml_ml_gc_ramp_down","caml_ml_gc_ramp_up","caml_ml_input","caml_ml_input_bigarray","caml_ml_input_block","caml_ml_input_char","caml_ml_input_int","caml_ml_input_scan_line","caml_ml_is_binary_mode","caml_ml_is_buffered","caml_ml_mutex_lock","caml_ml_mutex_new","caml_ml_mutex_try_lock","caml_ml_mutex_unlock","caml_ml_open_descriptor_in","caml_ml_open_descriptor_in_with_flags","caml_ml_open_descriptor_out","caml_ml_open_descriptor_out_with_flags","caml_ml_out_channels_list","caml_ml_output","caml_ml_output_bigarray","caml_ml_output_bytes","caml_ml_output_char","caml_ml_output_int","caml_ml_output_ta","caml_ml_pos_in","caml_ml_pos_in_64","caml_ml_pos_out","caml_ml_pos_out_64","caml_ml_runtime_events_are_active","caml_ml_runtime_events_path","caml_ml_runtime_events_pause","caml_ml_runtime_events_resume","caml_ml_runtime_events_start","caml_ml_runtime_warnings_enabled","caml_ml_seek_in","caml_ml_seek_in_64","caml_ml_seek_out","caml_ml_seek_out_64","caml_ml_set_binary_mode","caml_ml_set_buffered","caml_ml_set_channel_name","caml_ml_set_channel_output","caml_ml_set_channel_refill","caml_ml_string_length",f,"caml_modf_float","caml_mount_autoload",d,"caml_mul_float","caml_named_value","caml_named_values","caml_nativeint_add","caml_nativeint_and",bO,da,bl,fI,en,T,"caml_nativeint_neg","caml_nativeint_of_float","caml_nativeint_of_int","caml_nativeint_of_int32",dB,"caml_nativeint_or","caml_nativeint_shift_left","caml_nativeint_shift_right","caml_nativeint_shift_right_unsigned","caml_nativeint_sub","caml_nativeint_to_float","caml_nativeint_to_int","caml_nativeint_to_int32","caml_nativeint_unmarshal","caml_nativeint_xor","caml_neg_float","caml_neq_float","caml_new_lex_engine","caml_new_string","caml_nextafter_float","caml_notequal","caml_obj_add_offset","caml_obj_block","caml_obj_compare_and_swap","caml_obj_dup","caml_obj_is_shared","caml_obj_raw_field","caml_obj_reachable_words","caml_obj_set_raw_field","caml_obj_tag","caml_obj_update_tag","caml_obj_with_tag","caml_ojs_new_arr","caml_oo_cache_id","caml_oo_last_id","caml_output_val","caml_output_value","caml_output_value_to_buffer","caml_output_value_to_bytes","caml_output_value_to_string","caml_packFloat16","caml_parse_digit","caml_parse_engine","caml_parse_format","caml_parse_sign_and_base","caml_parser_trace","caml_pos_in","caml_pos_out","caml_power_float","caml_pure_js_expr","caml_raise_constant","caml_raise_end_of_file","caml_raise_no_such_file","caml_raise_nodejs_error","caml_raise_not_found","caml_raise_sys_error","caml_raise_system_error","caml_raise_with_arg","caml_raise_with_args","caml_raise_with_string","caml_raise_zero_divide","caml_raw_backtrace_length","caml_raw_backtrace_next_slot","caml_raw_backtrace_slot","caml_read_file_content","caml_recommended_domain_count","caml_record_backtrace","caml_record_backtrace_env_flag","caml_record_backtrace_runtime_flag","caml_refill","caml_register_global","caml_register_named_value","caml_restore_raw_backtrace","caml_root","caml_round_float","caml_runtime_events_create_cursor","caml_runtime_events_free_cursor","caml_runtime_events_read_poll","caml_runtime_events_user_register","caml_runtime_events_user_resolve","caml_runtime_events_user_write","caml_runtime_parameters","caml_runtime_variant","caml_runtime_warnings","caml_seek_in","caml_seek_out","caml_set_oo_id","caml_set_parser_trace","caml_set_static_env",ef,aY,"caml_sin_float","caml_sinh_float","caml_sqrt_float","caml_str_repeat","caml_strerror","caml_string_bound_error","caml_string_compare","caml_string_concat","caml_string_equal","caml_string_get","caml_string_get16","caml_string_get32","caml_string_get64","caml_string_greaterequal","caml_string_greaterthan","caml_string_hash","caml_string_lessequal","caml_string_lessthan","caml_string_notequal","caml_string_of_array","caml_string_of_bytes","caml_string_of_jsbytes","caml_string_of_jsstring","caml_string_of_uint8_array","caml_string_set","caml_string_unsafe_get","caml_sub_float","caml_sub_uint8_array_to_jsbytes","caml_subarray_to_jsbytes","caml_sys_argv","caml_sys_chdir","caml_sys_close","caml_sys_const_backend_type","caml_sys_const_big_endian","caml_sys_const_int_size","caml_sys_const_max_wosize","caml_sys_const_naked_pointers_checked","caml_sys_const_ostype_cygwin","caml_sys_const_ostype_unix","caml_sys_const_ostype_win32","caml_sys_const_word_size","caml_sys_convert_signal_number","caml_sys_executable_name",j,"caml_sys_fds","caml_sys_file_exists","caml_sys_get_argv","caml_sys_get_config",k,"caml_sys_getenv","caml_sys_getenv_opt","caml_sys_io_buffer_size","caml_sys_is_directory","caml_sys_is_regular_file","caml_sys_isatty","caml_sys_mkdir","caml_sys_modify_argv","caml_sys_open","caml_sys_open_for_node","caml_sys_random_seed","caml_sys_read_directory","caml_sys_remove","caml_sys_rename","caml_sys_rev_convert_signal_number","caml_sys_rmdir","caml_sys_system_command","caml_sys_temp_dir_name","caml_sys_time","caml_sys_time_include_children","caml_sys_unsafe_getenv","caml_tan_float","caml_tanh_float","caml_throw_js_exception","caml_to_js_string","caml_trailing_slash","caml_trampoline","caml_trampoline_return","caml_trunc_float","caml_uint8_array_of_bytes","caml_uint8_array_of_string","caml_uniform_array_append","caml_uniform_array_blit","caml_uniform_array_concat","caml_uniform_array_fill","caml_uniform_array_make","caml_uniform_array_sub",df,dg,fA,bA,fw,d8,dM,dD,ap,bG,fq,cU,d0,dJ,I,W,eH,dz,cA,a2,cd,fx,bF,bd,b,fg,bS,aH,aX,aq,l,ds,dc,e1,dt,fy,a5,aJ,eu,af,aj,_,bn,dY,r,cL,eK,dy,fE,eq,A,ag,aC,eI,d$,ec,e4,a$,b9,cB,B,dO,dG,cv,d9,"caml_unmount","caml_unpackFloat16","caml_update_dummy","caml_update_dummy_lazy",e8,dr,"caml_weak_create",ai,a3,"caml_weak_set","caml_wrap_exception","caml_xdg_defaults","caml_xmlhttprequest_create","caml_zstd_initialize","compare_digits_nat","compare_nat","complement_nat","create_nat","decr_nat","deserialize_nat","div_digit_nat","div_helper","div_nat","fs_node_supported","incr_nat","initialize_nat","is_digit_int","is_digit_normalized","is_digit_odd","is_digit_zero","jsoo_create_file","jsoo_create_file_extern","jsoo_dataview","jsoo_effect_not_supported","jsoo_is_ascii","jsoo_is_win32","jsoo_mount_point","jsoo_static_env","jsoo_sys_getenv","jsoo_text_decoder","jsoo_text_decoder_buff","jsoo_text_encoder","jsoo_toplevel_reloc","land_digit_nat","length_nat","lor_digit_nat","lxor_digit_nat","make_unix_err_args","mult_digit_nat","mult_nat","nat_of_array","nth_digit_nat","nth_digit_nat_native","num_digits_nat","num_leading_zero_bits_in_digit","ocaml_stats_from_node_stats","os_type","path_is_absolute","re_match","re_partial_match","re_replacement_text","re_search_backward","re_search_forward","re_string_match","resolve_fs_device","serialize_nat","set_digit_nat","set_digit_nat_native","set_to_zero_nat","shift_left_nat","shift_right_nat","square_nat","sub_nat",a7,eZ,et,dA,ab,"unix_error",ba,fe,u,b2,eF,a6,e6,ff,eD,de,b$,aN,am,L,b_,fh,y,O,bB,z,aI,ad,aF,dT,an,eb,bw,d4,dH,ck,dn,fB,eN,at,aS,cM,eC,eU,d1,aR,w,eP,bQ,bN,bY,bD,du,c0,c9,v,bE,aB,ac,bt,b6,eJ,eQ,ep,cz,cg,eW,"zstd_decompress"]),0];return}(globalThis)); 9433 + i=a.jsoo_runtime,c=i.caml_get_global_data(),eg="caml_unix_stat_64",ef="unix_lseek",l="caml_unix_inchannel_of_filedescr",ed="caml_unix_stat",eb="caml_unix_write_bigarray",fM="caml_nativeint_format",bh="caml_int64_of_nativeint",ea="caml_unix_closedir",bf="caml_unix_getgrnam",cE="caml_unix_truncate",cD="caml_unix_getcwd",fI="caml_unix_readlink",fJ="caml_floatarray_set",bd="caml_fill_bytes",bc="unix_error_message",cC="win_inchannel_of_filedescr",bb="caml_unix_time",cy="caml_unix_write",d7="unix_lstat",fF="unix_open",d4="unix_rename",fE="caml_unix_chmod",a9="unix_access",a7="caml_unix_lseek",a8="unix_fsync",d3="caml_unix_findnext",a5="caml_weak_get_copy",h="caml_array_set",d1="caml_unix_opendir",fC="caml_unix_lookup_file",a4="caml_unix_getegid",fB="caml_unix_getgid",ct="caml_js_from_nativeint",aZ="caml_unix_gmtime",a0="caml_signbit_float",fA="caml_unix_close",fz="caml_js_from_int32",fy="caml_int64_to_int",cq="caml_check_bound_gen",p="caml_format_int",dW="unix_link",cn="unix_mkdir",aT="unix_rewinddir",aU="unix_read",dR="caml_unix_unlink",aP="unix_getgid",dP="caml_unix_error_message",fu="caml_unix_findclose",aL="caml_unix_lseek_64",fr="caml_array_get_float",cj="win_outchannel_of_filedescr",dM="caml_unix_fstat",cg="caml_unix_geteuid",dK="unix_lstat_64",aK="unix_inchannel_of_filedescr",cb="unix_getpwnam",cc="unix_geteuid",aJ="caml_unix_getuid",dJ="caml_unix_utimes",fk="caml_unix_getpwuid",fl="unix_getpwuid",o="caml_check_bound",fj="unix_ftruncate_64",aH="unix_isatty",ca="caml_unix_times",dG="caml_unix_exit",fi="unix_exit",aE="caml_unix_single_write",b$="caml_ephe_blit_key",dE="caml_nativeint_of_string",aD="unix_write",dC="caml_unix_ftruncate_64",dD="unix_close",fe="caml_js_to_int32",k="caml_sys_getcwd",dB="caml_unix_readdir",b9="win_findclose",ax="%int_mul",dy="caml_int32_format",fa="caml_weak_blit",dw="caml_unix_localtime",dx="unix_times",e$="caml_array_set_addr",dv="caml_unix_inet_addr_of_string",e_="unix_ftruncate",du="caml_weak_check",e8="caml_unix_symlink",av="unix_outchannel_of_filedescr",as="caml_unix_has_symlink",dr="unix_mktime",s="caml_int64_to_int32",b5="unix_fstat",e5="caml_unix_link",ar="caml_unix_fchmod",b1="unix_symlink",ap="unix_localtime",e3="unix_chdir",ao="unix_getgrgid",an="caml_int32_compare",al="caml_unix_mkdir",e0="win_startup",eZ="caml_int32_bswap",ak="caml_weak_get",eY="unix_readlink",ai="caml_unix_rmdir",e="caml_array_get",ah="caml_unix_lstat_64",ae="unix_inet_addr_of_string",bV="caml_unix_gettimeofday",r="caml_unix_outchannel_of_filedescr",bT="unix_stat",dj="caml_unix_chdir",ac="unix_closedir",ad="win_cleanup",bR="caml_nativeint_bswap",$="caml_unix_mktime",aa="caml_ephe_get_key",ab="%int_mod",bQ="unix_stat_64",dh="unix_getegid",di="caml_unix_access",df="caml_unix_isatty",Z="caml_int32_mul",dd="caml_nativeint_compare",q="caml_int64_of_int32",X="caml_unix_fsync",eU="win_findnext",U="caml_nativeint_mul",eT="unix_single_write",T="caml_int32_mod",n="caml_js_from_float",da="unix_truncate_64",c$="caml_ephe_check_key",eR="unix_opendir",bL="caml_array_set_float",eQ="caml_ephe_get_key_copy",P="unix_getuid",d="caml_mul",N="caml_fill_string",g="caml_div",c7="caml_int64_of_int",eO="caml_unix_read_bigarray",M="unix_getgrnam",eN="win_findfirst",eM="caml_unix_startup",bI="caml_unix_filedescr_of_fd",eL="caml_unix_ftruncate",f="caml_mod",c5="caml_check_bound_float",bG="unix_utimes",bH="caml_unix_getgrgid",eK="caml_int64_to_nativeint",bF="unix_time",eJ="unix_fstat_64",I="caml_unix_fstat_64",c3="unix_truncate",bD="unix_gmtime",bC="caml_unix_cleanup",eH="unix_getcwd",eG="unix_readdir",j="caml_sys_exit",G="caml_channel_descriptor",by="unix_lseek_64",t="caml_int_compare",E="caml_array_get_addr",ex="unix_chmod",ey="caml_unix_lstat",ew="caml_js_to_nativeint",C="caml_int32_div",cX="caml_unix_findfirst",B="caml_unix_truncate_64",A="caml_unix_rewinddir",z="unix_has_symlink",m="caml_int_of_string",eu="caml_unix_rename",bv="win_filedescr_of_channel",y="unix_gettimeofday",et="win_handle_fd",b="caml_unix_getpwnam",cS="caml_int32_of_string",er="caml_nativeint_mod",w="unix_rmdir",cO="caml_unix_read",cP="unix_read_bigarray",el="caml_floatarray_get",v="unix_unlink",bp="caml_unix_open",ej="caml_signbit",u="unix_fchmod",bn="caml_nativeint_div",eh="%int_div";c.aliases=i.caml_list_of_js_array([[0,cq,o],[0,fy,s],[0,eh,g],[0,fz,n],[0,eN,cX],[0,bn,g],[0,u,ar],[0,M,b],[0,av,r],[0,c7,q],[0,ct,n],[0,ej,a0],[0,du,c$],[0,N,bd],[0,v,dR],[0,e_,eL],[0,el,e],[0,e$,h],[0,P,aJ],[0,cP,eO],[0,w,ai],[0,dx,ca],[0,fa,b$],[0,dy,p],[0,fC,eb],[0,bL,h],[0,ax,d],[0,eR,d1],[0,b9,fu],[0,cS,m],[0,er,f],[0,da,B],[0,T,f],[0,a5,eQ],[0,U,d],[0,eT,aE],[0,dD,fA],[0,a8,X],[0,aD,cy],[0,dE,m],[0,a9,di],[0,et,bI],[0,eU,d3],[0,y,bV],[0,bv,G],[0,fi,j],[0,dd,t],[0,Z,d],[0,dG,j],[0,z,as],[0,d4,eu],[0,aH,df],[0,fj,dC],[0,dh,a4],[0,d7,ey],[0,fF,bp],[0,C,g],[0,fl,b],[0,fk,b],[0,bQ,eg],[0,ew,fe],[0,ab,f],[0,bR,eZ],[0,cc,cg],[0,cb,b],[0,ad,bC],[0,ac,ea],[0,cC,l],[0,ex,fE],[0,bT,ed],[0,E,e],[0,aK,l],[0,ae,dv],[0,dK,ah],[0,fJ,h],[0,cD,k],[0,cj,r],[0,fr,e],[0,eY,fI],[0,ak,aa],[0,bf,b],[0,by,aL],[0,e0,eM],[0,eG,dB],[0,aP,fB],[0,dP,bc],[0,an,t],[0,eH,k],[0,bD,aZ],[0,bh,q],[0,ao,b],[0,c3,cE],[0,e3,dj],[0,ap,dw],[0,fM,p],[0,eJ,I],[0,b1,e8],[0,bF,bb],[0,eK,s],[0,aU,cO],[0,aT,A],[0,cn,al],[0,bH,b],[0,dW,e5],[0,bG,dJ],[0,c5,o],[0,b5,dM],[0,ef,a7],[0,dr,$]]);c.prim_count=981;var 9434 + cI="Stdweb__Stdweb_map",ee=133,bj=102,ec="Helix__Http",cG=114,cH="Stdlib__Type",bi="Stdweb__Stdweb_form_data",bg="Globe__Sphere",cF="Helix__Router",fL="Stdlib__Buffer",d$="Stdlib__Out_channel",d_="Kepler",fK="Match_failure",d9=157,be="Stdlib__Gc",d8="Kepler__Propagate",fH="Stdlib__Unit",fG=136,cB="Jsoo_runtime__Runtime_version",cz="Kepler__Vec3",cA="Stdlib__Map",d6="Stdlib__Parsing",ba="Stdlib__Effect",d5="Brr",a$="Globe_webgl__Coverage",cx=108,a_="Stdlib__String",a6="Stdlib__BytesLabels",d2="Jv",d0="Stdlib__Condition",fD="Stdlib__Repr",cw=148,dZ="Stdlib__Filename",a3="Stdlib__In_channel",dY="Not_found",cv=154,cu="Helix",a1="CamlinternalLazy",a2="Jstr",cs="Division_by_zero",aX="Stdweb__Stdweb_promise",aY="Stdweb__Stdweb_storage",aW=117,dX="Globe_webgl__Orbit",cr=104,cp="Stdlib__Either",aV="Stdweb__Stdweb_dict",co=109,cm="Stdweb__Stdweb_global",cl="Globe__Gl_coord",dV="Stdlib__Callback",aS="Stdweb__Stdweb_fetch",dU=155,aR="Stdlib__Lexing",ck="Undefined_recursive_module",dS="Stdlib__Printf",dT="Stdweb__Stdweb_url_search_params",fx=111,aQ="Stdlib__Bool",dQ="Stdlib__Int",fw="Brr_webworkers",fv=153,dO="Stdlib__MoreLabels",aN=103,aO=127,dN="Sys_error",aM=100,fs="Stdlib__Digest",ft="Stdweb__Stdweb_json",fq="Stdlib__Pqueue",dL=101,fp="Brr_webcrypto",ci="Stdweb__",ch=151,cf="Stdlib__Queue",fo=110,ce="Helix__View",cd="Stdlib__Set",fn="Stdlib__Stack",dH="Stdlib__Complex",dI="Stdweb__Stdweb_iterator",fm="Jx__",aI="Jsoo_runtime__",aG="Globe",dF="Jsoo_runtime",fg="Globe_webgl__Camera",fh=130,aF="Stdlib__Nativeint",ff=128,aC=113,b_=146,fd=156,dA="Sys_blocked_io",aB="Stdlib__Random",dz="Jx",aA=135,b8=144,fc="Globe_webgl__Scene",ay=106,az="Stdlib__Marshal",fb=140,b7="Stdlib__Ephemeron",e9="Brr_webaudio",aw="CamlinternalMod",b6="Stdweb__Stdweb_object",au="Helix__History",at="Signal",dt="Stdweb__Stdweb_websocket",e7="Stdlib__Fun",e6="Stdlib__Char",ds=125,b2=116,b3="Stdlib__Pair",b4=138,e4=126,aq="Globe__Math",am="Brr_io",dq=150,e2="CamlinternalFormatBasics",dp="Stdlib__Weak",b0=105,dn="Stdlib__Format",e1="Stdlib__StdLabels",dm="Stdlib__Int64",dl="Stdweb__Stdweb_console",aj="Stdlib__ArrayLabels",bZ=129,bY="Brr_canvas",bX="Stdlib__Bigarray",af="Globe_webgl__Density",ag="Stdweb__Stdweb_dom",bW=137,bU=132,dk="Globe__Raycast",bS="Globe_webgl",_="Jx__Jx_ffi",dg="Dune__exe__Main",de="Stdweb__Stdweb_clipboard",Y=115,dc=131,eV=122,eW="Stdlib",eX="Stdlib__StringLabels",W="Stdlib__Atomic",bP="Globe_webgl__Earth",V="Stdlib__ListLabels",db="Stdlib__Seq",eS="Stdlib__Iarray",bO=158,bN="Globe__Color",S=134,bM="Stdweb__Stdweb_array",R="Stdlib__Uchar",Q=152,c_="Stdlib__Arg",O="Brr_webmidi",c9="Stdlib__Scanf",eP=112,c8="Globe_webgl__Shader",L="Html",c6="Globe__Satellite",K="Globe__Heatmap",bK=107,bJ="Stdlib__Printexc",c4=147,J="Globe__Geometry",bE="Stdlib__Dynarray",eI="Assert_failure",H=141,bA=118,bB=121,bz=120,c2="Stdlib__Array",c1="Stdlib__Obj",eF="Stdlib__Hashtbl",eD="Stdlib__Domain",eE="Stdlib__Option",eC=124,bx="Brr_webgpu",eB="Std_exit",ez="Brr_css",eA=149,F="Globe_webgl__Grid",D="Helix__Time",bw=145,c0="Globe_webgl__Stars",cY="Invalid_argument",cZ="Stack_overflow",cW="End_of_file",ev="Failure",es="Stdlib__Lazy",cV="Ptime",bu="Stdlib__Semaphore",cU="Out_of_memory",cT="Globe__Visibility",x="Stdlib__Bytes",bt="Stdlib__Sys",eq=143,cR="Fut",ep="CamlinternalOO",cQ="Stdlib__Int32",eo="Stdlib__Oo",br=123,bs="Helix__",em=119,en="Stdlib__Mutex",bq="Stdlib__List",cN=139,cM="Jx__jx_jsoo__",bo="Stdweb",ek="Stdlib__Float",bm=142,cL="CamlinternalFormat",ei="Fmt",bl="Kepler__Analytic",cK="Helix__Mouse",bk="Coordinate",cJ="Stdlib__Result";c.symbols=[0,[0,ck,11],[0,dN,10],[0,dA,9],[0,dt,S],[0,dT,aA],[0,aY,fG],[0,aX,bU],[0,b6,bW],[0,cI,cN],[0,ft,fb],[0,dI,b4],[0,cm,dc],[0,bi,H],[0,aS,bm],[0,ag,ee],[0,aV,eq],[0,dl,b8],[0,de,bw],[0,bM,b_],[0,ci,fh],[0,bo,c4],[0,dp,64],[0,fH,34],[0,R,27],[0,cH,17],[0,bt,15],[0,eX,79],[0,a_,33],[0,e1,81],[0,fn,45],[0,cd,43],[0,db,21],[0,bu,50],[0,c9,66],[0,cJ,24],[0,fD,42],[0,aB,62],[0,cf,46],[0,dS,53],[0,bJ,55],[0,fq,72],[0,d6,41],[0,b3,23],[0,d$,59],[0,eE,22],[0,eo,69],[0,c1,16],[0,aF,39],[0,en,48],[0,dO,80],[0,az,35],[0,cA,44],[0,V,77],[0,bq,28],[0,aR,40],[0,es,20],[0,dm,38],[0,cQ,37],[0,dQ,29],[0,a3,58],[0,eS,31],[0,eF,63],[0,be,57],[0,e7,56],[0,dn,65],[0,ek,36],[0,dZ,74],[0,b7,73],[0,cp,14],[0,ba,82],[0,bE,71],[0,eD,51],[0,fs,60],[0,d0,49],[0,dH,75],[0,e6,26],[0,dV,67],[0,a6,78],[0,x,32],[0,fL,47],[0,aQ,25],[0,bX,61],[0,W,18],[0,aj,76],[0,c2,30],[0,c_,54],[0,eW,13],[0,eB,bO],[0,cZ,8],[0,at,ds],[0,cV,88],[0,cU,7],[0,dY,6],[0,fK,5],[0,cz,85],[0,d8,86],[0,bl,87],[0,d_,84],[0,cM,e4],[0,_,aO],[0,fm,bZ],[0,dz,ff],[0,d2,cr],[0,a2,aN],[0,cB,dL],[0,aI,aM],[0,dF,bj],[0,cY,4],[0,L,cw],[0,ce,dq],[0,D,ch],[0,cF,Q],[0,cK,fv],[0,ec,cv],[0,au,dU],[0,bs,eA],[0,cu,fd],[0,c0,aW],[0,c8,b2],[0,fc,br],[0,dX,eV],[0,F,bB],[0,bP,bz],[0,af,eC],[0,a$,em],[0,fg,bA],[0,bS,Y],[0,cT,92],[0,bg,93],[0,c6,96],[0,dk,97],[0,aq,91],[0,K,98],[0,cl,95],[0,J,99],[0,bN,94],[0,aG,90],[0,cR,b0],[0,ei,83],[0,ev,3],[0,cW,2],[0,dg,d9],[0,cs,1],[0,bk,89],[0,ep,68],[0,aw,70],[0,a1,19],[0,e2,12],[0,cL,52],[0,fw,cG],[0,O,aC],[0,bx,fo],[0,fp,eP],[0,e9,fx],[0,am,cx],[0,ez,bK],[0,bY,co],[0,d5,ay],[0,eI,0]];c.sections=[0,[0,159,[0,[0,[0,[0,[0,[0,[0,0,[0,eI],0,0,1],[0,d5],ay,[0,0,[0,bY],co,0,1],2],[0,ez],bK,[0,[0,[0,0,[0,am],cx,0,1],[0,e9],fx,[0,0,[0,fp],eP,0,1],2],[0,bx],fo,[0,[0,0,[0,O],aC,[0,0,[0,fw],cG,0,1],2],[0,cL],52,[0,0,[0,e2],12,0,1],3],4],5],[0,a1],19,[0,[0,[0,0,[0,aw],70,0,1],[0,ep],68,[0,0,[0,bk],89,0,1],2],[0,cs],1,[0,[0,0,[0,dg],d9,0,1],[0,cW],2,0,2],3],6],[0,ev],3,[0,[0,[0,0,[0,ei],83,[0,0,[0,cR],b0,0,1],2],[0,aG],90,[0,0,[0,bN],94,[0,[0,0,[0,J],99,0,1],[0,cl],95,[0,0,[0,K],98,0,1],2],3],4],[0,aq],91,[0,[0,[0,[0,[0,0,[0,dk],97,0,1],[0,c6],96,0,2],[0,bg],93,[0,[0,0,[0,cT],92,0,1],[0,bS],Y,0,2],3],[0,fg],bA,[0,[0,0,[0,a$],em,[0,0,[0,af],eC,0,1],2],[0,bP],bz,0,3],4],[0,F],bB,[0,[0,[0,0,[0,dX],eV,[0,0,[0,fc],br,0,1],2],[0,c8],b2,[0,0,[0,c0],aW,[0,0,[0,cu],fd,0,1],2],3],[0,bs],eA,[0,[0,[0,[0,0,[0,au],dU,0,1],[0,ec],cv,0,2],[0,cK],fv,[0,0,[0,cF],Q,0,1],3],[0,D],ch,[0,0,[0,ce],dq,[0,0,[0,L],cw,0,1],2],4],5],6],7],8],[0,cY],4,[0,[0,[0,[0,[0,[0,0,[0,dF],bj,0,1],[0,aI],aM,[0,0,[0,cB],dL,0,1],2],[0,a2],aN,[0,0,[0,d2],cr,[0,0,[0,dz],ff,[0,0,[0,fm],bZ,0,1],2],3],4],[0,_],aO,[0,[0,0,[0,cM],e4,0,1],[0,d_],84,[0,[0,0,[0,bl],87,0,1],[0,d8],86,[0,0,[0,cz],85,0,1],2],3],5],[0,fK],5,[0,[0,0,[0,dY],6,0,1],[0,cU],7,[0,[0,0,[0,cV],88,[0,0,[0,at],ds,0,1],2],[0,cZ],8,[0,0,[0,eB],bO,0,1],3],4],6],[0,eW],13,[0,[0,[0,[0,0,[0,c_],54,0,1],[0,c2],30,[0,0,[0,aj],76,0,1],2],[0,W],18,[0,[0,0,[0,bX],61,0,1],[0,aQ],25,[0,0,[0,fL],47,0,1],2],3],[0,x],32,[0,[0,[0,[0,0,[0,a6],78,0,1],[0,dV],67,0,2],[0,e6],26,[0,0,[0,dH],75,0,1],3],[0,d0],49,[0,[0,0,[0,fs],60,0,1],[0,eD],51,[0,0,[0,bE],71,[0,0,[0,ba],82,0,1],2],3],4],5],7],9],[0,cp],14,[0,[0,[0,[0,[0,[0,0,[0,b7],73,[0,0,[0,dZ],74,0,1],2],[0,ek],36,[0,0,[0,dn],65,0,1],3],[0,e7],56,[0,[0,0,[0,be],57,[0,0,[0,eF],63,0,1],2],[0,eS],31,[0,0,[0,a3],58,0,1],3],4],[0,dQ],29,[0,0,[0,cQ],37,[0,0,[0,dm],38,0,1],2],5],[0,es],20,[0,[0,[0,0,[0,aR],40,0,1],[0,bq],28,[0,[0,0,[0,V],77,0,1],[0,cA],44,0,2],3],[0,az],35,[0,[0,[0,0,[0,dO],80,0,1],[0,en],48,0,2],[0,aF],39,0,3],4],6],[0,c1],16,[0,[0,[0,[0,[0,[0,0,[0,eo],69,0,1],[0,eE],22,[0,0,[0,d$],59,0,1],2],[0,b3],23,0,3],[0,d6],41,[0,[0,[0,[0,0,[0,fq],72,0,1],[0,bJ],55,0,2],[0,dS],53,0,3],[0,cf],46,[0,[0,0,[0,aB],62,0,1],[0,fD],42,0,2],4],5],[0,cJ],24,[0,[0,[0,[0,0,[0,c9],66,0,1],[0,bu],50,0,2],[0,db],21,0,3],[0,cd],43,[0,[0,0,[0,fn],45,[0,0,[0,e1],81,0,1],2],[0,a_],33,[0,0,[0,eX],79,0,1],3],4],6],[0,bt],15,[0,[0,[0,[0,[0,0,[0,cH],17,0,1],[0,R],27,[0,0,[0,fH],34,0,1],2],[0,dp],64,[0,[0,0,[0,bo],c4,0,1],[0,ci],fh,[0,[0,0,[0,bM],b_,0,1],[0,de],bw,0,2],3],4],[0,dl],b8,[0,[0,0,[0,aV],eq,0,1],[0,ag],ee,[0,[0,0,[0,aS],bm,0,1],[0,bi],H,0,2],3],5],[0,cm],dc,[0,[0,[0,[0,0,[0,dI],b4,[0,0,[0,ft],fb,0,1],2],[0,cI],cN,[0,0,[0,b6],bW,0,1],3],[0,aX],bU,[0,[0,0,[0,aY],fG,0,1],[0,dT],aA,[0,0,[0,dt],S,0,1],2],4],[0,dA],9,[0,0,[0,dN],10,[0,0,[0,ck],11,0,1],2],5],6],7],8],10]],0,i.caml_list_of_js_array(["%caml_format_int_special","%direct_int_div","%direct_int_mod","%direct_int_mul","%direct_obj_tag","%int_add","%int_and","%int_asr",eh,"%int_lsl","%int_lsr",ab,ax,"%int_neg","%int_or","%int_sub","%int_xor","JsStringReader","MlBytes","MlChanid","MlFakeDevice","MlFakeFd","MlFakeFd_out","MlFakeFile","MlFile","MlInt64","MlMutex","MlNat","MlNodeDevice","MlNodeFd","MlObjectTable","Ml_Bigarray","Ml_Bigarray_c_1_1","UInt8ArrayReader","add_nat","bigstring_of_array_buffer","bigstring_of_typed_array","bigstring_to_array_buffer","bigstring_to_typed_array","blake2b","blit_nat","caml_MD5Final","caml_MD5Init","caml_MD5Transform","caml_MD5Update","caml_abs_float","caml_acos_float","caml_acosh_float","caml_add_float","caml_alloc_dummy","caml_alloc_dummy_float","caml_alloc_dummy_lazy","caml_alloc_stack","caml_argv","caml_array_append","caml_array_blit","caml_array_bound_error","caml_array_concat","caml_array_create_float","caml_array_fill",e,E,fr,"caml_array_make","caml_array_of_bytes","caml_array_of_string",h,e$,bL,"caml_array_sub","caml_array_unsafe_get","caml_array_unsafe_get_float","caml_array_unsafe_set","caml_array_unsafe_set_addr","caml_array_unsafe_set_float","caml_asin_float","caml_asinh_float","caml_atan2_float","caml_atan_float","caml_atanh_float","caml_atomic_cas","caml_atomic_cas_field","caml_atomic_exchange","caml_atomic_exchange_field","caml_atomic_fetch_add","caml_atomic_fetch_add_field","caml_atomic_load","caml_atomic_load_field","caml_atomic_make_contended","caml_ba_blit","caml_ba_change_layout","caml_ba_compare","caml_ba_create","caml_ba_create_buffer","caml_ba_create_from","caml_ba_create_unsafe","caml_ba_custom_name","caml_ba_deserialize","caml_ba_dim","caml_ba_dim_1","caml_ba_dim_2","caml_ba_dim_3","caml_ba_fill","caml_ba_from_typed_array","caml_ba_get_1","caml_ba_get_2","caml_ba_get_3","caml_ba_get_generic","caml_ba_get_size","caml_ba_get_size_per_element","caml_ba_hash","caml_ba_init","caml_ba_kind","caml_ba_kind_of_typed_array","caml_ba_layout","caml_ba_map_file","caml_ba_map_file_bytecode","caml_ba_num_dims","caml_ba_reshape","caml_ba_serialize","caml_ba_set_1","caml_ba_set_2","caml_ba_set_3","caml_ba_set_generic","caml_ba_slice","caml_ba_sub","caml_ba_to_typed_array","caml_ba_uint8_get16","caml_ba_uint8_get32","caml_ba_uint8_get64","caml_ba_uint8_set16","caml_ba_uint8_set32","caml_ba_uint8_set64","caml_backtrace_status","caml_bigstring_blit_ba_to_ba","caml_bigstring_blit_ba_to_bytes","caml_bigstring_blit_bytes_to_ba","caml_bigstring_blit_string_to_ba","caml_bigstring_memcmp","caml_blake2_bytes","caml_blake2_create","caml_blake2_final","caml_blake2_string","caml_blake2_update","caml_blit_bytes","caml_blit_string","caml_bswap16","caml_build_symbols","caml_bytes_bound_error","caml_bytes_compare","caml_bytes_equal","caml_bytes_get","caml_bytes_get16","caml_bytes_get32","caml_bytes_get64","caml_bytes_greaterequal","caml_bytes_greaterthan","caml_bytes_lessequal","caml_bytes_lessthan","caml_bytes_notequal","caml_bytes_of_array","caml_bytes_of_jsbytes","caml_bytes_of_string","caml_bytes_of_uint8_array","caml_bytes_of_utf16_jsstring","caml_bytes_set","caml_bytes_set16","caml_bytes_set32","caml_bytes_set64","caml_bytes_unsafe_get","caml_bytes_unsafe_set","caml_call_gen","caml_callback","caml_cbrt_float","caml_ceil_float",G,o,c5,cq,"caml_classify_float","caml_compare","caml_compare_val","caml_compare_val_get_custom","caml_compare_val_number_custom","caml_compare_val_tag","caml_continuation_use_and_update_handler_noexc","caml_continuation_use_noexc","caml_convert_bytes_to_array","caml_convert_raw_backtrace","caml_convert_raw_backtrace_slot","caml_convert_string_to_bytes","caml_copysign_float","caml_cos_float","caml_cosh_float","caml_create_bytes","caml_create_file","caml_create_string","caml_current_dir","caml_custom_event_index","caml_custom_identifier","caml_custom_ops","caml_decompress_input",g,"caml_div_float","caml_domain_dls","caml_domain_dls_compare_and_set","caml_domain_dls_get","caml_domain_dls_set","caml_domain_id","caml_domain_spawn","caml_ephe_blit_data",b$,"caml_ephe_check_data",c$,"caml_ephe_create","caml_ephe_data_offset","caml_ephe_get_data","caml_ephe_get_data_copy",aa,eQ,"caml_ephe_key_offset","caml_ephe_none","caml_ephe_set_data","caml_ephe_set_data_opt","caml_ephe_set_key","caml_ephe_unset_data","caml_ephe_unset_key","caml_eq_float","caml_equal","caml_erf_float","caml_erfc_float","caml_executable_name","caml_exn_with_js_backtrace","caml_exp2_float","caml_exp_float","caml_expm1_float","caml_failwith","caml_fatal_uncaught_exception",bd,N,"caml_final_register","caml_final_register_called_without_value","caml_final_release","caml_finish_formatting","caml_float_compare","caml_float_of_bytes","caml_float_of_int","caml_float_of_string","caml_floatarray_append","caml_floatarray_blit","caml_floatarray_concat","caml_floatarray_create","caml_floatarray_fill","caml_floatarray_fill_unboxed",el,"caml_floatarray_make","caml_floatarray_make_unboxed",fJ,"caml_floatarray_sub","caml_floatarray_unsafe_get","caml_floatarray_unsafe_set","caml_floor_float","caml_fma_float","caml_fmod_float","caml_format_exception","caml_format_float",p,"caml_fresh_oo_id","caml_frexp_float","caml_fs_init","caml_gc_compaction","caml_gc_counters","caml_gc_full_major","caml_gc_get","caml_gc_major","caml_gc_major_slice","caml_gc_minor","caml_gc_minor_words","caml_gc_quick_stat","caml_gc_set","caml_gc_stat","caml_ge_float","caml_get_cached_method","caml_get_continuation_callstack","caml_get_current_callstack","caml_get_exception_backtrace","caml_get_exception_raw_backtrace","caml_get_global_data","caml_get_minor_free","caml_get_public_method","caml_get_root","caml_global_data","caml_gr_arc_aux","caml_gr_blit_image","caml_gr_clear_graph","caml_gr_close_graph","caml_gr_close_subwindow","caml_gr_create_image","caml_gr_current_x","caml_gr_current_y","caml_gr_display_mode","caml_gr_doc_of_state","caml_gr_draw_arc","caml_gr_draw_char","caml_gr_draw_image","caml_gr_draw_rect","caml_gr_draw_str","caml_gr_draw_string","caml_gr_dump_image","caml_gr_fill_arc","caml_gr_fill_poly","caml_gr_fill_rect","caml_gr_lineto","caml_gr_make_image","caml_gr_moveto","caml_gr_open_graph","caml_gr_open_subwindow","caml_gr_plot","caml_gr_point_color","caml_gr_remember_mode","caml_gr_resize_window","caml_gr_set_color","caml_gr_set_font","caml_gr_set_line_width","caml_gr_set_text_size","caml_gr_set_window_title","caml_gr_sigio_handler","caml_gr_sigio_signal","caml_gr_size_x","caml_gr_size_y","caml_gr_state","caml_gr_state_create","caml_gr_state_get","caml_gr_state_init","caml_gr_state_set","caml_gr_synchronize","caml_gr_text_size","caml_gr_wait_event","caml_gr_window_id","caml_greaterequal","caml_greaterthan","caml_gt_float","caml_hash","caml_hash_mix_bigstring","caml_hash_mix_bytes","caml_hash_mix_bytes_arr","caml_hash_mix_final","caml_hash_mix_float","caml_hash_mix_float16","caml_hash_mix_float32","caml_hash_mix_int","caml_hash_mix_int64","caml_hash_mix_jsbytes","caml_hash_mix_string","caml_hash_nat","caml_hexstring_of_float","caml_hypot_float","caml_input_value","caml_input_value_from_bytes","caml_input_value_from_reader","caml_input_value_to_outside_heap","caml_install_signal_handler","caml_int32_add","caml_int32_and","caml_int32_bits_of_float",eZ,an,C,"caml_int32_float_of_bits",dy,T,Z,"caml_int32_neg","caml_int32_of_float","caml_int32_of_int",cS,"caml_int32_or","caml_int32_shift_left","caml_int32_shift_right","caml_int32_shift_right_unsigned","caml_int32_sub","caml_int32_to_float","caml_int32_to_int","caml_int32_unmarshal","caml_int32_xor","caml_int64_add","caml_int64_and","caml_int64_bits_of_float","caml_int64_bswap","caml_int64_compare","caml_int64_create_lo_hi","caml_int64_create_lo_mi_hi","caml_int64_div","caml_int64_float_of_bits","caml_int64_format","caml_int64_hash","caml_int64_hi32","caml_int64_is_negative","caml_int64_is_zero","caml_int64_lo32","caml_int64_marshal","caml_int64_mod","caml_int64_mul","caml_int64_neg","caml_int64_of_bytes","caml_int64_of_float",c7,q,bh,"caml_int64_of_string","caml_int64_offset","caml_int64_or","caml_int64_shift_left","caml_int64_shift_right","caml_int64_shift_right_unsigned","caml_int64_sub","caml_int64_to_bytes","caml_int64_to_float",fy,s,eK,"caml_int64_ult","caml_int64_unmarshal","caml_int64_xor",t,"caml_int_of_float",m,"caml_invalid_argument","caml_io_buffer_size","caml_is_continuation_tag","caml_is_js","caml_is_ml_bytes","caml_is_ml_string","caml_is_printable","caml_is_special_exception","caml_js_call","caml_js_delete","caml_js_equals","caml_js_error_of_exception","caml_js_error_option_of_exception","caml_js_eval_string","caml_js_expr","caml_js_from_array","caml_js_from_bool",n,fz,ct,"caml_js_from_string","caml_js_fun_call","caml_js_function_arity","caml_js_get","caml_js_get_console","caml_js_html_entities","caml_js_html_escape","caml_js_instanceof","caml_js_meth_call","caml_js_new","caml_js_object","caml_js_pure_expr","caml_js_set","caml_js_strict_equals","caml_js_to_array","caml_js_to_bool","caml_js_to_byte_string","caml_js_to_float",fe,ew,"caml_js_to_string","caml_js_typeof","caml_js_var","caml_js_wrap_callback","caml_js_wrap_callback_arguments","caml_js_wrap_callback_strict","caml_js_wrap_callback_unsafe","caml_js_wrap_meth_callback","caml_js_wrap_meth_callback_arguments","caml_js_wrap_meth_callback_strict","caml_js_wrap_meth_callback_unsafe","caml_jsbytes_of_string","caml_jsoo_flags_effects","caml_jsoo_flags_use_js_string","caml_jsstring_of_string","caml_lazy_make_forward","caml_lazy_read_result","caml_lazy_reset_to_lazy","caml_lazy_update_to_forcing","caml_lazy_update_to_forward","caml_ldexp_float","caml_le_float","caml_lessequal","caml_lessthan","caml_lex_array","caml_lex_engine","caml_list_mount_point","caml_list_of_js_array","caml_list_to_js_array","caml_log10_float","caml_log1p_float","caml_log2_float","caml_log_float","caml_lt_float","caml_lxm_M","caml_lxm_daba","caml_lxm_next","caml_make_float_vect","caml_make_path","caml_make_vect","caml_marshal_constants","caml_marshal_data_size","caml_marshal_header_size","caml_maybe_attach_backtrace","caml_maybe_print_stats","caml_md5_bytes","caml_md5_chan","caml_md5_string","caml_memprof_discard","caml_memprof_start","caml_memprof_stop","caml_method_cache","caml_ml_bytes_content","caml_ml_bytes_length","caml_ml_channel_get","caml_ml_channel_redirect","caml_ml_channel_restore","caml_ml_channel_size","caml_ml_channel_size_64","caml_ml_channels","caml_ml_close_channel","caml_ml_condition_broadcast","caml_ml_condition_new","caml_ml_condition_signal","caml_ml_condition_wait","caml_ml_debug_info_status","caml_ml_domain_cpu_relax","caml_ml_domain_id","caml_ml_domain_index","caml_ml_enable_runtime_warnings","caml_ml_flush","caml_ml_gc_ramp_down","caml_ml_gc_ramp_up","caml_ml_input","caml_ml_input_bigarray","caml_ml_input_block","caml_ml_input_char","caml_ml_input_int","caml_ml_input_scan_line","caml_ml_is_binary_mode","caml_ml_is_buffered","caml_ml_mutex_lock","caml_ml_mutex_new","caml_ml_mutex_try_lock","caml_ml_mutex_unlock","caml_ml_open_descriptor_in","caml_ml_open_descriptor_in_with_flags","caml_ml_open_descriptor_out","caml_ml_open_descriptor_out_with_flags","caml_ml_out_channels_list","caml_ml_output","caml_ml_output_bigarray","caml_ml_output_bytes","caml_ml_output_char","caml_ml_output_int","caml_ml_output_ta","caml_ml_pos_in","caml_ml_pos_in_64","caml_ml_pos_out","caml_ml_pos_out_64","caml_ml_runtime_events_are_active","caml_ml_runtime_events_path","caml_ml_runtime_events_pause","caml_ml_runtime_events_resume","caml_ml_runtime_events_start","caml_ml_runtime_warnings_enabled","caml_ml_seek_in","caml_ml_seek_in_64","caml_ml_seek_out","caml_ml_seek_out_64","caml_ml_set_binary_mode","caml_ml_set_buffered","caml_ml_set_channel_name","caml_ml_set_channel_output","caml_ml_set_channel_refill","caml_ml_string_length",f,"caml_modf_float","caml_mount_autoload",d,"caml_mul_float","caml_named_value","caml_named_values","caml_nativeint_add","caml_nativeint_and",bR,dd,bn,fM,er,U,"caml_nativeint_neg","caml_nativeint_of_float","caml_nativeint_of_int","caml_nativeint_of_int32",dE,"caml_nativeint_or","caml_nativeint_shift_left","caml_nativeint_shift_right","caml_nativeint_shift_right_unsigned","caml_nativeint_sub","caml_nativeint_to_float","caml_nativeint_to_int","caml_nativeint_to_int32","caml_nativeint_unmarshal","caml_nativeint_xor","caml_neg_float","caml_neq_float","caml_new_lex_engine","caml_new_string","caml_nextafter_float","caml_notequal","caml_obj_add_offset","caml_obj_block","caml_obj_compare_and_swap","caml_obj_dup","caml_obj_is_shared","caml_obj_raw_field","caml_obj_reachable_words","caml_obj_set_raw_field","caml_obj_tag","caml_obj_update_tag","caml_obj_with_tag","caml_ojs_new_arr","caml_oo_cache_id","caml_oo_last_id","caml_output_val","caml_output_value","caml_output_value_to_buffer","caml_output_value_to_bytes","caml_output_value_to_string","caml_packFloat16","caml_parse_digit","caml_parse_engine","caml_parse_format","caml_parse_sign_and_base","caml_parser_trace","caml_pos_in","caml_pos_out","caml_power_float","caml_pure_js_expr","caml_raise_constant","caml_raise_end_of_file","caml_raise_no_such_file","caml_raise_nodejs_error","caml_raise_not_found","caml_raise_sys_error","caml_raise_system_error","caml_raise_with_arg","caml_raise_with_args","caml_raise_with_string","caml_raise_zero_divide","caml_raw_backtrace_length","caml_raw_backtrace_next_slot","caml_raw_backtrace_slot","caml_read_file_content","caml_recommended_domain_count","caml_record_backtrace","caml_record_backtrace_env_flag","caml_record_backtrace_runtime_flag","caml_refill","caml_register_global","caml_register_named_value","caml_restore_raw_backtrace","caml_root","caml_round_float","caml_runtime_events_create_cursor","caml_runtime_events_free_cursor","caml_runtime_events_read_poll","caml_runtime_events_user_register","caml_runtime_events_user_resolve","caml_runtime_events_user_write","caml_runtime_parameters","caml_runtime_variant","caml_runtime_warnings","caml_seek_in","caml_seek_out","caml_set_oo_id","caml_set_parser_trace","caml_set_static_env",ej,a0,"caml_sin_float","caml_sinh_float","caml_sqrt_float","caml_str_repeat","caml_strerror","caml_string_bound_error","caml_string_compare","caml_string_concat","caml_string_equal","caml_string_get","caml_string_get16","caml_string_get32","caml_string_get64","caml_string_greaterequal","caml_string_greaterthan","caml_string_hash","caml_string_lessequal","caml_string_lessthan","caml_string_notequal","caml_string_of_array","caml_string_of_bytes","caml_string_of_jsbytes","caml_string_of_jsstring","caml_string_of_uint8_array","caml_string_set","caml_string_unsafe_get","caml_sub_float","caml_sub_uint8_array_to_jsbytes","caml_subarray_to_jsbytes","caml_sys_argv","caml_sys_chdir","caml_sys_close","caml_sys_const_backend_type","caml_sys_const_big_endian","caml_sys_const_int_size","caml_sys_const_max_wosize","caml_sys_const_naked_pointers_checked","caml_sys_const_ostype_cygwin","caml_sys_const_ostype_unix","caml_sys_const_ostype_win32","caml_sys_const_word_size","caml_sys_convert_signal_number","caml_sys_executable_name",j,"caml_sys_fds","caml_sys_file_exists","caml_sys_get_argv","caml_sys_get_config",k,"caml_sys_getenv","caml_sys_getenv_opt","caml_sys_io_buffer_size","caml_sys_is_directory","caml_sys_is_regular_file","caml_sys_isatty","caml_sys_mkdir","caml_sys_modify_argv","caml_sys_open","caml_sys_open_for_node","caml_sys_random_seed","caml_sys_read_directory","caml_sys_remove","caml_sys_rename","caml_sys_rev_convert_signal_number","caml_sys_rmdir","caml_sys_system_command","caml_sys_temp_dir_name","caml_sys_time","caml_sys_time_include_children","caml_sys_unsafe_getenv","caml_tan_float","caml_tanh_float","caml_throw_js_exception","caml_to_js_string","caml_trailing_slash","caml_trampoline","caml_trampoline_return","caml_trunc_float","caml_uint8_array_of_bytes","caml_uint8_array_of_string","caml_uniform_array_append","caml_uniform_array_blit","caml_uniform_array_concat","caml_uniform_array_fill","caml_uniform_array_make","caml_uniform_array_sub",di,dj,fE,bC,fA,ea,dP,dG,ar,bI,fu,cX,d3,dM,I,X,eL,dC,cD,a4,cg,fB,bH,bf,b,fk,bV,aJ,aZ,as,l,dv,df,e5,dw,fC,a7,aL,ey,ah,al,$,bp,d1,r,cO,eO,dB,fI,eu,A,ai,aE,eM,ed,eg,e8,bb,ca,cE,B,dR,dJ,cy,eb,"caml_unmount","caml_unpackFloat16","caml_update_dummy","caml_update_dummy_lazy",fa,du,"caml_weak_create",ak,a5,"caml_weak_set","caml_wrap_exception","caml_xdg_defaults","caml_xmlhttprequest_create","caml_zstd_initialize","compare_digits_nat","compare_nat","complement_nat","create_nat","decr_nat","deserialize_nat","div_digit_nat","div_helper","div_nat","fs_node_supported","incr_nat","initialize_nat","is_digit_int","is_digit_normalized","is_digit_odd","is_digit_zero","jsoo_create_file","jsoo_create_file_extern","jsoo_dataview","jsoo_effect_not_supported","jsoo_is_ascii","jsoo_is_win32","jsoo_mount_point","jsoo_static_env","jsoo_sys_getenv","jsoo_text_decoder","jsoo_text_decoder_buff","jsoo_text_encoder","jsoo_toplevel_reloc","land_digit_nat","length_nat","lor_digit_nat","lxor_digit_nat","make_unix_err_args","mult_digit_nat","mult_nat","nat_of_array","nth_digit_nat","nth_digit_nat_native","num_digits_nat","num_leading_zero_bits_in_digit","ocaml_stats_from_node_stats","os_type","path_is_absolute","re_match","re_partial_match","re_replacement_text","re_search_backward","re_search_forward","re_string_match","resolve_fs_device","serialize_nat","set_digit_nat","set_digit_nat_native","set_to_zero_nat","shift_left_nat","shift_right_nat","square_nat","sub_nat",a9,e3,ex,dD,ac,"unix_error",bc,fi,u,b5,eJ,a8,e_,fj,eH,dh,cc,aP,ao,M,cb,fl,y,P,bD,z,aK,ae,aH,dW,ap,ef,by,d7,dK,cn,dr,fF,eR,av,aU,cP,eG,eY,d4,aT,w,eT,bT,bQ,b1,bF,dx,c3,da,v,bG,aD,ad,bv,b9,eN,eU,et,cC,cj,e0,"zstd_decompress"]),0];return}(globalThis)); 9435 9435 9436 9436 //# 4 "../../.js/default/stdlib/stdlib.cma.js" 9437 9437 //# shape: CamlinternalFormatBasics:[F(2),F(1),F(2),F(2)] ··· 33332 33332 } 33333 33333 (globalThis)); 33334 33334 33335 - //# 1183 "../lib/.globe.objs/jsoo/default/globe.cma.js" 33335 + //# 1295 "../lib/.globe.objs/jsoo/default/globe.cma.js" 33336 33336 //# shape: Globe__Geometry:[F(2)*,F(3),F(3),F(3)] 33337 33337 (function 33338 33338 (globalThis){ ··· 41080 41080 (globalThis)); 41081 41081 41082 41082 //# 186 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41083 - //# shape: Globe_webgl__Camera:[F(1)*,F(1)*,F(2),F(4),F(2),F(1)*,F(2),F(2),F(2)] 41083 + //# shape: Globe_webgl__Camera:[F(1)*,F(1)*,F(2),F(4),F(2),F(1)*,F(1)*,F(2),F(2),F(2)] 41084 41084 (function 41085 41085 (globalThis){ 41086 41086 "use strict"; ··· 41102 41102 } 41103 41103 var 41104 41104 global_data = runtime.caml_get_global_data(), 41105 + Globe_Math = global_data.Globe__Math, 41105 41106 Fmt = global_data.Fmt, 41106 41107 Brr = global_data.Brr, 41107 41108 Stdlib_Float = global_data.Stdlib__Float, 41108 - Stdlib_Option = global_data.Stdlib__Option, 41109 - Globe_Math = global_data.Globe__Math; 41109 + Stdlib_Option = global_data.Stdlib__Option; 41110 41110 function v(param){return [0, 0., 0.3, 3.5, 0, 0., 0., 1, 0, 5.];} 41111 41111 function view_matrix(cam){ 41112 41112 var ··· 41261 41261 var b = cam[3], c = cam[2], d = cam[1]; 41262 41262 return caml_call3(Fmt[3].call(null, ppf)(a), d, c, b); 41263 41263 } 41264 + function position(cam){ 41265 + return Globe_Math[1][1].call 41266 + (null, 41267 + cam[3] * Math.cos(cam[2]) * Math.sin(cam[1]), 41268 + cam[3] * Math.sin(cam[2]), 41269 + cam[3] * Math.cos(cam[2]) * Math.cos(cam[1])); 41270 + } 41264 41271 runtime.caml_register_global 41265 41272 (29, 41266 41273 [0, ··· 41269 41276 look_at_position, 41270 41277 animate_to, 41271 41278 snap_to, 41279 + position, 41272 41280 is_animating, 41273 41281 update, 41274 41282 attach_events, ··· 41278 41286 } 41279 41287 (globalThis)); 41280 41288 41281 - //# 386 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41289 + //# 394 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41282 41290 //# shape: Globe_webgl__Coverage:[F(1),F(3),F(6)] 41283 41291 (function 41284 41292 (globalThis){ ··· 41442 41450 } 41443 41451 (globalThis)); 41444 41452 41445 - //# 551 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41453 + //# 559 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41446 41454 //# shape: Globe_webgl__Earth:[F(2),F(6)] 41447 41455 (function 41448 41456 (globalThis){ ··· 41546 41554 } 41547 41555 (globalThis)); 41548 41556 41549 - //# 656 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41557 + //# 664 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41550 41558 //# shape: Globe_webgl__Grid:[F(2),F(7)] 41551 41559 (function 41552 41560 (globalThis){ ··· 41656 41664 } 41657 41665 (globalThis)); 41658 41666 41659 - //# 767 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41667 + //# 775 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41660 41668 //# shape: Globe_webgl__Orbit:[F(1),F(4),F(1),F(5),F(4),F(1),F(1),F(5),F(8)] 41661 41669 (function 41662 41670 (globalThis){ ··· 41894 41902 } 41895 41903 (globalThis)); 41896 41904 41897 - //# 1006 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41898 - //# shape: Globe_webgl__Scene:[F(3),F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(2),F(2),F(2),F(1),F(3),F(1)*,F(1)*,N,F(3),F(2),F(2),F(1)*,F(3),F(3),F(4)] 41905 + //# 1014 "../lib/webgl/.globe_webgl.objs/jsoo/default/globe_webgl.cma.js" 41906 + //# shape: Globe_webgl__Scene:[F(3),F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(2),F(2),F(2),F(1),F(3),F(1)*,F(1)*,N,F(3),F(2),F(2),F(1)*,F(3),F(3),F(4)] 41899 41907 (function 41900 41908 (globalThis){ 41901 41909 "use strict"; ··· 41972 41980 caml_call4 41973 41981 (Brr[8][20], 0, Brr[8][111], function(ev){return resize(0);}, Brr[18][6]); 41974 41982 var camera = Globe_webgl_Camera[1].call(null, 0); 41975 - Globe_webgl_Camera[8].call(null, camera, canvas_el); 41983 + Globe_webgl_Camera[9].call(null, camera, canvas_el); 41976 41984 caml_call2(Brr_canvas[5][94], gl$0, Brr_canvas[5][262]); 41977 41985 caml_call3 41978 41986 (Brr_canvas[5][31], gl$0, Brr_canvas[5][626], Brr_canvas[5][512]); ··· 42002 42010 function orbit(t){return t[7];} 42003 42011 function coverage(t){return t[8];} 42004 42012 function satellites(t){return t[9];} 42013 + function camera_position(t){return Globe_webgl_Camera[6].call(null, t[3]);} 42005 42014 function set_grid_spacing(t, spacing){ 42006 42015 t[6] = [0, Globe_webgl_Grid[1].call(null, [0, spacing], t[1])]; 42007 42016 return 0; ··· 42020 42029 function sat_dt(sat, current_unix){ 42021 42030 return current_unix - Globe_Satellite[3].call(null, sat); 42022 42031 } 42023 - function camera_position(cam){ 42024 - var d = cam[3], theta = cam[1], phi = cam[2]; 42025 - return Globe_Math[1][1].call 42026 - (null, 42027 - d * Math.sin(theta) * Math.cos(phi), 42028 - d * Math.cos(theta), 42029 - d * Math.sin(theta) * Math.sin(phi)); 42030 - } 42031 42032 function update_time(t, current_unix){ 42032 42033 t[10] = current_unix; 42033 42034 var 42034 - camera_pos = camera_position(t[3]), 42035 + camera_pos = camera_position(t), 42035 42036 sat_positions = 42036 42037 Stdlib_List[21].call 42037 42038 (null, ··· 42109 42110 } 42110 42111 function begin_frame(t, opt, dt){ 42111 42112 var projection_offset = opt ? opt[1] : 0.; 42112 - Globe_webgl_Camera[7].call(null, t[3], dt); 42113 + Globe_webgl_Camera[8].call(null, t[3], dt); 42113 42114 var 42114 42115 w = caml_call1(Brr_canvas[5][5], t[1]), 42115 42116 h = caml_call1(Brr_canvas[5][6], t[1]), ··· 42149 42150 } 42150 42151 if(layers[4]){ 42151 42152 var 42152 - camera_pos = camera_position(t[3]), 42153 + camera_pos = camera_position(t), 42153 42154 dots = 42154 42155 Stdlib_List[24].call 42155 42156 (null, ··· 42264 42265 camera, 42265 42266 orbit, 42266 42267 coverage, 42268 + camera_position, 42267 42269 satellites, 42268 42270 set_grid_spacing, 42269 42271 set_satellites, ··· 48861 48863 function render(now){ 48862 48864 var time = now / 2000., sp = Signal[11].call(null, grid_spacing); 48863 48865 if(sp !== prev_spacing[1]){ 48864 - Globe_webgl_Scene[7].call(null, scene, sp); 48866 + Globe_webgl_Scene[8].call(null, scene, sp); 48865 48867 prev_spacing[1] = sp; 48866 48868 } 48867 48869 var n = Signal[11].call(null, num_sats) | 0; ··· 48882 48884 return Globe_Satellite[1].call(null, pos, vel, color, 0, 0, 0); 48883 48885 }, 48884 48886 colors); 48885 - Globe_webgl_Scene[8].call(null, scene, sats); 48887 + Globe_webgl_Scene[9].call(null, scene, sats); 48886 48888 prev_n[1] = n; 48887 48889 } 48888 - Globe_webgl_Scene[9].call(null, scene, time * 60.); 48890 + Globe_webgl_Scene[10].call(null, scene, time * 60.); 48889 48891 var 48890 48892 a = Signal[11].call(null, show_coverage), 48891 48893 has_cov = a ? Signal[11].call(null, show_orbits) : a, 48892 - frame = Globe_webgl_Scene[11].call(null, scene, 0, 0.016), 48893 - init = Globe_webgl_Scene[14], 48894 + frame = Globe_webgl_Scene[12].call(null, scene, 0, 0.016), 48895 + init = Globe_webgl_Scene[15], 48894 48896 b = init[10], 48895 48897 c = init[9], 48896 48898 d = init[8], ··· 48901 48903 i = Signal[11].call(null, show_grid), 48902 48904 j = Signal[11].call(null, show_dots), 48903 48905 k = [0, Signal[11].call(null, show_stars), j, i, h, g, f, e, d, c, b]; 48904 - Globe_webgl_Scene[15].call(null, scene, frame, k); 48906 + Globe_webgl_Scene[16].call(null, scene, frame, k); 48905 48907 caml_call1(Brr[18][11], render); 48906 48908 return 0; 48907 48909 } ··· 48929 48931 } 48930 48932 (globalThis)); 48931 48933 48932 - //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5iYy5qcyIsInNlY3Rpb25zIjpbeyJvZmZzZXQiOnsibGluZSI6MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIubWFpbi5lb2Jqcy9qc29vL21haW4uYmMucnVudGltZS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JsYWtlMi5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgcmV0dXJuIHMucmVwZWF0KG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5KG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsIGxlbiAtPSAxMDI0KVxuICAgIHMgKz0gZi5hcHBseShudWxsLCBhLnNsaWNlKGksIGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCwgbGVuIC09IDEwMjQpXG4gICAgcyArPSBmLmFwcGx5KG51bGwsIGEuc3ViYXJyYXkoaSwgaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgZWxzZSByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICAgIGNhc2UgMCAvKiBCWVRFUyAqLzpcbiAgICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICAgIGNhc2UgNCAvKiBBUlJBWSAqLzpcbiAgICAgIHJldHVybiBzLmNbaV07XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIGlmIChpICsgMSA9PT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSksXG4gICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4KSB8IGIxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpLFxuICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCkgfCAoYjMgPDwgMTYpIHwgKGIyIDw8IDgpIHwgYjE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpLFxuICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSxcbiAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0KSB8IChiMyA8PCAxNikgfCAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQoX3MsIF9pLCBfYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocywgaSwgaTE2KSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhmZiAmIChpMTYgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocywgaSwgaTMyKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhmZiAmIChpMzIgPj4gMjQpLFxuICAgIGIzID0gMHhmZiAmIChpMzIgPj4gMTYpLFxuICAgIGIyID0gMHhmZiAmIChpMzIgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLCBpLCBpNjQpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczoganNvb190ZXh0X2VuY29kZXJcbnZhciBqc29vX3RleHRfZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2RlclxudmFyIGpzb29fdGV4dF9kZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHtcbiAgICByZXR1cm4gbmV3IE1sQnl0ZXMoOSwgcywgcy5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0ganNvb190ZXh0X2VuY29kZXIuZW5jb2RlKHMpO1xuICAgIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczoganNvb190ZXh0X2RlY29kZXJcbmNsYXNzIE1sQnl0ZXMge1xuICBjb25zdHJ1Y3Rvcih0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgICB0aGlzLnQgPSB0YWc7XG4gICAgdGhpcy5jID0gY29udGVudHM7XG4gICAgdGhpcy5sID0gbGVuZ3RoO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgc3dpdGNoICh0aGlzLnQpIHtcbiAgICAgIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIGNhc2UgOCAvKkJZVEVTIHwgTk9UX0FTQ0lJKi86XG4gICAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgMCAvKkJZVEVTIHwgVU5LTk9XTiovOlxuICAgICAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgICBlbHNlIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgfVxuXG4gIHRvVXRmMTYoKSB7XG4gICAgaWYgKHRoaXMudCA9PT0gOSkgcmV0dXJuIHRoaXMuYztcbiAgICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXModGhpcyk7XG4gICAgcmV0dXJuIGpzb29fdGV4dF9kZWNvZGVyLmRlY29kZShhKTtcbiAgfVxuXG4gIHNsaWNlKCkge1xuICAgIHZhciBjb250ZW50ID0gdGhpcy50ID09PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gICAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCwgY29udGVudCwgdGhpcy5sKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09PSAyIC8qIFBBUlRJQUwgKi8pIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgXCJcXDBcIik7XG4gIGVsc2Ugcy5jID0gY2FtbF9zdWJfdWludDhfYXJyYXlfdG9fanNieXRlcyhzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYyxcbiAgICBsID0gYi5sZW5ndGgsXG4gICAgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocykge1xuICBpZiAocy50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbiA/IDIgOiA5LCBcIlwiLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcoX2xlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuID8gMiA6IDksIFwiXCIsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIDAsIGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgMCwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShhLnNsaWNlKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5KGEpIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCwgYSwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICBzMS50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgczIudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBzMS5jIDwgczIuYyA/IC0xIDogczEuYyA+IHMyLmMgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZiAoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gczEuYyA9PT0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAxIC0gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gMSAtIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPD0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPCBzMi5jID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsIHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0KGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSBsID09PSBzLmwgPyAwIC8qIEJZVEVTIHwgVU5LTk9XTiAqLyA6IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIGlmIChcbiAgICBpMiA9PT0gMCAmJlxuICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpXG4gICkge1xuICAgIHMyLmMgPVxuICAgICAgczEudCA9PT0gNCAvKiBBUlJBWSAqL1xuICAgICAgICA/IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbilcbiAgICAgICAgOiBpMSA9PT0gMCAmJiBzMS5jLmxlbmd0aCA9PT0gbGVuXG4gICAgICAgICAgPyBzMS5jXG4gICAgICAgICAgOiBzMS5jLnNsaWNlKGkxLCBpMSArIGxlbik7XG4gICAgczIudCA9IHMyLmMubGVuZ3RoID09PSBzMi5sID8gMCAvKiBCWVRFUyB8IFVOS05PV04gKi8gOiAyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz1cbiAgICAgIHMxLnQgPT09IDQgLyogQVJSQVkgKi9cbiAgICAgICAgPyBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pXG4gICAgICAgIDogaTEgPT09IDAgJiYgczEuYy5sZW5ndGggPT09IGxlblxuICAgICAgICAgID8gczEuY1xuICAgICAgICAgIDogczEuYy5zbGljZShpMSwgaTEgKyBsZW4pO1xuICAgIHMyLnQgPSBzMi5jLmxlbmd0aCA9PT0gczIubCA/IDAgLyogQllURVMgfCBVTktOT1dOICovIDogMjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsXG4gICAgICBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMltpMiArIGldID0gYzFbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzJbaTIgKyBpXSA9IGMxW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4obGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzJbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLCBiLCBjLCBkLCBlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSwgYiwgYywgZCwgZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykge1xuICByZXR1cm4gcy5sO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsIGIpIHtcbiAgcmV0dXJuIGEgKyBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSwgczIpIHtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoMCwgczEuYyArIHMyLmMsIHMxLmwgKyBzMi5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gczEgPCBzMiA/IC0xIDogczEgPiBzMiA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYgKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gczEgPD0gczIgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBzMSA8IHMyID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG52YXIganNvb190ZXh0X2RlY29kZXJfYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcigxMDI0KTtcblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9kZWNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBzO1xuICB2YXIgYSA9XG4gICAgcy5sZW5ndGggPD0ganNvb190ZXh0X2RlY29kZXJfYnVmZi5sZW5ndGhcbiAgICAgID8gbmV3IFVpbnQ4QXJyYXkoanNvb190ZXh0X2RlY29kZXJfYnVmZiwgMCwgcy5sZW5ndGgpXG4gICAgICA6IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgYVtpXSA9IHMuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4ganNvb190ZXh0X2RlY29kZXIuZGVjb2RlKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgYSA9IGpzb29fdGV4dF9lbmNvZGVyLmVuY29kZShzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7XG4gIHJldHVybiBuZXcgTWxCeXRlcygwLCBzLCBzLmxlbmd0aCk7XG59XG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIHMudG9VdGYxNigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiBzIGluc3RhbmNlb2YgTWxCeXRlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JldHVybnMgYSAoZnVsbCkgc3RyaW5nIG9mIGJ5dGVzIG9yIGFuIGFycmF5XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gICAgICByZXR1cm4gcy5jO1xuICAgIGRlZmF1bHQ6IC8qIEJZVEVTIG9yIEFSUkFZICovXG4gICAgICByZXR1cm4gcy5jO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgcmV0dXJuIHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc2J5dGVzXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmddIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc3N0cmluZ10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7XG4gIHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNdIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkge1xuICByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9zdHJpbmdfb2ZfanNieXRlc10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogMHgyMCxcbiAgQ09ERV9JTlQ4OiAweDAwLFxuICBDT0RFX0lOVDE2OiAweDAxLFxuICBDT0RFX0lOVDMyOiAweDAyLFxuICBDT0RFX0lOVDY0OiAweDAzLFxuICBDT0RFX1NIQVJFRDg6IDB4MDQsXG4gIENPREVfU0hBUkVEMTY6IDB4MDUsXG4gIENPREVfU0hBUkVEMzI6IDB4MDYsXG4gIENPREVfQkxPQ0szMjogMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAweDEzLFxuICBDT0RFX1NUUklORzg6IDB4MDksXG4gIENPREVfU1RSSU5HMzI6IDB4MGEsXG4gIENPREVfRE9VQkxFX0JJRzogMHgwYixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAweDBjLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAweDBkLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAweDBlLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogMHgwZixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6IDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAweDExLFxuICBDT0RFX0NVU1RPTTogMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogMHgxOSxcbn07XG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBVSW50OEFycmF5UmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTtcbiAgfVxuXG4gIHJlYWQ4cygpIHtcbiAgICByZXR1cm4gKHRoaXMuc1t0aGlzLmkrK10gPDwgMjQpID4+IDI0O1xuICB9XG5cbiAgcmVhZDE2dSgpIHtcbiAgICB2YXIgcyA9IHRoaXMucyxcbiAgICAgIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV07XG4gIH1cblxuICByZWFkMTZzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSArIDFdIDw8IDE2KSB8IChzW2kgKyAyXSA8PCA4KSB8IHNbaSArIDNdKSA+Pj4gMDtcbiAgfVxuXG4gIHJlYWQzMnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpICsgMV0gPDwgMTYpIHwgKHNbaSArIDJdIDw8IDgpIHwgc1tpICsgM107XG4gIH1cblxuICByZWFkc3RyKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogSnNTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmNsYXNzIEpzU3RyaW5nUmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspO1xuICB9XG5cbiAgcmVhZDhzKCkge1xuICAgIHJldHVybiAodGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0KSA+PiAyNDtcbiAgfVxuXG4gIHJlYWQxNnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQxNnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoXG4gICAgICAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAxKSA8PCAxNikgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAyKSA8PCA4KSB8XG4gICAgICAgIHMuY2hhckNvZGVBdChpICsgMykpID4+PlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICByZWFkMzJzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKFxuICAgICAgKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDgpIHxcbiAgICAgIHMuY2hhckNvZGVBdChpICsgMylcbiAgICApO1xuICB9XG5cbiAgcmVhZHN0cihsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zbGljZShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IEpzU3RyaW5nUmVhZGVyLCBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLCBvZnMpIHtcbiAgdmFyIGMgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gIHZhciBvZnMgPSB0eXBlb2Ygb2ZzID09PSBcIm51bWJlclwiID8gb2ZzIDogb2ZzWzBdO1xuICB2YXIgcmVhZGVyID1cbiAgICBjIGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBuZXcgVUludDhBcnJheVJlYWRlcihjLCBvZnMpXG4gICAgICA6IG5ldyBKc1N0cmluZ1JlYWRlcihjLCBvZnMpO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKSB7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4O1xuICBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1KCkpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzaXplWzBdID0gNDtcbiAgICAgIHJldHVybiByZWFkZXIucmVhZDMycygpO1xuICAgIGNhc2UgMjpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPSB7XG4gIF9qOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgIHNlcmlhbGl6ZTogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgIGZpeGVkX2xlbmd0aDogOCxcbiAgICBjb21wYXJlOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgaGFzaDogY2FtbF9pbnQ2NF9oYXNoLFxuICB9LFxuICBfaToge1xuICAgIGRlc2VyaWFsaXplOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9uOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9iaWdhcnJheToge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyYXlcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG4gIF9iaWdhcnIwMjoge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyMDJcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG59O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX3NldF9vb19pZFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdmKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgc3dpdGNoIChtYWdpYykge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmQgLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNmO1xuICAgICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgaWYgKG92ZXJmbG93WzBdKSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIsXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGhlYWRlcl9sZW4gIT09IHJlYWRlci5pIC0gb2xkX3Bvcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBpbnZhbGlkIGhlYWRlclwiKTtcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIG9iamVjdHMgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSBudW1fb2JqZWN0cyA+IDAgPyBbXSA6IG51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweGY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2UgcmV0dXJuIGNvZGUgJiAweDNmO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFmO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzKCk7XG4gICAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzKCk7XG4gICAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIGlmIChjb21wcmVzc2VkID09PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICAgICAgICBpZiAoY29tcHJlc3NlZCA9PT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgaWYgKGNvbXByZXNzZWQgPT09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4ZmY7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIobGVuKTtcbiAgICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgIGNhc2UgMHgwYzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBkOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBmOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgICAgdmFyIGMsXG4gICAgICAgICAgICAgIHMgPSBcIlwiO1xuICAgICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSgpKSAhPT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgICAgaWYgKCFvcHMpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgICAgICBpZiAoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChleHBlY3RlZF9zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkX3NpemUgIT09IHNpemVbMF0pXG4gICAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb21wcmVzc2VkKSB7XG4gICAgaWYgKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIH1cbiAgd2hpbGUgKG9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgIHZhciB4ID0gb2JqZWN0cy5wb3AoKTtcbiAgICBpZiAoeFsyXSA+PSAwKSBjYW1sX3NldF9vb19pZCh4KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNjtcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZShzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT09IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Zik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoIChyLnJlYWQzMnUoKSkge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAweDg0OTVhNmJkIC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqLzpcbiAgICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M2Y7XG4gICAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICBpZiAob3ZlcmZsb3dbMF0pIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG5jbGFzcyBNbE9iamVjdFRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vYmpzID0gW107XG4gICAgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfVxuXG4gIHN0b3JlKHYpIHtcbiAgICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gICAgdGhpcy5vYmpzLnB1c2godik7XG4gIH1cblxuICByZWNhbGwodikge1xuICAgIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICAgIHJldHVybiBpID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IChmdW5jdGlvbiAoKSB7XG4gIGNsYXNzIFdyaXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmNodW5rID0gW107XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDIwO1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSAwO1xuICAgICAgdGhpcy5vYmpfY291bnRlciA9IDA7XG4gICAgICB0aGlzLnNpemVfMzIgPSAwO1xuICAgICAgdGhpcy5zaXplXzY0ID0gMDtcbiAgICB9XG5cbiAgICB3cml0ZShzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4OyBpID49IDA7IGkgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4ZmY7XG4gICAgfVxuXG4gICAgd3JpdGVfYXQocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhmZjtcbiAgICB9XG5cbiAgICB3cml0ZV9jb2RlKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweGZmO1xuICAgIH1cblxuICAgIHdyaXRlX3NoYXJlZChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAxIDw8IDgpXG4gICAgICAgIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgMSA8PCAxNilcbiAgICAgICAgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBwb3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaHVua19pZHg7XG4gICAgfVxuXG4gICAgZmluYWxpemUoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlKDMyLCAweDg0OTVhNmJlKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSxcbiAgICAgIGNsb3N1cmVzID0gZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTE7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIixcbiAgICAgICk7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlcigpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkge1xuICAgICAgICB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWModikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwgMF07XG4gICAgICAgIGlmICghb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPT0gc3pfMzJfNjRbMF0pXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICBcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgdlswXSA9PT0gKHZbMF0gfCAwKSkge1xuICAgICAgICBpZiAodlswXSA9PT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZShcbiAgICAgICAgICAgIDgsXG4gICAgICAgICAgICAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKSA8PCA0KSxcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoXG4gICAgICAgICAgICAzMixcbiAgICAgICAgICAgIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sXG4gICAgICAgICAgICAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXSxcbiAgICAgICAgICApO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2godiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYgKCFjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgIFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApIHdyaXRlci53cml0ZSg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDkgLypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MGEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMCkgd3JpdGVyLndyaXRlKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwOSAvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZSB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwYSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT09ICh2IHwgMCkpIHtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYgKHR5cGVfb2ZfdiAhPT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIiArIHR5cGVfb2ZfdiArIFwiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MGMgLypjc3QuQ09ERV9ET1VCTEVfTElUVExFKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgdFs3IC0gaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzO1xuICAgICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAxIDw8IDcpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8IDEgPDwgMTUpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWModltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheSh3cml0ZXIuY2h1bmspO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXModiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlcihzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheSh0KSwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciB4ID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKHgpIHtcbiAgICB4LmZpbGUuY2xvc2UoZmFsc2UpO1xuICAgIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbENoYW5pZFxuZnVuY3Rpb24gTWxDaGFuaWQoaWQpIHtcbiAgdGhpcy5pZCA9IGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxDaGFuaWRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSwgaWR4KSB7XG4gIHZhciBjaGFuaWQ7XG4gIGlmIChpZHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gICAgY2hhbmlkID0gbmV3IE1sQ2hhbmlkKGlkeCk7XG4gIH0gZWxzZSBpZiAoY2FtbF9zeXNfZmRzW2lkeF0pIHtcbiAgICBjaGFuaWQgPSBjYW1sX3N5c19mZHNbaWR4XS5jaGFuaWQ7XG4gIH0gZWxzZSBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGYud3JpdGVvbmx5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGYuY3JlYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGYudHJ1bmNhdGUgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgZi5leGNsID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIGYuYmluYXJ5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYudGV4dCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vbmJsb2NrID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZsYWdzID0gZmxhZ3NbMl07XG4gIH1cbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgZiwgcGVybXMpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlzX25vZGUgPSBmc19ub2RlX3N1cHBvcnRlZCgpO1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmIChpc19ub2RlKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH0gZWxzZSByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpO1xuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgwLCB7IHJkb25seTogMSwgYWx0bmFtZTogXCIvZGV2L3N0ZGluXCIsIGlzQ2hhcmFjdGVyRGV2aWNlOiB0cnVlIH0pLFxuICAgIDAsXG4gICk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgxLCB7IGJ1ZmZlcmVkOiBpc19ub2RlID8gMSA6IDIsIHdyb25seTogMSwgaXNDaGFyYWN0ZXJEZXZpY2U6IHRydWUgfSksXG4gICAgMSxcbiAgKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChcbiAgICBmaWxlKDIsIHsgYnVmZmVyZWQ6IGlzX25vZGUgPyAxIDogMiwgd3Jvbmx5OiAxLCBpc0NoYXJhY3RlckRldmljZTogdHJ1ZSB9KSxcbiAgICAyLFxuICApO1xufSkoKTtcblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogTWxDaGFuaWRcbmNsYXNzIGNhbWxfbWxfY2hhbm5lbHNfc3RhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hcCA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKTtcbiAgICB0aGlzLm9wZW5lZCA9IG5ldyBnbG9iYWxUaGlzLlNldCgpO1xuICB9XG5cbiAgY2xvc2UoY2hhbmlkKSB7XG4gICAgdGhpcy5vcGVuZWQuZGVsZXRlKGNoYW5pZCk7XG4gIH1cblxuICBnZXQoY2hhbmlkKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChjaGFuaWQpO1xuICB9XG5cbiAgc2V0KGNoYW5pZCwgdmFsKSB7XG4gICAgaWYgKHZhbC5vcGVuZWQpIHRoaXMub3BlbmVkLmFkZChjaGFuaWQpO1xuICAgIHJldHVybiB0aGlzLm1hcC5zZXQoY2hhbmlkLCB2YWwpO1xuICB9XG5cbiAgYWxsKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5lZC52YWx1ZXMoKTtcbiAgfVxufVxuXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBjYW1sX21sX2NoYW5uZWxzX3N0YXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHMuZ2V0KGlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3QoY2FwdHVyZWQsIGludG8pIHtcbiAgdmFyIHRvX3Jlc3RvcmUgPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNhcHR1cmVkKTtcbiAgdmFyIG5ld18gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGludG8pO1xuICBjYW1sX21sX2NoYW5uZWxzLnNldChjYXB0dXJlZCwgbmV3Xyk7XG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpIHtcbiAgY2FtbF9tbF9jaGFubmVscy5zZXQoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgpIHtcbiAgdmFyIGwgPSAwO1xuICB2YXIga2V5cyA9IGNhbWxfbWxfY2hhbm5lbHMuYWxsKCk7XG4gIGZvciAodmFyIGsgb2Yga2V5cykge1xuICAgIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChrKTtcbiAgICBpZiAoY2hhbi5vcGVuZWQgJiYgY2hhbi5vdXQpIGwgPSBbMCwgaywgbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9pb19idWZmZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiICsgZmQgKyBcIiBkb2Vzbid0IGV4aXN0XCIpO1xuICB2YXIgZmlsZSA9IGZkX2Rlc2MuZmlsZTtcbiAgdmFyIGNoYW5pZCA9IGZkX2Rlc2MuY2hhbmlkO1xuICB2YXIgYnVmZmVyZWQgPSBmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTogZmlsZSxcbiAgICBvZmZzZXQ6IGZpbGUucG9zKCksXG4gICAgZmQ6IGZkLFxuICAgIG9wZW5lZDogdHJ1ZSxcbiAgICBvdXQ6IHRydWUsXG4gICAgYnVmZmVyX2N1cnI6IDAsXG4gICAgYnVmZmVyOiBuZXcgVWludDhBcnJheShjYW1sX2lvX2J1ZmZlcl9zaXplKSxcbiAgICBidWZmZXJlZDogYnVmZmVyZWQsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCkge1xuICB2YXIgZmRfZGVzYyA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmIChmZF9kZXNjID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIiArIGZkICsgXCIgZG9lc24ndCBleGlzdFwiKTtcbiAgdmFyIGZpbGUgPSBmZF9kZXNjLmZpbGU7XG4gIHZhciBjaGFuaWQgPSBmZF9kZXNjLmNoYW5pZDtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6IGZpbGUsXG4gICAgb2Zmc2V0OiBmaWxlLnBvcygpLFxuICAgIGZkOiBmZCxcbiAgICBvcGVuZWQ6IHRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjogMCxcbiAgICBidWZmZXJfbWF4OiAwLFxuICAgIGJ1ZmZlcjogbmV3IFVpbnQ4QXJyYXkoY2FtbF9pb19idWZmZXJfc2l6ZSksXG4gICAgcmVmaWxsOiByZWZpbGwsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLCBtb2RlKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlO1xuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnk7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9tbF9jaGFubmVscy5jbG9zZShjaGFuaWQpO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGgoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsIGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub3V0cHV0ID0gZnVuY3Rpb24gKHMpIHtcbiAgICBmKHMpO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCwgZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yZWZpbGwoY2hhbikge1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkge1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKSB7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsIGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbi5mZCA9PT0gLTEpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQmFkIGZpbGUgZGVzY3JpcHRvclwiKTtcbiAgICB9XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoXG4gICAgICBjaGFuLmJ1ZmZlcixcbiAgICAgIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheShjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYgKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciwgY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH0gZWxzZSBpZiAoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZiAobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZSAociA8IG4pIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCArIHJdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZiAociA9PT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLCAwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKTtcbiAgaWYgKHIgPCBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgMCk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludChjaGFuaWQpIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgcmVzID0gKChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYgKFxuICAgIHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heCAmJlxuICAgIHBvcyA8PSBjaGFuLm9mZnNldCAmJlxuICAgIGNoYW4uZmlsZS5mbGFncy5iaW5hcnlcbiAgKSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCwgcG9zKSB7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3Vycik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZiAocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksIDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtY2hhbi5idWZmZXJfbWF4IHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgaWYgKHByZXZfbWF4ID09PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC1jaGFuLmJ1ZmZlcl9tYXggfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYgKCFjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYgKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoXG4gICAgICBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IGNoYW4uYnVmZmVyX2N1cnI7ICkge1xuICAgICAgcG9zICs9IGNoYW4uZmlsZS53cml0ZShjaGFuLmJ1ZmZlciwgcG9zLCBjaGFuLmJ1ZmZlcl9jdXJyIC0gcG9zLCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmICghY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZiAoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiO1xuICB9XG4gIHN3aXRjaCAoY2hhbi5idWZmZXJlZCkge1xuICAgIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMCk7XG4gICAgICBpZiAoaWQgPCAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aCkgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICAgIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLCBidWZmZXIsIG9mZnNldCwgbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbikge1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoXG4gICAgY2hhbmlkLFxuICAgIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksXG4gICAgb2Zmc2V0LFxuICAgIGxlbixcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIoY2hhbmlkLCBjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLCBzLCAwLCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUoY2hhbmlkLCB2LCBmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLCBwb3MpIHtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50KGNoYW5pZCwgaSkge1xuICB2YXIgYXJyID0gWyhpID4+IDI0KSAmIDB4ZmYsIChpID4+IDE2KSAmIDB4ZmYsIChpID4+IDgpICYgMHhmZiwgaSAmIDB4ZmZdO1xuICBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIG5ldyBVaW50OEFycmF5KGFyciksIDAsIDQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLCB2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmICghdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvcihtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF91bml4X2V4aXRcbi8vQWxpYXM6IHVuaXhfZXhpdFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdChjb2RlKSB7XG4gIGlmIChnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZXhpdCkgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKSB7XG4gIHN3aXRjaCAoZXhuWzJdKSB7XG4gICAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICAgIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICAgIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgICAgcmV0dXJuIDE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bikge1xuICB2YXIgciA9IFwiXCI7XG4gIGlmIChleG5bMF0gPT09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZiAoXG4gICAgICBleG4ubGVuZ3RoID09PSAzICYmXG4gICAgICBleG5bMl1bMF0gPT09IDAgJiZcbiAgICAgIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKVxuICAgICkge1xuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDI7XG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkgPiBzdGFydCkgciArPSBcIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikgciArPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgTWxCeXRlcykge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCI7XG4gIH0gZWxzZSBpZiAoZXhuWzBdID09PSAyNDgpIHtcbiAgICByICs9IGV4blsxXTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGVycikgJiYgKGVyclswXSA9PT0gMCB8fCBlcnJbMF0gPT09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmIChoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsIGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZiAoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYgKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNvb19zdGF0aWNfZW52XG52YXIganNvb19zdGF0aWNfZW52ID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbi8vUmVxdWlyZXM6IGpzb29fc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLCB2KSB7XG4gIGpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczoganNvb19zdGF0aWNfZW52XG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICBpZiAoanNvb19zdGF0aWNfZW52W25dKSByZXR1cm4ganNvb19zdGF0aWNfZW52W25dO1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmIChwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W25dICE9PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZiAoZ2xvYmFsVGhpcy5qc29vX2VudiAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5qc29vX2VudltuXSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fZW52W25dO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudihuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnZfb3B0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52X29wdChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocildO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSkge1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52KG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdO1xuXG4gIGlmIChwcm9jZXNzPy5hcmd2Py5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2KF91bml0KSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKSB7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKSB7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIik7XG4gICAgaWYgKGNoaWxkX3Byb2Nlc3M/LmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQsIHsgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gIH0gZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKF9jbWQpIHtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oX2IpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3cgXiAoMHhmZmZmZmZmZiAqIE1hdGgucmFuZG9tKCkpO1xuICByZXR1cm4gWzAsIHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUoKSB7XG4gIHJldHVybiAzMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplKCkge1xuICByZXR1cm4gMzI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSgpIHtcbiAgcmV0dXJuICgweDdmZmZmZmZmIC8gNCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIlVuaXhcIiA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIldpbjMyXCIgPyAxIDogMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4oKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIkN5Z3dpblwiID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbnZhciBvc190eXBlID0ganNvb19pc193aW4zMiA/IFwiV2luMzJcIiA6IFwiVW5peFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW9fYnVmZmVyX3NpemVcbnZhciBjYW1sX2lvX2J1ZmZlcl9zaXplID0gNjU1MzY7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfaW9fYnVmZmVyX3NpemUoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfaW9fYnVmZmVyX3NpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RlbXBfZGlyX25hbWVcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfdGVtcF9kaXJfbmFtZShfdW5pdCkge1xuICBpZiAob3NfdHlwZSA9PT0gXCJXaW4zMlwiKSB7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHJlcXVpcmUoXCJub2RlOm9zXCIpLnRtcGRpcigpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGVtcF9kaXJfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vVmVyc2lvbjogPj0gNS40XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c190ZW1wX2Rpcl9uYW1lKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyKHNpZ25vKSB7XG4gIHJldHVybiBzaWdubztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmV2X2NvbnZlcnRfc2lnbmFsX251bWJlclxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXIoc2lnbm8pIHtcbiAgcmV0dXJuIHNpZ25vO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vSWY6ICF3YXNtXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYgKHByb2Nlc3M/Lm9uKSB7XG4gICAgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5lcnJvcikge1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobFtpXSA9PT0gXCJiXCIpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZyA9ICtsW2ldLnNsaWNlKDIpO1xuICAgICAgfSBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnXG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZztcblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cygpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9ydW50aW1lX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UoX3VuaXQpIHtcbiAgcmV0dXJuIFswXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlKGIpIHtcbiAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlKCkge1xuICByZXR1cm4gWzBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KF9zbG90KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QoX2J0LCBfaWR4KSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoX2V4biwgX2J0KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KF9yYnQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSByZXR1cm4gZiguLi5hcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYoLi4uYXJncy5zbGljZSgwLCBuKSk7XG4gICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3Muc2xpY2UobikpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIHJldHVybiBmKC4uLm5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKyspIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgICByZXR1cm4gZiguLi5uYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSB7XG4gICAgcmV0dXJuIGYoLi4uYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7XG4gICAgfTtcbiAgICByZXR1cm4gZiguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKykgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXJncy5sZW5ndGggPSBhcmdzTGVuO1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl9jcHMgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfY3BzX2Nsb3N1cmVcbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl90dXBsZSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3MpIHtcbiAgICB2YXIgbiA9IGYubCA+PSAwID8gZi5sIDogKGYubCA9IGYubGVuZ3RoKTtcbiAgICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICAgIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gICAgaWYgKGQgPT09IDApIHtcbiAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICAgIHZhciBnID0gZiguLi5hcmdzLnNsaWNlKDAsIG4pKTtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChnLCBhcmdzLnNsaWNlKG4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIG9wdGltaXphdGlvbiBvZiBoYW5kbGluZyBzcGVjaWFsbHkgZCA9IDEgb3IgMlxuICAgICAgdmFyIGFyZ3NfID0gYXJncy5zbGljZSgpO1xuICAgICAgYXJnc18ubGVuZ3RoID0gYXJnc0xlbjtcbiAgICAgIHZhciByZXQgPSBjYW1sX2Nwc19jbG9zdXJlKFxuICAgICAgICBmdW5jdGlvbiAoLi4uZXh0cmFfYXJncykge1xuICAgICAgICAgIGlmIChleHRyYV9hcmdzLmxlbmd0aCA9PT0gMCkgZXh0cmFfYXJncyA9IFt1bmRlZmluZWRdO1xuICAgICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChmLCBhcmdzLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgcmV0LmwgPSBkO1xuICAgICAgcmV0LmNwcy5sID0gZCArIDE7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjYW1sX2NhbGxfZ2VuX2NwcyhmLCBhcmdzKSB7XG4gICAgaWYgKCFmLmNwcykge1xuICAgICAgdmFyIGsgPSBhcmdzLnBvcCgpO1xuICAgICAgcmV0dXJuIGsoY2FtbF9jYWxsX2dlbl9kaXJlY3QoZiwgYXJncykpO1xuICAgIH1cbiAgICB2YXIgbiA9IGYuY3BzLmwgPj0gMCA/IGYuY3BzLmwgOiAoZi5jcHMubCA9IGYuY3BzLmxlbmd0aCk7XG4gICAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICAgIGlmIChkID09PSAwKSB7XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2NwcyhnLCBhcmdzKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3NMZW4tLTtcbiAgICAgIHZhciBhcmdzXyA9IGFyZ3Muc2xpY2UoKTtcbiAgICAgIGFyZ3NfLmxlbmd0aCA9IGFyZ3NMZW47XG4gICAgICB2YXIgY29udCA9IGNhbWxfY3BzX2Nsb3N1cmUoXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgICAgY29udC5sID0gZDtcbiAgICAgIGNvbnQuY3BzLmwgPSBkICsgMTtcbiAgICAgIHJldHVybiBrKGNvbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2NhbWxfY2FsbF9nZW5fZGlyZWN0LCBjYW1sX2NhbGxfZ2VuX2Nwc107XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vV2Vha2RlZlxudmFyIGNhbWxfY2FsbF9nZW4gPSBjYW1sX2NhbGxfZ2VuX3R1cGxlWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlbl90dXBsZVxuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1dlYWtkZWZcbnZhciBjYW1sX2NhbGxfZ2VuX2NwcyA9IGNhbWxfY2FsbF9nZW5fdHVwbGVbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLCB2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgdmFyIG1heCA9IC0xO1xuICBpZiAoc3ltYikge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkeCA9IHN5bWJbaV1bMl07XG4gICAgICBtYXggPSBNYXRoLm1heChtYXgsIGlkeCk7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IGlkeDtcbiAgICB9XG4gIH1cbiAgci5uZXh0X2lkeCA9IG1heCArIDE7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RvcGxldmVsX3JlbG9jXG52YXIganNvb190b3BsZXZlbF9yZWxvYyA9IHVuZGVmaW5lZDtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczoganNvb190b3BsZXZlbF9yZWxvY1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZiAoanNvb190b3BsZXZlbF9yZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soanNvb190b3BsZXZlbF9yZWxvYywgW25hbWVdKTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpO1xuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdO1xuICAgICAgaWYgKG5pZCA+PSAwKSBuID0gbmlkO1xuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFRoZSB1bml0IGlzIHVua25vd24sIHRoaXMgY2FuIGhhcHBlbiB3aGVuIGR5bmxpbmtpbmcgYSBwcmVjb21waWxlZCBqcyxcbiAgICAgICAgLy8gbGV0J3MgYWxsb2NhdGUgYSBmcmVzaCBpZHguXG4gICAgICAgIHZhciBuID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgubmV4dF9pZHgrKztcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV0gPSBuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmIChuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykge1xuICByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByKGYpIHtcbiAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobywgZiwgdikge1xuICBvW2ZdID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLCBmKSB7XG4gIHJldHVybiBvW2ZdO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobywgZikge1xuICBkZWxldGUgb1tmXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sIGMpIHtcbiAgcmV0dXJuIG8gaW5zdGFuY2VvZiBjID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlIChyZXM/Lmpvb190cmFtcCkge1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsIGFyZ3MsIGRpcmVjdCkge1xuICByZXR1cm4geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBhcmdzLCBqb29fZGlyZWN0OiBkaXJlY3QgfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3dyYXBfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vQWxpYXM6IGNhbWxfY3BzX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZiwgYXJncykge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgam9vX3RyYW1wOiBmLFxuICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0geyBqb29fdHJhbXA6IGhhbmRsZXIsIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV0gfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZXM/Lmpvb19hcmdzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyhfdW5pdCkge1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKENPTkZJRyhcImVmZmVjdHNcIikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZiAoXG4gICAgICBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUubWVzc2FnZSAmJlxuICAgICAgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSlcbiAgICApXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmIChcbiAgICAgIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZS5tZXNzYWdlICYmXG4gICAgICBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKVxuICAgIClcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLCBlXTtcbiAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICBlbHNlXG4gICAgICBleG4gPSBbMCwgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcikgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2UgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy8gQmFja3RyYWNlcyBhcmUgdmVyeSBleHBlbnNpdmUsIHdlIG9ubHkgZW5hYmxlIHRoZW0gd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZFxuICAvLyBhdCBjb21waWxlLXRpbWUgKC0tZW5hYmxlIHdpdGgtanMtZXJyb3IpIG9yIGF0IHN0YXJ0dXAgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MS5cbiAgLy8gTGlicmFyaWVzIHN1Y2ggYXMgQmFzZSB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlIGJhY2t0cmFjZXMgKHByb2dyYW1tYXRpY2FsbHkpIGJ1dFxuICAvLyBpdCdzIHdheSB0byBzbG93LiBIZXJlLCB3ZSBmb3JjZSB0aGUgZW5kLXVzZXIgdG8gb3B0LWluIHRvIGJhY2t0cmFjZXMuXG4gIGlmIChjYW1sX3JlY29yZF9iYWNrdHJhY2VfZW52X2ZsYWcgJiYgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4bjtcbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZiAoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT09IDI0OClcbiAgICBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmIChleG4uanNfZXJyb3IpIHtcbiAgICByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3Rocm93X2pzX2V4Y2VwdGlvbihleG4pIHtcbiAgdGhyb3cgZXhuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7XG4gIHJldHVybiAhIXg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkge1xuICByZXR1cm4geCB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgYlswXSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGJbaSArIDFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLCBlLCBsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpIHtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yICg7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmICgheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnY2FtbF9qc192YXI6IFwiJyArXG4gICAgICAgIHggK1xuICAgICAgICAnXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLicsXG4gICAgKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zZWN1cml0eS9ub0dsb2JhbEV2YWw6XG4gIHJldHVybiBldmFsPy4oeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykge1xuICByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGYoKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gZihhWzFdKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdKTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdLCBhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG5ldyBjKCk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0pO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgYVs2XSk7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7XG4gICAgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbiAgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEYoKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBuZXcgYygpO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0pO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0pO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkge1xuICAgIHJldHVybiBjLmFwcGx5KHRoaXMsIGEpO1xuICB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRigpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBjYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKSA6IHJlcztcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gY2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcykgOiByZXM7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW3RoaXMsIGFyZ3NdKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuIChmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCkpIC0gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMoeCwgeSkge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRG91YmxlRXF1YWxzOlxuICByZXR1cm4gKyh4ID09IHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzKHgsIHkpIHtcbiAgcmV0dXJuICsoeCA9PT0geSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcocykge1xuICAvLyBVc2VzIGFuIGluZGlyZWN0IGV2YWwgdGhyb3VnaCB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb3BlcmF0b3IuXG4gIC8vIChzZWUgaHR0cHM6Ly9tZG4uZGV2L2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2V2YWwpXG4gIC8vIFRoaXMgaXMgZmFzdGVyIGFuZCBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlcy5cbiAgLy8gQWxzbyBwcmVwZW5kcyBgXCJ1c2Ugc3RyaWN0XCJgIGRpcmVjdGl2ZSBzaW5jZSB0aGlzIGlzIG5vdCBpbmhlcml0ZWRcbiAgLy8gZnJvbSB0aGUgZW5jbG9zaW5nIGZ1bmN0aW9uIHdpdGggYW4gaW5kaXJlY3QgZXZhbC5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsnICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gV2UgYWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgYmV0d2VlbiBleHByZXNzaW9uc1xuICAvLyBhbmQgc3RhdGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHdlIGFjY2VwdCBpbnZhbGlkIGlucHV0cyBsaWtlXG4gIC8vIFwiYSkoYlwiLCBidXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50KHRhZykge1xuICB0aHJvdyB0YWc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnKHRhZywgYXJnKSB7XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyh0YWcsIGFyZ3MpIHtcbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aChtc2cpIHtcbiAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlID0gWzI0OCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksIC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5KCkge1xuICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RpbWVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZXMoKSB7XG4gIGlmIChnbG9iYWxUaGlzLnByb2Nlc3M/LmNwdVVzYWdlKSB7XG4gICAgdmFyIHQgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3B1VXNhZ2UoKTtcbiAgICByZXR1cm4gQkxPQ0soMCwgdC51c2VyIC8gMWU2LCB0LnN5c3RlbSAvIDFlNiwgMCwgMCk7XG4gIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93KSB7XG4gICAgcmV0dXJuIEJMT0NLKDAsIGdsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93KCkgLyAxMDAwLCAwLCAwLCAwKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RpbWVzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIGQuZ2V0VVRDTWludXRlcygpLFxuICAgIGQuZ2V0VVRDSG91cnMoKSxcbiAgICBkLmdldFVUQ0RhdGUoKSxcbiAgICBkLmdldFVUQ01vbnRoKCksXG4gICAgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldFVUQ0RheSgpLFxuICAgIGRveSxcbiAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgamFuLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAganVsLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0U2Vjb25kcygpLFxuICAgIGQuZ2V0TWludXRlcygpLFxuICAgIGQuZ2V0SG91cnMoKSxcbiAgICBkLmdldERhdGUoKSxcbiAgICBkLmdldE1vbnRoKCksXG4gICAgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldERheSgpLFxuICAgIGRveSxcbiAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHxcbiAgICAgIDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKSB7XG4gIHZhciBkID0gbmV3IERhdGUodG1bNl0gKyAxOTAwLCB0bVs1XSwgdG1bNF0sIHRtWzNdLCB0bVsyXSwgdG1bMV0pLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLCB0LCB0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQpO1xuICBpZiAoIWZpbGUuaXNhdHR5KSByZXR1cm4gMDtcbiAgcmV0dXJuIGZpbGUuaXNhdHR5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KF9maWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvclxudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLFxuICBcIkVBQ0NFU1wiLFxuICBcIkVBR0FJTlwiLFxuICBcIkVCQURGXCIsXG4gIFwiRUJVU1lcIixcbiAgXCJFQ0hJTERcIixcbiAgXCJFREVBRExLXCIsXG4gIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLFxuICBcIkVGQVVMVFwiLFxuICBcIkVGQklHXCIsXG4gIFwiRUlOVFJcIixcbiAgXCJFSU5WQUxcIixcbiAgXCJFSU9cIixcbiAgXCJFSVNESVJcIixcbiAgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIixcbiAgXCJFTkFNRVRPT0xPTkdcIixcbiAgXCJFTkZJTEVcIixcbiAgXCJFTk9ERVZcIixcbiAgXCJFTk9FTlRcIixcbiAgXCJFTk9FWEVDXCIsXG4gIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsXG4gIFwiRU5PU1BDXCIsXG4gIFwiRU5PU1lTXCIsXG4gIFwiRU5PVERJUlwiLFxuICBcIkVOT1RFTVBUWVwiLFxuICBcIkVOT1RUWVwiLFxuICBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIixcbiAgXCJFUElQRVwiLFxuICBcIkVSQU5HRVwiLFxuICBcIkVST0ZTXCIsXG4gIFwiRVNQSVBFXCIsXG4gIFwiRVNSQ0hcIixcbiAgXCJFWERFVlwiLFxuICBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIixcbiAgXCJFQUxSRUFEWVwiLFxuICBcIkVOT1RTT0NLXCIsXG4gIFwiRURFU1RBRERSUkVRXCIsXG4gIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsXG4gIFwiRU5PUFJPVE9PUFRcIixcbiAgXCJFUFJPVE9OT1NVUFBPUlRcIixcbiAgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsXG4gIFwiRVBGTk9TVVBQT1JUXCIsXG4gIFwiRUFGTk9TVVBQT1JUXCIsXG4gIFwiRUFERFJJTlVTRVwiLFxuICBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLFxuICBcIkVORVRVTlJFQUNIXCIsXG4gIFwiRU5FVFJFU0VUXCIsXG4gIFwiRUNPTk5BQk9SVEVEXCIsXG4gIFwiRUNPTk5SRVNFVFwiLFxuICBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsXG4gIFwiRU5PVENPTk5cIixcbiAgXCJFU0hVVERPV05cIixcbiAgXCJFVE9PTUFOWVJFRlNcIixcbiAgXCJFVElNRURPVVRcIixcbiAgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIixcbiAgXCJFSE9TVFVOUkVBQ0hcIixcbiAgXCJFTE9PUFwiLFxuICBcIkVPVkVSRkxPV1wiLFxuXTtcblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5O1xuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIC8vIGVycm5vIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIC1lcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIiksXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmVycm9yXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N0cmVycm9yKGVycm5vKSB7XG4gIGNvbnN0IHV0aWwgPSByZXF1aXJlKFwibm9kZTp1dGlsXCIpO1xuICBpZiAoZXJybm8gPj0gMCkge1xuICAgIGNvbnN0IGNvZGUgPSB1bml4X2Vycm9yW2Vycm5vXTtcbiAgICByZXR1cm4gdXRpbFxuICAgICAgLmdldFN5c3RlbUVycm9yTWFwKClcbiAgICAgIC5lbnRyaWVzKClcbiAgICAgIC5maW5kKCh4KSA9PiB4WzFdWzBdID09PSBjb2RlKVsxXVsxXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdXRpbC5nZXRTeXN0ZW1FcnJvck1lc3NhZ2UoZXJybm8pO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyZXJyb3Jcbi8vUmVxdWlyZXM6IHVuaXhfZXJyb3Jcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3RyZXJyb3IoZXJybm8pIHtcbiAgY29uc3QgY29kZSA9IHVuaXhfZXJyb3JbZXJybm9dO1xuICByZXR1cm4gY29kZSB8fCBcIlVua25vd24gZXJyb3IgXCIgKyBlcnJubztcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvcl9tZXNzYWdlXG4vL0FsaWFzOiBjYW1sX3VuaXhfZXJyb3JfbWVzc2FnZVxuLy9SZXF1aXJlczogY2FtbF9zdHJlcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIHVuaXhfZXJyb3JfbWVzc2FnZShlcnIpIHtcbiAgY29uc3QgZXJybm8gPSB0eXBlb2YgZXJyID09PSBcIm51bWJlclwiID8gZXJyIDogLWVyclsxXTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNhbWxfc3RyZXJyb3IoZXJybm8pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jaGRpclxuLy9BbGlhczogdW5peF9jaGRpclxuZnVuY3Rpb24gY2FtbF91bml4X2NoZGlyKGRpcikge1xuICByZXR1cm4gY2FtbF9zeXNfY2hkaXIoZGlyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gZmFsc2UsXG4gICAgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXRfNjQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gdHJ1ZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyBmYWxzZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0XzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyB0cnVlLFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NobW9kXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9jaG1vZFxuZnVuY3Rpb24gY2FtbF91bml4X2NobW9kKG5hbWUsIHBlcm1zKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2NobW9kOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmNobW9kKHJvb3QucmVzdCwgcGVybXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vQWxpYXM6IHVuaXhfcmVuYW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVuYW1lKG8sIG4pIHtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmIChvX3Jvb3QuZGV2aWNlICE9PSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSwgXCJFWERFVlwiLCBcInJlbmFtZVwiKTtcbiAgaWYgKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSkgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm90IGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X2xpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9saW5rKGZvbGxvdywgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2UubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIC8vIFdlIGNhbid0IGNvbnRyb2wgd2hldGhlciBhICdzcmMnIHN5bWxpbmsgaXMgZm9sbG93ZWQgb3Igbm90LlxuICAvLyBTbyB3ZSBmYWlsIHdoZW4gJ2ZvbGxvdycgaXMgc2V0LCBhcyBkb2N1bWVudGVkIGluIHRoZSBVbml4IG1vZHVsZS5cbiAgaWYgKHR5cGVvZiBmb2xsb3cgIT09IFwibnVtYmVyXCIpXG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoLyogcmFpc2UgVW5peF9lcnJvciAqLyAxLCBcIkVOT1NZU1wiLCBcImxpbmtcIik7XG4gIGlmIChzcmNfcm9vdC5kZXZpY2UgIT09IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRVhERVZcIiwgXCJsaW5rXCIpO1xuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLmxpbmsoXG4gICAgc3JjX3Jvb3QucmVzdCxcbiAgICBkc3Rfcm9vdC5yZXN0LFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmICghZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmsoXG4gICAgdG9fZGlyLFxuICAgIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHNyYyksXG4gICAgZHN0X3Jvb3QucmVzdCxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdXRpbWVzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91dGltZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF91dGltZXMobmFtZSwgYXRpbWUsIG10aW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudXRpbWVzKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91dGltZXM6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByb290LmRldmljZS51dGltZXMocm9vdC5yZXN0LCBhdGltZSwgbXRpbWUsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGUobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUocm9vdC5yZXN0LCBsZW4sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2ludDY0X3RvX2Zsb2F0XG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjQobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUoXG4gICAgcm9vdC5yZXN0LFxuICAgIGNhbWxfaW50NjRfdG9fZmxvYXQobGVuKSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfYWNjZXNzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9hY2Nlc3NcbmZ1bmN0aW9uIGNhbWxfdW5peF9hY2Nlc3MobmFtZSwgZmxhZ3MpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnIgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZi53ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGYueCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBmLmYgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmFjY2Vzcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfYWNjZXNzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UuYWNjZXNzKHJvb3QucmVzdCwgZiwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9zeXNfZmRzLCBNbENoYW5pZFxuLy9BbGlhczogdW5peF9vcGVuXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLnJkd3IgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgZi5ub25ibG9jayA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBmLmNyZWF0ZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2OlxuICAgICAgICBmLnRydW5jYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYuZXhjbCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vY3R0eSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBmLmRzeW5jID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBmLnN5bmMgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LCBmLCBwZXJtcywgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgdmFyIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIHZhciBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2ZkcywgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgY21kKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgY21kKTtcbiAgcmV0dXJuIGZkX2Rlc2MuZmlsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzdGF0XG4vL0FsaWFzOiB1bml4X2ZzdGF0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3RhdChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3RhdFwiKTtcbiAgaWYgKCFmaWxlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyBmYWxzZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mc3RhdF82NFxuLy9BbGlhczogdW5peF9mc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3VuaXhfZnN0YXRfNjQoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZnN0YXRcIik7XG4gIGlmICghZmlsZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mc3RhdDY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZjaG1vZFxuLy9BbGlhczogdW5peF9mY2htb2Rcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2ZjaG1vZChmZCwgcGVybXMpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZmNobW9kXCIpO1xuICBpZiAoIWZpbGUuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZjaG1vZDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBmaWxlLmNobW9kKHBlcm1zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzeW5jXG4vL0FsaWFzOiB1bml4X2ZzeW5jXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3luYyhmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3luY1wiKTtcbiAgaWYgKCFmaWxlLnN5bmMpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzeW5jOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3luYygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfd3JpdGVcbi8vQWxpYXM6IHVuaXhfd3JpdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF91bml4X3dyaXRlKGZkLCBidWYsIHBvcywgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgdmFyIHdyaXR0ZW4gPSAwO1xuICB3aGlsZSAobGVuID4gMCkge1xuICAgIHZhciBuID0gZmlsZS53cml0ZShhLCBwb3MsIGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgICB3cml0dGVuICs9IG47XG4gICAgcG9zICs9IG47XG4gICAgbGVuIC09IG47XG4gIH1cbiAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zaW5nbGVfd3JpdGVcbi8vQWxpYXM6IHVuaXhfc2luZ2xlX3dyaXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF9zaW5nbGVfd3JpdGUoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwid3JpdGVcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICByZXR1cm4gZmlsZS53cml0ZShcbiAgICBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZiksXG4gICAgcG9zLFxuICAgIGxlbixcbiAgICAvKiByYWlzZSB1bml4X2Vycm9yICovIDEsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF93cml0ZV9iaWdhcnJheVxuLy9BbGlhczogY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3VuaXhfd3JpdGVfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgd3JpdHRlbiA9IDA7XG4gIHdoaWxlIChsZW4gPiAwKSB7XG4gICAgdmFyIG4gPSBmaWxlLndyaXRlKGEsIHBvcywgbGVuLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xuICAgIHdyaXR0ZW4gKz0gbjtcbiAgICBwb3MgKz0gbjtcbiAgICBsZW4gLT0gbjtcbiAgfVxuICByZXR1cm4gd3JpdHRlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRcbi8vQWxpYXM6IHVuaXhfcmVhZFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZChmZCwgYnVmLCBwb3MsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJyZWFkXCIpO1xuICByZXR1cm4gZmlsZS5yZWFkKFxuICAgIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKSxcbiAgICBwb3MsXG4gICAgbGVuLFxuICAgIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRfYmlnYXJyYXlcbi8vQWxpYXM6IHVuaXhfcmVhZF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcInJlYWRcIik7XG4gIHJldHVybiBmaWxlLnJlYWQoYSwgcG9zLCBsZW4sIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc2Vla1xuLy9BbGlhczogdW5peF9sc2Vla1xuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlXG5mdW5jdGlvbiBjYW1sX3VuaXhfbHNlZWsoZmQsIGxlbiwgd2hlbmNlKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImxzZWVrXCIpO1xuICByZXR1cm4gZmlsZS5zZWVrKGxlbiwgd2hlbmNlLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHNlZWtfNjRcbi8vQWxpYXM6IHVuaXhfbHNlZWtfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9pbnQ2NF90b19mbG9hdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzZWVrXzY0KGZkLCBsZW4sIHdoZW5jZSkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJsc2Vla1wiKTtcbiAgcmV0dXJuIGZpbGUuc2VlayhjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIHdoZW5jZSwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Z0cnVuY2F0ZVxuLy9BbGlhczogdW5peF9mdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2Z0cnVuY2F0ZShmZCwgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImZ0cnVuY2F0ZVwiKTtcbiAgaWYgKCFmaWxlLnRydW5jYXRlKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mdHJ1bmNhdGU6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICBmaWxlLnRydW5jYXRlKGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mdHJ1bmNhdGVfNjRcbi8vQWxpYXM6IHVuaXhfZnRydW5jYXRlXzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGgsIGNhbWxfaW50NjRfdG9fZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9mdHJ1bmNhdGVfNjQoZmQsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmdHJ1bmNhdGVcIik7XG4gIGlmICghZmlsZS50cnVuY2F0ZSkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfZnRydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgZmlsZS50cnVuY2F0ZShjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2Vcbi8vQWxpYXM6IHVuaXhfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImNsb3NlXCIpO1xuICBmaWxlLmNsb3NlKC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9BbGlhczogdW5peF9pbmNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5faW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuZnVuY3Rpb24gY2FtbF91bml4X2luY2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgZmlsZS5jaGVja19zdHJlYW1fc2VtYW50aWNzKFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB1bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5fb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3Jcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG5mdW5jdGlvbiBjYW1sX3VuaXhfb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwib3V0X2NoYW5uZWxfb2ZfZGVzY3JcIik7XG4gIGZpbGUuY2hlY2tfc3RyZWFtX3NlbWFudGljcyhcIm91dF9jaGFubmVsX29mX2Rlc2NyXCIpO1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0dWlkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldGV1aWRcbi8vQWxpYXM6IHVuaXhfZ2V0ZXVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGV1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0ZXVpZCkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0ZXVpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0Z2lkXG4vL0FsaWFzOiB1bml4X2dldGdpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRnaWQpIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldGdpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0ZWdpZFxuLy9BbGlhczogdW5peF9nZXRlZ2lkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0ZWdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRlZ2lkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXRlZ2lkKCk7XG4gIH1cbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd25hbVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHduYW1cbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuLy9BbGlhczogY2FtbF91bml4X2dldGdybmFtXG4vL0FsaWFzOiB1bml4X2dldGdybmFtXG4vL0FsaWFzOiBjYW1sX3VuaXhfZ2V0Z3JnaWRcbi8vQWxpYXM6IHVuaXhfZ2V0Z3JnaWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd25hbShfdW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsoX3VuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCkgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlcjogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJyZWFkZGlyXCIpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJjbG9zZWRpclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihyYWlzZV91bml4LCBjb2RlLCBjbWQsIG1zZywgcGF0aCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpXG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIGNtZCwgcGF0aCkpO1xuICBlbHNlIHtcbiAgICB2YXIgbXNnID0gY29kZSArIFwiOiBcIiArIG1zZyArIFwiLCBcIiArIGNtZDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSBtc2cgKz0gXCIgJ1wiICsgcGF0aCArIFwiJ1wiO1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG1zZyk7XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIiA/IG5hbWUgKyBcIi9cIiA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG5lbHNlIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKSB7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9XG4gIGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHxcbiAgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKSB7fVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczoganNvb19pc193aW4zMlxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSBcIi9cIikgcmV0dXJuIFtcIlwiLCBwYXRoLnNsaWNlKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9XG4gICAgICAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgdmFyIGlzVW5jID0gZGV2aWNlLmxlbmd0aCA+IDAgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gXCI6XCI7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChyZXN1bHRbMl0gfHwgaXNVbmMpIHtcbiAgICAgIHZhciByb290ID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgICB2YXIgc2VwID0gcmVzdWx0WzJdIHx8IFwiXCI7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc2xpY2Uocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4ganNvb19pc193aW4zMiA/IHdpbjMyIDogcG9zaXg7XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoKG5hbWUpIHtcbiAgbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiAoIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkpIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdCgvWy9cXFxcXS8pO1xuICB2YXIgbmNvbXAgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChjb21wW2ldKSB7XG4gICAgICBjYXNlIFwiLi5cIjpcbiAgICAgICAgbmNvbXAucG9wKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmNvbXAucHVzaChjb21wW2ldKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdO1xuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgcGF0aDogXCIvc3RhdGljL1wiLFxuICBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKSxcbn0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpIHtcbiAgdmFyIHByZXYgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF07XG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZiAoXG4gICAgICBuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09PSAwICYmXG4gICAgICAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKVxuICAgIClcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gIH1cbiAgaWYgKCFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdD8ubWF0Y2goL15bYS16QS1aXTpcXC8kLykpIHtcbiAgICAgIHZhciBtID0geyBwYXRoOiByb290LCBkZXZpY2U6IG5ldyBNbE5vZGVEZXZpY2Uocm9vdCkgfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsIGYpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goeyBwYXRoOiBuYW1lLCBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UobmFtZSwgZikgfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSkge1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmIChqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT09IG5hbWUpIGlkeCA9IGk7XG4gIGlmIChpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRjd2Rcbi8vQWxpYXM6IHVuaXhfZ2V0Y3dkXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZiAocm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCkpIHtcbiAgICBpZiAocm9vdC5yZXN0KVxuICAgICAgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVOT1RESVJcIixcbiAgICAgIFwiY2hkaXJcIixcbiAgICAgIFwibm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhkaXIpLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZGlyKSwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lLCByYWlzZV91bml4KSB7XG4gIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgIHJhaXNlX3VuaXgsXG4gICAgXCJFTk9FTlRcIixcbiAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICBuYW1lLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBsW2kgKyAxXSA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobywgbikge1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYgKG9fcm9vdC5kZXZpY2UgIT09IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZiAoIW9fcm9vdC5kZXZpY2UucmVuYW1lKSBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKF92ZmQsIF9raW5kLCBfbGF5b3V0LCBfc2hhcmVkLCBfZGltcywgX3Bvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndiwgX2FyZ24pIHtcbiAgLy8gYXJnbiA9PT0gNlxuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdLCBhcmd2WzNdLCBhcmd2WzRdLCBhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsIGNvbnRlbnQpIHtcbiAgaWYgKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSkgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZiAoIWdsb2JhbFRoaXMuanNvb19mc190bXApIGdsb2JhbFRoaXMuanNvb19mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wLnB1c2goeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50IH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCgpIHtcbiAgdmFyIHRtcCA9IGdsb2JhbFRoaXMuanNvb19mc190bXA7XG4gIGlmICh0bXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKykge1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSwgdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LCBjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50KG5hbWUpIHtcbiAgdmFyIG5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIiA/IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG5hbWUpIDogbmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgeyByZG9ubHk6IDEgfSk7XG4gICAgdmFyIGxlbiA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKGJ1ZiwgMCwgbGVuLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGJ1Zik7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRGV2aWNlIHtcbiAgY29uc3RydWN0b3Iocm9vdCwgZikge1xuICAgIHRoaXMuY29udGVudCA9IHt9O1xuICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgdGhpcy5sb29rdXBGdW4gPSBmO1xuICB9XG5cbiAgbm0obmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJvb3QgKyBuYW1lO1xuICB9XG5cbiAgY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSkge1xuICAgIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICAgIGlmICh0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIGxvb2t1cChuYW1lKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcodGhpcy5yb290KSxcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobmFtZSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleGlzdHMobmFtZSwgZG9fbm90X2xvb2t1cCkge1xuICAgIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gICAgaWYgKG5hbWUgPT09IFwiXCIpIHJldHVybiAxO1xuICAgIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICAgIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gICAgaWYgKCFkb19ub3RfbG9va3VwKSB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdID8gMSA6IDA7XG4gIH1cblxuICBpc0ZpbGUobmFtZSkge1xuICAgIGlmICh0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICByZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkpIHtcbiAgICAgIGlmICghdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFkZGlyKG5ld25hbWUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuZXduYW1lKSArIFwiIDogZGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9sZF9zbGFzaCA9IHRoaXMuc2xhc2gob2xkbmFtZSk7XG4gICAgdmFyIG5ld19zbGFzaCA9IHRoaXMuc2xhc2gobmV3bmFtZSk7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuZXdfc2xhc2gpO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLnJlYWRkaXIob2xkbmFtZSkpIHtcbiAgICAgIHRoaXMucmVuYW1lKG9sZF9zbGFzaCArIGYsIG5ld19zbGFzaCArIGYpO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W29sZF9zbGFzaF07XG4gIH1cblxuICByZW5hbWUob2xkbmFtZSwgbmV3bmFtZSkge1xuICAgIGlmICghdGhpcy5leGlzdHMob2xkbmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG9sZG5hbWUpICsgXCIgOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIGlmICh0aGlzLmlzX2RpcihvbGRuYW1lKSkge1xuICAgICAgdGhpcy5yZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkgJiYgdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGVudFtuZXduYW1lXSA9IHRoaXMuY29udGVudFtvbGRuYW1lXTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbb2xkbmFtZV07XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgX21vZGUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICAgIHBhcmVudCA9IHBhcmVudD8uWzFdIHx8IFwiXCI7XG4gICAgaWYgKCF0aGlzLmV4aXN0cyhwYXJlbnQpKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRU5PRU5UXCIsXG4gICAgICAgIFwibWtkaXJcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICApO1xuICAgIGlmICghdGhpcy5pc19kaXIocGFyZW50KSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHZhciBuYW1lX3NsYXNoID0gbmFtZSA9PT0gXCJcIiA/IFwiXCIgOiB0aGlzLnNsYXNoKG5hbWUpO1xuICAgIGlmICghdGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgaWYgKCF0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICBmb3IgKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgICAgaWYgKG4uc3RhcnRzV2l0aChuYW1lX3NsYXNoKSAmJiBuICE9PSBuYW1lX3NsYXNoKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRU5PVEVNUFRZXCIsXG4gICAgICAgICAgXCJybWRpclwiLFxuICAgICAgICAgIFwiZGlyZWN0b3J5IG5vdCBlbXB0eVwiLFxuICAgICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG4gIH1cblxuICByZWFkZGlyKG5hbWUpIHtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IG5hbWUgPT09IFwiXCIgPyBcIlwiIDogdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHZhciBhID0gW107XG4gICAgZm9yICh2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGlmIChuLnN0YXJ0c1dpdGgobmFtZV9zbGFzaCkgJiYgbiAhPT0gbmFtZV9zbGFzaCkge1xuICAgICAgICB2YXIgbGFzdCA9IG4uaW5kZXhPZihcIi9cIiwgbmFtZV9zbGFzaC5sZW5ndGgpO1xuICAgICAgICBpZiAobGFzdCA8IDApIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBtID0gbi5zbGljZShuYW1lX3NsYXNoLmxlbmd0aCwgbGFzdCk7XG4gICAgICAgIGlmIChtICYmICFzZWVuW21dKSB7XG4gICAgICAgICAgc2VlblttXSA9IHRydWU7XG4gICAgICAgICAgYS5wdXNoKG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG5cbiAgb3BlbmRpcihuYW1lLCByYWlzZV91bml4KSB7XG4gICAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gICAgdmFyIGMgPSBmYWxzZTtcbiAgICB2YXIgaSA9IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWRTeW5jOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjKVxuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICAgIFwiRUJBREZcIixcbiAgICAgICAgICAgIFwicmVhZGRpclwiLFxuICAgICAgICAgICAgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKGkgPT09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICAgICAgaSsrO1xuICAgICAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9O1xuICAgICAgfSxcbiAgICAgIGNsb3NlU3luYzogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYylcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgICBcIkVCQURGXCIsXG4gICAgICAgICAgICBcInJlYWRkaXJcIixcbiAgICAgICAgICAgIFwiYmFkIGZpbGUgZGVzY3JpcHRvclwiLFxuICAgICAgICAgICk7XG4gICAgICAgIGMgPSB0cnVlO1xuICAgICAgICBhID0gW107XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc19kaXIobmFtZSkge1xuICAgIGlmIChuYW1lID09PSBcIlwiKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSA/IDEgOiAwO1xuICB9XG5cbiAgdW5saW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUsIHRydWUpKSB7XG4gICAgICAvLyBbdHJ1ZV0gbWVhbnMgbm8gXCJsb29rdXBcIiBpZiBub3QgZm91bmQuXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJ1bmxpbmtcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgYWNjZXNzKG5hbWUsIF9mbGFncywgcmFpc2VfdW5peCkge1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVBQ0NFU1NcIixcbiAgICAgICAgICBcImFjY2Vzc1wiLFxuICAgICAgICAgIFwicGVybWlzc2lvbiBkZW5pZWQsXCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBfcGVybXMsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgZmlsZTtcbiAgICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFSVNESVJcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGlmIChmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKDApO1xuICAgIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSh0aGlzLm5tKG5hbWUpLCByYWlzZV91bml4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbiAgfVxuXG4gIHRydW5jYXRlKG5hbWUsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHZhciBmaWxlO1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVJU0RJUlwiLFxuICAgICAgICAgIFwib3BlblwiLFxuICAgICAgICAgIFwiaWxsZWdhbCBvcGVyYXRpb24gb24gYSBkaXJlY3RvcnlcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGZpbGUudHJ1bmNhdGUobGVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXIobmFtZSwgY29udGVudCkge1xuICAgIHZhciBmaWxlO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGlmIChjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKSBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gICAgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gICAgZWxzZSBpZiAoY29udGVudC50b1N0cmluZykge1xuICAgICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoXG4gICAgICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSksXG4gICAgICApO1xuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgICB9XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICAgIH0gZWxzZVxuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgIHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiLFxuICAgICAgKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBNbEZha2VGaWxlIGV4dGVuZHMgTWxGaWxlIHtcbiAgY29uc3RydWN0b3IoY29udGVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gY29udGVudDtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbikge1xuICAgIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gICAgdmFyIG9sZF9sZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aChvbGQpO1xuICAgIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbiB8IDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgTWF0aC5taW4obGVuLCBvbGRfbGVuKSk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG4gIH1cblxuICB3cml0ZShvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICAgIH1cbiAgICBjYW1sX2JsaXRfYnl0ZXMoXG4gICAgICBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5KGJ1ZiksXG4gICAgICBwb3MsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICBvZmZzZXQsXG4gICAgICBsZW4sXG4gICAgKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgcmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4gfCAwKTtcbiAgICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmNsYXNzIE1sRmFrZUZkX291dCBleHRlbmRzIE1sRmFrZUZpbGUge1xuICBjb25zdHJ1Y3RvcihmZCwgZmxhZ3MpIHtcbiAgICBzdXBlcihjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoX3MpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgaWYgKGZkID09PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICAgIGVsc2UgaWYgKGZkID09PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbnNvbGUubG9nID09PSBcImZ1bmN0aW9uXCIpIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdHJ1bmNhdGUoX2xlbiwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgcmFpc2VfdW5peCxcbiAgICAgIFwiRUlOVkFMXCIsXG4gICAgICBcImZ0cnVuY2F0ZVwiLFxuICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgd3JpdHRlbiA9IGxlbjtcbiAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGVuID4gMCAmJlxuICAgICAgICBwb3MgPj0gMCAmJlxuICAgICAgICBwb3MgKyBsZW4gPD0gYnVmLmxlbmd0aCAmJlxuICAgICAgICBidWZbcG9zICsgbGVuIC0gMV0gPT09IDEwXG4gICAgICApXG4gICAgICAgIGxlbi0tO1xuICAgICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICAgIHJldHVybiB3cml0dGVuO1xuICAgIH1cbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVCQURGXCIsXG4gICAgICBcIndyaXRlXCIsXG4gICAgICBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIixcbiAgICApO1xuICB9XG5cbiAgcmVhZChfYnVmLCBfcG9zLCBfbGVuLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFQkFERlwiLCBcInJlYWRcIiwgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIpO1xuICB9XG5cbiAgc2VlayhfbGVuLCBfd2hlbmNlLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFU1BJUEVcIiwgXCJsc2Vla1wiLCBcImlsbGVnYWwgc2Vla1wiKTtcbiAgfVxuICBwb3MoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKF9jbWQpIHt9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRmQge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBmaWxlLCBmbGFncykge1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIHRoaXMuc2Vla2VkID0gZmFsc2U7XG4gIH1cblxuICBlcnJfY2xvc2VkKGNtZCwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRUJBREZcIiwgY21kLCBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIik7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGgoKTtcbiAgICB0aGlzLmVycl9jbG9zZWQoXCJsZW5ndGhcIik7XG4gIH1cblxuICB0cnVuY2F0ZShsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICBpZiAoISh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgICAgXCJ0cnVuY2F0ZVwiLFxuICAgICAgICAgIFwiaW52YWxpZCBhcmd1bWVudFwiLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZS50cnVuY2F0ZShsZW4pO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJ0cnVuY2F0ZVwiLCByYWlzZV91bml4KTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlICYmICh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICBsZW4gPSB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgICAgIHRoaXMub2Zmc2V0ICs9IGxlbjtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHRoaXMuZXJyX2Nsb3NlZChcIndyaXRlXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgcmVhZChidWYsIHBvcywgbGVuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKHRoaXMuZmlsZSAmJiAhdGhpcy5mbGFncy53cm9ubHkpIHtcbiAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgIGxlbiA9IHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbik7XG4gICAgICB0aGlzLm9mZnNldCArPSBsZW47XG4gICAgICByZXR1cm4gbGVuO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJyZWFkXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgc2VlayhvZmZzZXQsIHdoZW5jZSwgcmFpc2VfdW5peCkge1xuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIFwibHNlZWtcIixcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5maWxlKSB0aGlzLmVycl9jbG9zZWQoXCJjbG9zZVwiKTtcbiAgICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKGNtZCkge1xuICAgIGlmICghdGhpcy5maWxlKSByZXR1cm4gdGhpcy5lcnJfY2xvc2VkKGNtZCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuY2xhc3MgTWxJbnQ2NCB7XG4gIGNvbnN0cnVjdG9yKGxvLCBtaSwgaGkpIHtcbiAgICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX2pcIjtcbiAgfVxuXG4gIHN0YXRpYyBVTlNJR05FRF9NQVggPSBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmYsIDB4ZmZmZik7XG4gIHN0YXRpYyBTSUdORURfTUFYID0gbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmLCAweDdmZmYpO1xuICBzdGF0aWMgU0lHTkVEX01JTiA9IG5ldyBNbEludDY0KDB4MDAwMDAwLCAweDAwMDAwMCwgMHg4MDAwKTtcblxuICBzbGljZSgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbywgdGhpcy5taSwgdGhpcy5oaSk7XG4gIH1cblxuICB1Y29tcGFyZSh4KSB7XG4gICAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb21wYXJlKHgpIHtcbiAgICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICAgIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICAgIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gICAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHZhciBsbyA9IC10aGlzLmxvO1xuICAgIHZhciBtaSA9IC10aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgICB2YXIgaGkgPSAtdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xuICB9XG5cbiAgYWRkKHgpIHtcbiAgICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gICAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbiAgfVxuXG4gIHN1Yih4KSB7XG4gICAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gICAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICAgIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBtdWwoeCkge1xuICAgIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICAgIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gICAgdmFyIGhpID1cbiAgICAgICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArXG4gICAgICB0aGlzLmhpICogeC5sbyArXG4gICAgICB0aGlzLm1pICogeC5taSArXG4gICAgICB0aGlzLmxvICogeC5oaTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBpc1plcm8oKSB7XG4gICAgcmV0dXJuICh0aGlzLmxvIHwgdGhpcy5taSB8IHRoaXMuaGkpID09PSAwO1xuICB9XG5cbiAgaXNOZWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGkgPDwgMTYgPCAwO1xuICB9XG5cbiAgYW5kKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG4gIH1cblxuICBvcih4KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gfCB4LmxvLCB0aGlzLm1pIHwgeC5taSwgdGhpcy5oaSB8IHguaGkpO1xuICB9XG5cbiAgeG9yKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyBeIHgubG8sIHRoaXMubWkgXiB4Lm1pLCB0aGlzLmhpIF4geC5oaSk7XG4gIH1cblxuICBzaGlmdF9sZWZ0KHMpIHtcbiAgICBzID0gcyAmIDYzO1xuICAgIGlmIChzID09PSAwKSByZXR1cm4gdGhpcztcbiAgICBpZiAocyA8IDI0KSB7XG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgIHRoaXMubG8gPDwgcyxcbiAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHMgPCA0OClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpLFxuICAgICAgKTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSk7XG4gIH1cblxuICBzaGlmdF9yaWdodF91bnNpZ25lZChzKSB7XG4gICAgcyA9IHMgJiA2MztcbiAgICBpZiAocyA9PT0gMCkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKHMgPCAyNClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgICB0aGlzLmhpID4+IHMsXG4gICAgICApO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgdGhpcy5oaSA+PiAocyAtIDI0KSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xuICB9XG5cbiAgc2hpZnRfcmlnaHQocykge1xuICAgIHMgPSBzICYgNjM7XG4gICAgaWYgKHMgPT09IDApIHJldHVybiB0aGlzO1xuICAgIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICAgIGlmIChzIDwgMjQpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYsXG4gICAgICApO1xuICAgIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSkgPj4gMTYsXG4gICAgICAgIHNpZ24gJiAweGZmZmYsXG4gICAgICApO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xuICB9XG5cbiAgbHNsMSgpIHtcbiAgICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbiAgfVxuXG4gIGxzcjEoKSB7XG4gICAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG4gIH1cblxuICB1ZGl2bW9kKHgpIHtcbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgbW9kdWx1cyA9IHRoaXMuc2xpY2UoKTtcbiAgICB2YXIgZGl2aXNvciA9IHguc2xpY2UoKTtcbiAgICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLCAwLCAwKTtcbiAgICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICAgIG9mZnNldCsrO1xuICAgICAgZGl2aXNvci5sc2wxKCk7XG4gICAgfVxuICAgIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgICAgb2Zmc2V0LS07XG4gICAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICAgIHF1b3RpZW50LmxvKys7XG4gICAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICAgIH1cbiAgICAgIGRpdmlzb3IubHNyMSgpO1xuICAgIH1cbiAgICByZXR1cm4geyBxdW90aWVudDogcXVvdGllbnQsIG1vZHVsdXM6IG1vZHVsdXMgfTtcbiAgfVxuXG4gIGRpdih5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gICAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICAgIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICAgIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgICByZXR1cm4gcTtcbiAgfVxuXG4gIG1vZCh5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpO1xuICAgIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gICAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICB0b0ludCgpIHtcbiAgICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbiAgfVxuXG4gIHRvRmxvYXQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkgKyB0aGlzLmxvXG4gICAgKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaGkgPj4gOCxcbiAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubG8gJiAweGZmLFxuICAgIF07XG4gIH1cblxuICBsbzMyKCkge1xuICAgIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xuICB9XG5cbiAgaGkzMigpIHtcbiAgICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgsIHkpIHtcbiAgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LCB5LCBfdG90YWwpIHtcbiAgcmV0dXJuIHguY29tcGFyZSh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnKHgpIHtcbiAgcmV0dXJuIHgubmVnKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCh4LCB5KSB7XG4gIHJldHVybiB4LmFkZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViKHgsIHkpIHtcbiAgcmV0dXJuIHguc3ViKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgsIHkpIHtcbiAgcmV0dXJuIHgubXVsKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7XG4gIHJldHVybiAreC5pc1plcm8oKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7XG4gIHJldHVybiAreC5pc05lZygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQoeCwgeSkge1xuICByZXR1cm4geC5hbmQoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IoeCwgeSkge1xuICByZXR1cm4geC5vcih5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yKHgsIHkpIHtcbiAgcmV0dXJuIHgueG9yKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X2xlZnQocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgcykge1xuICByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdlxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYoeCwgeSkge1xuICByZXR1cm4geC5kaXYoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kXG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCh4LCB5KSB7XG4gIHJldHVybiB4Lm1vZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuLy9BbGlhczogY2FtbF9pbnQ2NF9vZl9pbnRcbi8vQWxpYXM6IGNhbWxfaW50NjRfb2ZfbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50NjRfdG9faW50XG4vL0FsaWFzOiBjYW1sX2ludDY0X3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMih4KSB7XG4gIHJldHVybiB4LnRvSW50KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geC50b0Zsb2F0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0KHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSBcIiBcIjtcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQobiwgXCIwXCIpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZShzKTtcbiAgdmFyIGkgPSByWzBdLFxuICAgIHNpZ24gPSByWzFdLFxuICAgIGJhc2UgPSByWzJdLFxuICAgIHNpZ25lZG5lc3MgPSByWzNdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9IE1sSW50NjQuVU5TSUdORURfTUFYLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJJbnQ2NC5vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcIkludDY0Lm9mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoXG4gICAgc2lnbmVkbmVzcyAmJlxuICAgIGNhbWxfaW50NjRfdWx0KHNpZ24gPCAwID8gTWxJbnQ2NC5TSUdORURfTUlOIDogTWxJbnQ2NC5TSUdORURfTUFYLCByZXMpXG4gIClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZixcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KSB7XG4gIHJldHVybiB2LmhpMzIoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAoYVs3XSA8PCAwKSB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgIChhWzRdIDw8IDApIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgKGFbMV0gPDwgMCkgfCAoYVswXSA8PCA4KSxcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkge1xuICByZXR1cm4geC50b0FycmF5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpIF4gdi5oaTMyKCk7XG59XG4iLCIvL1Byb3ZpZGVzOiBNbE11dGV4XG5jbGFzcyBNbE11dGV4IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYgKHQubG9ja2VkKSBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYgKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHMuX25hdCA9IHtcbiAgICBkZXNlcmlhbGl6ZTogZGVzZXJpYWxpemVfbmF0LFxuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplX25hdCxcbiAgICBoYXNoOiBjYW1sX2hhc2hfbmF0LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuY2xhc3MgTWxOYXQge1xuICBjb25zdHJ1Y3Rvcih4KSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gICAgLy8gRm9yIG51bSA8IDEuNVxuICAgIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgICAvLyB3b3JrIG91dCByaWdodC5cbiAgICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgICAvLyAtICsxIGZvciB0aGUgdGFnXG4gICAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDI7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpIHtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzICsgaV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0gbmF0Mi5kYXRhW29mczIgKyBpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQuZGF0YVtvZnMgKyBpXSAhPT0gMCkgcmV0dXJuIGkgKyAxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZiAoYSAmIDB4ZmZmZjAwMDApIHtcbiAgICBiICs9IDE2O1xuICAgIGEgPj4+PSAxNjtcbiAgfVxuICBpZiAoYSAmIDB4ZmYwMCkge1xuICAgIGIgKz0gODtcbiAgICBhID4+Pj0gODtcbiAgfVxuICBpZiAoYSAmIDB4ZjApIHtcbiAgICBiICs9IDQ7XG4gICAgYSA+Pj49IDQ7XG4gIH1cbiAgaWYgKGEgJiAxMikge1xuICAgIGIgKz0gMjtcbiAgICBhID4+Pj0gMjtcbiAgfVxuICBpZiAoYSAmIDIpIHtcbiAgICBiICs9IDE7XG4gICAgYSA+Pj49IDE7XG4gIH1cbiAgaWYgKGEgJiAxKSB7XG4gICAgYiArPSAxO1xuICB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA9PT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9ub3JtYWxpemVkXG5mdW5jdGlvbiBpc19kaWdpdF9ub3JtYWxpemVkKF9uYXQsIF9vZnMpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHggfCAwO1xuICAgIGlmICh4ID09PSB4ID4+PiAwKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0geDtcbiAgICBpZiAoeCA9PT0geCA+Pj4gMCkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcyArIGldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gY2FycnlfaW4gPT09IDEgPyAwIDogMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcyArIGldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9ycm93ID09PSAxID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSBjYXJyeV9pbiA9PT0gMSA/IDAgOiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGJvcnJvdyA9PT0gMSA/IDAgOiAxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gbmF0My5kYXRhW29mczNdID4+PiAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9XG4gICAgICAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgK1xuICAgICAgKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApICogKGEgJiAweDAwMDBmZmZmKSArXG4gICAgICBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4MiAvIDY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzIC8gNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZiAobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgbGVuMixcbiAgICAgIGxlbjEgLSBsZW4yLFxuICAgICAgbmF0X29mX2FycmF5KFtjYXJyeV0pLFxuICAgICAgMCxcbiAgICAgIDEsXG4gICAgICAwLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgaSxcbiAgICAgIGxlbjEgLSBpLFxuICAgICAgbmF0MixcbiAgICAgIG9mczIsXG4gICAgICBsZW4yLFxuICAgICAgbmF0MyxcbiAgICAgIG9mczMgKyBpLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZiAobmJpdHMgPT09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiID4+PiAxNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4IC8gYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwZmZmZik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3IodyAvIGMpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IG5hdDEuZGF0YVtvZnMxICsgbGVuIC0gMV0gPj4+IDA7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvciAodmFyIGkgPSBsZW4gLSAyOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsIG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCk7XG4gICAgbmF0cS5kYXRhW29mc3EgKyBpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZiAobGVuMiA9PT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSArIDEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMiArIGxlbjIgLSAxKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIgKyBsZW4yIC0gMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIgKyAxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID1cbiAgICAgIGQgPT09IDQyOTQ5NjcyOTZcbiAgICAgICAgPyBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwXG4gICAgICAgIDogZGl2X2hlbHBlcihcbiAgICAgICAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsXG4gICAgICAgICAgICBuYXQxLmRhdGFbb2ZzMSArIGkgLSAxXSA+Pj4gMCxcbiAgICAgICAgICAgIGQsXG4gICAgICAgICAgKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMiArIDEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIgKyAxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiArIDEsIGEsIDAsIGxlbjIgKyAxLCAxKTtcblxuICAgIHdoaWxlIChcbiAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gIT09IDAgfHxcbiAgICAgIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMFxuICAgICkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMSArIGkgLSBsZW4yLCBsZW4yICsgMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmIChuYml0cyA9PT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYgKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmIChuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwID4gbmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgcmV0dXJuIDE7XG4gICAgaWYgKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAgPCBuYXQyLmRhdGFbb2ZzMiArIGldID4+PiAwKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeikge1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3opIHtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX3dpbjMyXG52YXIganNvb19pc193aW4zMiA9XG4gIGdsb2JhbFRoaXMuRGVubz8uYnVpbGQ/Lm9zID09PSBcIndpbmRvd3NcIiB8fFxuICBnbG9iYWxUaGlzLnByb2Nlc3M/LnBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGUgIT09IHVuZGVmaW5lZDtcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHNcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbmNsYXNzIE1sTm9kZURldmljZSB7XG4gIGNvbnN0cnVjdG9yKHJvb3QpIHtcbiAgICB0aGlzLmZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgfVxuXG4gIG5tKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yb290ICsgbmFtZTtcbiAgfVxuXG4gIGV4aXN0cyhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGlzRmlsZShuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpID8gMSA6IDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLCB7IG1vZGU6IG1vZGUgfSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICByZWFkZGlyKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGlzX2RpcihuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB1bmxpbmsobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgdXRpbWVzKG5hbWUsIGF0aW1lLCBtdGltZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXRpbWUgPT09IDAgJiYgbXRpbWUgPT09IDApIHtcbiAgICAgICAgYXRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gICAgICAgIG10aW1lID0gYXRpbWU7XG4gICAgICB9XG4gICAgICB0aGlzLmZzLnV0aW1lc1N5bmModGhpcy5ubShuYW1lKSwgYXRpbWUsIG10aW1lKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICB0cnVuY2F0ZShuYW1lLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy50cnVuY2F0ZVN5bmModGhpcy5ubShuYW1lKSwgbGVuIHwgMCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgY29uc3RzID0gdGhpcy5mcy5jb25zdGFudHM7XG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIga2V5IGluIGYpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5SX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuV19PSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICByZXMgfD0ganNvb19pc193aW4zMiA/IGNvbnN0cy5SX09LIDogY29uc3RzLlhfT0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5GX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5hY2Nlc3NTeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBwZXJtcywgcmFpc2VfdW5peCkge1xuICAgIHZhciBjb25zdHMgPSB0aGlzLmZzLmNvbnN0YW50cztcbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gZikge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInJkb25seVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRE9OTFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ3cm9ubHlcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmR3clwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRFdSO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXBwZW5kXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNyZWF0ZVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19DUkVBVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRydW5jYXRlXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX1RSVU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZXhjbFwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19FWENMO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fVEVYVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vbmJsb2NrXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm9jdHR5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PQ1RUWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRzeW5jXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0RTWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3luY1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19TWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMsIHBlcm1zKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIHJlbmFtZShvLCBuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKGpzb29faXNfd2luMzIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLm5tKG4pO1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5ubShvKTtcbiAgICAgICAgdmFyIHRhcmdldF9zdGF0cywgc291cmNlX3N0YXRzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRhcmdldF9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGFyZ2V0LCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgKHNvdXJjZV9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmMoc291cmNlLCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgc291cmNlX3N0YXRzLmlzRGlyZWN0b3J5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRhcmdldF9zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2xhc2godGFyZ2V0KS5zdGFydHNXaXRoKHRoaXMuc2xhc2goc291cmNlKSkpXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mcy5ybWRpclN5bmModGFyZ2V0KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCByZW5hbWUgJyR7c291cmNlfScgLT4gJyR7dGFyZ2V0fSdgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oZXJyLCB7XG4gICAgICAgICAgICAgIGVycm5vOiAtMjAsXG4gICAgICAgICAgICAgIGNvZGU6IFwiRU5PVERJUlwiLFxuICAgICAgICAgICAgICBzeXNjYWxsOiBcInJlbmFtZVwiLFxuICAgICAgICAgICAgICBwYXRoOiB0YXJnZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgbHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNobW9kKG5hbWUsIHBlcm1zLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2htb2RTeW5jKHRoaXMubm0obmFtZSksIHBlcm1zKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBsaW5rKHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgc3ltbGluayh0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMubm0ocGF0aCksXG4gICAgICAgIHRvX2RpciA9PT0gMCA/IG51bGwgOiB0b19kaXJbMV0gPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRsaW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCBcInV0ZjhcIik7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IG9jYW1sX3N0YXRzX2Zyb21fbm9kZV9zdGF0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdFxuZnVuY3Rpb24gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSkge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vIHwgMCxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAgbGFyZ2UgPyBjYW1sX2ludDY0X29mX2Zsb2F0KGpzX3N0YXRzLnNpemUpIDoganNfc3RhdHMuc2l6ZSB8IDAsXG4gICAganNfc3RhdHMuYXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMubXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMuY3RpbWVNcyAvIDEwMDAsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuY2xhc3MgTWxOb2RlRGV2aWNlIHt9XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvciwgb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzXG5jbGFzcyBNbE5vZGVGZCBleHRlbmRzIE1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKGZkLCBmbGFncykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mcyA9IHJlcXVpcmUoXCJub2RlOmZzXCIpO1xuICAgIHRoaXMuZmQgPSBmZDtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBzdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKGZkKTtcbiAgICAgIGZsYWdzLm5vU2VlayA9XG4gICAgICAgIHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHwgc3RhdHMuaXNGSUZPKCkgfHwgc3RhdHMuaXNTb2NrZXQoKTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5mbGFncy5hcHBlbmQgPyBzdGF0cy5zaXplIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFRoZSBmc3RhdCB3aWxsIGZhaWwgb24gc3RhbmRhcmQgc3RyZWFtcyB1bmRlciBXaW5kb3dzIHdpdGggbm9kZVxuICAgICAgLy8gMTggKGFuZCBsb3dlcikuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvcHVsbC8zODExLlxuICAgICAgZmxhZ3Mubm9TZWVrID0gdHJ1ZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5zZWVrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCwgbGVuIHwgMCk7XG4gICAgICBpZiAodGhpcy5vZmZzZXQgPiBsZW4pIHRoaXMub2Zmc2V0ID0gbGVuO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBpc2F0dHkoKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoXCJub2RlOnR0eVwiKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eSh0aGlzLmZkKSA/IDEgOiAwO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5mbGFncy5ub1NlZWsgfHwgIXRoaXMuc2Vla2VkKSB7XG4gICAgICAgIHZhciB3cml0dGVuID0gdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHdyaXR0ZW4gPSB0aGlzLmZzLndyaXRlU3luYyhcbiAgICAgICAgICB0aGlzLmZkLFxuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBidWZfb2Zmc2V0LFxuICAgICAgICAgIGxlbixcbiAgICAgICAgICB0aGlzLm9mZnNldCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2Zmc2V0ICs9IHdyaXR0ZW47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdHRlbjtcbiAgfVxuXG4gIHJlYWQoYSwgYnVmX29mZnNldCwgbGVuLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmZsYWdzLm5vU2VlayB8fCAhdGhpcy5zZWVrZWQpIHtcbiAgICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCB0aGlzLm9mZnNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9mZnNldCArPSByZWFkO1xuICAgICAgcmV0dXJuIHJlYWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlZWsob2Zmc2V0LCB3aGVuY2UsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5mbGFncy5ub1NlZWspIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRVNQSVBFXCIsIFwibHNlZWtcIiwgXCJpbGxlZ2FsIHNlZWtcIik7XG4gICAgfVxuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFSU5WQUxcIixcbiAgICAgICAgXCJsc2Vla1wiLFxuICAgICAgICBcImludmFsaWQgYXJndW1lbnRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgc3RhdChsYXJnZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjaG1vZChwZXJtcykge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZjaG1vZFN5bmModGhpcy5mZCwgcGVybXMpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSk7XG4gICAgfVxuICB9XG5cbiAgc3luYygpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5mc3luY1N5bmModGhpcy5mZCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShyYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrX3N0cmVhbV9zZW1hbnRpY3MoY21kKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIGNtZCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIGpzX3N0YXRzLmlzRmlsZSgpIHx8XG4gICAgICAgIGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNGSUZPKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNTb2NrZXQoKVxuICAgICAgKVxuICAgIClcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIGNtZCxcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5jbGFzcyBNbE5vZGVGZCB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpIHtcbiAgaWYgKGZsYWdzLmFsdG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MuYWx0bmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoX2ZkLCBfZmxhZ3MpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncywgbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4LCBjbWQpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoXG4gICAgICBlcnIuY29kZSxcbiAgICAgIGNtZCB8fCBlcnIuc3lzY2FsbCxcbiAgICAgIGVyci5wYXRoLFxuICAgICAgZXJyLmVycm5vLFxuICAgICk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxudmFyIGNhbWxfdW5wYWNrRmxvYXQxNiA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBwb3cgPSBNYXRoLnBvdztcblxuICB2YXIgRVhQX01BU0sxNiA9IDMxOyAvLyAyICoqIDUgLSAxXG4gIHZhciBTSUdOSUZJQ0FORF9NQVNLMTYgPSAxMDIzOyAvLyAyICoqIDEwIC0gMVxuICB2YXIgTUlOX1NVQk5PUk1BTDE2ID0gcG93KDIsIC0yNCk7IC8vIDIgKiogLTEwICogMiAqKiAtMTRcbiAgdmFyIFNJR05JRklDQU5EX0RFTk9NMTYgPSAwLjAwMDk3NjU2MjU7IC8vIDIgKiogLTEwXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChieXRlcykge1xuICAgIHZhciBzaWduID0gYnl0ZXMgPj4+IDE1O1xuICAgIHZhciBleHBvbmVudCA9IChieXRlcyA+Pj4gMTApICYgRVhQX01BU0sxNjtcbiAgICB2YXIgc2lnbmlmaWNhbmQgPSBieXRlcyAmIFNJR05JRklDQU5EX01BU0sxNjtcbiAgICBpZiAoZXhwb25lbnQgPT09IEVYUF9NQVNLMTYpXG4gICAgICByZXR1cm4gc2lnbmlmaWNhbmQgPT09IDBcbiAgICAgICAgPyBzaWduID09PSAwXG4gICAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICAgICA6IE51bWJlci5OYU47XG4gICAgaWYgKGV4cG9uZW50ID09PSAwKVxuICAgICAgcmV0dXJuIHNpZ25pZmljYW5kICogKHNpZ24gPT09IDAgPyBNSU5fU1VCTk9STUFMMTYgOiAtTUlOX1NVQk5PUk1BTDE2KTtcbiAgICB2YXIgciA9XG4gICAgICBwb3coMiwgZXhwb25lbnQgLSAxNSkgKlxuICAgICAgKHNpZ24gPT09IDBcbiAgICAgICAgPyAxICsgc2lnbmlmaWNhbmQgKiBTSUdOSUZJQ0FORF9ERU5PTTE2XG4gICAgICAgIDogLTEgLSBzaWduaWZpY2FuZCAqIFNJR05JRklDQU5EX0RFTk9NMTYpO1xuICAgIHJldHVybiByO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9wYWNrRmxvYXQxNlxudmFyIGNhbWxfcGFja0Zsb2F0MTYgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBJTlZFUlNFX09GX0VQU0lMT04gPSAxIC8gTnVtYmVyLkVQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUaWVzVG9FdmVuKG51bSkge1xuICAgIHJldHVybiBudW0gKyBJTlZFUlNFX09GX0VQU0lMT04gLSBJTlZFUlNFX09GX0VQU0lMT047XG4gIH1cblxuICBjb25zdCBGTE9BVDE2X01JTl9WQUxVRSA9IDYuMTAzNTE1NjI1ZS01O1xuICBjb25zdCBGTE9BVDE2X01BWF9WQUxVRSA9IDY1NTA0O1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT04gPSAwLjAwMDk3NjU2MjU7XG5cbiAgY29uc3QgRkxPQVQxNl9FUFNJTE9OX01VTFRJUExJRURfQllfRkxPQVQxNl9NSU5fVkFMVUUgPVxuICAgIEZMT0FUMTZfRVBTSUxPTiAqIEZMT0FUMTZfTUlOX1ZBTFVFO1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT05fREVWSURFRF9CWV9FUFNJTE9OID1cbiAgICBGTE9BVDE2X0VQU0lMT04gKiBJTlZFUlNFX09GX0VQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUb0Zsb2F0MTYobnVtKSB7XG4gICAgY29uc3QgbnVtYmVyID0gK251bTtcblxuICAgIC8vIE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSwgMCwgLTBcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpIHx8IG51bWJlciA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvLyBmaW5pdGUgZXhjZXB0IDAsIC0wXG4gICAgY29uc3Qgc2lnbiA9IG51bWJlciA+IDAgPyAxIDogLTE7XG4gICAgY29uc3QgYWJzb2x1dGUgPSBNYXRoLmFicyhudW1iZXIpO1xuXG4gICAgLy8gc21hbGwgbnVtYmVyXG4gICAgaWYgKGFic29sdXRlIDwgRkxPQVQxNl9NSU5fVkFMVUUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNpZ24gKlxuICAgICAgICByb3VuZFRpZXNUb0V2ZW4oXG4gICAgICAgICAgYWJzb2x1dGUgLyBGTE9BVDE2X0VQU0lMT05fTVVMVElQTElFRF9CWV9GTE9BVDE2X01JTl9WQUxVRSxcbiAgICAgICAgKSAqXG4gICAgICAgIEZMT0FUMTZfRVBTSUxPTl9NVUxUSVBMSUVEX0JZX0ZMT0FUMTZfTUlOX1ZBTFVFXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXAgPSAoMSArIEZMT0FUMTZfRVBTSUxPTl9ERVZJREVEX0JZX0VQU0lMT04pICogYWJzb2x1dGU7XG4gICAgY29uc3QgcmVzdWx0ID0gdGVtcCAtICh0ZW1wIC0gYWJzb2x1dGUpO1xuXG4gICAgLy8gbGFyZ2UgbnVtYmVyXG4gICAgaWYgKHJlc3VsdCA+IEZMT0FUMTZfTUFYX1ZBTFVFIHx8IE51bWJlci5pc05hTihyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gc2lnbiAqIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbiAqIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGJhc2UgYWxnb3JpdGhtOiBodHRwOi8vZm94LXRvb2xraXQub3JnL2Z0cC9mYXN0aGFsZmZsb2F0Y29udmVyc2lvbi5wZGZcblxuICBjb25zdCBiYXNlVGFibGUgPSBuZXcgVWludDE2QXJyYXkoNTEyKTtcbiAgY29uc3Qgc2hpZnRUYWJsZSA9IG5ldyBVaW50OEFycmF5KDUxMik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGNvbnN0IGUgPSBpIC0gMTI3O1xuXG4gICAgLy8gdmVyeSBzbWFsbCBudW1iZXIgKDAsIC0wKVxuICAgIGlmIChlIDwgLTI0KSB7XG4gICAgICBiYXNlVGFibGVbaV0gPSAweDAwMDA7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAyNDtcbiAgICAgIHNoaWZ0VGFibGVbaSB8IDB4MTAwXSA9IDI0O1xuXG4gICAgICAvLyBzbWFsbCBudW1iZXIgKGRlbm9ybSlcbiAgICB9IGVsc2UgaWYgKGUgPCAtMTQpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4MDQwMCA+PiAoLWUgLSAxNCk7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9ICgweDA0MDAgPj4gKC1lIC0gMTQpKSB8IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAtZSAtIDE7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAtZSAtIDE7XG5cbiAgICAgIC8vIG5vcm1hbCBudW1iZXJcbiAgICB9IGVsc2UgaWYgKGUgPD0gMTUpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IChlICsgMTUpIDw8IDEwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAoKGUgKyAxNSkgPDwgMTApIHwgMHg4MDAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDEzO1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMTM7XG5cbiAgICAgIC8vIGxhcmdlIG51bWJlciAoSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2UgaWYgKGUgPCAxMjgpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4N2MwMDtcbiAgICAgIGJhc2VUYWJsZVtpIHwgMHgxMDBdID0gMHhmYzAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDI0O1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMjQ7XG5cbiAgICAgIC8vIHN0YXkgKE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZVRhYmxlW2ldID0gMHg3YzAwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAweGZjMDA7XG4gICAgICBzaGlmdFRhYmxlW2ldID0gMTM7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAxMztcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7XG4gIGNvbnN0IGZsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgY29uc3QgdWludDMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAobnVtKSB7XG4gICAgZmxvYXRWaWV3WzBdID0gcm91bmRUb0Zsb2F0MTYobnVtKTtcbiAgICBjb25zdCBmID0gdWludDMyVmlld1swXTtcbiAgICBjb25zdCBlID0gKGYgPj4gMjMpICYgMHgxZmY7XG4gICAgcmV0dXJuIGJhc2VUYWJsZVtlXSArICgoZiAmIDB4MDA3ZmZmZmYpID4+IHNoaWZ0VGFibGVbZV0pO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgNzpcbiAgICBjYXNlIDEwOlxuICAgIGNhc2UgMTE6XG4gICAgICByZXR1cm4gMjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKSB7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIDA6XG4gICAgICB2aWV3ID0gRmxvYXQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgdmlldyA9IEZsb2F0NjRBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZpZXcgPSBJbnQ4QXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2aWV3ID0gVWludDhBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZpZXcgPSBJbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmlldyA9IFVpbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICB2aWV3ID0gSW50MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZpZXcgPSBJbnQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgdmlldyA9IEZsb2F0MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICB2aWV3ID0gRmxvYXQ2NEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHZpZXcgPSBVaW50OEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMzpcbiAgICAgIHZpZXcgPSBVaW50MTZBcnJheTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIjtcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG4vL1JlcXVpcmVzOiBjYW1sX3BhY2tGbG9hdDE2LCBjYW1sX3VucGFja0Zsb2F0MTZcbmNsYXNzIE1sX0JpZ2FycmF5IHtcbiAgY29uc3RydWN0b3Ioa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuZGltcyA9IGRpbXM7XG4gICAgdGhpcy5kYXRhID0gYnVmZmVyO1xuICAgIHRoaXMuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuICB9XG5cbiAgb2Zmc2V0KGFyZykge1xuICAgIHZhciBvZnMgPSAwO1xuICAgIGlmICh0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJnKSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYXJnLmxlbmd0aClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgICBpZiAodGhpcy5sYXlvdXQgPT09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgb2ZzID0gb2ZzICogdGhpcy5kaW1zW2ldICsgYXJnW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSkge1xuICAgICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBvZnMgPSBvZnMgKiB0aGlzLmRpbXNbaV0gKyAoYXJnW2ldIC0gMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZnM7XG4gIH1cblxuICBnZXQob2ZzKSB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgICAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLCBoKTtcbiAgICAgIGNhc2UgMTA6XG4gICAgICBjYXNlIDExOlxuICAgICAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgICAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICAgICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgcmV0dXJuIGNhbWxfdW5wYWNrRmxvYXQxNih0aGlzLmRhdGFbb2ZzXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW29mc107XG4gICAgfVxuICB9XG5cbiAgc2V0KG9mcywgdikge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIC8vIEludDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgICAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGFbb2ZzXSA9IGNhbWxfcGFja0Zsb2F0MTYodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSA3OlxuICAgICAgICAvLyBJbnQ2NFxuICAgICAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gYSA6IGI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHZhciBpbSA9IHZbMV07XG4gICAgICAgIHZhciByZSA9IHZbMl07XG4gICAgICAgIGlmIChpbSA9PT0gcmUpIHtcbiAgICAgICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gaW0gOiByZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGEuZmlsbChjYW1sX3BhY2tGbG9hdDE2KHYpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZShiLCB0b3RhbCkge1xuICAgIGlmICh0aGlzLmxheW91dCAhPT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9PSBiLmtpbmQpIHtcbiAgICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICAgIHZhciBrMiA9IGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICAgIHJldHVybiBrMiAtIGsxO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYi5kaW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICh0aGlzLmRpbXNbaV0gIT09IGIuZGltc1tpXSkgcmV0dXJuIHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSA/IC0xIDogMTtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIEZsb2F0c1xuICAgICAgICB2YXIgeCwgeTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICAgICAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoeCAhPT0geSkge1xuICAgICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE51bWJlci5OYU47XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih5KSkgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA8IGIuZGF0YVtpICsgMV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA+IGIuZGF0YVtpICsgMV0pIHJldHVybiAxO1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPj4+IDAgPCBiLmRhdGFbaV0gPj4+IDApIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4+PiAwID4gYi5kYXRhW2ldID4+PiAwKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGFhID0gY2FtbF91bnBhY2tGbG9hdDE2KHRoaXMuZGF0YVtpXSk7XG4gICAgICAgICAgdmFyIGJiID0gY2FtbF91bnBhY2tGbG9hdDE2KGIuZGF0YVtpXSk7XG4gICAgICAgICAgaWYgKGFhIDwgYmIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYWEgPiBiYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDk6XG4gICAgICBjYXNlIDEyOlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmNsYXNzIE1sX0JpZ2FycmF5X2NfMV8xIGV4dGVuZHMgTWxfQmlnYXJyYXkge1xuICBvZmZzZXQoYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCA9PT0gMSkgYXJnID0gYXJnWzBdO1xuICAgICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gICAgfVxuICAgIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgZ2V0KG9mcykge1xuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbiAgfVxuXG4gIHNldChvZnMsIHYpIHtcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLCBiLCB0b3RhbCkge1xuICByZXR1cm4gYS5jb21wYXJlKGIsIHRvdGFsKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSkge1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmIChjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmIChcbiAgICBsYXlvdXQgPT09IDAgJiYgLy8gY19sYXlvdXRcbiAgICBkaW1zLmxlbmd0aCA9PT0gMSAmJiAvLyBBcnJheTFcbiAgICBzaXplX3Blcl9lbGVtZW50ID09PSAxICYmXG4gICAga2luZCAhPT0gMTMgLy8gZmxvYXQxNlxuICApXG4gICAgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmIChiYS5sYXlvdXQgPT09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiBiMSB8IChiMiA8PCA4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMgKyAwKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzICsgMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMgKyAzKTtcbiAgcmV0dXJuIChiMSA8PCAwKSB8IChiMiA8PCA4KSB8IChiMyA8PCAxNikgfCAoYjQgPDwgMjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyArIDApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMgKyAyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyArIDMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzICsgNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMgKyA1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcyArIDYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzICsgNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCwgYjcsIGI2LCBiNSwgYjQsIGIzLCBiMiwgYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMgKyAwLCB2ICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZiAob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzICsgMCwgdiAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzICsgMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAzLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcyArIGksIHZbNyAtIGldKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9PSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gMTsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBiYS5kaW1zW2NoYW5nZWRfZGltXSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShcbiAgICBvZnMgKiBzaXplX3Blcl9lbGVtZW50LFxuICAgIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQsXG4gICk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpO1xuICBpZiAoYmEuY2FtbF9jdXN0b20gPT09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYmEuZGltc1tpXSA8IDB4ZmZmZikgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgY2FzZSA1OiAvLyBVaW50MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6IC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OiAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOiAvLyBGbG9hdDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAwOiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlKDgsIGJbal0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKSB7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmO1xuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW107XG4gIGlmIChuYW1lID09PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmIChzaXplX2RpbSA9PT0gMHhmZmZmKSB7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmIChzaXplX2RpbV9oaSAhPT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OiAvLyBJbnQzMkFycmF5IChpbnQpXG4gICAgY2FzZSA5OiAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICBpZiAoc2l4dHkpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiLFxuICAgICAgICApO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICAgIGJhLnNldChpLCBpbnQ2NCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTM6IC8vIEZsb2F0MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDA6IC8vIEZsb2F0MzJBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBbMjU0LCByZSwgaW1dKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBiYS5zZXQoaSwgWzI1NCwgcmUsIGltXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfYmFfY3JlYXRlX3Vuc2FmZV0gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIF9qc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKSB7XG4gIGlmIChkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09PSAyKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF91bnBhY2tGbG9hdDE2LCBjYW1sX2hhc2hfbWl4X2Zsb2F0MTYsIGNhbWxfaGFzaF9taXhfZmxvYXQzMlxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKSB7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgICAgdmFyIHcgPSAwLFxuICAgICAgICBpID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgKyA0IDw9IG51bV9lbHRzOyBpICs9IDQpIHtcbiAgICAgICAgdyA9XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDBdICYgMHhmZikgfFxuICAgICAgICAgICgoYmEuZGF0YVtpICsgMV0gJiAweGZmKSA8PCA4KSB8XG4gICAgICAgICAgKChiYS5kYXRhW2kgKyAyXSAmIDB4ZmYpIDw8IDE2KSB8XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDNdIDw8IDI0KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgICAgfVxuICAgICAgdyA9IDA7XG4gICAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICAgIHcgPSBiYS5kYXRhW2kgKyAyXSA8PCAxNjtcbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDFdIDw8IDg7XG4gICAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDogLy8gSW50MTZBcnJheVxuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGlmIChudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgICB2YXIgdyA9IDAsXG4gICAgICAgIGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSArIDIgPD0gbnVtX2VsdHM7IGkgKz0gMikge1xuICAgICAgICB3ID0gKGJhLmRhdGFbaSArIDBdICYgMHhmZmZmKSB8IChiYS5kYXRhW2kgKyAxXSA8PCAxNik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPT0gMCkgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgICBudW1fZWx0cyAqPSAyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMDogLy8gRmxvYXQzMkFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKylcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQzMihoLCBiYS5kYXRhW2ldKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMTogLy8gRmxvYXQ2NEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgaWYgKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdDE2KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQxNlxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQxNihoYXNoLCBkKSB7XG4gIC8qIE5vcm1hbGl6ZSBOYU5zICovXG4gIGlmICgoZCAmIDB4N2MwMCkgPT09IDB4N2MwMCAmJiAoZCAmIDB4MDNmZikgIT09IDApIHtcbiAgICBkID0gMHg3YzAxO1xuICB9IGVsc2UgaWYgKGQgPT09IDB4ODAwMCkge1xuICAgIC8qIE5vcm1hbGl6ZSAtMCBpbnRvICswICovXG4gICAgZCA9IDA7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQzMihoYXNoLCB2KSB7XG4gIHZhciBpID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KHYpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGkgJiAweDdmODAwMDAwKSA9PT0gMHg3ZjgwMDAwMCAmJiAoaSAmIDB4N2ZmZmZmKSAhPT0gMCkge1xuICAgIGkgPSAweDdmODAwMDAxO1xuICB9IGVsc2UgaWYgKGkgPT09ICgweDgwMDAwMDAwIHwgMCkpIHtcbiAgICAvKiBOb3JtYWxpemUgLTAgaW50byArMCAqL1xuICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG5vdCB1c2VkIGJ5IGNhbWxfaGFzaCBiZWNhdXNlIDAgYW5kIC0wIGxvb2tcbiAgICAvLyBsaWtlIGludGVnZXJzXG4gICAgaSA9IDA7XG4gIH1cbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGkpO1xuICByZXR1cm4gaGFzaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKSB7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpIHtcbiAgdmFyIGtpbmQ7XG4gIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKSB7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXlcbiAgICAgID8gbmV3IEludDMyQXJyYXkodGEuYnVmZmVyLCB0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpXG4gICAgICA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShcbiAgICBiYS5idWZmZXIsXG4gICAgYmEuYnl0ZU9mZnNldCxcbiAgICBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCxcbiAgKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSwgcG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMiwgcG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsIG9mczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UsIHBvczIpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pIHtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYgKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc3ViYXJyYXkocG9zMSwgcG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSwgb2ZzMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zdWJhcnJheShwb3MxLCBwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLCBvZnMyKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLCBvZnMxICsgbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQmxha2UyQiBpbiBwdXJlIEphdmFzY3JpcHRcbiAgLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuICAvLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbiAgLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4gIC8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbiAgLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuICBmdW5jdGlvbiBBREQ2NEFBKHYsIGEsIGIpIHtcbiAgICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdO1xuICAgIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV07XG4gICAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgICBvMSsrO1xuICAgIH1cbiAgICB2W2FdID0gbzA7XG4gICAgdlthICsgMV0gPSBvMTtcbiAgfVxuXG4gIC8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuICAvLyBTZXRzIHZbYSxhKzFdICs9IGJcbiAgLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuICBmdW5jdGlvbiBBREQ2NEFDKHYsIGEsIGIwLCBiMSkge1xuICAgIGxldCBvMCA9IHZbYV0gKyBiMDtcbiAgICBpZiAoYjAgPCAwKSB7XG4gICAgICBvMCArPSAweDEwMDAwMDAwMDtcbiAgICB9XG4gICAgbGV0IG8xID0gdlthICsgMV0gKyBiMTtcbiAgICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICAgIG8xKys7XG4gICAgfVxuICAgIHZbYV0gPSBvMDtcbiAgICB2W2EgKyAxXSA9IG8xO1xuICB9XG5cbiAgLy8gTGl0dGxlLWVuZGlhbiBieXRlIGFjY2Vzc1xuICBmdW5jdGlvbiBCMkJfR0VUMzIoYXJyLCBpKSB7XG4gICAgcmV0dXJuIGFycltpXSBeIChhcnJbaSArIDFdIDw8IDgpIF4gKGFycltpICsgMl0gPDwgMTYpIF4gKGFycltpICsgM10gPDwgMjQpO1xuICB9XG5cbiAgLy8gRyBNaXhpbmcgZnVuY3Rpb25cbiAgLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuICBmdW5jdGlvbiBCMkJfRyhhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgICBjb25zdCB4MCA9IG1baXhdO1xuICAgIGNvbnN0IHgxID0gbVtpeCArIDFdO1xuICAgIGNvbnN0IHkwID0gbVtpeV07XG4gICAgY29uc3QgeTEgPSBtW2l5ICsgMV07XG5cbiAgICBBREQ2NEFBKHYsIGEsIGIpOyAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICAgIEFERDY0QUModiwgYSwgeDAsIHgxKTsgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgICBsZXQgeG9yMCA9IHZbZF0gXiB2W2FdO1xuICAgIGxldCB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXTtcbiAgICB2W2RdID0geG9yMTtcbiAgICB2W2QgKyAxXSA9IHhvcjA7XG5cbiAgICBBREQ2NEFBKHYsIGMsIGQpO1xuXG4gICAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDI0IGJpdHNcbiAgICB4b3IwID0gdltiXSBeIHZbY107XG4gICAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV07XG4gICAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KTtcbiAgICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KTtcblxuICAgIEFERDY0QUEodiwgYSwgYik7XG4gICAgQURENjRBQyh2LCBhLCB5MCwgeTEpO1xuXG4gICAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgICB4b3IwID0gdltkXSBeIHZbYV07XG4gICAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV07XG4gICAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNik7XG4gICAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpO1xuXG4gICAgQURENjRBQSh2LCBjLCBkKTtcblxuICAgIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gICAgeG9yMCA9IHZbYl0gXiB2W2NdO1xuICAgIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdO1xuICAgIHZbYl0gPSAoeG9yMSA+Pj4gMzEpIF4gKHhvcjAgPDwgMSk7XG4gICAgdltiICsgMV0gPSAoeG9yMCA+Pj4gMzEpIF4gKHhvcjEgPDwgMSk7XG4gIH1cblxuICAvLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbiAgY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgICAweGYzYmNjOTA4LCAweDZhMDllNjY3LCAweDg0Y2FhNzNiLCAweGJiNjdhZTg1LCAweGZlOTRmODJiLCAweDNjNmVmMzcyLFxuICAgIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gICAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOSxcbiAgXSk7XG5cbiAgY29uc3QgU0lHTUE4ID0gW1xuICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsXG4gICAgMTMsIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNixcbiAgICA3LCAxLCA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LFxuICAgIDcsIDIsIDQsIDEwLCAxNSwgMTQsIDEsIDExLCAxMiwgNiwgOCwgMywgMTMsIDIsIDEyLCA2LCAxMCwgMCwgMTEsIDgsIDMsIDQsXG4gICAgMTMsIDcsIDUsIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LFxuICAgIDExLCAxMywgMTEsIDcsIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLFxuICAgIDMsIDAsIDgsIDEyLCAyLCAxMywgNywgMSwgNCwgMTAsIDUsIDEwLCAyLCA4LCA0LCA3LCA2LCAxLCA1LCAxNSwgMTEsIDksIDE0LFxuICAgIDMsIDEyLCAxMywgMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLFxuICAgIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLFxuICBdO1xuXG4gIC8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuICAvLyBNdWx0aXBseSB0aGVtIGFsbCBieSAyIHRvIG1ha2UgdGhlbSBvZmZzZXRzIGludG8gYSB1aW50MzIgYnVmZmVyLFxuICAvLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG4gIGNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgICBTSUdNQTgubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4geCAqIDI7XG4gICAgfSksXG4gICk7XG5cbiAgLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuICAvLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbiAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheSgzMik7XG4gIGNvbnN0IG0gPSBuZXcgVWludDMyQXJyYXkoMzIpO1xuICBmdW5jdGlvbiBibGFrZTJiQ29tcHJlc3MoY3R4LCBsYXN0KSB7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB2W2ldID0gY3R4LmhbaV07XG4gICAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV07XG4gICAgfVxuXG4gICAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gICAgdlsyNF0gPSB2WzI0XSBeIGN0eC50O1xuICAgIHZbMjVdID0gdlsyNV0gXiAoY3R4LnQgLyAweDEwMDAwMDAwMCk7XG4gICAgLy8gaGlnaCA2NCBiaXRzIG5vdCBzdXBwb3J0ZWQsIG9mZnNldCBtYXkgbm90IGJlIGhpZ2hlciB0aGFuIDIqKjUzLTFcblxuICAgIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICAgIGlmIChsYXN0KSB7XG4gICAgICB2WzI4XSA9IH52WzI4XTtcbiAgICAgIHZbMjldID0gfnZbMjldO1xuICAgIH1cblxuICAgIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgIG1baV0gPSBCMkJfR0VUMzIoY3R4LmIsIDQgKiBpKTtcbiAgICB9XG5cbiAgICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAgIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gICAgLy8gYW5kIG1hdGNoIHRoZSBSRkMgc2FtcGxlIGRvY3VtZW50YXRpb25cbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKTtcbiAgICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pO1xuICAgICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSk7XG4gICAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKTtcbiAgICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pO1xuICAgICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKTtcbiAgICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSk7XG4gICAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldXNhYmxlIHBhcmFtZXRlckJsb2NrXG4gIGNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMjA6IHJmdVxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDI0OiByZnVcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAyODogcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMzI6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAzNjogc2FsdFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDQwOiBzYWx0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gNDQ6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA0ODogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1MjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1NjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA2MDogcGVyc29uYWxcbiAgXSk7XG5cbiAgLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4gIC8vIFJlcXVpcmVzIGFuIG91dHB1dCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NCBieXRlc1xuICAvLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuICBmdW5jdGlvbiBibGFrZTJiSW5pdChvdXRsZW4sIGtleSkge1xuICAgIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NFwiKTtcbiAgICB9XG4gICAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0XCIpO1xuICAgIH1cblxuICAgIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgYjogbmV3IFVpbnQ4QXJyYXkoMTI4KSxcbiAgICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgICAgYzogMCwgLy8gcG9pbnRlciB3aXRoaW4gYnVmZmVyXG4gICAgICBvdXRsZW46IG91dGxlbiwgLy8gb3V0cHV0IGxlbmd0aCBpbiBieXRlc1xuICAgIH07XG5cbiAgICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICAgIHBhcmFtZXRlckJsb2NrLmZpbGwoMCk7XG4gICAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW47XG4gICAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoO1xuICAgIHBhcmFtZXRlckJsb2NrWzJdID0gMTsgLy8gZmFub3V0XG4gICAgcGFyYW1ldGVyQmxvY2tbM10gPSAxOyAvLyBkZXB0aFxuXG4gICAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpO1xuICAgIH1cblxuICAgIGlmIChrZXkubGVuZ3RoID4gMCkge1xuICAgICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSk7XG4gICAgICAvLyBhdCB0aGUgZW5kXG4gICAgICBjdHguYyA9IDEyODtcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmVxdWlyZXMgaGFzaCBjb250ZXh0IGFuZCBVaW50OEFycmF5IChieXRlIGFycmF5KVxuICBmdW5jdGlvbiBibGFrZTJiVXBkYXRlKGN0eCwgaW5wdXQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICAgIGN0eC50ICs9IGN0eC5jOyAvLyBhZGQgY291bnRlcnNcbiAgICAgICAgYmxha2UyYkNvbXByZXNzKGN0eCwgZmFsc2UpOyAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICAgIGN0eC5jID0gMDsgLy8gY291bnRlciB0byB6ZXJvXG4gICAgICB9XG4gICAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbiAgZnVuY3Rpb24gYmxha2UyYkZpbmFsKGN0eCkge1xuICAgIGN0eC50ICs9IGN0eC5jOyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgICAgY3R4LmJbY3R4LmMrK10gPSAwO1xuICAgIH1cbiAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKTsgLy8gZmluYWwgYmxvY2sgZmxhZyA9IDFcblxuICAgIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgICAgb3V0W2ldID0gY3R4LmhbaSA+PiAyXSA+PiAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHJldHVybiB7IEluaXQ6IGJsYWtlMmJJbml0LCBVcGRhdGU6IGJsYWtlMmJVcGRhdGUsIEZpbmFsOiBibGFrZTJiRmluYWwgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9jcmVhdGUoaGFzaGxlbiwga2V5KSB7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmIChrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCwgNjQpO1xuICB9XG4gIHJldHVybiBibGFrZTJiLkluaXQoaGFzaGxlbiwga2V5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBfaGFzaGxlbikge1xuICAvLyBjdHgub3V0bGVuID09PSBoYXNobGVuXG4gIHZhciByID0gYmxha2UyYi5GaW5hbChjdHgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkocik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaW5wdXQgPSBpbnB1dC5zdWJhcnJheShvZnMsIG9mcyArIGxlbik7XG4gIGJsYWtlMmIuVXBkYXRlKGN0eCwgaW5wdXQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmX3N0ciwgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpO1xuICB2YXIgYnVmID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmX3N0cik7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2J5dGVzKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZShoYXNobGVuLCBrZXkpIHtcbiAgY29uc3Qga2V5X2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhrZXkpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleV9qc29vX3N0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWwsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBibGFrZTJfanNfZm9yX3dhc21fZmluYWwoY3R4LCBoYXNobGVuKSB7XG4gIHJldHVybiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikpO1xufVxuXG4vL1Byb3ZpZGVzOiBibGFrZTJfanNfZm9yX3dhc21fdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWYpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmX2pzb29fc3RyaW5nLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZSwgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGJ1Zik7XG4gIHJldHVybiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWZfanNvb19zdHJpbmcsIG9mcywgbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsIHRvcmVhZCkge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYgKHRvcmVhZCA8IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCwgYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhcbiAgICAgICAgY2hhbmlkLFxuICAgICAgICBidWZmZXIsXG4gICAgICAgIDAsXG4gICAgICAgIHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkLFxuICAgICAgKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsIGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xuICAgIHJldHVybiAoeCArIHkpIHwgMDtcbiAgfVxuICBmdW5jdGlvbiB4eChxLCBhLCBiLCB4LCBzLCB0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICh+YiAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmIH5kKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICAgIHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLFxuICAgICAgYiA9IHdbMV0sXG4gICAgICBjID0gd1syXSxcbiAgICAgIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclswXSwgNywgMHhkNzZhYTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxXSwgMTIsIDB4ZThjN2I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMl0sIDE3LCAweDI0MjA3MGRiKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzNdLCAyMiwgMHhjMWJkY2VlZSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls0XSwgNywgMHhmNTdjMGZhZik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls1XSwgMTIsIDB4NDc4N2M2MmEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE3LCAweGE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzddLCAyMiwgMHhmZDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls4XSwgNywgMHg2OTgwOThkOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls5XSwgMTIsIDB4OGI0NGY3YWYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhmZmZmNWJiMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NWNkN2JlKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2YjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweGZkOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4YTY3OTQzOGUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OWI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA1LCAweGY2MWUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzZdLCA5LCAweGMwNDBiMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1ZTVhNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMF0sIDIwLCAweGU5YjZjN2FhKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzVdLCA1LCAweGQ2MmYxMDVkKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweGQ4YTFlNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzRdLCAyMCwgMHhlN2QzZmJjOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcls5XSwgNSwgMHgyMWUxY2RlNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4YzMzNzA3ZDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbM10sIDE0LCAweGY0ZDUwZDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzhdLCAyMCwgMHg0NTVhMTRlZCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4YTllM2U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMl0sIDksIDB4ZmNlZmEzZjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbN10sIDE0LCAweDY3NmYwMmQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OGQyYTRjOGEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSwgNCwgMHhmZmZhMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcls4XSwgMTEsIDB4ODc3MWY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2ZDlkNjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweGZkZTUzODBjKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA0LCAweGE0YmVlYTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzRdLCAxMSwgMHg0YmRlY2ZhOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcls3XSwgMTYsIDB4ZjZiYjRiNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhiZWJmYmM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5YjdlYzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMF0sIDExLCAweGVhYTEyN2ZhKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzNdLCAxNiwgMHhkNGVmMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcls2XSwgMjMsIDB4MDQ4ODFkMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbOV0sIDQsIDB4ZDlkNGQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhlNmRiOTllNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFmYTI3Y2Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzJdLCAyMywgMHhjNGFjNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzBdLCA2LCAweGY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzddLCAxMCwgMHg0MzJhZmY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweGFiOTQyM2E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzVdLCAyMSwgMHhmYzkzYTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1YjU5YzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbM10sIDEwLCAweDhmMGNjYzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4ZmZlZmY0N2QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMV0sIDIxLCAweDg1ODQ1ZGQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzhdLCA2LCAweDZmYTg3ZTRmKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4ZmUyY2U2ZTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE1LCAweGEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NGUwODExYTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbNF0sIDYsIDB4Zjc1MzdlODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhiZDNhZjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsyXSwgMTUsIDB4MmFkN2QyYmIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbOV0sIDIxLCAweGViODZkMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH07XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtcbiAgICBsZW46IDAsXG4gICAgdzogbmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2XSksXG4gICAgYjMyOiBiMzIsXG4gICAgYjg6IGI4LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbikge1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYgKGluX2J1Zikge1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYgKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCwgaW5wdXRfbGVuKSwgaW5fYnVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLCBtaXNzaW5nKSwgaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUgKGlucHV0X2xlbiA+PSA2NCkge1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLCBpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmIChpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsIGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpIHtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZisrO1xuICBpZiAoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IgKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNTY7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspIHtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MWZmZmZmZmY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKSB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweGZmO1xuICByZXR1cm4gdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LCBhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19kYXRhdmlld1xudmFyIGpzb29fZGF0YXZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKTtcblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuLy9SZXF1aXJlczoganNvb19kYXRhdmlld1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpIHtcbiAganNvb19kYXRhdmlldy5zZXRGbG9hdDY0KDAsIHgsIHRydWUpO1xuICB2YXIgbG8zMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpO1xuICB2YXIgaGkzMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgbG8gPSBsbzMyICYgMHhmZmZmZmY7XG4gIHZhciBtaSA9IChsbzMyID4+PiAyNCkgfCAoKGhpMzIgPDwgOCkgJiAweGZmZmZmZik7XG4gIHZhciBoaSA9IChoaTMyID4+PiAxNikgJiAweGZmZmY7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCh4KSB7XG4gIGpzb29fZGF0YXZpZXcuc2V0RmxvYXQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHggPiAwID8gXCJpbmZpbml0eVwiIDogXCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSB4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyAxIDogeCA+PSAwID8gMCA6IDE7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PT0gMCkge1xuICB9IGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSB7XG4gICAgICB4ICo9IDI7XG4gICAgICBleHAtLTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikge1xuICAgICAgeCAvPSAyO1xuICAgICAgZXhwKys7XG4gICAgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyBcIlwiIDogXCIrXCI7XG4gIHZhciBzaWduX3N0ciA9IFwiXCI7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9IFwiLVwiO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIDQzIC8qICcrJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIitcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMyIC8qICcgJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIiBcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLCBwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmIChwcmVjID49IDApIHtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIHhfc3RyICs9IFwiLlwiICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsIFwiMFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHggKyAxICsgcHJlYztcbiAgICAgIGlmICh4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgXCIwXCIpO1xuICAgICAgZWxzZSB4X3N0ciA9IHhfc3RyLnNsaWNlKDAsIHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXG4gICAgc2lnbl9zdHIgKyBcIjB4XCIgKyB4X3N0ciArIFwicFwiICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoMCwgbG8gfCAobWkgPDwgMjQpLCB0cnVlKTtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoNCwgKG1pID4+PiA4KSB8IChoaSA8PCAxNiksIHRydWUpO1xuICByZXR1cm4ganNvb19kYXRhdmlldy5nZXRGbG9hdDY0KDAsIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCh4LCB5KSB7XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkgfHwgTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gTnVtYmVyLk5hTjtcbiAgaWYgKHggPT09IHkpIHJldHVybiB5O1xuICBpZiAoeCA9PT0gMCkge1xuICAgIGlmICh5IDwgMCkgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NCk7XG4gICAgZWxzZSByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpO1xuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKHggPCB5ID09PSB4ID4gMCkgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSk7XG4gIGVsc2UgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSk7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2RhdGF2aWV3XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMoeCkge1xuICBqc29vX2RhdGF2aWV3LnNldFVpbnQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0RmxvYXQzMigwLCB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9PSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gTnVtYmVyLmlzTmFOKHgpID8gNCA6IDM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB2YXIgbmVnID0gMSAvIHggPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7XG4gICAgICBpID0gLWk7XG4gICAgICBmID0gLWY7XG4gICAgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKE51bWJlci5pc05hTih4KSkgcmV0dXJuIFswLCBOdW1iZXIuTmFOLCBOdW1iZXIuTmFOXTtcbiAgcmV0dXJuIFswLCAxIC8geCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0KHgsIGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7XG4gICAgICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0KHgpIHtcbiAgaWYgKHggPT09IDAgfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLXg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywgTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwgLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLXg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gIGlmICghTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0KHgsIHkpIHtcbiAgaWYgKHkgPT09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4geSA8IDAgPyAteCA6IHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuLy9BbGlhczogY2FtbF9zaWduYml0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4geCA8IDAgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmV4cG0xKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC5wb3coMiwgeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMXAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmxvZzIoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0KHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMTAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYWNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0KHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4geCAtIHkgPj0gMC41ID8geSArIDEgOiB5O1xuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiB5IC0geCA+PSAwLjUgPyB5IC0gMSA6IHk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguY2JydCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9XG4gICAgMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5KGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSBhaGkgKiBiaGkgLSBwICsgYWhpICogYmxvICsgYWxvICogYmhpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSBhIC0gKHMgLSB2KSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGp1c3QoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4XG4gICAgICA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKVxuICAgICAgOiB4O1xuICB9XG5cbiAgaWYgKHggPT09IDAgfHwgeSA9PT0gMCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpIHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHopKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiAoTWF0aC5hYnMoeHMgKiB5cykgKiA0KSAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgKCgoTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OKSAvIDQpICogRVBTSUxPTikgLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LCBkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gTnVtYmVyLnBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdChcIitcIilbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLCBlKTtcbiAgICAgICAgeCArPSBjYW1sX3N0cl9yZXBlYXQoZSwgXCIwXCIpO1xuICAgICAgICBpZiAoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyBcIi5cIiArIGNhbWxfc3RyX3JlcGVhdChkcCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH1cbiAgfVxuICB2YXIgcyxcbiAgICBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSBmLnByZWMgPCAwID8gNiA6IGYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IC14O1xuICB9XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkpIHtcbiAgICBzID0gXCJuYW5cIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBzID0gXCJpbmZcIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT09IFwiZVwiKVxuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgLSAxKSArIFwiMFwiICsgcy5zbGljZShpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZcIjpcbiAgICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgcHJlYyA9IHByZWMgPyBwcmVjIDogMTtcbiAgICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICAgIHZhciBqID0gcy5pbmRleE9mKFwiZVwiKTtcbiAgICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IGogLSAxO1xuICAgICAgICAgIHdoaWxlIChzLmNoYXJBdChpKSA9PT0gXCIwXCIpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT09IFwiLlwiKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PT0gXCJlXCIpXG4gICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSkgKyBcIjBcIiArIHMuc2xpY2UoaSAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgICBpZiAoZXhwIDwgMCkge1xuICAgICAgICAgICAgcCAtPSBleHAgKyAxO1xuICAgICAgICAgICAgcyA9IHgudG9GaXhlZChwKTtcbiAgICAgICAgICB9IGVsc2Ugd2hpbGUgKCgocyA9IHgudG9GaXhlZChwKSksIHMubGVuZ3RoID4gcHJlYyArIDEpKSBwLS07XG4gICAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKHMuY2hhckF0KGkpID09PSBcIjBcIikgaS0tO1xuICAgICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09PSBcIi5cIikgaS0tO1xuICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHZhciByX2Zsb2F0ID0gL14gKlstK10/KD86XFxkKlxcLj9cXGQrfFxcZCtcXC4/XFxkKikoPzpbZUVdWy0rXT9cXGQrKT8kLztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHJlcyA9ICtzO1xuICAvL0Zhc3QgcGF0aFxuICBpZiAoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCBcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKVxuICAgIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8kL2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmIChtKSB7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCBcIlwiKTtcbiAgICB2YXIgbWFudGlzc2EgPSBOdW1iZXIucGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9ICgrbVs1XSB8fCAwKSAtIDQgKiBtMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkoeCwgeSkge1xuICBpZiAoeS5mdW4pIHtcbiAgICB4LmZ1biA9IHkuZnVuO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgeC5mdW4gPSB5O1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBpID0geS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9WZXJzaW9uOiA8IDUuNFxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYoeCkge1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pO1xuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2xhenlcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2xhenkoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlfbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15X2xhenkoZHVtbXksIG5ld3ZhbCkge1xuICBzd2l0Y2ggKGNhbWxfb2JqX3RhZyhuZXd2YWwpKSB7XG4gICAgY2FzZSAyNDY6IC8vIExhenlcbiAgICBjYXNlIDI0NDogLy8gRm9yY2luZ1xuICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkXG4gICAgICBjYW1sX3VwZGF0ZV9kdW1teShkdW1teSwgbmV3dmFsKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBkdW1teVsxXSA9IG5ld3ZhbDtcbiAgICAgIGR1bW15WzBdID0gMjUwO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyh4KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpICYmIHhbMF0gPT09IHhbMF0gPj4+IDApIHJldHVybiB4WzBdO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKSByZXR1cm4gMjUyO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSkgcmV0dXJuIDI1MjtcbiAgZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAyNDc7XG4gIGVsc2UgaWYgKHg/LmNhbWxfY3VzdG9tKSByZXR1cm4gMjU1O1xuICBlbHNlIHJldHVybiAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcoeCwgdGFnKSB7XG4gIHhbMF0gPSB0YWc7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sodGFnLCBzaXplKSB7XG4gIC8vIFRPRE86IGZhaWwgZm9yIHZhbHVlIHRoYXQgYXJlIG5vdCByZXByZXNlbnRlZCBhcyBhbiBhcnJheVxuICB2YXIgbyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gIG9bMF0gPSB0YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLCB4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGw7IGkrKykgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIiA/IHggOiB4LnNsaWNlKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUoeCwgcykge1xuICBpZiAocyA8PSAwIHx8IHMgKyAxID4geC5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9PSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkKGIsIHYpIHtcbiAgYlswXSA9IDI1MDtcbiAgYlsxXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LCBpLCBvbGQsIG4pIHtcbiAgaWYgKHhbaSArIDFdID09PSBvbGQpIHtcbiAgICB4W2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZChfeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQodikge1xuICByZXR1cm4gWzI1MCwgdl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcblxuLy9Qcm92aWRlczogY2FtbF9vb19jYWNoZV9pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tZXRob2RfY2FjaGVcbmZ1bmN0aW9uIGNhbWxfb29fY2FjaGVfaWQoKSB7XG4gIHZhciBjYWNoZWlkID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoO1xuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IDA7XG4gIGNhY2hlaWQ7XG59XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NhY2hlZF9tZXRob2QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG5mdW5jdGlvbiBjYW1sX2dldF9jYWNoZWRfbWV0aG9kKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAobWV0aHNbb2ZzICsgNF0gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgKyAzXTtcbiAgfVxuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSAtIDM7XG4gIHJldHVybiBtZXRoc1tsaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gdGFnID09PSBtZXRoc1tsaSArIDFdID8gbWV0aHNbbGldIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQoYikge1xuICBiWzJdID0gY2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobywgaSkge1xuICByZXR1cm4gb1tpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobywgaSwgdikge1xuICByZXR1cm4gKG9baSArIDFdID0gdik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKF9vKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KF92LCBfb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLCBvLCBuKSB7XG4gIGlmIChiWzBdID09PSBvKSB7XG4gICAgYlswXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KG8pICYmXG4gICAgb1swXSA9PT0gb1swXSA+Pj4gMCAmJlxuICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpXG4gICkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ0LCAyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDQsIDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiBjYW1sX29ial90YWcobykgPT09IDI1MCA/IG9bMV0gOiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gdCA9PT0gMjQ1ID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2lkZW50aWZpZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2N1c3RvbV9pZGVudGlmaWVyKG8pIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG8uY2FtbF9jdXN0b20gfHwgXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZ2NfcmFtcF91cFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF91cChmKSB7XG4gIHZhciBhID0gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xuICB2YXIgc3VzcGVuZGVkID0gMDtcbiAgcmV0dXJuIFswLCBhLCBzdXNwZW5kZWRdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2djX3JhbXBfZG93blxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF9kb3duKF9zdXNwZW5kZWRfY29sbGVjdGlvbl93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfY3VycmVudF9zdGFjay54XS5cbkV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFja1xud2hlbiBlbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuXG5IYW5kbGVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suaF1cbmFuZCB0aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suZV0uXG5UbyBpbnN0YWxsIGFuIGVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aywgeCwgaCwgZX0gd2hlcmVcbi8vIC0gaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVycyAoc2VlIGVmZmVjdC5tbClcbi8vIC0gayBpcyB0aGUgbG93IGxldmVsIGNvbnRpbnVhdGlvblxuLy8gLSB4IGlzIHRoZSBleGNlcHRpb24gc3RhY2tcbi8vIC0gZSBpcyB0aGUgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2N1cnJlbnRfc3RhY2sueCA9IHsgaDogaGFuZGxlciwgdDogY2FtbF9jdXJyZW50X3N0YWNrLnggfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KVxuICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgdGhyb3cgeDtcbiAgICB9O1xuICB2YXIgaCA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfdW5oYW5kbGVkXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3VuaGFuZGxlZChlZmYpIHtcbiAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICB0aHJvdyBleG47XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnRcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgaykge1xuICBpZiAoIXN0YWNrKVxuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoXG4gICAgICBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIiksXG4gICAgKTtcbiAgaWYgKGxhc3QgPT09IDApIHtcbiAgICBsYXN0ID0gc3RhY2s7XG4gICAgLy8gUHJlIE9DYW1sIDUuMiwgbGFzdCB3YXMgbm90IHBvcHVsYXRlZC5cbiAgICB3aGlsZSAobGFzdC5lICE9PSAwKSBsYXN0ID0gbGFzdC5lO1xuICB9XG4gIGNhbWxfY3VycmVudF9zdGFjay5rID0gaztcbiAgbGFzdC5lID0gY2FtbF9jdXJyZW50X3N0YWNrO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBzdGFjaztcbiAgcmV0dXJuIHN0YWNrLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIGMgPSBjYW1sX2N1cnJlbnRfc3RhY2suZTtcbiAgY2FtbF9jdXJyZW50X3N0YWNrLmUgPSAwO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBjO1xuICByZXR1cm4gYy5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfZnJlc2hfb29faWRcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKSB7XG4gIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgaWYgKGV4bikgZXhuID0gWzAsIGV4biwgZWZmXTtcbiAgZWxzZSB7XG4gICAgZXhuID0gW1xuICAgICAgMjQ4LFxuICAgICAgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksXG4gICAgICBjYW1sX2ZyZXNoX29vX2lkKDApLFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGswKSB7XG4gIGlmIChjYW1sX2N1cnJlbnRfc3RhY2suZSA9PT0gMCkge1xuICAgIHZhciBleG4gPSBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKTtcbiAgICB0aHJvdyBleG47XG4gIH1cbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFszXTtcbiAgdmFyIGxhc3RfZmliZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2s7XG4gIGxhc3RfZmliZXIuayA9IGswO1xuICB2YXIgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgbGFzdF9maWJlciwgbGFzdF9maWJlcl07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpXG4gICAgPyBjYW1sX2dldF9jcHNfZnVuKGhhbmRsZXIpKGVmZiwgY29udCwgbGFzdF9maWJlciwgazEpXG4gICAgOiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsIFtlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVwZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXBlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgbGFzdCwgazApIHtcbiAgaWYgKGNhbWxfY3VycmVudF9zdGFjay5lID09PSAwKSB7XG4gICAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICAgIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgazApO1xuICAgIHRocm93IGV4bjtcbiAgfVxuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay5oWzNdO1xuICB2YXIgbGFzdF9maWJlciA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgbGFzdF9maWJlci5rID0gazA7XG4gIGxhc3QuZSA9IGxhc3RfZmliZXI7XG4gIGNvbnRbMl0gPSBsYXN0X2ZpYmVyO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9nZXRfY3BzX2Z1bihoYW5kbGVyKShlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxKVxuICAgIDogY2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLCBbZWZmLCBjb250LCBsYXN0X2ZpYmVyLCBrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2dldF9jcHNfZnVuKGYpIHtcbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2Nwc19mdW5cbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfY3BzX2Z1bihmKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIHRvIGdldCB0aGUgZWZmZWN0IGhhbmRsZXIuIElmIHRoZVxuICAvLyBlZmZlY3QgaGFuZGxlciBoYXMgbm8gQ1BTIGZ1bmN0aW9uLCB3ZSBrbm93IHRoYXQgd2UgY2FuIGRpcmVjdGx5XG4gIC8vIGNhbGwgdGhlIGRpcmVjdCB2ZXJzaW9uIGluc3RlYWQuXG4gIHJldHVybiBmLmNwcyA/IGYuY3BzIDogZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5fY3BzLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2NhbGwoZiwgeCkge1xuICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9jYWxsX2dlbl9jcHMoZiwgYXJncylcbiAgICA6IGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZiwgYXJncywgMCk7XG59XG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2h2YWwoeCkge1xuICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICB2YXIgZiA9IGNhbWxfY3VycmVudF9zdGFjay5oWzFdO1xuICByZXR1cm4gY2FtbF9hbGxvY19zdGFja19jYWxsKGYsIHgpO1xufVxuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFja19oZXhuKGUpIHtcbiAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgdmFyIGYgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFsyXTtcbiAgcmV0dXJuIGNhbWxfYWxsb2Nfc3RhY2tfY2FsbChmLCBlKTtcbn1cbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICB2YXIgaGFuZGxlcnMgPSBbMCwgaHYsIGh4LCBoZl07XG4gIHJldHVybiB7XG4gICAgazogY2FtbF9hbGxvY19zdGFja19odmFsLFxuICAgIHg6IHsgaDogY2FtbF9hbGxvY19zdGFja19oZXhuLCB0OiAwIH0sXG4gICAgaDogaGFuZGxlcnMsXG4gICAgZTogMCxcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKF9odiwgX2h4LCBfaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjayA9IGNvbnRbMV07XG4gIGNvbnRbMV0gPSAwO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoXG4gIGNvbnQsXG4gIGh2YWwsXG4gIGhleG4sXG4gIGhlZmYsXG4pIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBpZiAoc3RhY2sgPT09IDApIHJldHVybiBzdGFjaztcbiAgdmFyIGxhc3QgPSBjb250WzJdO1xuICBsYXN0LmhbMV0gPSBodmFsO1xuICBsYXN0LmhbMl0gPSBoZXhuO1xuICBsYXN0LmhbM10gPSBoZWZmO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIHsgY29uZGl0aW9uOiAxIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KF90LCBfbXV0ZXh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3Rcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbChfdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3VtZVxuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuX2NwcywgY2FtbF9jdXJyZW50X3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXN1bWUoZiwgYXJnLCBzdGFjaywgbGFzdCkge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgayA9IGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBsYXN0LCBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfSk7XG4gICAgLyogTm90ZTogZiBpcyBub3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24gYnV0IGEgKGRpcmVjdC1zdHlsZSwgQ1BTKSBjbG9zdXJlIHBhaXIgKi9cbiAgICB2YXIgcmVzID0geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBbYXJnLCBrXSwgam9vX2RpcmVjdDogMCB9O1xuICAgIGRvIHtcbiAgICAgIC8qIEF2b2lkcyB0cmFtcG9saW5pbmcgdG9vIG9mdGVuIHdoaWxlIHN0aWxsIGF2b2lkaW5nIHN0YWNrIG92ZXJmbG93LiBTZWVcbiAgICAgICAgIFtjYW1sX2NhbGxiYWNrXS4gKi9cbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IHJlcy5qb29fZGlyZWN0XG4gICAgICAgICAgPyByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncylcbiAgICAgICAgICA6IGNhbWxfY2FsbF9nZW5fY3BzKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0ge1xuICAgICAgICAgIGpvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldLFxuICAgICAgICAgIGpvb19kaXJlY3Q6IDEsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSB3aGlsZSAocmVzPy5qb29fYXJncyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Nwc19jbG9zdXJlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfY3BzX2Nsb3N1cmUoZGlyZWN0X2YsIGNwc19mKSB7XG4gIGRpcmVjdF9mLmNwcyA9IGNwc19mO1xuICByZXR1cm4gZGlyZWN0X2Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXNzdW1lX25vX3BlcmZvcm1cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vSWY6ICFkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfYXNzdW1lX25vX3BlcmZvcm0oZikge1xuICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICBhMlswXSA9IDA7XG4gIGZvciAodmFyIGkyID0gMSwgaTEgPSBpICsgMTsgaTIgPD0gbGVuOyBpMisrLCBpMSsrKSB7XG4gICAgYTJbaTJdID0gYVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfc3ViIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfc3ViXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfc3ViKGEsIGksIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9zdWIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9zdWJcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfc3ViKGEsIGksIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9zdWIoYSwgaSwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCxcbiAgICBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMSArIGwyIC0gMTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsXG4gICAgaiA9IDE7XG4gIGZvciAoOyBpIDwgbDE7IGkrKykgYVtpXSA9IGExW2ldO1xuICBmb3IgKDsgaSA8IGw7IGkrKywgaisrKSBhW2ldID0gYTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYXBwZW5kIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYXBwZW5kXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9hcHBlbmQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9hcHBlbmRcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICByZXR1cm4gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9BbGlhczogY2FtbF9hcnJheV9zZXRfZmxvYXRcbi8vQWxpYXM6IGNhbWxfZmxvYXRhcnJheV9zZXRcbi8vQWxpYXM6IGNhbWxfYXJyYXlfc2V0X2FkZHJcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0KGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCArIDFdID0gbmV3dmFsO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2FycmF5X2dldF9mbG9hdFxuLy9BbGlhczogY2FtbF9mbG9hdGFycmF5X2dldFxuLy9BbGlhczogY2FtbF9hcnJheV9nZXRfYWRkclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXggKyAxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnJheVtvZnMgKyBpICsgMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZChhcnJheSwgb2ZzLCBsZW4sIHYpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2NoZWNrX2JvdW5kX2dlblxuLy9BbGlhczogY2FtbF9jaGVja19ib3VuZF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X21ha2UgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDQpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfbWFrZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X21ha2UobGVuLCBpbml0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NyZWF0ZV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9hcnJheV9jcmVhdGVfZmxvYXQobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbikge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2UgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0YXJyYXlfbWFrZVxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlX3VuYm94ZWQobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2Zsb2F0YXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X21ha2Vcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZShsZW4sIGluaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDVcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsIG4pIHtcbiAgaWYgKGNhbWxfZG9tYWluX2RscyAhPT0gb2xkKSByZXR1cm4gMDtcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpIHtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZF9maWVsZFxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWRfZmllbGQoYiwgaSkge1xuICByZXR1cm4gYltpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLCBvLCBuKSB7XG4gIGlmIChyZWZbMV0gPT09IG8pIHtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXNfZmllbGQoYiwgaSwgbywgbikge1xuICBpZiAoYltpICsgMV0gPT09IG8pIHtcbiAgICBiW2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGQoYiwgaSwgbikge1xuICB2YXIgb2xkID0gYltpICsgMV07XG4gIGJbaSArIDFdICs9IG47XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2VfZmllbGQoYiwgaSwgdikge1xuICB2YXIgciA9IGJbaSArIDFdO1xuICBiW2kgKyAxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246ID49IDUuMCwgPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdO1xuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKF91bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudChfdW5pdCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faW5kZXhcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMDNcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2luZGV4KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbi8vVmVyc2lvbjogPj0gNVxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMTtcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsIHRlcm1fc3luYykge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbiAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gIC8vVE9ETzogZml4IGV4biBjYXNlXG4gIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDE7XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLCBtdXRleCkge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIF9yZXMgPSBjYW1sX2NhbGxiYWNrKGYsIFswXSk7XG4gIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX2ludDMyX2Zvcm1hdFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZm9ybWF0XG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT09IFwiJWRcIilcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiICsgaSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgaWYgKGYuc2lnbmVkY29udikge1xuICAgICAgZi5zaWduID0gLTE7XG4gICAgICBpID0gLWk7XG4gICAgfSBlbHNlIGkgPj4+PSAwO1xuICB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0KG4sIFwiMFwiKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Uocykge1xuICB2YXIgaSA9IDAsXG4gICAgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLFxuICAgIGJhc2UgPSAxMCxcbiAgICBzaWduID0gMSxcbiAgICBzaWduZWRuZXNzID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkpIHtcbiAgICAgIGNhc2UgNDU6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDM6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgICAgY2FzZSAxMjA6XG4gICAgICBjYXNlIDg4OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTE6XG4gICAgICBjYXNlIDc5OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk4OlxuICAgICAgY2FzZSA2NjpcbiAgICAgICAgc2lnbmVkbmVzcyA9IDA7XG4gICAgICAgIGJhc2UgPSAyO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTc6XG4gICAgICBjYXNlIDg1OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZSwgc2lnbmVkbmVzc107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IGNhbWxfaW50MzJfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlKHMpO1xuICB2YXIgaSA9IHJbMF0sXG4gICAgc2lnbiA9IHJbMV0sXG4gICAgYmFzZSA9IHJbMl0sXG4gICAgc2lnbmVkbmVzcyA9IHJbM107XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSBpIDwgbGVuID8gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA6IDA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKzsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmIChzaWduZWRuZXNzICYmIChyZXMgfCAwKSAhPT0gcmVzKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfbXVsXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9tdWxcbi8vQWxpYXM6ICVpbnRfbXVsXG5mdW5jdGlvbiBjYW1sX211bChhLCBiKSB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX2RpdlxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZGl2XG4vL0FsaWFzOiAlaW50X2RpdlxuZnVuY3Rpb24gY2FtbF9kaXYoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4gKHggLyB5KSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX21vZFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfbW9kXG4vL0FsaWFzOiAlaW50X21vZFxuZnVuY3Rpb24gY2FtbF9tb2QoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4geCAlIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNiBjb25zdFxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoeCAmIDB4MDBmZikgPDwgOCkgfCAoKHggJiAweGZmMDApID4+IDgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwIGNvbnN0XG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoXG4gICAgKCh4ICYgMHgwMDAwMDBmZikgPDwgMjQpIHxcbiAgICAoKHggJiAweDAwMDBmZjAwKSA8PCA4KSB8XG4gICAgKCh4ICYgMHgwMGZmMDAwMCkgPj4+IDgpIHxcbiAgICAoKHggJiAweGZmMDAwMDAwKSA+Pj4gMjQpXG4gICk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsIGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTEgfCAwKTtcbiAgZCA9IChkIDw8IDE1KSB8IChkID4+PiAoMzIgLSAxNSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9IChoIDw8IDEzKSB8IChoID4+PiAoMzIgLSAxMykpOyAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpIHwgMCkgKyAoMHhlNjU0NmI2NCB8IDApKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsKGgsIDB4ODVlYmNhNmIgfCAwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsKGgsIDB4YzJiMmFlMzUgfCAwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0KGhhc2gsIHYwKSB7XG4gIHZhciBpNjQgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodjApO1xuICB2YXIgbCA9IGNhbWxfaW50NjRfbG8zMihpNjQpO1xuICB2YXIgaCA9IGNhbWxfaW50NjRfaGkzMihpNjQpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGggJiAweDdmZjAwMDAwKSA9PT0gMHg3ZmYwMDAwMCAmJiAobCB8IChoICYgMHhmZmZmZikpICE9PSAwKSB7XG4gICAgaCA9IDB4N2ZmMDAwMDA7XG4gICAgbCA9IDB4MDAwMDAwMDE7XG4gIH0gZWxzZSBpZiAoaCA9PT0gKDB4ODAwMDAwMDAgfCAwKSAmJiBsID09PSAwKSB7XG4gICAgLyogTm9ybWFsaXplIC0wIGludG8gKzAgKi9cbiAgICAvLyBUaGlzIGNvZGUgcGF0aCBpcyBub3QgdXNlZCBieSBjYW1sX2hhc2ggYmVjYXVzZSAwIGFuZCAtMCBsb29rXG4gICAgLy8gbGlrZSBpbnRlZ2Vyc1xuICAgIGggPSAwO1xuICB9XG4gIGhhc2ggPSBjYW1sX2hhc2hfbWl4X2ludChoYXNoLCBsKTtcbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGgpO1xuICByZXR1cm4gaGFzaDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCxcbiAgICBpLFxuICAgIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9XG4gICAgICBzLmNoYXJDb2RlQXQoaSkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgOCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMikgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICAgIGNhc2UgMzpcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgIHcgPSBzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDE2O1xuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSAyOlxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgdyB8PSBzLmNoYXJDb2RlQXQoaSArIDEpIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsXG4gICAgaSxcbiAgICB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldIHwgKHNbaSArIDFdIDw8IDgpIHwgKHNbaSArIDJdIDw8IDE2KSB8IChzW2kgKyAzXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgICBjYXNlIDM6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3ID0gc1tpICsgMl0gPDwgMTY7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDI6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3IHw9IHNbaSArIDFdIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHNbaV07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpO1xuICAvKiBBUlJBWSAqLyBlbHNlIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07XG4gIHJkID0gMDtcbiAgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2Py5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiZcbiAgICAgICAgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2hcbiAgICAgICkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGhoKTtcbiAgICAgICAgbnVtLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHZbMF0gPT09ICh2WzBdIHwgMCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgICBjYXNlIDI0ODpcbiAgICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgICAgbnVtLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUwOlxuICAgICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHYpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodiB8IDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdiArIHYgKyAxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCB2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNmZmZmZmZmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdikge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzZmZmZmZmZjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSkge1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpXG4gICAgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpXG4gICAgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSlcbiAgICByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBhWzBdID09PSBhWzBdID4+PiAwICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuIHRhZyA9PT0gMjU0ID8gMCA6IHRhZztcbiAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKVxuICAgIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcilcbiAgICByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYT8uY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhPy5jb21wYXJlKVxuICAgIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpIHtcbiAgcmV0dXJuIChcbiAgICBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmVcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYgKGNvbXApIHtcbiAgICB2YXIgeCA9IHN3YXAgPiAwID8gY29tcChjdXN0b20sIG51bSwgdG90YWwpIDogY29tcChudW0sIGN1c3RvbSwgdG90YWwpO1xuICAgIGlmICh0b3RhbCAmJiBOdW1iZXIuaXNOYU4oeCkpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt4KSkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZiAoKHggfCAwKSAhPT0gMCkgcmV0dXJuIHggfCAwOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvciAoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZiAodGFnX2EgPT09IDI1MCkge1xuICAgICAgICBhID0gYVsxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYgKHRhZ19iID09PSAyNTApIHtcbiAgICAgICAgYiA9IGJbMV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmICh0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYgKHRhZ19hID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19iID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZ19iID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19hID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdfYSA8IHRhZ19iID8gLTEgOiAxO1xuICAgICAgfVxuICAgICAgLy8gdGFnX2EgPSB0YWdfYlxuICAgICAgc3dpdGNoICh0YWdfYSkge1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pIHwgMDtcbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYikgfCAwO1xuICAgICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGluIGNhbWxfY29tcGFyZV92YWxfdGFnXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgICBpZiAoY29tcCAhPT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jYW1sX2N1c3RvbSA8IGIuY2FtbF9jdXN0b20gPyAtMSA6IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY29tcCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgICAgdmFyIHggPSBjb21wKGEsIGIsIHRvdGFsKTtcbiAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICAgIHJldHVybiB0b3RhbCA/IC0xIDogeDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09ICh4IHwgMCkpIHtcbiAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHggfCAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLCB0b3RhbCk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih4KSkge1xuICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAtMSA6IHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh4ICE9PSAoeCB8IDApKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4IHwgMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgICBhID0gK2E7XG4gICAgICAgICAgYiA9ICtiO1xuICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOdW1iZXIuTmFOO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYSkpIHJldHVybiAxO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYikpIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBMYXp5X3RhZyBvciBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDE7XG4gICAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfY29tcGFyZVxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZShhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDA7XG4gIHJldHVybiAxO1xufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA9PT0gMCk7XG59XG5cbi8vIE1heSByYWlzZVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCh4LCB5KSB7XG4gIHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCwgeSwgZmFsc2UpICE9PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA+PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPiAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA8PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPCAwKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG4vL1ZlcnNpb246ID49IDUuMVxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKF9ldmVudCwgX2V2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vVmVyc2lvbjogPj0gNS4wLCA8IDUuMlxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vVmVyc2lvbjogPj01LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IoX3RhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKF9jdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoX2N1cnNvciwgX2NhbGxiYWNrcywgX251bSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoIGNvbnN0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG4gIHZhciBhYiA9IEFycmF5QnVmZmVyLFxuICAgIHU4ID0gVWludDhBcnJheSxcbiAgICB1MTYgPSBVaW50MTZBcnJheSxcbiAgICBpMTYgPSBJbnQxNkFycmF5LFxuICAgIGkzMiA9IEludDMyQXJyYXk7XG4gIHZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKSBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aCkgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbiAgfTtcbiAgdmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbCkgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMCkgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcykgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG4gIH07XG4gIHZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKSBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICAgKi9cbiAgLy8gZXJyb3IgY29kZXNcbiAgdmFyIGVjID0gW1xuICAgIFwiaW52YWxpZCB6c3RkIGRhdGFcIixcbiAgICBcIndpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQilcIixcbiAgICBcImludmFsaWQgYmxvY2sgdHlwZVwiLFxuICAgIFwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoXCIsXG4gICAgXCJtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2tcIixcbiAgICBcInVuZXhwZWN0ZWQgRU9GXCIsXG4gIF07XG4gIHZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KSB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xuICB9O1xuICB2YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCxcbiAgICAgIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKSBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgdmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7XG4gIH07XG4gIC8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxuICB2YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09PSAweDJmYjUyOCAmJiBkYXRbM10gPT09IDI1Mykge1xuICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLFxuICAgICAgICBjYyA9IChmbGcgPj4gMikgJiAxLFxuICAgICAgICBkZiA9IGZsZyAmIDMsXG4gICAgICAgIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgaWYgKGZsZyAmIDgpIGVycigwKTtcbiAgICAgIC8vIGJ5dGVcbiAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgIHZhciBkYiA9IGRmID09PSAzID8gNCA6IGRmO1xuICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgYnQgKz0gZGI7XG4gICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICB2YXIgZnNiID0gZmNmID8gMSA8PCBmY2YgOiBzcztcbiAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArIChmY2YgPT09IDEgJiYgMjU2KTtcbiAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICBpZiAoIXNzKSB7XG4gICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICB9XG4gICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KSBlcnIoMSk7XG4gICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09PSAxID8gZnNzIHx8IHdzIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAoYnVmWzBdID0gMSksIChidWZbNF0gPSA0KSwgKGJ1Zls4XSA9IDgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGw6IDAsXG4gICAgICAgIGQ6IGRpLFxuICAgICAgICB3OiB3ICYmIHcgIT09IDEgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgZTogd3MsXG4gICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgIHU6IGZzcyxcbiAgICAgICAgYzogY2MsXG4gICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT09IDB4MTg0ZDJhNSkge1xuICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbiAgfTtcbiAgLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbiAgdmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7IDEgPDwgYml0cyA8PSB2YWw7ICsrYml0cyk7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xuICB9O1xuICAvLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG4gIHZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKSBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osXG4gICAgICBzeW0gPSAtMSxcbiAgICAgIHJlID0gLTEsXG4gICAgICBpID0gLTEsXG4gICAgICBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgLy8gbWFza1xuICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICh0cG9zICYgNykpICZcbiAgICAgICAgbXNrO1xuICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgaWYgKHN2YWwgPCBtc3YpICh0cG9zICs9IGJpdHMpLCAodmFsID0gc3ZhbCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgaWYgKHZhbCA+IG1zazFmYikgdmFsIC09IG1zdjtcbiAgICAgIH1cbiAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICBpZiAodmFsID09PSAtMSkge1xuICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICB9IGVsc2UgcHJvYnMgLT0gdmFsO1xuICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgfSB3aGlsZSAocmUgPT09IDMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKSBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKSBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgLy8gbnVtIGJpdHNcbiAgICAgIHZhciBuYiA9IChuYml0c1tpXSA9IGFsIC0gbXNiKG5zKSk7XG4gICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAodHBvcyArIDcpID4+IDMsXG4gICAgICB7XG4gICAgICAgIGI6IGFsLFxuICAgICAgICBzOiBzeW1zLFxuICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgdDogbnN0YXRlLFxuICAgICAgfSxcbiAgICBdO1xuICB9O1xuICAvLyByZWFkIGh1ZmZtYW5cbiAgdmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsXG4gICAgICB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSxcbiAgICAgIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSxcbiAgICAgICAgZWJ0ID0gX2FbMF0sXG4gICAgICAgIGZkdCA9IF9hWzFdO1xuICAgICAgYnQgKz0gaGI7XG4gICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgLy8gbGFzdCBieXRlXG4gICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgIHZhciBzdDEgPSAwLFxuICAgICAgICBzdDIgPSAwLFxuICAgICAgICBidHIxID0gZmR0LmIsXG4gICAgICAgIGJ0cjIgPSBidHIxO1xuICAgICAgLy8gZnNlIHBvc1xuICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICBpZiAoZnBvcyA8IGVwb3MpIGJyZWFrO1xuICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICBzdDEgKz1cbiAgICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgIGlmIChmcG9zIDwgZXBvcykgYnJlYWs7XG4gICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgc3QyICs9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgfVxuICAgICAgaWYgKCsrd2MgPiAyNTUpIGVycigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgIH1cbiAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgIGlmICh3dCA+IDExKSBlcnIoMCk7XG4gICAgICB3ZXMgKz0gd3QgJiYgMSA8PCAod3QgLSAxKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKSBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgKytyY1soaHdbaV0gPSB3dCAmJiBtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksXG4gICAgICBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgZmlsbChuYiwgaSwgcHYsIChyaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPT0gdHMpIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgKHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgYnQsXG4gICAgICB7XG4gICAgICAgIG46IG5iLFxuICAgICAgICBiOiBtYixcbiAgICAgICAgczogc3ltcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbiAgLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuICAvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbiAgLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxuICB2YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsXG4gICAgICAxNDYsIDQsXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxuICB2YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsXG4gICAgICA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDksXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG4gIHZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXSksXG4gICAgMCxcbiAgICA1LFxuICApWzFdO1xuICAvLyBiaXRzIHRvIGJhc2VsaW5lXG4gIHZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsXG4gICAgICBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICBibFtpXSA9IHM7XG4gICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xuICB9O1xuICAvLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG4gIHZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoXG4gICAgLyojX19QVVJFX18gKi8gbmV3IGkzMihbXG4gICAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTMsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgMzYsXG4gICk7XG4gIC8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG4gIHZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuICAvLyBtYXRjaCBsZW5ndGggYml0c1xuICB2YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KFxuICAgIC8qI19fUFVSRV9fICovIG5ldyBpMzIoW1xuICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCxcbiAgICAgIDI1MjU3OTA4NCwgMTYsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgNTMsXG4gICk7XG4gIC8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxuICB2YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbiAgLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG4gIHZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsXG4gICAgICBzcyA9IG91dC5sZW5ndGgsXG4gICAgICBsYiA9IGRhdFtsZW4gLSAxXSxcbiAgICAgIG1zayA9ICgxIDw8IGh1LmIpIC0gMSxcbiAgICAgIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYikgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsXG4gICAgICBidHIgPSBodS5iLFxuICAgICAgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLFxuICAgICAgaSA9IC0xO1xuICAgIHdoaWxlIChwb3MgPiBlYiAmJiBpIDwgc3MpIHtcbiAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICBwb3MgLT0gYnRyID0gaHUubltzdF07XG4gICAgfVxuICAgIGlmIChwb3MgIT09IGViIHx8IGkgKyAxICE9PSBzcykgZXJyKDApO1xuICB9O1xuICAvLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbiAgLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbiAgdmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLFxuICAgICAgc3oxID0gKHNzICsgMykgPj4gMixcbiAgICAgIHN6MiA9IHN6MSA8PCAxLFxuICAgICAgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShcbiAgICAgIGRhdC5zdWJhcnJheShidCwgKGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpKSxcbiAgICAgIG91dC5zdWJhcnJheSgwLCBzejEpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbiAgfTtcbiAgLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbiAgdmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLFxuICAgICAgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09PSAxKSB7XG4gICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIChzdC55ICs9IHN6KSk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT09IDApIHtcbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICBpZiAob3V0KSB7XG4gICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09PSAyKSB7XG4gICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgIHZhciBiMyA9IGRhdFtidF0sXG4gICAgICAgIGxidCA9IGIzICYgMyxcbiAgICAgICAgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgdmFyIGxzcyA9IGIzID4+IDQsXG4gICAgICAgIGxjcyA9IDAsXG4gICAgICAgIHM0ID0gMDtcbiAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgIGlmIChzZiAmIDEpIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKHNmICYgMiAmJiBkYXRbKytidF0gPDwgMTIpO1xuICAgICAgICBlbHNlIGxzcyA9IGIzID4+IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHNmO1xuICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSxcbiAgICAgICAgICAgIChsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikpO1xuICAgICAgICBlbHNlIGlmIChzZiA9PT0gMilcbiAgICAgICAgICAobHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCkpO1xuICAgICAgfVxuICAgICAgKytidDtcbiAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgaWYgKGxidCA9PT0gMCkgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsc3MpKSwgc3BsKTtcbiAgICAgIGVsc2UgaWYgKGxidCA9PT0gMSkgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgIGlmIChsYnQgPT09IDIpIHtcbiAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCFodSkgZXJyKDApO1xuICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsY3MpKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgIH1cbiAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBpZiAobnMgPT09IDI1NSkgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdmMDA7XG4gICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KSBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKHNjbSAmIDMpIGVycigwKTtcbiAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgIGlmIChtZCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgYjogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMikge1xuICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgKF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSkpLCAoYnQgPSBfYVswXSksIChkdHNbaV0gPSBfYVsxXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMykge1xuICAgICAgICAgICAgaWYgKCFzdC50KSBlcnIoMCk7XG4gICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgX2IgPSAoc3QudCA9IGR0cyksXG4gICAgICAgICAgbWx0ID0gX2JbMF0sXG4gICAgICAgICAgb2N0ID0gX2JbMV0sXG4gICAgICAgICAgbGx0ID0gX2JbMl07XG4gICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLFxuICAgICAgICAgIGNidCA9IHNwb3MgPj4gMyxcbiAgICAgICAgICBvdWJ0ID0gMDtcbiAgICAgICAgdmFyIGxzdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgdmFyIG9zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgdmFyIG1zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICBmb3IgKCsrbnM7IC0tbnM7ICkge1xuICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgdmFyIG9mZiA9XG4gICAgICAgICAgICBvZnAgK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDFdIDw8IDgpIHxcbiAgICAgICAgICAgICAgKGRhdFtjYnQgKyAyXSA8PCAxNikgfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+XG4gICAgICAgICAgICAgIChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKG9mcCAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICB2YXIgbWwgPVxuICAgICAgICAgICAgbWxibFttbGNdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICAgICAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgdmFyIGxsID1cbiAgICAgICAgICAgIGxsYmxbbGxjXSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj5cbiAgICAgICAgICAgICAgKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgbHN0ID1cbiAgICAgICAgICAgIGxsdC50W2xzdF0gK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgIG1zdCA9XG4gICAgICAgICAgICBtbHQudFttc3RdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICBvc3QgPVxuICAgICAgICAgICAgb2N0LnRbb3N0XSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9PSAwKTtcbiAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgb2ZmID0gaWR4ID09PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgIGlmIChpZHggPiAxKSBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICB9IGVsc2Ugb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICAob3VidCArPSBsbCksIChzcGwgKz0gbGwpO1xuICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgaWYgKGxlbiA+IG1sKSBsZW4gPSBtbDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChvdWJ0ICs9IGxlbiksIChtbCAtPSBsZW4pLCAoc3RpbiA9IDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdWJ0ICE9PSBzcGwpIHtcbiAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICBpZiAob3V0KSBzdC55ICs9IG91YnQ7XG4gICAgICAgIGVsc2UgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNwbCkgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgIH1cbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG4gIH07XG4gIC8vIGNvbmNhdFxuICB2YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09PSAxKSByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfTtcbiAgLyoqXG4gICAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICAgKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gICAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICAgKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gICAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAgICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsXG4gICAgICBidWZzID0gW10sXG4gICAgICBuYiA9ICshYnVmLFxuICAgICAgb2wgPSAwO1xuICAgIHdoaWxlIChkYXQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgIGlmICh0eXBlb2Ygc3QgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT09IHN0LnUpIHtcbiAgICAgICAgICAgIGJ1ZnMucHVzaCgoYnVmID0gc3QudykpO1xuICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKCFzdC5sKSB7XG4gICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgIGlmICghYmxrKSBlcnIoNSk7XG4gICAgICAgICAgaWYgKGJ1Zikgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ0ID0gc3QuYiArIHN0LmMgKiA0O1xuICAgICAgfSBlbHNlIGJ0ID0gc3Q7XG4gICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbiAgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbDtcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUoX3VuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gMztcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMjtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX25vbmVcbnZhciBjYW1sX2VwaGVfbm9uZSA9IHsgY2FtbF9lcGhlX25vbmU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfZGF0YV9vcHRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgdmFyIG9sZCA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB2IGluc3RhbmNlb2YgT2JqZWN0KSB2ID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHgpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZShuKSB7XG4gIHJldHVybiBjYW1sX3dlYWtfY3JlYXRlKG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUobikge1xuICB2YXIgYWxlbiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgdmFyIHggPSBuZXcgQXJyYXkoYWxlbik7XG4gIHhbMF0gPSAyNTE7XG4gIHhbMV0gPSBcImNhbWxfZXBoZV9saXN0X2hlYWRcIjtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhbGVuOyBpKyspIHtcbiAgICB4W2ldID0gY2FtbF9lcGhlX25vbmU7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYgKHYgPT09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdlsxXSk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5cbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmICh3ZWFrID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGlmIChnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gICAgaWYgKHdlYWsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gY2FtbF9lcGhlX25vbmU7XG4gICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYgKHdlYWsgPT09IGNhbWxfZXBoZV9ub25lKSByZXR1cm4gMDtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgICBpZiAod2VhayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIHZhciBvbGQgPSBjYW1sX2VwaGVfZ2V0X2RhdGEoYTEpO1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KFxuICAgIGExLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgIGEyLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgIGxlbixcbiAgKTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdChhMiwgb2xkKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YSwgY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHNyYyk7XG4gIGNhbWxfZXBoZV9zZXRfZGF0YV9vcHQoZHN0LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfbm9uZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpIHtcbiAgdmFyIGRhdGEgPSB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmIChkYXRhID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGZvciAodmFyIGkgPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoZ2xvYmFsVGhpcy5XZWFrTWFwKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmdldChrKTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgZGF0YV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCkge1xuICB2YXIgciA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKHIgPT09IDApIHJldHVybiAwO1xuICB2YXIgeiA9IHJbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSkge1xuICBmb3IgKHZhciBpID0geC5sZW5ndGggLSAxOyBpID49IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBpLS0pIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChnbG9iYWxUaGlzLldlYWtNYXApIHtcbiAgICAgICAgZGF0YSA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKS5zZXQoaywgZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0KHgsIGRhdGFfb3B0KSB7XG4gIGlmIChkYXRhX29wdCA9PT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGFfb3B0WzFdKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCkge1xuICB2YXIgZGF0YSA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGRhdGEgPT09IDApIHJldHVybiAwO1xuICBlbHNlIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcihfdW5pdCkge1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT09IFwiZnVuY3Rpb25cIikgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKF91bml0KSB7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PT0gXCJmdW5jdGlvblwiKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoX3VuaXQpIHtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09PSBcImZ1bmN0aW9uXCIpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbihfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIFsyNTQsIDAsIDAsIDBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG4vL1JlcXVpcmVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQodW5pdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KF91bml0KSB7XG4gIHJldHVybiBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIoX2YsIF94KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKTtcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUoY2IsIGEpIHtcbiAgaWYgKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpIHtcbiAgICAgIGFsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTtcbiAgICAgIGNiKDApO1xuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuICAgIHgucmVnaXN0ZXIoYSwgeCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZShfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQoX3JhdGUsIF9zdGFja19zaXplLCBfdHJhY2tlcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKF90KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2Vcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKF93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChfbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG4vL1ZlcnNpb246IDwgNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQoX24pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID0ge1xuICAgIGp1c3RpZnk6IFwiK1wiLFxuICAgIHNpZ25zdHlsZTogXCItXCIsXG4gICAgZmlsbGVyOiBcIiBcIixcbiAgICBhbHRlcm5hdGU6IGZhbHNlLFxuICAgIGJhc2U6IDAsXG4gICAgc2lnbmVkY29udjogZmFsc2UsXG4gICAgd2lkdGg6IDAsXG4gICAgdXBwZXJjYXNlOiBmYWxzZSxcbiAgICBzaWduOiAxLFxuICAgIHByZWM6IC0xLFxuICAgIGNvbnY6IFwiZlwiLFxuICB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgZi5qdXN0aWZ5ID0gXCItXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIitcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgIGYuc2lnbnN0eWxlID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOlxuICAgICAgICBmLmZpbGxlciA9IFwiMFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCIjXCI6XG4gICAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMVwiOlxuICAgICAgY2FzZSBcIjJcIjpcbiAgICAgIGNhc2UgXCIzXCI6XG4gICAgICBjYXNlIFwiNFwiOlxuICAgICAgY2FzZSBcIjVcIjpcbiAgICAgIGNhc2UgXCI2XCI6XG4gICAgICBjYXNlIFwiN1wiOlxuICAgICAgY2FzZSBcIjhcIjpcbiAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgIGYud2lkdGggPSAwO1xuICAgICAgICB3aGlsZSAoKChjID0gZm10LmNoYXJDb2RlQXQoaSkgLSA0OCksIGMgPj0gMCAmJiBjIDw9IDkpKSB7XG4gICAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiLlwiOlxuICAgICAgICBmLnByZWMgPSAwO1xuICAgICAgICBpKys7XG4gICAgICAgIHdoaWxlICgoKGMgPSBmbXQuY2hhckNvZGVBdChpKSAtIDQ4KSwgYyA+PSAwICYmIGMgPD0gOSkpIHtcbiAgICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZFwiOlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICBmLmJhc2UgPSA4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6XG4gICAgICBjYXNlIFwiZlwiOlxuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcIkZcIjpcbiAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9PSBcIi1cIikpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT09IFwiK1wiICYmIGYuZmlsbGVyID09PSBcIiBcIilcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gXCIgXCI7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9IFwiLVwiO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9PSBcIi1cIikgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT09IDgpIGJ1ZmZlciArPSBcIjBcIjtcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZSA/IFwiMFhcIiA6IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCIrXCIgJiYgZi5maWxsZXIgPT09IFwiMFwiKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIjBcIjtcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCItXCIpIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIiBcIjtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYgKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoW1xuICAgIDAsXG4gICAgY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpLFxuICBdKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGUgPSBjdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbykge1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiICsgbmFtZSArIFwiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmICghKGluZm8gPT09IFwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZiAoIXRhcmdldCkgdGFyZ2V0ID0gXCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYgKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKTtcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdyA/IE51bWJlci5wYXJzZUludCh3KSA6IDIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiICsgdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoID8gTnVtYmVyLnBhcnNlSW50KGgpIDogMjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiICsgaCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsIHRhcmdldCwgc3BlY3Muam9pbihcIixcIikpO1xuICBpZiAoIXdpbikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpO1xuICB9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsIHcsIGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCkge1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsIGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLCBjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gXCJib3R0b21cIjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcywgdywgaCkge1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXM6IGNhbnZhcyxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGxpbmVfd2lkdGg6IDEsXG4gICAgZm9udDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZTogMjYsXG4gICAgY29sb3I6IDB4MDAwMDAwLFxuICAgIHRpdGxlOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpLFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KSByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmIChzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgaWYgKHcgIT09IHMuY2FudmFzLndpZHRoKSBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIGlmIChoICE9PSBzLmNhbnZhcy5oZWlnaHQpIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHMuY2FudmFzLndpZHRoLCBzLmNhbnZhcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gXCJcIiArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSBcIjBcIiArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhciByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gICAgZyA9IChjb2xvciA+PiA4KSAmIDB4ZmYsXG4gICAgYiA9IChjb2xvciA+PiAwKSAmIDB4ZmY7XG4gIHMuY29sb3IgPSBjb2xvcjtcbiAgdmFyIGNfc3RyID0gXCIjXCIgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgsIHkpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIChkWzFdID1cbiAgICAoY29sb3IgPj4gOCkgJlxuICAgIDB4ZmYpLCAvL2dcbiAgICAoZFsyXSA9IChjb2xvciA+PiAwKSAmIDB4ZmYpOyAvL2JcbiAgZFszXSA9IDB4ZmY7IC8vYVxuICBzLnggPSB4O1xuICBzLnkgPSB5O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLCB4LCBzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbSA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCwgcy5oZWlnaHQgLSB5LCAxLCAxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54ID0geDtcbiAgcy55ID0geTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngsIHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LCBzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueCA9IHg7XG4gIHMueSA9IHk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LCB5LCB3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCwgcy5oZWlnaHQgLSB5LCB3LCAtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsIGN4LCBjeSwgcnksIHJ4LCBhMSwgYTIpIHtcbiAgd2hpbGUgKGExID4gYTIpIGEyICs9IDM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLFxuICAgIHhQb3MsXG4gICAgeVBvcyxcbiAgICB4UG9zX3ByZXYsXG4gICAgeVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCArIHJ5KSAvIDIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9ICgoYTIgLSBhMSkgKiBNYXRoLlBJKSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IG51bTsgaisrKSB7XG4gICAgeFBvcyA9XG4gICAgICBjeCAtXG4gICAgICByeCAqIE1hdGguc2luKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnkgKiBNYXRoLmNvcyhpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9XG4gICAgICBjeSArXG4gICAgICByeSAqIE1hdGguY29zKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnggKiBNYXRoLnNpbihpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYgIT09IHhQb3MgfHwgeVBvc19wcmV2ICE9PSB5UG9zKSB7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXYgPSB4UG9zO1xuICAgIHlQb3NfcHJldiA9IHlQb3M7XG4gICAgaSAtPSBkZWx0YTsgLy9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LCB5LCByeCwgcnksIGExLCBhMikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCwgeCwgcy5oZWlnaHQgLSB5LCByeCwgcnksIGExLCBhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gdztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCwgeSwgdywgaCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LCBzLmhlaWdodCAtIHksIHcsIC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLCBzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLCBzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSwgcy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgsIHksIHJ4LCByeSwgYTEsIGEyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LCB4LCBzLmhlaWdodCAtIHksIHJ4LCByeSwgYTEsIGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIsIHMueCwgcy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpIHtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cikge1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsIHcsIHMudGV4dF9zaXplXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDE7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodywgaCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB3OyBqKyspIHtcbiAgICAgIHZhciBjID0gYXJyW2kgKyAxXVtqICsgMV07XG4gICAgICB2YXIgbyA9IGkgKiAodyAqIDQpICsgaiAqIDQ7XG4gICAgICBpZiAoYyA9PT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAoYyA+PiAxNikgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IChjID4+IDgpICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAoYyA+PiAwKSAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKSB7XG4gIHZhciBkYXRhID0gWzBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltLmhlaWdodDsgaSsrKSB7XG4gICAgZGF0YVtpICsgMV0gPSBbMF07XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbS53aWR0aDsgaisrKSB7XG4gICAgICB2YXIgbyA9IGkgKiAoaW0ud2lkdGggKiA0KSArIGogKiA0LFxuICAgICAgICByID0gaW0uZGF0YVtvICsgMF0sXG4gICAgICAgIGcgPSBpbS5kYXRhW28gKyAxXSxcbiAgICAgICAgYiA9IGltLmRhdGFbbyArIDJdO1xuICAgICAgZGF0YVtpICsgMV1baiArIDFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSwgeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmICghaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwgMCwgMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCB4LCBzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9O1xuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSwgeCwgcy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgsIHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLCB4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgeCxcbiAgICBzLmhlaWdodCAtIGltLmhlaWdodCAtIHksXG4gICAgaW0ud2lkdGgsXG4gICAgaW0uaGVpZ2h0LFxuICApO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSArIDFdID0gaW0yLmRhdGFbaSArIDFdO1xuICAgIGltLmRhdGFbaSArIDJdID0gaW0yLmRhdGFbaSArIDJdO1xuICAgIGltLmRhdGFbaSArIDNdID0gaW0yLmRhdGFbaSArIDNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChfYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KF9hLCBfYiwgX2MsIF9kKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KF9hKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6IC8mL2csIGx0OiAvPC9nLCBxdW90OiAvXCIvZywgYWxsOiAvWyY8XCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZShzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvO1xuICBpZiAocy5tYXRjaChlbnRpdHkpKSB7XG4gICAgdmFyIHN0cixcbiAgICAgIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcbiAgICB0ZW1wLmlubmVySFRNTCA9IHM7XG4gICAgc3RyID0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wID0gbnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXG4gICAgXCJsb2dcIixcbiAgICBcImRlYnVnXCIsXG4gICAgXCJpbmZvXCIsXG4gICAgXCJ3YXJuXCIsXG4gICAgXCJlcnJvclwiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJkaXJcIixcbiAgICBcImRpcnhtbFwiLFxuICAgIFwidHJhY2VcIixcbiAgICBcImdyb3VwXCIsXG4gICAgXCJncm91cENvbGxhcHNlZFwiLFxuICAgIFwiZ3JvdXBFbmRcIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVFbmRcIixcbiAgXTtcbiAgZnVuY3Rpb24gZigpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dID0gZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKF91bml0KSB7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiWE1MSHR0cFJlcXVlc3QgaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgfSBjYXRjaCB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkZhaWxlZCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3RcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZiAoZXhuLmpzX2Vycm9yKSB7XG4gICAgcmV0dXJuIGV4bi5qc19lcnJvcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNikgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYyxcbiAgICBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1ZmZlcl07XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IgKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlIC0gMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT09IDApIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZSBjID0gMjU2O1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChidWZmZXIsIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PT0gLTEpIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZSByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChkc3QgPT09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGkrKztcbiAgICBpZiAoc3JjID09PSAweGZmKSBtZW1bZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlIG1lbVtkc3QgKyAxXSA9IG1lbVtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpKys7XG4gICAgaWYgKGRzdCA9PT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChzcmMgPT09IDB4ZmYpIG1lbVtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2UgbWVtW2RzdCArIDFdID0gbWVtW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbClcbiAgICB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLFxuICAgIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGxleGJ1ZltsZXhfYnVmZmVyXTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvciAoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZSAtIDE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSkge1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09PSAwKSByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2UgYyA9IDI1NjtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQoYnVmZmVyLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZTtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2Ugc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09PSAtMSkgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSxcbiAgICAgICAgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbShcbiAgICAgICAgICB0YmwubGV4X2NvZGUsXG4gICAgICAgICAgcGNfb2ZmLFxuICAgICAgICAgIGxleGJ1ZltsZXhfbWVtXSxcbiAgICAgICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSxcbiAgICAgICAgKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfbHhtX01cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX2RhYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9NXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9kYWJhXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgaykge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LCBrKSwgc2hpZnRfcih4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2x4bV9NO1xuICB2YXIgZGFiYSA9IGNhbWxfbHhtX2RhYmE7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LCAwKTtcbiAgdmFyIHMgPSBnZXQoc3QsIDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsIDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsIDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LCBzaGlmdF9yKHosIDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQobXVsKHMsIE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDA7XG4gIHZhciBxMSA9IHgxO1xuICBxMSA9IHhvcihxMSwgcTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIHNoaWZ0X2wocTEsIDE2KSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpIHtcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoY2FtbF9zeXNfZmRzWzJdLmNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcikge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PT0gXCJcXHgwMFwiKSByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiXFx4MDBcIilbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9rKSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT09IFwibnVtYmVyXCIpIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PT0gXCJzdHJpbmdcIikga2luZCA9IHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSk7XG4gICAgICBlbHNlIGtpbmQgPSBcIl9cIjtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLFxuICAgIG4sXG4gICAgbjEsXG4gICAgbjIsXG4gICAgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgdGhlX2xvb3A6IGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGNtZCkge1xuICAgICAgY2FzZSAwOiAvL1NUQVJUOlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIHN0YXRlID0gMDtcbiAgICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDY6IC8vbG9vcDpcbiAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgICBpZiAobiAhPT0gMCkge1xuICAgICAgICAgIGNtZCA9IHJlZHVjZTtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHtcbiAgICAgICAgICBjbWQgPSB0ZXN0c2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgICBjYXNlIDE6IC8vVE9LRU5fUkVBRDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4oc3RhdGUsIGFyZyk7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDc6IC8vdGVzdHNoaWZ0OlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuMSAhPT0gMCAmJlxuICAgICAgICAgIG4yID49IDAgJiZcbiAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09PSBlbnZbZW52X2N1cnJfY2hhcl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgY21kID0gc2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG4xICE9PSAwICYmXG4gICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT09IGVudltlbnZfY3Vycl9jaGFyXVxuICAgICAgICApIHtcbiAgICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgICBjbWQgPSByZWR1Y2U7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICAgIGNhc2UgNTogLy9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gRVJSQ09ERVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIHRoZV9sb29wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgICAgY21kID0gbG9vcDtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gVW5yZWFjaGFibGVcbiAgICAgIGNhc2UgODogLy9zaGlmdDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgY2FzZSA5OiAvL3NoaWZ0X3JlY292ZXI6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBzcCsrO1xuICAgICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgICAgY2FzZSAyOiAvL1NUQUNLU19HUk9XTl8xOlxuICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcblxuICAgICAgY2FzZSAxMDogLy9yZWR1Y2U6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICBuMiA+PSAwICYmXG4gICAgICAgICAgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gc3RhdGUxXG4gICAgICAgIClcbiAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGVsc2Ugc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICAgIGJyZWFrIHRoZV9sb29wO1xuICAgICAgICB9XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgICBjYXNlIDM6IC8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICAgIGNhc2UgNDogLy9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAvKiAweDAwLTB4MUY6IG5vbmUgKi8sIDB4MDAsIDB4MDAsIDB4ZmYsXG4gICAgMHgwMyAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi8sIDB4ZmUsIDB4ZmYsIDB4ZmYsXG4gICAgMHg4NyAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqLywgMHhmZSwgMHhmZiwgMHhmZixcbiAgICAweDA3IC8qIDB4NjAtMHg3RjogYSB0byB6ICovLCAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4ODAtMHg5Rjogbm9uZSAqLyxcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4QTAtMHhCRjogbm9uZSAqLywgMHhmZiwgMHhmZiwgMHg3ZixcbiAgICAweGZmIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi8sIDB4ZmYsIDB4ZmYsIDB4N2YsXG4gICAgMHhmZiAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovLFxuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsXG4gICAgQ0hBUk5PUk06IDEsXG4gICAgU1RSSU5HOiAyLFxuICAgIFNUUklOR05PUk06IDMsXG4gICAgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSxcbiAgICBFT0w6IDYsXG4gICAgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LFxuICAgIEVOREdST1VQOiA5LFxuICAgIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsXG4gICAgU0lNUExFU1RBUjogMTMsXG4gICAgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsXG4gICAgUFVTSEJBQ0s6IDE2LFxuICAgIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4LFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1tjID4+IDNdID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLCBpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywgaSA+PiAzKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcbiAgICB2YXIgcHJvZyA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICBjcG9vbCA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICBub3JtdGFibGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgIG51bWdyb3VwcyA9IHJlWzRdIHwgMCxcbiAgICAgIG51bXJlZ2lzdGVycyA9IHJlWzVdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgc3RhY2sgPSBbXSxcbiAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBncm91cHNbaV0gPSB7IHN0YXJ0OiAtMSwgZW5kOiAtMSB9O1xuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBzdGFjay5wdXNoKGl0ZW0pO1xuICAgIH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGggKiAyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmIChnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMiAqIGkgKyAxXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyICogaSArIDEgKyAxXSA9IGcuZW5kO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwYXJ0aWFsKSByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgIH07XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKSBjID0gc1srK3Bvc107XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICAgIGlmIChwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICAgIGlmIChwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICAgIGlmIChwb3MgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9PSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICAgIHB1c2goeyB1bmRvOiB7IG9iajogZ3JvdXAsIHByb3A6IFwic3RhcnRcIiwgdmFsdWU6IGdyb3VwLnN0YXJ0IH0gfSk7XG4gICAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgICBwdXNoKHsgdW5kbzogeyBvYmo6IGdyb3VwLCBwcm9wOiBcImVuZFwiLCB2YWx1ZTogZ3JvdXAuZW5kIH0gfSk7XG4gICAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgICAgaWYgKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNbaV0gIT09IHNbcG9zXSkge1xuICAgICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgICBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgICAgfSBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgICBwdXNoKHsgcG9zOiB7IHBjOiBwYyArIHNhcmcsIHR4dDogcG9zIH0gfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdW5kbzogeyBvYmo6IHJlX3JlZ2lzdGVyLCBwcm9wOiB1YXJnLCB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ10gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKTtcbiAgdmFyIHN0YXJ0Y2hhcnMgPSByZVs2XSB8IDA7XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIGlmIChzdGFydGNoYXJzID49IDApIHtcbiAgICBzdGFydGNoYXJzID0gcmVbMl1bc3RhcnRjaGFycyArIDFdO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zIDwgbGVuICYmXG4gICAgICAgIGNhbWxfc3RyaW5nX2dldChzdGFydGNoYXJzLCBjYW1sX3N0cmluZ19nZXQocywgcG9zKSkgPT09IDBcbiAgICAgIClcbiAgICAgICAgcG9zKys7XG4gICAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgICAgcG9zKys7XG4gICAgfSB3aGlsZSAocG9zIDw9IGxlbik7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcysrO1xuICAgIH0gd2hpbGUgKHBvcyA8PSBsZW4pO1xuICB9XG4gIHJldHVybiBbMF07IC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIik7XG4gIHZhciBzdGFydGNoYXJzID0gcmVbNl0gfCAwO1xuICBpZiAoc3RhcnRjaGFycyA+PSAwKSB7XG4gICAgc3RhcnRjaGFycyA9IHJlWzJdW3N0YXJ0Y2hhcnMgKyAxXTtcbiAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zID4gMCAmJlxuICAgICAgICBwb3MgPCBsZW4gJiZcbiAgICAgICAgY2FtbF9zdHJpbmdfZ2V0KHN0YXJ0Y2hhcnMsIGNhbWxfc3RyaW5nX2dldChzLCBwb3MpKSA9PT0gMFxuICAgICAgKVxuICAgICAgICBwb3MtLTtcbiAgICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgICBwb3MtLTtcbiAgICB9IHdoaWxlIChwb3MgPj0gMCk7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcy0tO1xuICAgIH0gd2hpbGUgKHBvcyA+PSAwKTtcbiAgfVxuICByZXR1cm4gWzBdOyAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUsIHMsIHBvcykge1xuICBpZiAocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSwgcywgcG9zKSB7XG4gIGlmIChwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCwgZ3JvdXBzLCBvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlIChuIDwgbGVuKSB7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZiAoY3VyICE9PSBcIlxcXFxcIikge1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG4gPT09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2ggKGN1cikge1xuICAgICAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIwXCI6XG4gICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgIGNhc2UgXCIyXCI6XG4gICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgIGNhc2UgXCI2XCI6XG4gICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgIGNhc2UgXCI4XCI6XG4gICAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgICAgaWYgKGMgKiAyID49IGdyb3Vwcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMik7XG4gICAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMiArIDEpO1xuICAgICAgICAgIGlmIChzdGFydCA9PT0gLTEpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgICAgcmVzICs9IG9yaWcuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVzICs9IFwiXFxcXFwiICsgY3VyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuIl0sIm5hbWVzIjpbImNzdF9PdXRfb2ZfbWVtb3J5IiwiY3N0X1N5c19lcnJvciIsImNzdF9GYWlsdXJlIiwiY3N0X0ludmFsaWRfYXJndW1lbnQiLCJjc3RfRW5kX29mX2ZpbGUiLCJjc3RfRGl2aXNpb25fYnlfemVybyIsImNzdF9Ob3RfZm91bmQiLCJjc3RfTWF0Y2hfZmFpbHVyZSIsImNzdF9TdGFja19vdmVyZmxvdyIsImNzdF9TeXNfYmxvY2tlZF9pbyIsImNzdF9Bc3NlcnRfZmFpbHVyZSIsImNzdF9VbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBO0FBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQSxRQUFBO0FBQUEsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBO0FBQUEsSUFBQTtBQUFBLElBQUE7QUFBQSxHQUFBO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNDQ3FvQkUsUUFBUSxDQUNWO0FBQUE7QUFBQSx1QkN6aEJJLFlBQ0EsV0FGRjtBQUFBLGNBTUUsT0FBTywyQkFBMkIsQ0FEcEM7QUFBQSxjQUtFLE9BQVEsdUNBQXdDLENBRGxEO0FBQUE7QUFBQSxjQUtRLFlBQ0Y7QUFBQSxNQUNKO0FBQUEsTUFDQSxPQUFRLHVCQUF3QixtQkFBbUI7QUFBQSxLQUpyRDtBQUFBO0FBQUEsY0FRUSxZQUNGO0FBQUEsTUFDSjtBQUFBLE1BQ0EsT0FBUyw4QkFBZ0MsbUJBQW1CO0FBQUEsS0FKOUQ7QUFBQTtBQUFBLGNBUVEsWUFDRjtBQUFBLE1BQ0o7QUFBQSxNQUNBLFFBQ0ksd0JBQ0M7QUFBQSxlQUNBO0FBQUEsZUFDRDtBQUFBLGtCQUVIO0FBQUEsS0FWSDtBQUFBO0FBQUEsY0FjUSxZQUNGO0FBQUEsTUFDSjtBQUFBLE1BQ0EsT0FDRyx3QkFDQTtBQUFBLGVBQ0E7QUFBQSxlQUNELG1CQUNEO0FBQUEsS0FUSDtBQUFBO0FBQUEsY0FhUTtBQUFBLE1BQ047QUFBQSxNQUNBLE9BQU8sdUJBQXVCLHlCQUF5QjtBQUFBLEtBSHpEO0FBQUE7QUFBQSxjQU9VLHlCQUNGLFlBQ0E7QUFBQSxNQUNOLFlBQVcsaUJBQW1CLE9BQ3JCO0FBQUEsTUFFVDtBQUFBLE1BQ0EsUUFBUTtBQUFBLEtBUlY7QUFBQTtBQUFBLDJCRG1Ic0I7QUFBQTtBQUFBLFlBa0VkLHlCQUNGLFNBQ0YsY0FDQTtBQUFBLElBQ0osa0JBQW1CLE9BQU87QUFBQSxJQUMxQix5QkFBMEI7QUFBQSxJQUMxQjtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVE7QUFBQSxHQUNWO0FBQUE7QUFBQSxJQUtFLGNBQTJCO0FBQUEsSUFDM0IsVUFBVTtBQUFBLEdBQ1o7QUFBQSxrQ0F6VEUsT0FBTyxXQUFXLENBQ3BCO0FBQUE7QUFBQSxZQXNCUTtBQUFBLElBQ04sK0NBQWdELE9BQU8sZ0JBQWdCO0FBQUEsWUFDakU7QUFBQSxJQUNOO0FBQUEsS0FDRSxLQUFLLGNBQWMsa0JBQWtCO0FBQUEsSUFDdkMsUUFBUTtBQUFBLEdBQ1Y7QUFBQTtBQUFBLElBb1FFO0FBQUEsS0FBNkIsT0FBTztBQUFBO0FBQUEsS0FDL0IsTUFBTTtBQUFBLElBQ1g7QUFBQSxHQUNGO0FBQUE7QUFBQSxJQWxRRTtBQUFBLEtBRUUsWUFBVyxzQkFBd0IsR0FBSSx1QkFBdUIsWUFBWTtBQUFBLEtBQzFFLFdBQVc7QUFBQTtBQUFBO0FBQUEsS0FHUixTQUFRLHNCQUFzQjtBQUFBLEdBQ3JDO0FBQUE7QUFBQTtBQUFBLE1Ba05JO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxLQUhGO0FBQUE7QUFBQSxNQU9FO0FBQUE7QUFBQTtBQUFBLFNBR0ksYUFBYTtBQUFBO0FBQUE7QUFBQSxTQUliO0FBQUE7QUFBQSxTQUdBLEdBQUksdUJBQXVCLGlCQUN0QixZQUNMLGFBQWE7QUFBQTtBQUFBLEtBYm5CO0FBQUE7QUFBQSxNQWtCRSxpQkFBa0IsYUFBYTtBQUFBLGNBQ3ZCO0FBQUEsTUFDUixPQUFPLDJCQUEyQjtBQUFBLEtBSHBDO0FBQUE7QUFBQSxvQkFPYyxlQUFpQjtBQUFBLE1BQzdCLE9BQU8sb0NBQW9DO0FBQUEsS0FGN0M7QUFBQTtBQUFBLHlCRXBTQSxhQUNGO0FBQUEseUJDZ0VvQjtBQUFBO0FBQUEsSUFZbEIsdUJBQXdCLHlCQUF5QjtBQUFBLGtCQUNyQztBQUFBLElBRVo7QUFBQSxLQUNFLHFCQUFxQjtBQUFBLElBQ3ZCO0FBQUEsS0FBdUUsNkJBQ3hDO0FBQUEsR0FFakM7QUFBQSx3Q0N2R21DO0FBQUEsR0FFbkM7QUFBQSxjQUNVO0FBQUEsTUFDUjtBQUFBLGVBQ1U7QUFBQSxPQUNSLFlBQVc7QUFBQSxRQUF3QjtBQUFBLFNBRS9CO0FBQUEsU0FDQTtBQUFBO0FBQUEsZ0JBQ1M7QUFBQSxTQUF1QixtQ0FDRTtBQUFBO0FBQUEsU0FDN0I7QUFBQTtBQUFBLEtBVlo7QUFBQSxLQUFEO0FBQUE7QUFBQSx5Q0FpQnVDO0FBQUEsdUJDeU1sQjtBQUFBO0FBQUEsSUM3Q25CO0FBQUEsS0FDRSxlQUFlO0FBQUEsSUFDakIsVUFBVTtBQUFBLEdBQ1o7QUFBQTtBQUFBLElBYkU7QUFBQTtBQUFBLGNBQ1M7QUFBQSxpQlB6TFg7QUFBQSxHTzJMQTtBQUFBO0FBQUEsSUNoS0UsTUFBTTtBQUFBLEdBQ1I7QUFBQSwyQlAwUHdCO0FBQUE7QUFBQSxZQTNOaEI7QUFBQSxJQUNOLCtDQUFnRCxPQUFPLGdCQUFnQjtBQUFBLFlBQ2pFO0FBQUEsSUFDTjtBQUFBLEtBQ0UsS0FBSyxjQUFjLGVBQWU7QUFBQSxJQUNwQyxRQUFRO0FBQUEsR0FDVjtBQUFBO0FBQUEsSUErVUUsT0FBTyx1QkFBdUIseUNBQXlDO0FBQUEsR0FDekU7QUFBQTtBQUFBLElBdVJFLEdBQUksa0JBQWtCLE9BQU8seUJBQXlCO0FBQUEsWUFDOUM7QUFBQSxJQUNSLE9BQU8sdUJBQXVCO0FBQUEsR0FDaEM7QUFBQTtBQUFBLElHcnBCRTtBQUFBLGtDQUFnRDtBQUFBLEdBQ2xEO0FBQUE7QUFBQSxJSVVFLE1BQU0sNEJBQTRCO0FBQUEsR0FDcEM7QUFBQTtBQUFBO0FBQUEsTUNrRmU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBOEVDO0FBQUEsSUFDZCxnQkFFRSxrQkFBbUIsZ0JBS25CO0FBQUE7QUFBQTtBQUFBLE9BRU87QUFBQSxRQUVQO0FBQUEsUUFDQTtBQUFBLElBRUYsV0FBVztBQUFBLEdBQ2I7QUFBQSwyQkhhc0I7QUFBQSxpQ0FZcEIsNEJBQTRCLENBQzlCO0FBQUE7QUFBQSxxQkdrb0JtQjtBQUFBLElBQ2pCO0FBQUEsS0FDRSxpQ0FBaUM7QUFBQTtBQUFBLGVBRXpCO0FBQUEsS0FDUix1QkFBd0I7QUFBQSxLQUN4QjtBQUFBO0FBQUEsR0FFSjtBQUFBLGdDUnJHRSwyQkFBMkIsQ0FDN0I7QUFBQTtBQUFBLElBbUJFLGtDQUFpQyxzQkFBc0I7QUFBQSxHQUN6RDtBQUFBO0FBQUEsSUFsWUUsZ0NBQWdDLElBQzFCO0FBQUEsSUFFTixPQUFPLDJCQUEyQjtBQUFBLEdBQ3BDO0FBQUEscUNBd1FFLE9BQU8sMkJBQTJCLENBQ3BDO0FBQUEsc0NBdENFLFFBQVEsQ0FDVjtBQUFBO0FBQUEsSUFiRSxPQUFPLHNCQUFzQiwwQkFBMEI7QUFBQSxHQUN6RDtBQUFBO0FBQUEsSVM5WkU7QUFBQTtBQUFBLEdBTUY7QUFBQSx5Q1RxTUUsT0FBTywyQkFBMkIsQ0FDcEM7QUFBQTtBQUFBLElPdllFLHlCQUF5QjtBQUFBLEdBQzNCO0FBQUE7QUFBQSxJQWFFO0FBQUEsR0FDRjtBQUFBO0FBQUEsSVBtVkUsWUFBYTtBQUFBLElBQ2IsT0FBTyxpQ0FBaUM7QUFBQSxHQUMxQztBQUFBLG9DQWlMRSxVQUFVLENBQ1o7QUFBQTtBQUFBLElBakRFLGNBQWUsUUFBUTtBQUFBLElBQ3ZCO0FBQUEsS0FJRTtBQUFBO0FBQUEsU0FFTTtBQUFBLGtEQUdFO0FBQUEsS0FDUjtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUE7QUFBQSxTQUVNO0FBQUEsa0RBR0U7QUFBQSxLQUNSO0FBQUE7QUFBQTtBQUFBLEtBRUEsZUFBNEI7QUFBQSxjQUNyQixXQUNGO0FBQUEsS0FDTDtBQUFBLE1BQTRCO0FBQUEsT0FDWixZQUNELGlCQUFtQjtBQUFBO0FBQUEsT0FDekIsWUFDTSxzQkFBd0I7QUFBQTtBQUFBLGNBRzdCO0FBQUEsTUFDUixZQUFXLGVBQWlCLGFBQWE7QUFBQSxNQUN6QyxvQkFBcUI7QUFBQTtBQUFBO0FBQUEsSUFHekIsUUFBUTtBQUFBLEdBQ1Y7QUFBQSxxQlNqZ0JtQjtBQUFBO0FBQUEsMEJDc1RmLFNBQ0Esb0JBRkY7QUFBQTtBQUFBLGdCQU1VLHFCQUNNO0FBQUEsTUFDZCxZQUFZO0FBQUEsTUFDWixzQ0FBc0M7QUFBQSxLQUp4QztBQUFBLGNBUUUsT0FBTywrQkFBK0IsQ0FEeEM7QUFBQTtBQUFBLGlCQUthO0FBQUEsTUFDWDtBQUFBLHFCQUNnQiw0Q0FDRDtBQUFBLE9BQ2I7QUFBQSxPQUNBO0FBQUE7QUFBQSxNQUVGO0FBQUEsUUFDRTtBQUFBLE1BTUYsVUFBVTtBQUFBLEtBZlo7QUFBQTtBQUFBLGlCQW1CYTtBQUFBLE1BQ1gseUJBQTBCO0FBQUEsTUFHMUI7QUFBQSxrQkFDYTtBQUFBLE9BQ1g7QUFBQSxPQUNBLFFBQVE7QUFBQSxPQUNSLFVBQVU7QUFBQTtBQUFBLE1BRVosUUFBUTtBQUFBLEtBWFY7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQTRGRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxLQUxGO0FBQUE7QUFBQSxNQVNFO0FBQUEsS0FERjtBQUFBO0FBQUEsTUFLRSxjQUFlLE9BQU8sa0JBQWtCO0FBQUEsTUFDeEM7QUFBQSxLQUZGO0FBQUE7QUFBQSxNQU1FO0FBQUEsT0FDRTtBQUFBLFFBQ0U7QUFBQTtBQUFBLE9BTUYsT0FBTyx1QkFBdUI7QUFBQTtBQUFBLE1BRWhDO0FBQUEsS0FYRjtBQUFBO0FBQUEsTUFlRTtBQUFBLG9CQUNhO0FBQUEsT0FDWCxNQUFNO0FBQUEsT0FDTjtBQUFBLE9BQ0EsVUFBVTtBQUFBO0FBQUEsTUFFWjtBQUFBLEtBUEY7QUFBQTtBQUFBLE1BV0U7QUFBQSxvQkFDYTtBQUFBLE9BQ1gsTUFBTTtBQUFBLE9BQ047QUFBQSxPQUNBLFVBQVU7QUFBQTtBQUFBLE1BRVo7QUFBQSxLQVBGO0FBQUE7QUFBQSxNQVdFO0FBQUEsZ0JBRUk7QUFBQTtBQUFBLFNBRUEsdUJBQ0E7QUFBQTtBQUFBLFNBRUEsVUFBVSxlQUNWO0FBQUE7QUFBQSxNQUVKO0FBQUEsT0FDRTtBQUFBO0FBQUEsTUFNRjtBQUFBLE1BQ0E7QUFBQSxNQUNBLGFBQWE7QUFBQSxLQXBCZjtBQUFBLFdBd0JFLGtCQUFrQixDQURwQjtBQUFBLGFBS0UsZ0JBQWdCLDBCQUNoQixzQkFGRjtBQUFBO0FBQUEsTUFNRSxnQkFBZ0IsT0FBTyx1QkFBOEM7QUFBQSxLQUR2RTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BemhCRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsS0FIRjtBQUFBLGNBT0UsdUJBQXVCLENBRHpCO0FBQUE7QUFBQSxpQkFLYSx1QkFDSDtBQUFBLE1BQ1IsWUFBVztBQUFBLE9BQ1Q7QUFBQSxPQUNBLHNCQUF1QjtBQUFBLE9BQ3ZCLG9CQUFvQjtBQUFBO0FBQUEsS0FOeEI7QUFBQSxpQkFXRSxPQUFPLG9DQUFvQyxDQUQ3QztBQUFBO0FBQUEsTUFLRTtBQUFBO0FBQUE7QUFBQSxVQUNZO0FBQUEsWUFDUixvQ0FDQTtBQUFBLE9BRUY7QUFBQSxRQUNFO0FBQUEsUUFDQSxxQkFBcUIsZUFBZTtBQUFBO0FBQUE7QUFBQSxLQVIxQztBQUFBO0FBQUEsTUFlRSxnQkFBaUIsUUFBUTtBQUFBLHVCQUVSO0FBQUEsTUFDakIsNkJBQThCLFFBQVE7QUFBQSxNQUV0QyxvQkFBb0I7QUFBQSxNQUNwQixpQ0FBaUM7QUFBQSxLQVJuQztBQUFBLGtCQVlFLE9BQUksdUJBQXNCLHlCWDVFOUIsQ1cyRUU7QUFBQTtBQUFBLE1BU0UsR0FBSTtBQUFBLE9BQ0YsS0FBSztBQUFBLFFBQ0g7QUFBQSxVQUNFO0FBQUEsT0FHSixHQUFJO0FBQUEsUUFDRixxQkFBcUI7QUFBQTtBQUFBLHNCQUdULGlDQUNBO0FBQUEsTUFDaEI7QUFBQSxNQUNBLGVBQWdCO0FBQUEsT0FDZDtBQUFBLE1BRUY7QUFBQSxLQWpCRjtBQUFBO0FBQUEsTUFxQkUsS0FBSztBQUFBLE9BQ0gscUJBQXFCO0FBQUEsTUFDdkIsR0FBSTtBQUFBLE9BQ0Y7QUFBQTtBQUFBLE9BRUEsR0FBSSx3QkFBd0I7QUFBQSxRQUMxQjtBQUFBLFVBQ0U7QUFBQSxPQUdKO0FBQUEsT0FDQTtBQUFBO0FBQUEsS0FaSjtBQUFBO0FBQUEsTUFpQkUsR0FBSTtBQUFBLE9BQ0Y7QUFBQSwrREFLRTtBQUFBLG1CQUVTO0FBQUEsTUFDYjtBQUFBLE1BQ0EsS0FBSztBQUFBLE9BQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBS0U7QUFBQSxNQUVKLEtBQUs7QUFBQSxPQUNIO0FBQUEsNERBS0U7QUFBQSxNQUVKLDBCQUEwQjtBQUFBLEtBM0I1QjtBQUFBO0FBQUEsdUJBK0JpQixtQkFBcUI7QUFBQSxNQUNwQyxLQUFLO0FBQUEsT0FDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FLRTtBQUFBLE1BRUosS0FBSztBQUFBLE9BQ0g7QUFBQSw0REFLRTtBQUFBLE1BRUo7QUFBQSxPQUE0QixHQUN0QjtBQUFBLFFBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBS0U7QUFBQSxNQUdOO0FBQUEsS0E1QkY7QUFBQTtBQUFBLHVCQWdDaUIsbUJBQXFCO0FBQUEsTUFDcEMsS0FBSztBQUFBLE9BQ0g7QUFBQSxNQUVGLEtBQUs7QUFBQSxPQUNIO0FBQUEsaUJBRU8sUUFDSDtBQUFBLE1BQ047QUFBQSxPQUE0QixHQUN0QjtBQUFBLG1CQUNTO0FBQUEsUUFDWCxhQUFjO0FBQUEsZ0JBQ047QUFBQSxRQUNSLG1CQUNFLGdCQUNBO0FBQUE7QUFBQSxNQUlOLFFBQVE7QUFBQSxLQXJCVjtBQUFBO0FBQUEsY0F5QlUsd0JBQ0YsV0FDQTtBQUFBLE1BQ047QUFBQTtBQUFBLGVBRUk7QUFBQSxnQkFDRTtBQUFBO0FBQUEsZUFNRixtQkFBb0IsV0FBVztBQUFBLDJCQUNyQjtBQUFBLGVBQ1Y7QUFBQSxlQUNBLG9CQUFzQjtBQUFBLGNBWGQ7QUFBQTtBQUFBO0FBQUEsZUFjUjtBQUFBLGdCQUNFO0FBQUE7QUFBQSxlQU1GO0FBQUEsZUFDQTtBQUFBLGNBVFMsRUFXWjtBQUFBLEtBN0JIO0FBQUE7QUFBQSxNQWlDRSxnQkFBaUIsV0FBVztBQUFBLHVCQUNYO0FBQUEsTUFDakIsdUNBQXVDO0FBQUEsS0FIekM7QUFBQTtBQUFBLE1BT0UsS0FBSztBQUFBLE9BRUg7QUFBQTtBQUFBLE1BUUY7QUFBQSxNQUNBLFFBQVE7QUFBQSxLQVpWO0FBQUE7QUFBQSxNQWdCRTtBQUFBLE1BQ0E7QUFBQSxPQUF3QixHQUNsQjtBQUFBLFFBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBS0U7QUFBQTtBQUFBO0FBQUEsT0FHSix3QkFBd0I7QUFBQSxNQUUxQixRQUFRO0FBQUEsS0FkVjtBQUFBO0FBQUE7QUFBQSxNQW1CRTtBQUFBLE1BQ0E7QUFBQSxPQUNFLEdBQUk7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUtFO0FBQUEsT0FFSjtBQUFBLFFBQ0U7QUFBQSwrREFLRTtBQUFBLE9BRUo7QUFBQSxPQUNBLGVBQWdCO0FBQUE7QUFBQTtBQUFBLE9BRWhCO0FBQUEsT0FDQSxxQkFBcUIsZUFBZTtBQUFBLE9BQ3BDO0FBQUE7QUFBQTtBQUFBLE9BRUEsd0JBQXdCO0FBQUEsTUFFMUIsT0FBTyxhQUFhLHVCQUF1QjtBQUFBLEtBN0I3QztBQUFBO0FBQUE7QUFBQSxNQWtDRTtBQUFBLE1BQ0E7QUFBQSxPQUNFLEdBQUk7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUtFO0FBQUEsT0FFSjtBQUFBLE9BQ0E7QUFBQTtBQUFBO0FBQUEsT0FFQSx3QkFBd0I7QUFBQSxLQWY1QjtBQUFBO0FBQUE7QUFBQSxNQXFCRTtBQUFBLE9BQ0UscUJBQXFCO0FBQUEsTUFDdkIsR0FBSSwyQkFBMkIsT0FBTztBQUFBLE1BQ3RDLEdBQUk7QUFBQSxPQUNGLE9BQU8sZUFBZTtBQUFBLGNBQ2Y7QUFBQSxPQUNQLE9BQU8sZUFBZTtBQUFBO0FBQUEsT0FFdEIsT0FBTyxlQUFlO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFFVixxQkFDVix3QkFBd0I7QUFBQSxPQUUxQixPQUFPO0FBQUE7QUFBQSxNQUVUO0FBQUEsT0FDRTtBQUFBLE9BQ0E7QUFBQTtBQUFBO0FBQUEsT0FFQTtBQUFBLFNBQ0U7QUFBQSxLQXRCTjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1Bc0ZFLE1BQU07QUFBQSxNQUNOLHdCQUNFLFFBQVEsQ0FEQztBQUFBLE1BR1g7QUFBQSxPQUFtRDtBQUFBO0FBQUEsT0FFakQ7QUFBQSxpREFDMEM7QUFBQSxNQUM1QztBQUFBLEtBVEY7QUFBQSxjQWFFLFFBQVEsQ0FEVjtBQUFBO0FBQUEsTUFLRTtBQUFBO0FBQUEsS0FERjtBQUFBO0FBQUEsb0JBVWM7QUFBQSxNQUNaO0FBQUEsT0FDRTtBQUFBO0FBQUE7QUFBQSxRQU1FO0FBQUEsaUJBR1E7QUFBQSxPQUNWLGdCQUFnQjtBQUFBLE9BQ2hCLFNBQVM7QUFBQSxPQUNULGNBQWM7QUFBQTtBQUFBLE1BRWhCO0FBQUE7QUFBQSxLQWpCRjtBQUFBO0FBQUEsTUEwQkU7QUFBQTtBQUFBLEtBREY7QUFBQTtBQUFBLE1BS0U7QUFBQSxLQURGO0FBQUEsV0FJRSxVQUFTLENBRFg7QUFBQSxhQUtFLHFCQURGO0FBQUEsa0NBSUE7QUFBQTtBQUFBLDJCQ3Zjc0I7QUFBQSxxQ0pDdEIsVUFDRjtBQUFBO0FBQUEsSUEyQ0U7QUFBQSxHQUNGO0FBQUE7QUFBQTtBQUFBLE1JeENJO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsS0FKRjtBQUFBLDJCQU9zQjtBQUFBLHlCQUNGO0FBQUEseUJBQ0E7QUFBQSxhQUdsQixPQUFPLHNDQUFzQyxDQUQvQztBQUFBO0FBQUEsTUFLRSxtQkFBb0IsUUFBUTtBQUFBLE1BQzVCLG1CQUFvQixVQUFTO0FBQUEsTUFDN0IsbUJBQW9CLFFBQVE7QUFBQSxNQUM1QixtQkFBb0IsVUFBUztBQUFBLE1BQzdCLG1CQUFvQixRQUFRO0FBQUEsTUFDNUIsbUJBQW9CLFVBQVM7QUFBQSxNQUM3QixRQUFRO0FBQUEsS0FQVjtBQUFBO0FBQUEsZUFXUyxxQkFDQztBQUFBLE1BQ1IsYUFBYyxRQUFRO0FBQUEsTUFDdEIsYUFBYyxVQUFTO0FBQUEsTUFDdkIsbUJBQW9CLFFBQVE7QUFBQSxNQUM1QixtQkFBb0IsVUFBUztBQUFBLE1BQzdCLG1CQUFvQixRQUFRO0FBQUEsTUFDNUIsbUJBQW9CLFVBQVM7QUFBQSxNQUM3QixRQUFRO0FBQUEsS0FUVjtBQUFBO0FBQUE7QUFBQSxZQWFTO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxNQUNQLE9BQU8sdUJBQXVCO0FBQUEsS0FKaEM7QUFBQTtBQUFBO0FBQUEsWUFRUztBQUFBLFlBQ0E7QUFBQSxZQUNBO0FBQUEsTUFDUCxPQUFPLHVCQUF1QjtBQUFBLEtBSmhDO0FBQUE7QUFBQTtBQUFBLFlBUVM7QUFBQSxZQUNBO0FBQUEsWUFDQTtBQUFBLE1BQ1AsT0FBTyx1QkFBdUI7QUFBQSxLQUpoQztBQUFBO0FBQUE7QUFBQSxZQVFTO0FBQUEsWUFDQTtBQUFBO0FBQUEsU0FDQTtBQUFBO0FBQUEsTUFLUCxPQUFPLHVCQUF1QjtBQUFBLEtBUmhDO0FBQUEsY0FZRSwwQ0FBMEMsQ0FENUM7QUFBQSxhQUtFLHdCQUF3QixDQUQxQjtBQUFBO0FBQUEsTUFLRSxPQUFPLDJEQUEyRDtBQUFBLEtBRHBFO0FBQUE7QUFBQSxNQUtFLE9BQU8sMkRBQTJEO0FBQUEsS0FEcEU7QUFBQTtBQUFBLE1BS0UsT0FBTywyREFBMkQ7QUFBQSxLQURwRTtBQUFBO0FBQUEsTUFLRTtBQUFBLE1BQ0EsWUFBYSxXQUFXO0FBQUEsTUFDeEI7QUFBQSxPQUFZLE9BQ0g7QUFBQTtBQUFBO0FBQUE7QUFBQSxpREFJTjtBQUFBLE1BRUg7QUFBQSxPQUNFLE9BQU87QUFBQTtBQUFBLDRFQUlOO0FBQUEsTUFDSCxPQUFPLG9DQUFzQztBQUFBLEtBaEIvQztBQUFBO0FBQUEsTUFvQkU7QUFBQSxNQUNBLFlBQWEsV0FBVztBQUFBLE1BQ3hCO0FBQUEsT0FDRSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBSU47QUFBQSxNQUNIO0FBQUEsT0FDRSxPQUFPO0FBQUE7QUFBQSw0RUFJTjtBQUFBLE1BQ0gsT0FBTyxvQ0FBc0M7QUFBQSxLQWYvQztBQUFBO0FBQUEsTUFtQkU7QUFBQSxNQUNBLFlBQWEsV0FBVztBQUFBLGNBQ2xCO0FBQUEsTUFDTjtBQUFBLE9BQ0UsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBLDBDQUlOO0FBQUEsaUJBQ007QUFBQSxNQUNUO0FBQUEsT0FDRSxPQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUEsOEJBSU47QUFBQSxNQUNILE9BQU8sZ0RBQW9EO0FBQUEsS0FqQjdEO0FBQUE7QUFBQSxNQXFCRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsS0FIRjtBQUFBO0FBQUEsTUFPRTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsS0FIRjtBQUFBO0FBQUE7QUFBQSxnQkFPYTtBQUFBLGlCQUNHO0FBQUEsaUJBQ0E7QUFBQSxrQkFDQztBQUFBLE1BQ2YsTUFBTywrQkFDTCxVQUNBO0FBQUEsTUFFRjtBQUFBLE9BQ0U7QUFBQSxPQUNBO0FBQUEsT0FDQSxHQUFJO0FBQUEsUUFDRjtBQUFBLFFBQ0EsVUFBVTtBQUFBO0FBQUEsT0FFWjtBQUFBO0FBQUEsTUFFRiw2Q0FBK0M7QUFBQSxLQWxCakQ7QUFBQTtBQUFBLGNBc0JRO0FBQUEsTUFDTixHQUFJLFlBQVk7QUFBQSxpQkFDUDtBQUFBLE1BQ1Qsa0JBQW1CLElBQUk7QUFBQSxNQUN2QixrQkFBbUIsSUFBSTtBQUFBLGNBQ2Y7QUFBQSxNQUNSLGtCQUFtQixJQUFJO0FBQUEsTUFDdkIsUUFBUTtBQUFBLEtBUlY7QUFBQTtBQUFBLGNBWVE7QUFBQSxNQUNOLEdBQUksWUFBWTtBQUFBLGlCQUNQO0FBQUEsTUFDVCxrQkFBbUIsSUFBSTtBQUFBLE1BQ3ZCLGtCQUFtQixJQUFJO0FBQUEsY0FDZjtBQUFBLE1BQ1Isa0JBQW1CLElBQUk7QUFBQSxNQUN2QixRQUFRO0FBQUEsS0FSVjtBQUFBLGFBWUUsOEJBQWdDLENBRGxDO0FBQUE7QUFBQSxNQUtFLHlCQUNvQiw0QkFBNEI7QUFBQSxzQkFDL0M7QUFBQSxLQUhIO0FBQUE7QUFBQSxNQU9FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkJBU0M7QUFBQSxLQVZIO0FBQUEsWUFjRSx1Q0FBeUMsQ0FEM0M7QUFBQSxZQUtFLDZDQUFtRCxDQURyRDtBQUFBO0FBQUEsK0JDMVBFLG9CQURGO0FBQUE7QUFBQTtBQUFBLE1DWUUsWUFBWTtBQUFBLE1BT1o7QUFBQSxNQUNBO0FBQUEsS0FURjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1DT2dCO0FBQUE7QUFBQTtBQUFBLHFCQXdqQkM7QUFBQSxJQUNqQjtBQUFBO0FBQUE7QUFBQSxRQUNhO0FBQUEsS0FNWDtBQUFBO0FBQUE7QUFBQSxLQUVBLHFCQUFxQjtBQUFBLEdBRXpCO0FBQUE7QUFBQSxJSDlPRSxVQUFXLElBQUk7QUFBQSxJQUNmLE9BQU87QUFBQTtBQUFBO0FBQUEsYUFFTDtBQUFBLGFBQ0EsK0RBQ0Q7QUFBQSxHQUNIO0FBQUE7QUFBQTtBQUFBLElHNUJFLEdBQUk7QUFBQSxLQUFtQjtBQUFBLFlBRVo7QUFBQSxLQUF3QjtBQUFBLFlBRXhCO0FBQUEsS0FBOEI7QUFBQSxZQUU5QjtBQUFBLEtBQTBCO0FBQUEsWUFFMUI7QUFBQSxLQUEyQjtBQUFBLFlBRTNCO0FBQUEsS0FBbUI7QUFBQSxZQUVuQixxQkFBcUI7QUFBQSxJQW1CaEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBVVU7QUFBQTtBQUFBO0FBQUEsb0NBSVQ7QUFBQSxHQUNIO0FBQUEscUNkcU5FLGVBQWUsQ0FDakI7QUFBQSx5Q0FQRSxPQUFPLGVBQWUsQ0FDeEI7QUFBQTtBQUFBLFlBbE9VLDhCQUNBLHVCQUNGO0FBQUEsSUFDTixrQkFBbUIsT0FBTztBQUFBLElBQzFCLFFBQVE7QUFBQSxHQUNWO0FBQUE7QUFBQSxJQWpQRTtBQUFBLEdBQ0Y7QUFBQTtBQUFBLElBdkJFO0FBQUEsSUFDQTtBQUFBLEtBQ0U7QUFBQSxNQUNFLE9BQU87QUFBQSxNQUNQLGtCQUFtQjtBQUFBLE1BQ25CLFFBQVE7QUFBQTtBQUFBLEtBRVY7QUFBQTtBQUFBLElBRUY7QUFBQSxJQUNBLFFBQVE7QUFBQSxHQUNWO0FBQUE7QUFBQSxJQXdKRSxtQkFBb0I7QUFBQSxJQUNwQixPQUFPLDhCQUE4QjtBQUFBLEdBQ3ZDO0FBQUE7QUFBQTtBQUFBLE1jMEhJO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsbUJBQ2M7QUFBQSxPQUNaO0FBQUEsUUFDRSw2QkFBNkIsa0JBQWtCO0FBQUEsT0FDakQ7QUFBQTtBQUFBLGlCQUlBLHFCQUNBO0FBQUEsTUFFRjtBQUFBLEtBaEJGO0FBQUE7QUFBQSxNQW9CRTtBQUFBLE9BQ0U7QUFBQSxPQUNBLHNCQUF1QjtBQUFBO0FBQUEsaUJBRXZCO0FBQUEsS0FMSjtBQUFBO0FBQUEsZ0JBVVk7QUFBQSxNQUNWLE9BQU8sMkJBQTJCO0FBQUEsS0FGcEM7QUFBQTtBQUFBLE1BTUUsSUFDRSxPQUFPLCtCQUErQjtBQUFBLGlCQUV0QyxxQkFBcUI7QUFBQSxLQUp6QjtBQUFBO0FBQUEsTUFTRTtBQUFBLE9BQ0U7QUFBQSxzQkFDZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUVBO0FBQUEsT0FRaEI7QUFBQTtBQUFBLGlCQUVBO0FBQUEsTUFFRixjQUFjO0FBQUEsS0FqQmhCO0FBQUE7QUFBQSxNQXFCRTtBQUFBLE9BQ0U7QUFBQSxtQkFDYTtBQUFBO0FBQUEsbUJBRUE7QUFBQSxPQUViO0FBQUEsT0FDQSxXQUFXO0FBQUE7QUFBQSxpQkFFWDtBQUFBLEtBVko7QUFBQTtBQUFBLE1BZUU7QUFBQSxPQUNFO0FBQUEsTUFFRjtBQUFBLGdCQUVJO0FBQUE7QUFBQSxTQUVBLHVCQUNBO0FBQUE7QUFBQSxTQUVBLFVBQVUsZUFDVjtBQUFBO0FBQUEsTUFFSjtBQUFBLE9BQ0U7QUFBQTtBQUFBLE1BT0Y7QUFBQSxNQUNBO0FBQUEsTUFDQSxrQkFBa0I7QUFBQSxLQXhCcEI7QUFBQSxXQTRCRSxrQkFBa0IsQ0FEcEI7QUFBQTtBQUFBLE1BS0U7QUFBQSxzQkFDaUI7QUFBQSxPQUNmLE9BQU8sNENBQTRDO0FBQUE7QUFBQSxpQkFFbkQ7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFLElBQ0Usb0NBQ0EsUUFBUTtBQUFBLGlCQUVSO0FBQUEsS0FMSjtBQUFBO0FBQUEsTUFVRSxJQUNFLDRCQUNBLFFBQVE7QUFBQSxpQkFFUjtBQUFBLEtBTEo7QUFBQTtBQUFBLE1BVUUsSUFDRSw0QkFDQSxRQUFRO0FBQUEsaUJBRVI7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFLG1CQUNpQjtBQUFBLGlCQUVmO0FBQUEsTUFFRjtBQUFBO0FBQUEsU0FFSSxxQkFDQTtBQUFBLFdBQ0E7QUFBQSxXQUNBO0FBQUEsT0FHRjtBQUFBLEtBZEo7QUFBQTtBQUFBO0FBQUEsdUJBbGZFLFVBQVUsb0JBQ1YsaUJBRkY7QUFBQSxjQU1FLHVCQUF1QixDQUR6QjtBQUFBO0FBQUEsTUFLRSxJQUNFLE9BQU8sbUJBQW1CLHNCQUFzQjtBQUFBLGlCQUVoRCxRQUFRO0FBQUEsS0FKWjtBQUFBO0FBQUEsTUFTRSxJQUNFLE9BQU8saUJBQWlCLHFCQUFqQixVQUFnRDtBQUFBLGlCQUV2RCxxQkFBcUI7QUFBQSxLQUp6QjtBQUFBO0FBQUEsTUFTRSxJQUNFLGtCQUFrQiw4QkFDbEIsUUFBUTtBQUFBLGlCQUVSO0FBQUEsS0FMSjtBQUFBO0FBQUEsTUFVRSxJQUNFLGtCQUFrQixnQkFDbEIsUUFBUTtBQUFBLGlCQUVSO0FBQUEsS0FMSjtBQUFBO0FBQUEsTUFVRSxJQUNFLE9BQU8sb0JBQW9CLGNBQWM7QUFBQSxpQkFFekM7QUFBQSxLQUpKO0FBQUE7QUFBQSxNQVNFLElBQ0UsT0FBTyxpQkFBaUIsMEJBQWpCLFVBQXFEO0FBQUEsaUJBRTVELHFCQUFxQjtBQUFBLEtBSnpCO0FBQUE7QUFBQSxNQVNFLElBQ0UsbUJBQW1CLGdCQUNuQixRQUFRO0FBQUEsaUJBRVI7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFO0FBQUEsT0FDRTtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1I7QUFBQTtBQUFBLE9BRUYsbUJBQW1CO0FBQUEsT0FDbkIsUUFBUTtBQUFBO0FBQUEsaUJBRVI7QUFBQSxLQVRKO0FBQUE7QUFBQSxNQWNFLElBQ0UscUJBQXFCLHlCQUNyQixRQUFRO0FBQUEsaUJBRVI7QUFBQSxLQUxKO0FBQUE7QUFBQSxtQkFVYSx5QkFDSDtBQUFBLE1BQ1I7QUFBQSxPQUFtQjtBQUFBO0FBQUEsVUFHYixvQkFDQTtBQUFBO0FBQUEsVUFFQSxvQkFDQTtBQUFBO0FBQUEsVUFFQSxrREFDQTtBQUFBO0FBQUEsVUFFQSxvQkFDQTtBQUFBO0FBQUEsTUFHTixJQUNFLG1CQUFtQixxQkFDbkIsUUFBUTtBQUFBLGlCQUVSO0FBQUEsS0F2Qko7QUFBQTtBQUFBLG1CQTRCYSx5QkFDSDtBQUFBLE1BQ1I7QUFBQSxPQUFtQjtBQUFBO0FBQUEsVUFHYix3QkFDQTtBQUFBO0FBQUEsVUFFQSx3QkFDQTtBQUFBO0FBQUEsVUFFQSxzQkFDQTtBQUFBO0FBQUEsVUFFQSx3QkFDQTtBQUFBO0FBQUEsVUFFQSx1QkFDQTtBQUFBO0FBQUEsVUFFQSx1QkFDQTtBQUFBO0FBQUEsVUFFQSxzQkFDQTtBQUFBO0FBQUEsVUFFQSx3QkFDQTtBQUFBO0FBQUEsVUFFQSxzQkFDQTtBQUFBO0FBQUEsVUFFQSwwQkFDQTtBQUFBO0FBQUEsVUFFQSx3QkFDQTtBQUFBO0FBQUEsVUFFQSx1QkFDQTtBQUFBO0FBQUEsVUFFQSxzQkFDQTtBQUFBO0FBQUEsTUFHTjtBQUFBLGdCQUNXLGlCQUFpQjtBQUFBLE9BQzFCLE9BQU8sbUJBQW1CO0FBQUE7QUFBQSxpQkFFMUI7QUFBQSxLQWxESjtBQUFBLGlCQXVERSxPQUFPLG9DQUFvQyxDQUQ3QztBQUFBO0FBQUEsTUFLRTtBQUFBLE9BQW1CO0FBQUE7QUFBQSxrQkFFRjtBQUFBLGtCQUNBO0FBQUE7QUFBQTtBQUFBLFFBRWI7QUFBQSwwQkFDa0I7QUFBQTtBQUFBLDJCQUdBO0FBQUEsYUFHaEI7QUFBQSxTQUNBLEdBQ0k7QUFBQSxVQUE0QixLQUN6Qiw4QkFBOEI7QUFBQSxXQUNqQyxJQUNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUdNO0FBQUE7QUFBQTtBQUFBLFVBR1YsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBUVYsbUJBQW1CLFlBQVk7QUFBQTtBQUFBLGtCQUUvQjtBQUFBO0FBQUEsT0FFRyxJQUVILG1CQUFtQixZQUFZO0FBQUEsa0JBRS9CO0FBQUEsS0F4Q047QUFBQTtBQUFBLE1BOENFO0FBQUEsc0JBQ2lCLGlCQUFpQjtBQUFBLE9BQ2hDLE9BQU8sNENBQTRDO0FBQUE7QUFBQSxpQkFFbkQ7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFO0FBQUEsc0JBQ2lCLGtCQUFrQjtBQUFBLE9BQ2pDLE9BQU8sNENBQTRDO0FBQUE7QUFBQSxpQkFFbkQ7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFLElBQ0Usa0JBQWtCLHVCQUNsQixRQUFRO0FBQUEsaUJBRVI7QUFBQSxLQUxKO0FBQUE7QUFBQSxNQVVFLElBQ0UsaUJBQWlCLGlCQUFpQixnQkFDbEMsUUFBUTtBQUFBLGlCQUVSO0FBQUEsS0FMSjtBQUFBO0FBQUEsTUFVRTtBQUFBLE9BQ0U7QUFBQTtBQUFBLFNBRUU7QUFBQTtBQUFBLE9BR0YsUUFBUTtBQUFBO0FBQUEsaUJBRVI7QUFBQSxLQVRKO0FBQUE7QUFBQSxNQWNFO0FBQUEsa0JBQ2EscUJBQXFCO0FBQUEsT0FDaEMsT0FBTyw2QkFBNkI7QUFBQTtBQUFBLGlCQUVwQztBQUFBLEtBTEo7QUFBQTtBQUFBLE1BVUUsSUFDRSxPQUFPLG9CQUFvQixjQUFjO0FBQUEsaUJBRXpDO0FBQUEsS0FKSjtBQUFBO0FBQUE7QUFBQSxtQmI0UUUsZ0JBQ0EsY0FBYyxxQkFGaEI7QUFBQSxjQU1FLHNDQUNBLGtCQUZGO0FBQUE7QUFBQSxjQU1VO0FBQUEsTUFDUix5REFFd0I7QUFBQSxLQUoxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1jdmdCcUI7QUFBQSxtQ0FDSTtBQUFBO0FBQUEsU0FHdkIsb0RBQW9EO0FBQUEsUUFDdEQ7QUFBQTtBQUFBLDZCQUV3QjtBQUFBLDZCQUNBO0FBQUEsMkJBQ0Y7QUFBQSwyREFFZ0M7QUFBQTtBQUFBLFdBRWI7QUFBQTtBQUFBLHdCQUkxQjtBQUFBLFNBR2IsS0FBSyx5Q0FBeUMsYUFDL0I7QUFBQSxzQkFJSixpQ0FDTTtBQUFBLFNBR2pCO0FBQUEsVUFBa0M7QUFBQTtBQUFBLGtCQUc5QjtBQUFBO0FBQUEsa0VBSUQ7QUFBQTtBQUFBLGlCQUdRO0FBQUEsbUJBQ0U7QUFBQSxTQUdiLGlDQUFrQztBQUFBLFVBQXNCLHNDQUNoQjtBQUFBLFNBR3hDLG9CQUFvQjtBQUFBLFFBQ3RCO0FBQUE7QUFBQSxxQkFJa0I7QUFBQSxzQkFDQztBQUFBLFFBRW5CLFlBQVc7QUFBQSxtQkFDRDtBQUFBLFNBR1I7QUFBQSxVQUNFO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUE7QUFBQTtBQUFBLFVBSUE7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQTtBQUFBO0FBQUEsVUFJQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBO0FBQUE7QUFBQSxVQUlBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUE7QUFBQTtBQUFBLFVBSUE7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQkFJVztBQUFBLHFCQUNHO0FBQUEsc0JBQ0M7QUFBQSxRQUVuQjtBQUFBLFNBQ0UsZUFBZTtBQUFBLG1CQUNQLG1CQUNBO0FBQUEsU0FDUix5REFBeUQsQ0FKcEQsQ0FLTjtBQUFBLE9BeEdxQjtBQUFBLE9BQUQ7QUFBQTtBQUFBLE1BOUJFO0FBQUE7QUFBQSxlQUNmO0FBQUEsc0JBRU87QUFBQSw4QkFDUTtBQUFBLDJCQUNEO0FBQUEsK0JBQ0U7QUFBQSxRQUV4QjtBQUFBO0FBQUEsaUJBQ1c7QUFBQSxxQkFDSTtBQUFBLHdCQUNHO0FBQUEsU0FDaEI7QUFBQSxVQUNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFJYztBQUFBLFNBQ2hCO0FBQUEsVUFDRTtBQUFBLHFFQUFzRTtBQUFBO0FBQUE7QUFBQSxZQUV0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FJRixRQUFRLENBakJILENBa0JOO0FBQUEsT0ExQnVCO0FBQUEsT0FBRDtBQUFBO0FBQUEsSUpnWnZCLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQSxnQ0FJTjtBQUFBLEdBQ0g7QUFBQSwrQkFRRSxPQUFPLFFBQVEsQ0FDakI7QUFBQSwrQkFORSxPQUFPLFFBQVEsQ0FDakI7QUFBQTtBQUFBLElKelhFO0FBQUEsR0FDRjtBQUFBLDZCUTJLd0I7QUFBQTtBQUFBO0FBQUEsTUFRcEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsS0FMRjtBQUFBO0FBQUEsZ0JBU1U7QUFBQSxNQUNSLDRCQUE2QjtBQUFBLE1BQzdCLEtBQUs7QUFBQSxPQUNIO0FBQUEsTUFDRjtBQUFBLE9BQ0U7QUFBQSxNQUNGO0FBQUEsT0FBc0MsWUFDekI7QUFBQSxRQUNULHlDQUEwQztBQUFBLFFBQzFDO0FBQUE7QUFBQTtBQUFBLE9BRUcsWUFDTTtBQUFBLFFBQ1Qsd0NBQ0U7QUFBQSxRQUVGO0FBQUE7QUFBQSxNQUdKLFVBQVU7QUFBQSxLQXBCWjtBQUFBO0FBQUEsTUF3QkU7QUFBQTtBQUFBLGlCQUdVLDRCQUNBO0FBQUEsU0FDTixPQUFPLDZCQUE2QjtBQUFBO0FBQUE7QUFBQSxpQkFJOUIsNEJBQ0E7QUFBQSxTQUNOLGtCQUFrQjtBQUFBO0FBQUEsU0FFbEIsT0FBTyxrQ0FBa0M7QUFBQSxpQkFFekMscUJBQXFCO0FBQUE7QUFBQSxLQWhCM0I7QUFBQTtBQUFBLE1BcUJFO0FBQUE7QUFBQSxTQUdJLHlCQUF5QjtBQUFBLFNBQ3pCLHlCQUF5QjtBQUFBLFNBQ3pCO0FBQUE7QUFBQTtBQUFBLFNBSUEsK0JBQ0EsK0JBQ0E7QUFBQTtBQUFBLFNBRUEsaUJBQWlCLHFCQUNqQjtBQUFBLGlCQUVBLG9CQUNBO0FBQUE7QUFBQSxNQUVKLFFBQVE7QUFBQSxLQXBCVjtBQUFBO0FBQUEsTUF3QkU7QUFBQTtBQUFBLGlCQUdZLHdCQUNBO0FBQUEsU0FDUjtBQUFBLFVBQ0U7QUFBQTtBQUFBLFVBQ0ssWUFDTTtBQUFBLFdBQWdDO0FBQUEsU0FJN0M7QUFBQTtBQUFBO0FBQUEsa0JBSU8sV0FDQTtBQUFBLFNBQ1A7QUFBQSxVQUNFO0FBQUE7QUFBQSxVQUNLLFlBQ007QUFBQSxXQUFnQztBQUFBLFNBSTdDO0FBQUE7QUFBQSxTQUVBLGVBQWUsc0JBQ2Y7QUFBQSxpQkFFQSxtQkFDQTtBQUFBO0FBQUEsS0FoQ047QUFBQTtBQUFBLE1BcUNFO0FBQUEsZ0JBQ1MsbUNBQ0E7QUFBQSxPQUNQLGNBQWM7QUFBQTtBQUFBLE1BRWhCO0FBQUEsT0FBd0MsdUNBQ0M7QUFBQSxNQUV6QyxZQUFXO0FBQUEsT0FDVDtBQUFBLFFBQWdDLHlDQUF3QztBQUFBLE1BQzFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBT0ksWUFBVztBQUFBLFVBQ1Q7QUFBQSxVQUNBO0FBQUEsVUFDQSxVQUFXLFVBQVM7QUFBQSxVQUNwQixVQUFXLFFBQVE7QUFBQSxVQUNuQjtBQUFBLFdBQ0UsWUFBWSxpQkFBaUI7QUFBQSxXQUM3QixLQUFLLGlCQUFpQixRQUFRO0FBQUEsV0FDOUIsS0FBSyxpQkFBaUIsVUFBUztBQUFBO0FBQUE7QUFBQSxTQUduQztBQUFBO0FBQUEsU0FHQSxZQUFXO0FBQUEsVUFFVCxxQ0FBc0MsVUFBUztBQUFBLFVBQy9DLHFDQUFzQyxRQUFRO0FBQUEsVUFDOUMseUNBQTBDLFVBQVM7QUFBQSxVQUNuRCx5Q0FBMEMsUUFBUTtBQUFBO0FBQUEsU0FFcEQ7QUFBQTtBQUFBLFNBRUEsWUFBVztBQUFBO0FBQUEsZ0JBQ0E7QUFBQSxnQkFDQTtBQUFBLFVBQ1QsWUFBYSxVQUFTO0FBQUEsVUFDdEIsWUFBYSxRQUFRO0FBQUE7QUFBQSxTQUV2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQVNBLFlBQVc7QUFBQSxVQUNULDZCQUE4QixVQUFTO0FBQUEsVUFDdkMsNkJBQThCLFFBQVE7QUFBQTtBQUFBLFNBRXhDO0FBQUE7QUFBQSxNQUVKLFFBQVE7QUFBQSxLQTlEVjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1Bc0VFO0FBQUEsT0FBNkIsR0FDdkI7QUFBQSxRQUF3QztBQUFBO0FBQUEsUUFDdkM7QUFBQSxNQUVQLG1DQUFvQztBQUFBLE1BQ3BDLFVBQVU7QUFBQSxLQU5aO0FBQUEsY0FVRSxxQkFBcUIsQ0FEdkI7QUFBQSxpQkFLRSxvQkFDQSxRQUFRLENBRlY7QUFBQSxhQU1FLG1CQUNBLFFBQVEsQ0FGVjtBQUFBO0FBQUE7QUFBQSxJZjlDQSxPQUFPLCtDQUErQztBQUFBLEdBQ3hEO0FBQUE7QUFBQSx1QkNwV0ksWUFDQSxXQUZGO0FBQUEsY0FNRSx1QkFBdUIsQ0FEekI7QUFBQSxjQUtFLG1DQUFxQyxDQUR2QztBQUFBO0FBQUEsY0FLUSxZQUNGO0FBQUEsTUFDSjtBQUFBLE1BQ0EsMkJBQTZCO0FBQUEsS0FKL0I7QUFBQTtBQUFBLGNBUVEsWUFDRjtBQUFBLE1BQ0o7QUFBQSxNQUNBLGtDQUFzQztBQUFBLEtBSnhDO0FBQUE7QUFBQSxjQVFRLFlBQ0Y7QUFBQSxNQUNKO0FBQUEsTUFDQSxxRUFBMkU7QUFBQSxLQUo3RTtBQUFBO0FBQUEsY0FRUSxZQUNGO0FBQUEsTUFDSjtBQUFBLE1BQ0EsNkRBQW1FO0FBQUEsS0FKckU7QUFBQTtBQUFBLGNBUVE7QUFBQSxNQUNOO0FBQUEsTUFDQSxPQUFPLDJCQUEyQiw0QkFBNEI7QUFBQSxLQUhoRTtBQUFBO0FBQUEsY0FPUTtBQUFBLE1BQ047QUFBQSxNQUNBLE9BQU8sMkJBQTJCO0FBQUEsS0FIcEM7QUFBQTtBQUFBO0FBQUEsZ0JZNkRVO0FBQUEsSUFDVixZQUFXO0FBQUEsYUFDSDtBQUFBLEtBQ047QUFBQSxLQUNBLGtCQUNFLFdBQ0EsYUFDSztBQUFBO0FBQUEsSUFJVCxZQUFZO0FBQUEsR0FDZDtBQUFBO0FBQUEsZ0JBTVk7QUFBQSxJQUNWLFlBQVc7QUFBQTtBQUFBLFVBQ0g7QUFBQSxLQUNOO0FBQUEsS0FDQSxrQkFBbUIsZ0JBRVo7QUFBQTtBQUFBLElBSVQsT0FBTywrQ0FBK0M7QUFBQSxHQUN4RDtBQUFBO0FBQUEsaUJFMUphLG9CQUNGO0FBQUEsSUFDVCxZQUFXO0FBQUEsS0FDVDtBQUFBLE1BQ0U7QUFBQSxLQUNGO0FBQUE7QUFBQSxJQUVGLFdBQVc7QUFBQSxHQUNiO0FBQUE7QUFBQSxJQThJRSxxQ0FJSSxRQUFRLFVBRVIsUUFBUTtBQUFBO0FBQUEsR0FFZDtBQUFBO0FBQUEsMkJBb1J5QjtBQUFBLElBQ3ZCLEdBQUk7QUFBQSxLQUNGO0FBQUEsSUFFRjtBQUFBO0FBQUE7QUFBQSxLQU9FLE9BQU8sK0NBQStDO0FBQUEsSUFDeEQsT0FBTyx5Q0FBeUM7QUFBQSxHQUNsRDtBQUFBO0FBQUEsYUM1Y1c7QUFBQSxJQUNULE9BQU8sNkNBQTZDO0FBQUEsR0FDdEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUtXO0FBQUE7QUFBQTtBQUFBLElBS1QsT0FBTyw2Q0FBNkM7QUFBQSxHQUN0RDtBQUFBLDBDQXhCRSxxQkFBcUIsQ0FDdkI7QUFBQSx5Q0FJRSxjQUFjLENBQ2hCO0FBQUE7QUFBQTtBQUFBLE1DZGM7QUFBQTtBQUFBLG9CQVNEO0FBQUEsa0JBQ0Y7QUFBQSxTQUNQLHNCQUF1QjtBQUFBLFNBR3ZCO0FBQUEsU0FDQTtBQUFBLFFBQ0Y7QUFBQTtBQUFBLGtCQU1TO0FBQUEsU0FDUCxXQUFZO0FBQUEsa0JBR0w7QUFBQSxTQUNQLHNCQUF1QjtBQUFBLFNBR3ZCO0FBQUEsU0FDQTtBQUFBLFFBQ0Y7QUFBQTtBQUFBLFNBSUUscUVBQTJFO0FBQUEsUUFDN0U7QUFBQTtBQUFBLG9CQUtXLFlBQ0EsZ0JBQ0EsWUFDQTtBQUFBLFNBRVQ7QUFBQSxTQUNBO0FBQUEsb0JBR1Msb0JBQ0E7QUFBQSxTQUNUO0FBQUEsU0FDQTtBQUFBLFNBRUE7QUFBQSxTQUdBO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxTQUNBO0FBQUEsU0FFQTtBQUFBLFNBQ0E7QUFBQSxTQUdBO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxTQUNBO0FBQUEsU0FFQTtBQUFBLFNBR0E7QUFBQSxTQUNBO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxRQUNGO0FBQUE7QUFBQTtBQUFBLFdBR3FCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FNUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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SUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTyxhQTdFRixDQThFTjtBQUFBLE9BbkdzQjtBQUFBLE9BQUQ7QUFBQTtBQUFBLGlCQWlKWDtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdKemFBO0FBQUEsT0FBQUEsb0JBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQSxPQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxrQkFBQTtBQUFBO0FBQUEsT0FBQUMsdUJBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsZ0JBQUE7QUFBQTtBQUFBLE9BQUFDLG9CQUFBO0FBQUE7QUFBQSxPQUFBQyxxQkFBQTtBQUFBO0FBQUEsT0FBQUMscUJBQUE7QUFBQTtBQUFBLE9BQUFDLHFCQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGlDQUFBIiwiaWdub3JlTGlzdCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzhdfX0seyJvZmZzZXQiOnsibGluZSI6OTQ0MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuXG5cbnR5cGUgbmV1dHJhbF9jb25jYXQgPVxuICB7IGY6XG4gICAgICAnYSAnYiAnYyAnZCAnZSAnZi4gW2BTdHJpbmcgb2Ygc3RyaW5nIHwgYENoYXIgb2YgY2hhciBdIC0+XG4gICAgICAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdCAtPiAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdFxuICB9XG5cbmxldCByZWMgc3RyaW5nX2NvbmNhdF9tYXA6IHR5cGUgYSBiIGMgZCBlIGYuXG4gICBuZXV0cmFsX2NvbmNhdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCA9XG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+IFN0cmluZyAocGFkLCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT4gQ2FtbF9zdHJpbmcgKHBhZCwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgQ2hhciAocmVzdCkgLT4gQ2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyICggc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT4gQm9vbCAocGFkLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEFscGhhIHJlc3QgLT4gQWxwaGEgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBUaGV0YSByZXN0IC0+IFRoZXRhIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgZmMsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZmMsICBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgLT4gUmVhZGVyIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRmx1c2ggcmVzdCAtPiBGbHVzaCAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT4gZi5mIChgU3RyaW5nIHN0cikgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGYuZiAoYENoYXIgY2hyKSAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgLT4gRW5kX29mX2Zvcm1hdFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwyIiwiZiIsImEwIiwiYTEiLCJlcmFzZV9yZWwiLCJwYXJhbSIsInJlc3QiLCJ0eSIsInR5MSIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInByZWMiLCJpY29udiIsImZjb252Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJmbXRpbmdfbGl0IiwiZm10aW5nX2dlbiIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwiY291bnRlciIsImlnbiIsImFyaXR5Iiwic3RyaW5nX2NvbmNhdF9tYXAiLCJmYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUMrZ0JRLDhCQWtDWTtBQUFBLElBbENaO0FBQUE7QUFBQSxXQUFBQyxPQUFBLFVBS0ksMkJBQWdCO0FBQUE7QUFBQSxXQUFBQSxTQUxwQixVQU9NLDZCQUFnQjtBQUFBO0FBQUEsV0FBQUEsU0FQdEIsVUFTRyw2QkFBZ0I7QUFBQTtBQUFBLFdBQUFBLFNBVG5CLFVBV0ssNkJBQWdCO0FBQUE7QUFB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MERBQXdCO0FBQUE7QUFBQSxXQUFBVixVQWxDOUMsVUFxQmdCLDBDQUEwQjtBQUFBO0FBQUEsV0FBQUEsVUFyQjFDLFVBc0JnQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBdEIxQyxVQUFBaUIsYUFBQTtBQUFBLE9BOEN3QixzREFBd0I7QUFBQTtBQUFBLFdBQUFqQixVQTlDaEQsVUFBQWtCLGFBQUE7QUFBQSxPQWdEd0Isc0RBQXdCO0FBQUE7QUFBQSxXQUFBbEIsVUFoRGhELFVBeUJrQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBekI1QyxVQUFBbUIsV0FBQSxVQUFBQyxZQUFBO0FBQUEsT0FxQ2dDLCtEQUF3QjtBQUFBO0FBQUEsV0FBQXBCLFVBckN4RCxVQUFBcUIsVUFBQTtBQUFBLE9BdUNzQixtREFBd0I7QUFBQTtBQUFBLFdBQUFyQixVQXZDOUMsVUF5Q1csMENBQTBCO0FBQUE7QUFBQSxXQUFBQSxVQXpDckMsVUFBQXNCLE1BQUE7QUFBQSxPQTJDZ0IsK0NBQXdCO0FBQUE7QUFBQSxXQUFBdEIsVUEzQ3hDLFVBQUF5QixLQUFBLFVBQUFGLFFBQUE7QUFBQSxPQXdCZ0IscURBQXdCO0FBQUE7QUFBQSxHQTBCZDtBQUFBLEdENXVCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo5NzIxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GOF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaDEgOjogW10gLT4gaDEgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBbXSAtPiBoMSA6OiBoMiA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IGgzIDo6IHRsIC0+IGgxIDo6IGgyIDo6IGgzIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIER5bmFycmF5ICAgICAgID0gRHluYXJyYXlcbm1vZHVsZSBQcXVldWUgICAgICAgICA9IFBxdWV1ZVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJYXJyYXkgICAgICAgICA9IElhcnJheVxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFpciAgICAgICAgICAgPSBQYWlyXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBSZXByICAgICAgICAgICA9IFJlcHJcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2F0b21pY19jYXNfZmllbGQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9vdXRwdXRfYnl0ZXMiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19jb25jYXQiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfc3lzX29wZW4iLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiSW52YWxpZF9hcmd1bWVudCIsIkZhaWx1cmUiLCJNYXRjaF9mYWlsdXJlIiwiQXNzZXJ0X2ZhaWx1cmUiLCJOb3RfZm91bmQiLCJPdXRfb2ZfbWVtb3J5IiwiU3RhY2tfb3ZlcmZsb3ciLCJTeXNfZXJyb3IiLCJFbmRfb2ZfZmlsZSIsIkRpdmlzaW9uX2J5X3plcm8iLCJTeXNfYmxvY2tlZF9pbyIsIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJFeGl0IiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiY2hhcl9vZl9pbnQiLCJuIiwiY3N0X2ZhbHNlIiwiY3N0X3RydWUiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsInBhcmFtIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwiZXhuIiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwibWF0Y2giLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sIiwibDEiLCJsMiIsImgxIiwiaDIiLCJ0bCIsImgzIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiciIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zIiwiaGQiLCJhY2N1IiwiYmVnIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN0ciIsInN0cjIiLCJmbXQyIiwic3RyMSIsImZtdDEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4iLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIlN0ZGxpYiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywyQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsMkJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLElDNEJpQjtBQUFBLEdBQWdCO0FBQUEsWUFBQUMsWUFBQUQ7QUFBQUEsSUFDYjtBQUFBLEdBQXlCO0FBQUEsT0FBQUUsT0FORDtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEdBa0QzQiwyQ0FBb0I7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxHQUNwQiw4Q0FBb0I7QUFBQSxZQUFBRSxJQUFBSCxHQXVCekIsMkJBQXdCO0FBQUEsWUFBQUksS0FBQUosR0FNdkIsY0FBVztBQUFBLFlBQUFLLFlBQUFDO0FBQUFBLElBd0h0Qix1QkFBd0Q7QUFBQSxJQUEvQixpQ0FBbUQ7QUFBQTtBQUFBLE9BQUFDLFlEL045RSxTQUFBQyxXQUFBO0FBQUEsWUFBQUMsZUFBQUMsR0M2UEUsK0JBQTZCO0FBQUEsWUFBQUMsZUFBQUM7QUFBQUEsSUFDVjtBQUFBLG1DQUdaO0FBQUEsZUFBNEI7QUFBQTtBQUFBLFdBcEVLO0FBQUEsWUFBQUMsbUJBQUFEO0FBQUFBLElBc0VqQiwyREFHWjtBQUFBO0FBQUEsWUFBQUUsY0FBQVIsR0FHTTtBQUFBLFlBQUFTLGtCQUFBbkI7QUFBQUEsSUFNakIsWUFBUztBQUFBLFVBQUFvQjtBQUFBQSxTQUFBQSxNRC9RWDtBQUFBLDRCQ2dSb0I7QUFBQSxLRGhScEI7QUFBQTtBQUFBLEdDZ1J3QjtBQUFBLFlBQUFDLGtCQUFBQztBQUFBQSxRQUFBQyxJQUt0QiwyQkFBQUMsSUFPQTtBQUFBO0FBQUEsS0FMRSxXQUFlO0FBQUEsU0FBQUMsUUFDVDtBQUFBO0FBQUE7QUFBQSxNQUFjO0FBQUEsVUFBQUQsTUFDRTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQ2Y7QUFBQTtBQUFBLEdBRUg7QUFBQSxZQUFBRSxnQkFBQTNDO0FBQUFBLElBRWtDLE9BQXdCLGtCQUF4QixzQ0FBd0I7QUFBQTtBQUFBLFlBQUE0QyxvQkFBQTNCO0FBQUFBLElBTWhFLFlBQVM7QUFBQSxVQUFBb0I7QUFBQUEsU0FBQUEsTURwU1g7QUFBQSw0QkNxU29CO0FBQUEsS0RyU3BCO0FBQUE7QUFBQSxHQ3FTd0I7QUFBQSxZQUFBUSxPQUFBQyxJQUFBQztBQUFBQSxJQUt0QixTQUNRO0FBQUEsUUFBQUwsUUFEUixPQUFBTSxLQUFBO0FBQUEsZ0JBRWM7QUFBQSxRQUFBTixVQUZkLFVBQUFPLEtBQUE7QUFBQSxrQkFHb0I7QUFBQTtBQUFBLEtBQUFDLEtBSHBCO0FBQUEsS0FBQUMsS0FBQTtBQUFBLEtBQUFDLFFBSTBCO0FBQUEsS0FBQUMsTUFBa0I7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQVIsT0FBQTtBQUFBO0FBQUEsS0FKNUM7QUFBQSxVQUFBSixVQUFBLFNBQUFNLE9BQUE7QUFBQTtBQUFBLFdBQUFOLFVBQUEsWUFBQU8sT0FBQTtBQUFBO0FBQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFFLFFBSTBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FETjtBQUFBO0FBQUE7QUFBQSxPQUROO0FBQUE7QUFBQTtBQUFBLE1BRE47QUFBQSxLQUc2QztBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFFLFFBVzNDO0FBQUEsSUFBQUMsU0FDQztBQUFBLElBQUFDLFNBQ0E7QUFBQSxZQUFBQyxhQUFBQyxNQUFBQyxNQUFBQztBQUFBQSxRQUFBQyxJQWVILDRCQUFtQjtBQUFBLElBQzNCO0FBQUEsSUFBMkI7QUFBQSxHQUMxQjtBQUFBLFdBakIrQjtBQUFBLFlBQUFDLFNBQUFGLE1Bb0JoQyxpQ0FBd0U7QUFBQSxXQXBCeEM7QUFBQSxZQUFBRyxhQUFBSCxNQXVCaEMsaUNBQTBFO0FBQUEsWUFBQUksVUFBQWhDO0FBQUFBLFFBQUFBLFVBaUJsRTtBQUFBLElBQXNCO0FBQUEsS0FUZixjQUNMO0FBQUEsU0FBQU8sSUFESyxZQUFBMEIsSUFBQTtBQUFBLEtBR1QsSUFDSTtBQUFBLFdBQUE3QjtBQUFBQSxVQUFBQSxNRDlWWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0NtV2dDO0FBQUEsWUFBQThCLGFBQUFDLElBQUFuRDtBQUFBQSxJQVU5Qiw4REFBcUM7QUFBQTtBQUFBLFlBQUFvRCxjQUFBRCxJQUFBbkQ7QUFBQUEsSUFHckMseURBQTZDO0FBQUE7QUFBQSxZQUFBcUQsT0FBQUYsSUFBQW5ELEdBQUFzRCxLQUFBQztBQUFBQSxJQUc3QztBQUFBLEtBRUssNENBQTBCO0FBQUEsSUFEMUIsNEJBQzBCO0FBQUE7QUFBQSxZQUFBQyxpQkFBQUwsSUFBQW5ELEdBQUFzRCxLQUFBQztBQUFBQSxJQUcvQjtBQUFBLEtBRUssc0NBQWlDO0FBQUEsSUFEakMsc0NBQ2lDO0FBQUE7QUFBQSxZQUFBRSxhQUFBQyxNQUFBQztBQUFBQSxJQU9kLDRDQUE0QjtBQUFBO0FBQUEsWUFBQUMsVUFBQVQ7QUFBQUEsSUFNbkM7QUFBQSxJQUFVLGdDQUFvQjtBQUFBO0FBQUEsWUFBQVUsZ0JBQUFWO0FBQUFBLElBRS9DLElBQUsseUJBQUEvQjtBQUFBQSxJQUFMLFlBQ0ssMkNBQUFBLEtBQStCO0FBQUEsR0FBRztBQUFBLFlBQUEwQyxZQUFBcEIsTUFBQUMsTUFBQUM7QUFBQUEsUUFBQUMsSUFVL0IsMkJBQWtCO0FBQUEsSUFDMUI7QUFBQSxJQUEwQjtBQUFBLEdBQ3pCO0FBQUEsV0EzRitCO0FBQUEsWUFBQWtCLFFBQUFuQixNQThGaEMsOEJBQTJDO0FBQUEsV0E5Rlg7QUFBQSxZQUFBb0IsWUFBQXBCLE1BaUdoQyw4QkFBNkM7QUFBQSxZQUFBcUIsTUFBQUMsSUFBQWxFLEdBQUFzRCxLQUFBQztBQUFBQSxJQVE3QztBQUFBLEtBRUsscUNBQXlCO0FBQUEsSUFEekIsMkJBQ3lCO0FBQUE7QUFBQSxZQUFBWSxvQkFBQUQsSUFBQWxFLEdBQUFzRCxPQUFBQztBQUFBQSxRQUFBRCxNQUc5QixPQUFBQyxNQUFBO0FBQUE7QUFBQSxrQkFBaUI7QUFBQSxTQUFBYSxJQUNQO0FBQUEsS0FDUixZQUNLO0FBQUEsU0FBQWIsUUFDQSxhQUFBRCxRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FDSjtBQUFBLFlBQUFlLGFBQUFILElBQUFsRSxHQUFBc0QsS0FBQUM7QUFBQUEsSUFHSDtBQUFBLEtBRUssMkNBQWdDO0FBQUEsSUFEaEMsa0NBQ2dDO0FBQUE7QUFBQSxZQUFBZSxvQkFBQUosSUFBQVg7QUFBQUEsUUFBQXZELElBRzdCO0FBQUEsSUFDUjtBQUFBLElBQXVCLDhCQUNDO0FBQUE7QUFBQSxZQUFBdUUsV0FBQWI7QUFBQUEsYUFBQWMsYUFBQUMsS0FBQUMsT0FBQTFEO0FBQUFBLFNBQUEwRCxNQUtILE9BQUExRCxRQUFBO0FBQUE7QUFBQSxrQkFDYjtBQUFBLFVBQUFpQixLQURhLFVBQUEwQyxLQUFBLFVBQUFwQixNQUdqQjtBQUFBLE1BQ0E7QUFBQSxVQUFBbUIsUUFBbUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUNKO0FBQUEsUUFBQUUsT0FvQlQsR0FBQXJCLE1BQUE7QUFBQTtBQUFBLFNBQUE3QyxJQWxCaEI7QUFBQSxLQUNSO0FBQUEsTUFBYyxXQUVKO0FBQUEsY0FDK0IsYUFBbEI7QUFBQTtBQUFBO0FBQUEsTUFDZDtBQUFBLFdBQUFtRSxNQVNHO0FBQUEsT0FDSjtBQUFBLFdBQUF0QixRQUNOLGFBQUFxQixTQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBRSxNQVZVO0FBQUEsTUFDSDtBQUFBLE1BQ0E7QUFBQSxNQUNQO0FBQUE7QUFBQSxRQUFBdkIsUUFFUTtBQUFBLFlBQytCLGFBQWxCO0FBQUE7QUFBQSxlQUhyQjtBQUFBO0FBQUEsS0FTaUM7QUFBQTtBQUFBO0FBQUEsWUFBQXdCLGVBQUFiO0FBQUFBLElBU2YsWUFBSywyQ0FBQTlDLEtBQXNCO0FBQUEsR0FBRztBQUFBLFlBQUE0RCxXQUFBbkMsR0FNbkMscUNBQW9CO0FBQUEsWUFBQW9DLGFBQUFqRixHQUNsQiwrQkFBc0I7QUFBQSxZQUFBa0YsWUFBQWxGLEdBQ3ZCLDhCQUFxQjtBQUFBLFlBQUFtRixVQUFBM0QsR0FDZTtBQUFBLFlBQUE0RCxZQUFBckcsR0FDZixPQUFtQixzQkFBbkIsbUJBQW1CO0FBQUEsWUFBQXNHLGNBQUFyRjtBQUFBQSxJQUUxRDtBQUFBLElBQXdCO0FBQUEsSUFBeUIsNEJBQVk7QUFBQTtBQUFBLFlBQUFzRixjQUFBdEU7QUFBQUEsSUFDeEM7QUFBQSxJQUF5Qiw0QkFBWTtBQUFBO0FBQUEsWUFBQXVFLFdBQUExQyxHQUl6QyxxQ0FBb0I7QUFBQSxZQUFBMkMsYUFBQXhGLEdBQ2xCLCtCQUFzQjtBQUFBLFlBQUF5RixZQUFBekYsR0FDdkIsOEJBQXFCO0FBQUEsWUFBQTBGLFVBQUFsRSxHQUNlO0FBQUEsWUFBQW1FLFlBQUE1RyxHQUNmLE9BQW1CLHNCQUFuQixtQkFBbUI7QUFBQSxZQUFBNkcsY0FBQTVGO0FBQUFBLElBRTFEO0FBQUEsSUFBd0I7QUFBQSxJQUF5Qiw0QkFBWTtBQUFBO0FBQUEsWUFBQTZGLGNBQUE3RTtBQUFBQSxJQUN4QztBQUFBLElBQXlCLDRCQUFZO0FBQUE7QUFBQSxZQUFBOEUsVUFBQTlFLE9BSXpDLHVCQUFZLHdCQUFrQjtBQUFBLFlBQUErRSxTQUFBL0UsT0FDbEIsT0FBYixtQkFBYSxhQUFhO0FBQUEsWUFBQWdGLGFBQUFoRixPQUNMLE9BQWEsa0JBQWIsYUFBYTtBQUFBLFlBQUFpRixXQUFBakYsT0FDakIsT0FBZixxQkFBZSxhQUFhO0FBQUEsWUFBQWtGLGVBQUFsRixPQUNMLE9BQWEsb0JBQWIsYUFBYTtBQUFBLFlBQUFtRixpQkFBQW5GLFdBQUFvRixNQTBCbkMsVUFBdUIsV0FBRztBQUFBLFlBQUF4RSxTQUFBLEdBQUFaO0FBQUFBO0FBQUFBLEtBQUFxRixPQU1wQztBQUFBLEtBQUFDLE9BQUE7QUFBQSxLQUFBQyxPQUFBO0FBQUEsS0FBQUMsT0FBQTtBQUFBLEtBQUFDLEtBRU07QUFBQSxJQURQLHlFQUE2QztBQUFBLEdBQzFCO0FBQUEsT0FBQUMsZ0JBdE9LO0FBQUEsWUFBQUMsUUFBQTVIO0FBQUFBLElBdVBoQztBQUFBLFNBQUE2SCxXQUNBO0FBQUEsU0FBQUMsZUFDQSxRQUFBRCxhQUFBO0FBQUE7QUFBQSxNQUFBRTtBQUFBQSxRQUFBLFNBQUE5RjtBQUFBQSxTQUNFLGlEQUF1RDtBQUFBLFNBQ3ZELGdDQUFXO0FBQUE7QUFBQSxNQUFBK0YsVUFFYjtBQUFBLFVBQ0E7QUFBQTtBQUFBO0FBQUEsR0FBNkI7QUFBQSxPQUFBQywwQkE5UEcsYUFBQWhHLE9BZ1FXLFNBQUU7QUFBQSxZQUFBaUcsV0FBQWpHO0FBQUFBLElBRzdDO0FBQUEsSUFBNkIsc0NBQ0E7QUFBQTtBQUFBLFlBQUFrRyxLQUFBQztBQUFBQSxJQUc3QjtBQUFBLElBQ0EscUNBQWdCO0FBQUE7QUFBQSxHQUVWO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUF1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURya0IvRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwMTg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3lzLm1sLmluIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuZXh0ZXJuYWwgcG9sbF9hY3Rpb25zIDogdW5pdCAtPiB1bml0ID0gXCIlcG9sbFwiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCBpc19yZWd1bGFyX2ZpbGUgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5leHRlcm5hbCBnZXRlbnZfb3B0OiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbiA9IFwiY2FtbF9zeXNfZ2V0ZW52X29wdFwiXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5leHRlcm5hbCBpb19idWZmZXJfc2l6ZTogdW5pdCAtPiBpbnQgPSBcImNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXCJcbmxldCBpb19idWZmZXJfc2l6ZSA9IGlvX2J1ZmZlcl9zaXplICgpXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbCA9IGludFxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoc2lnbmFsIC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IHNpZ25hbCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcbmxldCBzaWdpbyA9IC0yOVxubGV0IHNpZ3dpbmNoID0gLTMwXG5cbmxldCBzaWduYWxfdG9fc3RyaW5nIHMgPVxuICBpZiBzID0gc2lnYWJydCB0aGVuIFwiU0lHQUJSVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2Fscm0gdGhlbiBcIlNJR0FMUk1cIlxuICBlbHNlIGlmIHMgPSBzaWdmcGUgdGhlbiBcIlNJR0ZQRVwiXG4gIGVsc2UgaWYgcyA9IHNpZ2h1cCB0aGVuIFwiU0lHSFVQXCJcbiAgZWxzZSBpZiBzID0gc2lnaWxsIHRoZW4gXCJTSUdJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdpbnQgdGhlbiBcIlNJR0lOVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2tpbGwgdGhlbiBcIlNJR0tJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdwaXBlIHRoZW4gXCJTSUdQSVBFXCJcbiAgZWxzZSBpZiBzID0gc2lncXVpdCB0aGVuIFwiU0lHUVVJVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3NlZ3YgdGhlbiBcIlNJR1NFR1ZcIlxuICBlbHNlIGlmIHMgPSBzaWd0ZXJtIHRoZW4gXCJTSUdURVJNXCJcbiAgZWxzZSBpZiBzID0gc2lndXNyMSB0aGVuIFwiU0lHVVNSMVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3VzcjIgdGhlbiBcIlNJR1VTUjJcIlxuICBlbHNlIGlmIHMgPSBzaWdjaGxkIHRoZW4gXCJTSUdDSExEXCJcbiAgZWxzZSBpZiBzID0gc2lnY29udCB0aGVuIFwiU0lHQ09OVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3N0b3AgdGhlbiBcIlNJR1NUT1BcIlxuICBlbHNlIGlmIHMgPSBzaWd0c3RwIHRoZW4gXCJTSUdUU1RQXCJcbiAgZWxzZSBpZiBzID0gc2lndHRpbiB0aGVuIFwiU0lHVFRJTlwiXG4gIGVsc2UgaWYgcyA9IHNpZ3R0b3UgdGhlbiBcIlNJR1RUT1VcIlxuICBlbHNlIGlmIHMgPSBzaWd2dGFscm0gdGhlbiBcIlNJR1ZUQUxSTVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3Byb2YgdGhlbiBcIlNJR1BST0ZcIlxuICBlbHNlIGlmIHMgPSBzaWdidXMgdGhlbiBcIlNJR0JVU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3BvbGwgdGhlbiBcIlNJR1BPTExcIlxuICBlbHNlIGlmIHMgPSBzaWdzeXMgdGhlbiBcIlNJR1NZU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3RyYXAgdGhlbiBcIlNJR1RSQVBcIlxuICBlbHNlIGlmIHMgPSBzaWd1cmcgdGhlbiBcIlNJR1VSR1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3hjcHUgdGhlbiBcIlNJR1hDUFVcIlxuICBlbHNlIGlmIHMgPSBzaWd4ZnN6IHRoZW4gXCJTSUdYRlNaXCJcbiAgZWxzZSBpZiBzID0gc2lnaW8gdGhlbiBcIlNJR0lPXCJcbiAgZWxzZSBpZiBzID0gc2lnd2luY2ggdGhlbiBcIlNJR1dJTkNIXCJcbiAgZWxzZSBpZiBzIDwgc2lnd2luY2ggdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfdG9fc3RyaW5nXCJcbiAgZWxzZSBcIlNJRyhcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiKVwiXG5cbmV4dGVybmFsIHJldl9jb252ZXJ0X3NpZ25hbF9udW1iZXI6IGludCAtPiBpbnQgPVxuICBcImNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuZXh0ZXJuYWwgY29udmVydF9zaWduYWxfbnVtYmVyOiBpbnQgLT4gaW50ID1cbiAgXCJjYW1sX3N5c19jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuXG5sZXQgc2lnbmFsX29mX2ludCBpID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfb2ZfaW50XCJcbiAgZWxzZSByZXZfY29udmVydF9zaWduYWxfbnVtYmVyIGlcblxubGV0IHNpZ25hbF90b19pbnQgaSA9XG4gIGlmIGkgPCBzaWd3aW5jaCB0aGVuIGludmFsaWRfYXJnIFwiU3lzLnNpZ25hbF90b19pbnRcIlxuICBlbHNlIGNvbnZlcnRfc2lnbmFsX251bWJlciBpXG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiU3RkbGliIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImlvX2J1ZmZlcl9zaXplIiwic2V0X3NpZ25hbCIsInNpZ19udW0iLCJzaWdfYmVoIiwic2lnbmFsX3RvX3N0cmluZyIsInMiLCJzaWduYWxfb2ZfaW50IiwiaSIsInNpZ25hbF90b19pbnQiLCJCcmVhayIsImNhdGNoX2JyZWFrIiwib24iLCJNYWtlIiwiSW1tZWRpYXRlIiwiTm9uX2ltbWVkaWF0ZSIsIlN0ZGxpYl9TeXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGtCQ21Dc0I7QUFBQSxJQUFBQyxVQUNBO0FBQUEsSUFBQUMsT0FBWTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsaUJBaUNiO0FBQUEsWUFBQUMsV0FBQUMsU0FBQUMsU0FjMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUEsSUFrQzdELGFBQW9CO0FBQUEsSUFDZixhQUFvQjtBQUFBLElBQ3BCLGFBQW1CO0FBQUEsSUFDbkIsYUFBbUI7QUFBQSxJQUNuQixhQUFtQjtBQUFBLElBQ25CLGFBQW1CO0FBQUEsSUFDbkIsYUFBb0I7QUFBQSxJQUNwQixhQUFvQjtBQUFBLElBQ3BCLGFBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFzQjtBQUFBLElBQ3RCLGNBQW9CO0FBQUEsSUFDcEIsY0FBbUI7QUFBQSxJQUNuQixjQUFvQjtBQUFBLElBQ3BCLGNBQW1CO0FBQUEsSUFDbkIsY0FBb0I7QUFBQSxJQUNwQixjQUFtQjtBQUFBLElBQ25CLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFrQjtBQUFBLElBQ2xCLGNBQXFCO0FBQUEsSUFDckIsWUFBcUIsbURBQ1M7QUFBQSxZQUFyQjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBQyxjQUFBQztBQUFBQSxJQVFuQztBQUFBLGNBQ0s7QUFBQSxjQURTLHlDQUNrQjtBQUFBO0FBQUEsWUFBQUMsY0FBQUQ7QUFBQUEsSUFHaEM7QUFBQSxjQUFxQjtBQUFBLGNBQ2hCLHlDQUF1QjtBQUFBO0FBQUEsT0FBQUUsUUE1RlE7QUFBQSxZQUFBQyxZQUFBQyxJQWlHcEMsaUJBR2tDO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsZUFzRDVCO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQTFKOEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURyRXRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTAzMTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX3RhZyIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsImlzX2Jsb2NrIiwiYSIsImRvdWJsZV9maWVsZCIsIngiLCJpIiwic2V0X2RvdWJsZV9maWVsZCIsInYiLCJvZl92YWwiLCJzbG90IiwiY3N0X09ial9leHRlbnNpb25fY29uc3RydWN0b3IiLCJuYW1lIiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsIiwibGVuZ3RoIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJlIiwibyIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJlMSIsIm8xIiwiZTIiLCJvMiIsIlN0ZGxpYl9PYmoiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0N5QmtDLG1DQUFjO0FBQUEsWUFBQUMsYUFBQUMsR0FBQUMsR0FTUixvQ0FBcUM7QUFBQSxZQUFBQyxpQkFBQUYsR0FBQUMsR0FBQUU7QUFBQUEsSUFFM0U7QUFBQSxJQUF1QztBQUFBO0FBQUEsWUFBQUMsT0FBQUo7QUFBQUE7QUFBQUEsS0FBQUs7QUFBQUEsT0F3Q2hDO0FBQUEsVUFBZ0I7QUFBQTtBQUFBLEtBQUFDLGdDRDVFekI7QUFBQTtBQUFBO0FBQUEsS0NnRlMscUJBQW1CLGdDQUFBQyxPQUF5QztBQUFBLFNBQUFBLE9BQzFEO0FBQUE7QUFBQSxJQUVGO0FBQUE7QUFBQSxjQUNFLG1EQUF1QztBQUFBO0FBQUEsWUFBQUEsS0FBQUYsTUFHcEI7QUFBQSxZQUFBRyxHQUFBSCxNQUdBO0FBQUEsT0FBQUksa0JEMUY5QjtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLFFBQUEsSUN3R0k7QUFBQSxjQUNFO0FBQUEsSUFDRixrQ0FBUTtBQUFBO0FBQUEsWUFBQUMsT0FBQVosR0FFSyx3QkFBZ0M7QUFBQSxZQUFBYSx3QkFBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUc3QyxvQkFBc0IsbUJBQXRCO0FBQUEsZUFDRSw2QkFBZTtBQUFBO0FBQUEsWUFBQUMsUUFBQUgsR0FBQUM7QUFBQUEsSUFJakI7QUFBQSxJQUNBLHNDQUFXO0FBQUE7QUFBQSxZQUFBRyxhQUFBSixHQUFBQztBQUFBQSxJQUlYO0FBQUEsSUFDQSwyQ0FBZ0I7QUFBQTtBQUFBLFlBQUFJLFFBQUFMLEdBQUFDLEdBQUFmO0FBQUFBLElBSWhCO0FBQUEsSUFDQSx5Q0FBYTtBQUFBO0FBQUEsWUFBQW9CLFVBQUFOLEdBQUFDO0FBQUFBLElBSWI7QUFBQSxJQUNBLHdDQUFhO0FBQUE7QUFBQSxZQUFBTSxVQUFBUCxHQUFBQztBQUFBQSxJQUliO0FBQUEsSUFDQSx3Q0FBYTtBQUFBO0FBQUEsWUFBQU8sU0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQWY7QUFBQUEsSUFNYjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQTJCLHlDQUNOO0FBQUE7QUFBQSxVQUVoQjtBQUFBLGNBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQSxJQURBLHFEQUNxQztBQUFBO0FBQUE7QUFBQSxJQUFBZ0I7QUFBQUEsTURsSjlDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTA0NDUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9hdG9taWMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5tb2R1bGUgTG9jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGF0b21pY19sb2NcblxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRfbG9jXCJcbiAgZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlX2xvY1wiXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNfbG9jXCJcbiAgZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkX2xvY1wiXG5cbiAgbGV0IHNldCB0IHYgPVxuICAgIGlnbm9yZSAoZXhjaGFuZ2UgdCB2KVxuICBsZXQgaW5jciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAxKVxuICBsZXQgZGVjciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAoLTEpKVxuZW5kXG5cbnR5cGUgISdhIHQgPVxuICB7IG11dGFibGUgY29udGVudHM6ICdhIFtAYXRvbWljXTtcbiAgfVxuXG5sZXQgbWFrZSB2ID1cbiAgeyBjb250ZW50cyA9IHYgfVxuXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcblxubGV0IGdldCB0ID1cbiAgdC5jb250ZW50c1xubGV0IHNldCB0IHYgPVxuICB0LmNvbnRlbnRzIDwtIHZcblxubGV0IGV4Y2hhbmdlIHQgdiA9XG4gIExvYy5leGNoYW5nZSBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gdlxubGV0IGNvbXBhcmVfYW5kX3NldCB0IG9sZCBuZXdfID1cbiAgTG9jLmNvbXBhcmVfYW5kX3NldCBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gb2xkIG5ld19cbmxldCBmZXRjaF9hbmRfYWRkIHQgaW5jciA9XG4gIExvYy5mZXRjaF9hbmRfYWRkIFslYXRvbWljLmxvYyB0LmNvbnRlbnRzXSBpbmNyXG5sZXQgaW5jciB0ID1cbiAgTG9jLmluY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG5sZXQgZGVjciB0ID1cbiAgTG9jLmRlY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkX2ZpZWxkIiwic2V0IiwidCIsInYiLCJpbmNyIiwiZGVjciIsIm1ha2UiLCJnZXQiLCJleGNoYW5nZSIsImNvbXBhcmVfYW5kX3NldCIsIm9sZCIsIm5ldyQiLCJmZXRjaF9hbmRfYWRkIiwiU3RkbGliX0F0b21pYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0N5Qkksb0RBQXFCO0FBQUEsWUFBQUMsS0FBQUYsR0FFckIscURBQTBCO0FBQUEsWUFBQUcsS0FBQUgsR0FFMUIsc0RBQTZCO0FBQUEsWUFBQUksS0FBQUgsR0FRL0IsY0FBZ0I7QUFBQSxZQUFBSSxJQUFBTCxHQUtoQixZQUFVO0FBQUEsWUFBQUQsTUFBQUMsR0FBQUMsR0FFViw4Q0FBZTtBQUFBLFlBQUFLLFNBQUFOLEdBQUFDLEdBR2YsMENBQXVDO0FBQUEsWUFBQU0sZ0JBQUFQLEdBQUFRLEtBQUFDO0FBQUFBLElBRXZDLHFEQUFxRDtBQUFBO0FBQUEsWUFBQUMsY0FBQVYsR0FBQUU7QUFBQUEsSUFFckQsOENBQStDO0FBQUE7QUFBQSxZQUFBQSxPQUFBRixHQUUvQyxzQkFBaUM7QUFBQSxZQUFBRyxPQUFBSCxHQUVqQyxzQkFBaUM7QUFBQTtBQUFBLElBQUFXO0FBQUFBLE1EdkRuQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNDg3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcblxuKCogSWYgW2x6dl0gaXMgYWxyZWFkeSBmb3JjZWQsIHRoZW4gW2luZGlyZWN0IGx6dl0gaXMgW2x6dl0uXG4gICBPdGhlcndpc2UgaXQgcmV0dXJucyBhIGZyZXNoIHRodW5rIHRoYXQsIHdoZW4gZm9yY2VkLCB3aWxsIGZvcmNlIFtsenZdLlxuXG4gICBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGNvcHkvbW92ZSBbbHp2XSB0aGF0IHdvcmtzIGNvcnJlY3RseSBldmVuIGlmXG4gICBbbHp2XSBpcyBiZWluZyBmb3JjZWQgY29uY3VycmVudGx5LlxuKilcbmxldCBpbmRpcmVjdCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogU3lzLm9wYXF1ZV9pZGVudGl0eTogc2VlIFtmb3JjZV9nZW5dIGNvbW1lbnQgYWJvdmUuICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZm9yY2luZ190YWdcbiAgdGhlbiBsYXp5IChmb3JjZV9sYXp5X2Jsb2NrIGx6dilcbiAgZWxzZSBsenZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9vYmpfdGFnIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUiLCJyZXN1bHQiLCJlIiwicGFyYW0iLCJmb3JjZV9sYXp5X2Jsb2NrIiwiZm9yY2VfZ2VuIiwibHp2IiwidCIsImluZGlyZWN0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBLFlBQUFDLHFCQUFBQyxVQUFBQztBQUFBQSxJQ3VFUTtBQUFBLEtBR0M7QUFBQSxJQUZFO0FBQUEsU0FBQUMsWUFaYztBQUFBLEtBQ3ZCO0FBQUEsU0FBQUMsV0FDYTtBQUFBLEtBQ2I7QUFBQSxLQUNBO0FBQUEsS0FBbUI7QUFBQTtBQUFBLFFBQUFELFVBbkJJO0FBQUEsSUFDdkI7QUFBQSxJQUErQjtBQUFBLFNBQUFDLFNBRWhCO0FBQUEsS0FDYjtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsVUFBQUM7QUFBQUEsU0FBQUEsSURsREo7QUFBQSxLQ3FESSxrQkFBQUMsT0FBdUMsd0NBQU87QUFBQSxLQUM5QztBQUFBLEtBQWU7QUFBQTtBQUFBLEdBb0JLO0FBQUEsWUFBQUMsaUJBQUFMLEtBR0csbUNBQXdDO0FBQUEsWUFBQU0sVUFBQVAsVUFBQVE7QUFBQUEsUUFBQUMsSUFxQnpEO0FBQUEsSUFDUix5QkFDMEI7QUFBQSxJQUVyQix3QkFBNEI7QUFBQSxJQUM1QixtQ0FDQSxtQ0FBa0M7QUFBQTtBQUFBLFlBQUFDLFNBQUFGO0FBQUFBLFFBQUFDLElBWS9CO0FBQUEsSUFDUiwrQ0FFSztBQUFBLElBREEseUJEdEhQLCtCQ3NITztBQUFBLEdBQ0c7QUFBQSxHRHZIViIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNTUyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX2FycmF5X21ha2VdIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfdmFsIiwibCIsImZyb21fZnVuIiwieCIsImZyb21fdmFsIiwidiIsInQiLCJpc192YWwiLCJtYXAiLCJwYXJhbSIsIm1hcF92YWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxlQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxZQUFBQyxVQUFBQyxHQ3VEa0IsMkNBQTJDO0FBQUEsWUFBQUMsU0FBQVI7QUFBQUEsUUFBQVMsSUFHbkQ7QUFBQSxJQUNSO0FBQUEsSUFBOEI7QUFBQSxHQUNWO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHWjtBQUFBLElBQ1I7QUFBQTtBQUFBO0FBQUEsS0FJRztBQUFBLElBSCtDLHdDQUkvQztBQUFBO0FBQUEsWUFBQUMsT0FBQU47QUFBQUEsUUFBQSxJQUVxQjtBQUFBLHdDQUFvQjtBQUFBLEdBQWdCO0FBQUEsWUFBQU8sSUFBQWQsR0FBQVM7QUFBQUEsSUFHNUQ7QUFBQSxxQkFBQU07QUFBQUEsaUJBQUEsSUQxRUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0MwRUU7QUFBQSxHQUFrQjtBQUFBLFlBQUFDLFFBQUFoQixHQUFBUztBQUFBQSxJQUdmO0FBQUEsS0FFRTtBQUFBLHNCQUFBTTtBQUFBQSxrQkFBQSxJRC9FUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQytFTztBQUFBLFlBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQVMsT0FBYSxTQUFiLGlCQUNTO0FBQUE7QUFBQSxHRC9FekIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMDYzMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3NlcS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCBzaW5nbGV0b24geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJpX2F1eCBmIGkgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIGYgaSB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlcmlfYXV4IGYgaScgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyaV9hdXggZiBpJyBuZXh0ICgpXG5cbmxldFtAaW5saW5lXSBmaWx0ZXJpIGYgc2VxICgpID1cbiAgZmlsdGVyaV9hdXggZiAwIHNlcSAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX0F0b21pYyIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWIiLCJTdGRsaWJfTGF6eSIsImVtcHR5IiwicGFyYW0iLCJyZXR1cm4kIiwieCIsImNvbnMiLCJuZXh0Iiwic2luZ2xldG9uIiwiYXBwZW5kIiwic2VxMSIsInNlcTIiLCJtYXRjaCIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJ5IiwiZmlsdGVyIiwiZmlsdGVyaV9hdXgiLCJpIiwiZmlsdGVyaSIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiaXRlciIsInVuZm9sZCIsInUiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwibGVuZ3RoIiwiYWNjdSIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZmluZCIsImZpbmRfaW5kZXgiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfbWFwaSIsIml0ZXIyIiwieXMiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJjIiwiaW5pdF9hdXgiLCJqIiwiaW5pdCIsIm4iLCJyZXBlYXQiLCJmb3JldmVyIiwiY3ljbGVfbm9uZW1wdHkiLCJjeWNsZSIsIml0ZXJhdGUxIiwiaXRlcmF0ZSIsIm1hcGlfYXV4IiwibWFwaSIsInRhaWxfc2NhbiIsInMiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiRm9yY2VkX3R3aWNlIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJtYXBfc25kIiwidW56aXAiLCJmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAiLCJmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIiwieiIsInBhcnRpdGlvbl9tYXAiLCJwYXJ0aXRpb24iLCJwZWVsIiwieHNzIiwidHJhbnNwb3NlIiwidGFpbHMiLCJoZWFkcyIsInJlbWFpbmRlcnMiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLE1BQUFDLE9DdUJlLFNBQUc7QUFBQSxZQUFBQyxRQUFBQyxHQUFBRixPQUVBLHFCQUFlO0FBQUEsWUFBQUcsS0FBQUQsR0FBQUUsTUFBQUosT0FFWixvQkFBYztBQUFBLFlBQUFLLFVBQUFILEdBQUFGLE9BRWQscUJBQWU7QUFBQSxZQUFBTSxPQUFBQyxNQUFBQyxNQUFBUjtBQUFBQSxRQUFBUyxRQUc1QjtBQUFBLElBQU0sWUFDSCwwQkFDcUM7QUFBQSxRQUFBTCxPQUZsQyxVQUFBRixJQUFBO0FBQUEsSUFFaUMsMEJBQWhCLCtCQUFnQjtBQUFBLEdBQUM7QUFBQSxZQUFBUSxJQUFBdkIsR0FBQXdCLEtBQUFYO0FBQUFBLFFBQUFTLFFBRW5CO0FBQUEsSUFBSyxZQUN2QjtBQUFBLFFBQUFMLE9BRHVCLFVBQUFGLElBQUE7QUFBQSxJQUVOLHlDQUFLLHlCQUFGO0FBQUEsR0FBYTtBQUFBLFlBQUFVLFdBQUF6QixHQUFBd0IsT0FBQVg7QUFBQUEsUUFBQVcsTUFFZDtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDOUI7QUFBQSxTQUFBTCxPQUQ4QixV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cmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTM0MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWIiLCJzb21lIiwidiIsInZhbHVlIiwibyIsImRlZmF1bHQkIiwiZ2V0IiwicGFyYW0iLCJiaW5kIiwiam9pbiIsIm1hcCIsImZvbGQiLCJub25lIiwiaXRlciIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDa0JhLGNBQU07QUFBQSxZQUFBQyxNQUFBQyxHQUFBQztBQUFBQSxJQUNJLFFBQW1DO0FBQUEsUUFBQUgsSUFBbkM7QUFBQSxJQUF1QjtBQUFBLEdBQW1CO0FBQUEsWUFBQUksSUFBQUM7QUFBQUEsSUFDdkQsWUFBK0IsNkNBQTRCO0FBQUEsUUFBQUwsSUFBM0Q7QUFBQSxJQUFtQjtBQUFBLEdBQXdDO0FBQUEsWUFBQU0sS0FBQUosR0FBQVY7QUFBQUEsSUFDdEQsUUFBcUI7QUFBQSxRQUFBUSxJQUFyQjtBQUFBLElBQXNDLHVCQUFHO0FBQUE7QUFBQSxZQUFBTyxLQUFBRixPQUM3QyxZQUErQixjQUFBSCxJQUEvQixVQUFtQixTQUFnQjtBQUFBLFlBQUFNLElBQUFoQixHQUFBVTtBQUFBQSxJQUNoQyxRQUFxQjtBQUFBLFFBQUFGLElBQXJCO0FBQUEsSUFBMkMsNEJBQUs7QUFBQTtBQUFBLFlBQUFTLEtBQUFDLE1BQUFYLE1BQUFNO0FBQUFBLElBQ3JELFlBQWtEO0FBQUEsUUFBQUwsSUFBbEQ7QUFBQSxJQUFpQywwQkFBcUI7QUFBQTtBQUFBLFlBQUFXLEtBQUFuQixHQUFBYTtBQUFBQSxJQUN0RCxZQUFxQztBQUFBLFFBQUFMLElBQXJDO0FBQUEsSUFBdUIsdUJBQWdCO0FBQUE7QUFBQSxZQUFBWSxRQUFBUCxPQUNsQyxvQkFBdUM7QUFBQSxZQUFBUSxRQUFBUixPQUN2QyxvQkFBdUM7QUFBQSxZQUFBUyxNQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUVoQztBQUFBLGdCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FDQyw2QkFFVjtBQUFBO0FBQUEsa0JBREk7QUFBQSxJQUNUO0FBQUEsR0FBSztBQUFBLFlBQUFDLFFBQUFDLEtBQUFMLElBQUFDO0FBQUFBLElBRVksMkJBSUw7QUFBQSxRQUFBRSxLQUpLO0FBQUEsYUFJTjtBQUFBLFFBQUFELEtBSk07QUFBQSxJQUNGLDhCQUdIO0FBQUE7QUFBQSxZQUFBSSxVQUFBWixNQUFBTDtBQUFBQSxJQUVMLFlBQXlCO0FBQUEsUUFBQUwsSUFBekI7QUFBQSxJQUFnRDtBQUFBLEdBQUk7QUFBQSxZQUFBdUIsUUFBQWxCO0FBQUFBLElBQ3BELFlBQWlCO0FBQUEsUUFBQUwsSUFBakI7QUFBQSxJQUFnQztBQUFBLEdBQUc7QUFBQSxZQUFBd0IsT0FBQW5CO0FBQUFBLElBQ3BDLFlBQWlCO0FBQUEsUUFBQUwsSUFBakIsY0FBdUM7QUFBQSx1QkQxQ3BELGdCQzBDb0Q7QUFBQSxHQUFZO0FBQUEsR0QxQ2hFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE0NDksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X29rJyA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gaW52YWxpZF9hcmcgZVxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgZXJyb3JfdG9fZmFpbHVyZSA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gZmFpbHdpdGggZVxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IHByb2R1Y3QgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCAoRXJyb3IgXyBhcyByKSwgX1xufCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG58IE9rIHYwLCBPayB2MSAtPiBPayAodjAsIHYxKVxuXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCByZXRyYWN0ID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgdiAtPiB2XG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KiApID0gYmluZFxuICBsZXQgKCBhbmQqICkgPSBwcm9kdWN0XG4gIGxldCAoIGxldCsgKSByIGYgPSBtYXAgZiByXG4gIGxldCAoIGFuZCsgKSA9IHByb2R1Y3RcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU2VxIiwiU3RkbGliIiwib2siLCJ2IiwiZXJyb3IiLCJlIiwidmFsdWUiLCJyIiwiZGVmYXVsdCQiLCJnZXRfb2siLCJwYXJhbSIsImdldF9lcnJvciIsImVycm9yX3RvX2ZhaWx1cmUiLCJiaW5kIiwiam9pbiIsIm1hcCIsInByb2R1Y3QiLCJyMCIsInIxIiwidjAiLCJ2MSIsIm1hcF9lcnJvciIsImZvbGQiLCJyZXRyYWN0IiwiaXRlciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwiLCJlMCIsImUxIiwiY29tcGFyZSIsInRvX29wdGlvbiIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxHQUFBQyxHQ2lCVyxjQUFJO0FBQUEsWUFBQUMsTUFBQUMsR0FDRCxjQUFPO0FBQUEsWUFBQUMsTUFBQUMsR0FBQUM7QUFBQUEsSUFDRSxlQUFvQztBQUFBLFFBQUFMLElBQXBDO0FBQUEsSUFBcUI7QUFBQSxHQUFzQjtBQUFBLFlBQUFNLE9BQUFDO0FBQUFBLElBQ3JELG1CQUFnQyxnREFBK0I7QUFBQSxRQUFBUCxJQUEvRDtBQUFBLElBQWlCO0FBQUEsR0FBOEM7QUFBQSxZQUFBTSxTQUFBQztBQUFBQSxJQUM5RCx1QkFBQVAsSUFBQSxVQUFpQjtBQUFBLFFBQUFFLElBQWpCO0FBQUEsSUFBZ0MsOEJBQWE7QUFBQTtBQUFBLFlBQUFNLFVBQUFEO0FBQUFBLElBQzNDLG1CQUFnQyw2Q0FBNEI7QUFBQSxRQUFBTCxJQUE1RDtBQUFBLElBQW9CO0FBQUEsR0FBd0M7QUFBQSxZQUFBTyxpQkFBQUY7QUFBQUEsSUFDckQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBRSxJQUFqQjtBQUFBLElBQWdDLDhCQUFVO0FBQUE7QUFBQSxZQUFBUSxLQUFBTixHQUFBWjtBQUFBQSxJQUNsRCxlQUEyQztBQUFBLFFBQUFRLElBQTNDO0FBQUEsSUFBcUIsdUJBQXVCO0FBQUE7QUFBQSxZQUFBVyxLQUFBVCxHQUNoRCxlQUFxQyxjQUFBRSxJQUFyQyxNQUFpQixTQUFxQjtBQUFBLFlBQUFRLElBQUFwQixHQUFBVTtBQUFBQSxJQUN6QyxlQUFnRDtBQUFBLFFBQUFGLElBQWhEO0FBQUEsSUFBd0IsNEJBQUs7QUFBQSxHQUFvQjtBQUFBLFlBQUFhLFFBQUFDLElBQUFDO0FBQUFBLElBQ3JDO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BR0Y7QUFBQSxTQUFBYixJQUhFO0FBQUE7QUFBQTtBQUFBLFNBQUFBLElBQUE7QUFBQSxJQUVHO0FBQUEsR0FDTTtBQUFBLFlBQUFjLFVBQUExQixHQUFBUTtBQUFBQSxJQUVmLGVBQW1EO0FBQUEsUUFBQUUsSUFBbkQ7QUFBQSxJQUE4Qiw0QkFBSztBQUFBLEdBQWlCO0FBQUEsWUFBQWlCLEtBQUFwQixJQUFBRSxPQUFBTTtBQUFBQSxJQUN6RCx1QkFBQVAsSUFBQSxVQUE4Qix3QkFBeUI7QUFBQSxRQUFBRSxJQUF2RDtBQUFBLElBQWdELDJCQUFPO0FBQUE7QUFBQSxZQUFBa0IsUUFBQWI7QUFBQUEsSUFDbEQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBQSxNQUFqQjtBQUFBLElBQWdDO0FBQUEsR0FBQztBQUFBLFlBQUFxQixLQUFBN0IsR0FBQWU7QUFBQUEsSUFDdEMsbUJBQXNDO0FBQUEsUUFBQVAsSUFBdEM7QUFBQSxJQUFxQix1QkFBbUI7QUFBQTtBQUFBLFlBQUFzQixXQUFBOUIsR0FBQWU7QUFBQUEsSUFDbEMsbUJBQXNDO0FBQUEsUUFBQUwsSUFBdEM7QUFBQSxJQUF3Qix1QkFBZ0I7QUFBQTtBQUFBLFlBQUFxQixNQUFBaEIsT0FDM0MsNkJBQXdDO0FBQUEsWUFBQWlCLFNBQUFqQixPQUNyQyw2QkFBd0M7QUFBQSxZQUFBa0IsTUFBQTFCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRTFCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BQ1gsNkJBRUg7QUFBQTtBQUFBO0FBQUEsU0FBQVMsS0FIYztBQUFBLHlCQUFBQyxLQUFBLE9BRUwsZ0NBQ1Q7QUFBQTtBQUFBLElBQUw7QUFBQSxHQUFLO0FBQUEsWUFBQUMsUUFBQTdCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRWdCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHFCQUdaO0FBQUEsU0FBQUMsS0FIWTtBQUFBLEtBQ2IsNkJBR0U7QUFBQTtBQUFBLFFBQUFTLEtBSlc7QUFBQSxvQkFJWjtBQUFBLFFBQUFDLEtBSlk7QUFBQSxJQUVQLGdDQUVKO0FBQUE7QUFBQSxZQUFBRSxVQUFBdEI7QUFBQUEsSUFFSixtQkFBcUM7QUFBQSxRQUFBUCxJQUFyQztBQUFBLElBQWlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBOEIsUUFBQXZCO0FBQUFBLElBQzNDLG1CQUFrQztBQUFBLFFBQUFQLElBQWxDO0FBQUEsSUFBaUI7QUFBQSxHQUFtQjtBQUFBLFlBQUErQixPQUFBeEI7QUFBQUEsSUFDckMsbUJBQTJDO0FBQUEsUUFBQVAsSUFBM0MsY0FBaUI7QUFBQSx1QkRyRDlCLGdCQ3FEOEI7QUFBQSxHQUFtQztBQUFBLFlBQUFnQyxLQUFBNUIsR0FBQVosR0FLNUMsZ0JBQU87QUFBQSxHRDFENUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTYxNiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBc2NpaSA9IHN0cnVjdFxuXG4gICgqIENoYXJhY3RlcnMgKilcblxuICBsZXQgbWluID0gJ1xceDAwJ1xuICBsZXQgbWF4ID0gJ1xceDdGJ1xuXG4gICgqIFByZWRpY2F0ZXMgKilcblxuICBsZXQgaXNfdmFsaWQgPSBmdW5jdGlvbiAnXFx4MDAnIC4uICdcXHg3RicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgbGV0IGlzX3VwcGVyID0gZnVuY3Rpb24gJ0EnIC4uICdaJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfbG93ZXIgPSBmdW5jdGlvbiAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvbiAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ibGFuayA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ncmFwaGljID0gZnVuY3Rpb24gJyEnIC4uICd+JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfcHJpbnQgPSBmdW5jdGlvbiAnICcgLi4gJ34nIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19jb250cm9sID0gZnVuY3Rpb24gJ1xceDAwJyAuLiAnXFx4MUYnIHwgJ1xceDdGJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICgqIERlY2ltYWwgZGlnaXRzICopXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgZGlnaXRfdG9faW50ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjb2RlIGMgLSAweDMwXG4gICAgfCBjIC0+IGludmFsaWRfYXJnIChlc2NhcGVkIGMgXiBcIjogbm90IGEgZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBkaWdpdF9vZl9pbnQgbiA9IHVuc2FmZV9jaHIgKDB4MzAgKyBhYnMgKG4gbW9kIDEwKSlcblxuICAoKiBIZXhhZGVjaW1hbCBkaWdpdHMgKilcblxuICBsZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdF90b19pbnQgPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNvZGUgYyAtIDB4MzBcbiAgICB8ICdBJyAuLiAnRicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NDFcbiAgICB8ICdhJyAuLiAnZicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NjFcbiAgICB8IGMgLT4gaW52YWxpZF9hcmcgKGVzY2FwZWQgYyBeIFwiOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4NTcgKyBkKVxuXG4gIGxldCB1cHBlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4MzcgKyBkKVxuXG4gICgqIENhc2luZyB0cmFuc2Zvcm1zICopXG5cbiAgbGV0IGxvd2VyY2FzZSA9IGxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdXBwZXJjYXNlID0gdXBwZXJjYXNlX2FzY2lpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2hhc2giLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsIlN0ZGxpYiIsImNociIsIm4iLCJlc2NhcGVkIiwiYyIsInMiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjb21wYXJlIiwiYzEiLCJjMiIsImVxdWFsIiwic2VlZGVkX2hhc2giLCJzZWVkIiwieCIsImhhc2giLCJpc192YWxpZCIsInBhcmFtIiwiaXNfdXBwZXIiLCJpc19sb3dlciIsImlzX2xldHRlciIsImlzX2FscGhhbnVtIiwiaXNfd2hpdGUiLCJpc19ibGFuayIsImlzX2dyYXBoaWMiLCJpc19wcmludCIsImlzX2NvbnRyb2wiLCJpc19kaWdpdCIsImRpZ2l0X3RvX2ludCIsImRpZ2l0X29mX2ludCIsImlzX2hleF9kaWdpdCIsImhleF9kaWdpdF90b19pbnQiLCJsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IiwiZCIsInVwcGVyX2hleF9kaWdpdF9vZl9pbnQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxJQUFBQztBQUFBQSxJQ3FCRSx1QkFBcUQ7QUFBQSxJQUE1Qix1Q0FBd0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBO0FBQUFBO0FBQUFBLEtBT3JEO0FBQUEsbUJBRUY7QUFBQSxNQUZFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFNRjtBQUFBO0FBQUEsVUFGQTtBQUFBO0FBQUEsVUFEQTtBQUFBO0FBQUEsVUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTEUsWUFDRjtBQUFBO0FBQUEsU0FBQUMsTUFPRTtBQUFBLEtBQ1I7QUFBQSxLQUNBLGdDQVFrQjtBQUFBO0FBQUEsUUFBQUEsSUFMVjtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUFrQjtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFGLEdBRUYseUNBRVo7QUFBQSxZQUFBRyxnQkFBQUgsR0FFWSx5Q0FFWjtBQUFBLFlBQUFJLFFBQUFDLElBQUFDLElBSVUsbUJBQWlCO0FBQUEsWUFBQUMsTUFBQUYsSUFBQUMsSUFDSSxtQ0FBSTtBQUFBLFlBQUFFLFlBQUFDLE1BQUFDLEdBSXBCLGtDQUErQjtBQUFBLFlBQUFDLEtBQUFELEdBQzNDLCtCQUE0QjtBQUFBLFlBQUFFLFNBQUFDLE9BV3hCLDJCQUE4QztBQUFBLFlBQUFDLFNBQUFELE9BQzlDLG9DQUF3QztBQUFBLFlBQUFFLFNBQUFGLE9BQ3hDLG9DQUF3QztBQUFBLFlBQUFHLFVBQUFIO0FBQUFBO0FBQUFBO0FBQUFBLEtBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBb0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQUksWUFBQUo7QUFBQUEsUUFBQSxJQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQzBCO0FBQUE7QUFBQSxJQUFZO0FBQUEsR0FBSztBQUFBLFlBQUFLLFNBQUFMO0FBQUFBO0FBQUFBO0FBQUFBLEtBRTlDO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQU0sU0FBQU47QUFBQUEsSUFDakQsZ0NBQW1DO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQU8sV0FBQVAsT0FDdEMsb0NBQXdDO0FBQUEsWUFBQVEsU0FBQVIsT0FDMUMsb0NBQXdDO0FBQUEsWUFBQVMsV0FBQVQ7QUFBQUEsSUFDdEMsaUNBQWtEO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQVUsU0FBQVYsT0FJekQsbUNBQXdDO0FBQUEsWUFBQVcsYUFBQXhCO0FBQUFBLElBQ3BDLHNCQUNJO0FBQUEsWUFDRCxnQkFBRDtBQUFBLElBQXFDO0FBQUE7QUFBQSxZQUFBeUIsYUFBQTNCO0FBQUFBLElBRWxCLGlEQUFjO0FBQUEsR0FBQztBQUFBLFlBQUE0QixhQUFBYjtBQUFBQSxRQUFBLElBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDeUI7QUFBQTtBQUFBLElBQ25DO0FBQUEsR0FBSztBQUFBLFlBQUFjLGlCQUFBM0I7QUFBQUEsSUFFUztBQUFBO0FBQUEsa0JBR0E7QUFBQTtBQUFBLHFCQURBO0FBQUE7QUFBQSwrQkFEQTtBQUFBO0FBQUEsU0FHRDtBQUFBLFNBQUQ7QUFBQSxJQUF5QztBQUFBO0FBQUEsWUFBQTRCLHVCQUFBOUI7QUFBQUEsUUFBQStCLElBR3BEO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLFlBQUFDLHVCQUFBaEM7QUFBQUEsUUFBQStCLElBRzFDO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLEdEbkh0RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjExNzk3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgPSBmdW5jdGlvblxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiAxXG4gIHwgJ1xceDgwJyAuLiAnXFx4QzEnIC0+IDBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT4gMlxuICB8ICdcXHhFMCcgLi4gJ1xceEVGJyAtPiAzXG4gIHwgJ1xceEYwJyAuLiAnXFx4RjQnIC0+IDRcbiAgfCBfIC0+IDBcblxubGV0IG1heF91dGZfOF9kZWNvZGVfbGVuZ3RoID0gNFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWIiLCJzdWNjIiwidSIsInByZWQiLCJpc192YWxpZCIsImkiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsImMiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCIsImNvbXBhcmUiLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJ4IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsIm4iLCJ1dGZfZGVjb2RlX2ludmFsaWQiLCJ1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUiLCJwYXJhbSIsImNzdF91Y2hhcl9tbCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwiU3RkbGliX1VjaGFyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDaUNFO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQ2dCO0FBQUEseUJBQ1g7QUFBQTtBQUFBLFlBQUFDLEtBQUFEO0FBQUFBLElBR0w7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFDZ0I7QUFBQSx5QkFDWDtBQUFBO0FBQUEsWUFBQUUsU0FBQUM7QUFBQUEsUUFBQSxJQUVVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTBEO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsSUFDekQsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLE9BeEJFO0FBQUEsZUFBakI7QUFBQSxJQXdCZ0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFMLEdBSW5ELHVCQUFPO0FBQUEsWUFBQU0sUUFBQUMsR0FDUCxTQUFXO0FBQUEsWUFBQUMsUUFBQVI7QUFBQUEsSUFFekIsYUFDQTtBQUFBO0FBQUE7QUFBQSxPQS9CNEI7QUFBQTtBQUFBLFNBQWtEO0FBQUEsSUE4QmhDLDhCQUM3QjtBQUFBO0FBQUEsWUFBQVMsZUFBQSxHRG5EbkI7QUFBQSxZQUFBQyxNQUFBO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLFlBQUFDLE1BQUFDLEdDNER5QixrQ0FBK0I7QUFBQSxZQUFBQyxLQUFBRCxHQUMzQywrQkFBNEI7QUFBQSxZQUFBRSxvQkFBQUMsR0FlSixvQ0FBcUI7QUFBQSxZQUFBQyxrQkFBQUQsR0FDdkIsMEJBQThCO0FBQUEsWUFBQUUsaUJBQUFGLEdBQy9CLG9CQUErQjtBQUFBLFlBQUFHLFdBQUFDLEdBQUFyQixHQUNuQyx5QkFBMEM7QUFBQSxZQUFBc0IsbUJBQUFELEdBQ3BDLHVCQUEyQjtBQUFBLFlBQUFFLDRCQUFBQztBQUFBQSxJQUU3QjtBQUFBO0FBQUEsa0NBTXhCO0FBQUE7QUFBQTtBQUFBLElBQUFDLGVEeEZWO0FBQUE7QUFBQTtBQUFBLFlBQUFDLGtCQUFBMUI7QUFBQUEsSUM2RlMsVUFBUztBQUFBLElBQ1QsYUFBZTtBQUFBLElBQ2YsY0FBZTtBQUFBLElBQ2YsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUEsV0RsR25CO0FBQUEsWUFBQTJCLG1CQUFBM0I7QUFBQUEsSUNxR1MsVUFBUztBQUFBLElBQ1QsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBNEI7QUFBQUEsTUR4R25CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE5MjQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IHNpbmdsZXRvbiBhID0gW2FdXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCB0YWtlIG4gbCA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGF1eCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMCwgXyB8IF8sIFtdIC0+IFtdXG4gICAgfCBuLCB4OjpsIC0+IHg6OmF1eCAobiAtIDEpIGxcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gW10gZWxzZSBhdXggbiBsXG5cbmxldCBkcm9wIG4gbCA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICAgIHwgX3g6Omwgd2hlbiBpIDwgbiAtPiBhdXggKGkgKyAxKSBsXG4gICAgfCByZXN0IC0+IHJlc3RcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gbCBlbHNlIGF1eCAwIGxcblxubGV0IHRha2Vfd2hpbGUgcCBsID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IHg6Omwgd2hlbiBwIHggLT4geDo6YXV4IGxcbiAgICB8IF9yZXN0IC0+IFtdXG4gIGluXG4gIGF1eCBsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwID0gZnVuY3Rpb25cbiAgfCB4OjpsIHdoZW4gcCB4IC0+IGRyb3Bfd2hpbGUgcCBsXG4gIHwgcmVzdCAtPiByZXN0XG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBub24tZmlyc3QgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY29tcGFyZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJTdGRsaWIiLCJsZW5ndGgiLCJsIiwibGVuIiwicGFyYW0iLCJjb25zIiwiYSIsInNpbmdsZXRvbiIsImhkIiwidGwiLCJjc3RfTGlzdF9udGgiLCJudGgiLCJuIiwibnRoX29wdCIsImFwcGVuZCIsInJldl9hcHBlbmQiLCJsMSIsImwyIiwicmV2IiwiaW5pdCIsImxhc3QiLCJpIiwicjEiLCJyMiIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwiZmxhdHRlbiIsInIiLCJtYXAiLCJtYXRjaCIsIm1hcGkiLCJyZXZfbWFwIiwiYWNjdSIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJtYXAyIiwiY3N0X0xpc3RfbWFwMiIsImIyIiwiYjEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJ4IiwibWVtcSIsImFzc29jIiwiYiIsImFzc29jX29wdCIsImFzc3EiLCJhc3NxX29wdCIsIm1lbV9hc3NvYyIsIm1lbV9hc3NxIiwicmVtb3ZlX2Fzc29jIiwicGFpciIsInJlbW92ZV9hc3NxIiwiZmluZCIsImZpbmRfb3B0IiwiZmluZF9pbmRleCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9tYXBpIiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcCIsInYiLCJjb25jYXRfbWFwIiwieHMiLCJ5cyIsInkiLCJ0YWtlIiwiZHJvcCIsInJlc3QiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJsZWZ0IiwicmlnaHQiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJjbXAiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJzIiwieDMiLCJuMSIsIm4yIiwiczEiLCJzMiIsInJldl9zb3J0Iiwic29ydF91bmlxIiwiYyIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJpc19lbXB0eSIsImVxdWFsIiwiZXEiLCJjb21wYXJlIiwidG9fc2VxIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsInNlcSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FB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MEJBQVIsc0JBQVE7QUFBQSxJQUFDO0FBQUEsSUFFdkM7QUFBQSxHQUFLO0FBQUEsWUFBQXVFLE9BQUFDO0FBQUFBLFFBQUE5RixRQUdDO0FBQUEsSUFBTSxZQUNDO0FBQUEsUUFBQThGLFFBREQsVUFBQXBCLEtBQUEsVUFBQTFFLFVBR0k7QUFBQSxJQUFNLGNBQ0w7QUFBQTtBQUFBLEtBQUE4RixRQURLO0FBQUEsS0FBQXJCLEtBQUE7QUFBQSxLQUFBL0UsUUFFTTtBQUFBLEtBQUFDLE1BQVk7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQWtHLFFBQUE7QUFBQTtBQUFBLFNBQUE5RixVQUxsQztBQUFBLEtBQU07QUFBQTtBQUFBLE9BQUE4RixRQUFBO0FBQUEsT0FBQXBCLE9BQUE7QUFBQSxPQUFBMUUsVUFHSTtBQUFBLE1BQU07QUFBQSxXQUFBOEYsUUFBQSxZQUFBckIsT0FBQSxZQUFBOUUsUUFFTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRFg7QUFBQTtBQUFBO0FBQUEsTUFISjtBQUFBLEtBSXFDO0FBQUE7QUFBQSxHQUMzQztBQUFBLEdEcm1CVCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEzMzUwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2hhc2giLCJhYnMiLCJ4IiwibG9nbm90IiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwieSIsIm1heCIsInRvX3N0cmluZyIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0M0QlksMkJBQXdCO0FBQUEsWUFBQUMsT0FBQUQsR0FNckIsY0FBYTtBQUFBLFlBQUFFLE1BQUEsTURsQzVCO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFLLEdDd0NrQixxQkFBdUI7QUFBQSxZQUFBQyxJQUFBTixHQUFBSyxHQUN2QixxQkFBdUI7QUFBQSxZQUFBRSxVQUFBUCxHQVVOO0FBQUEsWUFBQVEsWUFBQUMsTUFBQVQsR0FJVixrQ0FBK0I7QUFBQSxZQUFBVSxLQUFBVixHQUMzQywrQkFBNEI7QUFBQSxHRHhEekMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMzM4OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X21ha2VcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfbWFrZVwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9hcnJheV9jcmVhdGVfZmxvYXRcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlbiBmYWxzZSBlbHNlXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGVxICh1bnNhZmVfZ2V0IGEgIWkpICh1bnNhZmVfZ2V0IGIgIWkpIGRvIGluY3IgaSBkb25lO1xuICAhaSA9IGxlblxuXG5sZXQgc3RkbGliX2NvbXBhcmUgPSBjb21wYXJlXG5sZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgYW5kIGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gIGlmIGRpZmYgPD4gMCB0aGVuIChpZiBkaWZmIDwgMCB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICBsZXQgaSA9IHJlZiAwIGFuZCBjID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgZG8gYyA6PSBjbXAgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSk7IGluY3IgaSBkb25lO1xuICAhY1xuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHN0ZGxpYl9jb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlX2NvbnRyYWN0X3Zpb2xhdGlvbiBpIGogPVxuICBsZXQgaW50ID0gc3RyaW5nX29mX2ludCBpblxuICBpbnZhbGlkX2FyZ1xuICAgIChcIkFycmF5LnNodWZmbGU6ICdyYW5kIFwiIF4gaW50IChpICsgMSkgXlxuICAgICBcIicgcmV0dXJuZWQgXCIgXiBpbnQgaiBeXG4gICAgIFwiLCBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2UgWzA7IFwiIF4gaW50IGkgXiBcIl1cIilcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgaWYgbm90ICgwIDw9IGogJiYgaiA8PSBpKSB0aGVuIHNodWZmbGVfY29udHJhY3RfdmlvbGF0aW9uIGkgajtcbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgdW5zYWZlX3NldCBhIGkgKHVuc2FmZV9nZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIkFzc2VydF9mYWlsdXJlIiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwieCIsImluaXRfbWF0cml4Iiwicm93IiwieSIsImNvcHkiLCJhIiwiYXBwZW5kIiwiYTIiLCJsMSIsInN1YiIsIm9mcyIsImxlbiIsImZpbGwiLCJ2IiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiaXRlciIsIml0ZXIyIiwiYiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcGlfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwidG9fbGlzdCIsImxpc3RfbGVuZ3RoIiwiYWNjdSIsInBhcmFtIiwidCIsIm9mX2xpc3QiLCJ0bCIsImhkIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJsZW5fYSIsImxlbl9iIiwiZGlmZiIsImMiLCJmb2xkX2xlZnQiLCJmb2xkX2xlZnRfbWFwIiwiYWNjIiwiaW5wdXRfYXJyYXkiLCJtYXRjaCIsImVsdCIsIm91dHB1dF9hcnJheSIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwibiIsImZvcl9hbGwiLCJmb3JfYWxsMiIsImwyIiwibjEiLCJuMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJzcGxpdCIsImIwIiwiYmkiLCJhaSIsImNvbWJpbmUiLCJuYSIsIm5iIiwiQm90dG9tIiwic29ydCIsIm1heHNvbiIsImkzMSIsImUiLCJqIiwiZXhuIiwiZmF0aGVyIiwic3RhYmxlX3NvcnQiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0IiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyIiwiczEiLCJpMSIsImkyIiwiZCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsImludCIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJTdGRsaWJfQXJyYXkiXSwibWFwcGluZ3MiOiJJQUFBQSxV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O0FBQUEsS0FBQU4sSUFDRjtBQUFBLEtBQUFULE1BS1I7QUFBQSxLQUFBQSxJQUFBO0FBQUEsS0FBQW9DLFFBQUE7QUFBQTtBQUFBLEtBSmEsWUFDSDtBQUFBLFNBQUFHLE9BREcsVUFBQUMsT0FBQTtBQUFBLEtBRUM7QUFBQSxTQUFBeEMsTUFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQU10QjtBQUFBO0FBQUEsSUFBQWlIO0FBQUFBLE1EN2ZmIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTQxODIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JsaXRfYnl0ZXMiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ieXRlc19zZXQzMiIsImNhbWxfYnl0ZXNfc2V0NjQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2ludDY0X2Jzd2FwIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9VY2hhciIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0NoYXIiLCJtYWtlIiwibiIsImMiLCJzIiwiaW5pdCIsImkiLCJlbXB0eSIsImNvcHkiLCJsZW4iLCJyIiwidG9fc3RyaW5nIiwiYiIsIm9mX3N0cmluZyIsInN1YiIsIm9mcyIsInN1Yl9zdHJpbmciLCJzeW1ib2wiLCJhIiwibWF0Y2giLCJleHRlbmQiLCJsZWZ0IiwicmlnaHQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsInMxIiwib2ZzMSIsInMyIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwiaXRlciIsIml0ZXJpIiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJsMSIsImwyIiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsInVuc2FmZV9lc2NhcGUiLCJlc2NhcGVkIiwibWFwIiwibWFwaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwiZm9yX2FsbCIsInVwcGVyY2FzZV9hc2NpaSIsImxvd2VyY2FzZV9hc2NpaSIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJjb21wYXJlIiwic3BsaXRfb25fY2hhciIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJidWYiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsImRlY19pbnZhbGlkIiwiZGVjX3JldCIsInUiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsIm1heCIsImNzdF9ieXRlc19tbCIsInNldF91dGZfOF91Y2hhciIsInNldCIsImxhc3QiLCJpc192YWxpZF91dGZfOCIsImNzdF9pbmRleF9vdXRfb2ZfYm91bmRzIiwiZ2V0X3V0Zl8xNmJlX3VjaGFyIiwiaGkiLCJsbyIsInNldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwic2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJTdGRsaWJfQnl0ZXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtB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QUFBQSxLQUNoQixjQUFnQjtBQUFBLFNBQUFvSCxJQUNWO0FBQUEsS0FDRztBQUFBLE1BQ0EsY0FBYztBQUFBLFVBQUFpQixPQUVuQjtBQUFBLE1BQ0EsZUFBbUI7QUFBQSxVQUFBakIsTUFDYjtBQUFBLE1BQ0c7QUFBQSxXQUFBcEgsTUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRDRCO0FBQUE7QUFBQSxTQUFBQSxNQU5KO0FBQUE7QUFBQTtBQUFBLEdBU2hCO0FBQUE7QUFBQSxJQUFBZ0o7QUFBQUEsTUEzeEJMO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcERwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE1MzgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzID0gMCAmJiBsZW5ndGggcyA9IGxlbiB0aGVuIHMgZWxzZVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgW3NdIC0+IHNcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBsZXQgYicgPSBCLnVuc2FmZV9lc2NhcGUgYiBpblxuICAoKiBXaXRoIGpzX29mX29jYW1sLCBbYm9zXSBhbmQgW2J0c10gYXJlIG5vdCB0aGUgaWRlbnRpdHkuXG4gICAgIFdlIGNhbiBhdm9pZCBhIFtidHNdIGNvbnZlcnNpb24gaWYgW3Vuc2FmZV9lc2NhcGVdIHJldHVybmVkXG4gICAgIGl0cyBhcmd1bWVudC4gKilcbiAgaWYgYiA9PSBiJyB0aGVuIHMgZWxzZSBidHMgYidcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuXG4oKiBTcGVsbGNoZWNraW5nICopXG5cbmxldCB1dGZfOF91Y2hhcl9sZW5ndGggcyA9XG4gIGxldCBzbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBhbmQgdWxlbiA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlY19sZW4gPSBVY2hhci51dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgKHVuc2FmZV9nZXQgcyAhaSkgaW5cbiAgICBpIDo9ICghaSArIGlmIGRlY19sZW4gPSAwIHRoZW4gMSAoKiBjb3VudCBvbmUgVWNoYXIucmVwICopIGVsc2UgZGVjX2xlbik7XG4gICAgaW5jciB1bGVuO1xuICBkb25lO1xuICAhdWxlblxuXG5sZXQgdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMgPVxuICBsZXQgc2xlbiA9IGxlbmd0aCBzIGluICgqIGlzIGFuIHVwcGVyIGJvdW5kIG9uIFVjaGFyLnQgY291bnQgKilcbiAgbGV0IHVjaGFycyA9IEFycmF5Lm1ha2Ugc2xlbiBVY2hhci5tYXggaW5cbiAgbGV0IGsgPSByZWYgMCBhbmQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlYyA9IGdldF91dGZfOF91Y2hhciBzICFpIGluXG4gICAgaSA6PSAhaSArIFVjaGFyLnV0Zl9kZWNvZGVfbGVuZ3RoIGRlYztcbiAgICB1Y2hhcnMuKCFrKSA8LSBVY2hhci51dGZfZGVjb2RlX3VjaGFyIGRlYztcbiAgICBpbmNyIGs7XG4gIGRvbmU7XG4gIHVjaGFycywgIWtcblxubGV0IGVkaXRfZGlzdGFuY2UnID8obGltaXQgPSBJbnQubWF4X2ludCkgcyAoczAsIGxlbjApIHMxID1cbiAgaWYgbGltaXQgPD0gMSB0aGVuIChpZiBlcXVhbCBzIHMxIHRoZW4gMCBlbHNlIGxpbWl0KSBlbHNlXG4gIGxldFtAaW5saW5lXSBtaW5pbXVtIGEgYiBjID0gSW50Lm1pbiBhIChJbnQubWluIGIgYykgaW5cbiAgbGV0IHMxLCBsZW4xID0gdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMxIGluXG4gIGxldCBsaW1pdCA9IEludC5taW4gKEludC5tYXggbGVuMCBsZW4xKSBsaW1pdCBpblxuICBpZiBJbnQuYWJzIChsZW4xIC0gbGVuMCkgPj0gbGltaXQgdGhlbiBsaW1pdCBlbHNlXG4gIGxldCBzMCwgczEgPSBpZiBsZW4wID4gbGVuMSB0aGVuIHMwLCBzMSBlbHNlIHMxLCBzMCBpblxuICBsZXQgbGVuMCwgbGVuMSA9IGlmIGxlbjAgPiBsZW4xIHRoZW4gbGVuMCwgbGVuMSBlbHNlIGxlbjEsIGxlbjAgaW5cbiAgbGV0IHJlYyBsb29wIHJvd19taW51czIgcm93X21pbnVzMSByb3cgaSBsZW4wIGxpbWl0IHMwIHMxID1cbiAgICBpZiBpID4gbGVuMCB0aGVuIHJvd19taW51czEuKEFycmF5Lmxlbmd0aCByb3dfbWludXMxIC0gMSkgZWxzZVxuICAgIGxldCBsZW4xID0gQXJyYXkubGVuZ3RoIHJvdyAtIDEgaW5cbiAgICBsZXQgcm93X21pbiA9IHJlZiBJbnQubWF4X2ludCBpblxuICAgIHJvdy4oMCkgPC0gaTtcbiAgICBsZXQgam1heCA9XG4gICAgICBsZXQgam1heCA9IEludC5taW4gbGVuMSAoaSArIGxpbWl0IC0gMSkgaW5cbiAgICAgIGlmIGptYXggPCAwIHRoZW4gKCogb3ZlcmZsb3cgKikgbGVuMSBlbHNlIGptYXhcbiAgICBpblxuICAgIGZvciBqID0gSW50Lm1heCAxIChpIC0gbGltaXQpIHRvIGptYXggZG9cbiAgICAgIGxldCBjb3N0ID0gaWYgVWNoYXIuZXF1YWwgczAuKGktMSkgczEuKGotMSkgdGhlbiAwIGVsc2UgMSBpblxuICAgICAgbGV0IG1pbiA9IG1pbmltdW1cbiAgICAgICAgICAocm93X21pbnVzMS4oai0xKSArIGNvc3QpICgqIHN1YnN0aXR1dGUgKilcbiAgICAgICAgICAocm93X21pbnVzMS4oaikgKyAxKSAgICAgICgqIGRlbGV0ZSAqKVxuICAgICAgICAgIChyb3cuKGotMSkgKyAxKSAgICAgICAgICAgKCogaW5zZXJ0ICopXG4gICAgICAgICAgKCogTm90ZSB3aGVuIGogPSBpIC0gbGltaXQsIHRoZSBsYXR0ZXIgW3Jvd10gcmVhZCBtYWtlcyBhIGJvZ3VzIHJlYWRcbiAgICAgICAgICAgICBvbiB0aGUgdmFsdWUgdGhhdCB3YXMgaW4gdGhlIG1hdHJpeCBhdCBkLihpLTIpLihpIC0gbGltaXQgLSAxKS5cbiAgICAgICAgICAgICBTaW5jZSBieSBpbmR1Y3Rpb24gZm9yIGFsbCBpLGosIGQuKGkpLihqKSA+PSBhYnMgKGkgLSBqKSxcbiAgICAgICAgICAgICAocm93LihqLTEpICsgMSkgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBbbGltaXRdIGFuZCB0aHVzIGRvZXNcbiAgICAgICAgICAgICBub3QgYWZmZWN0IGFkdmVyc2VseSB0aGUgbWluaW11bSBjb21wdXRhdGlvbi4gKilcbiAgICAgIGluXG4gICAgICBsZXQgbWluID1cbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmXG4gICAgICAgICAgICBVY2hhci5lcXVhbCBzMC4oaS0xKSBzMS4oai0yKSAmJlxuICAgICAgICAgICAgVWNoYXIuZXF1YWwgczAuKGktMikgczEuKGotMSkpXG4gICAgICAgIHRoZW4gSW50Lm1pbiBtaW4gKHJvd19taW51czIuKGotMikgKyBjb3N0KSAoKiB0cmFuc3Bvc2UgKilcbiAgICAgICAgZWxzZSBtaW5cbiAgICAgIGluXG4gICAgICByb3cuKGopIDwtIG1pbjtcbiAgICAgIHJvd19taW4gOj0gSW50Lm1pbiAhcm93X21pbiBtaW47XG4gICAgZG9uZTtcbiAgICBpZiAhcm93X21pbiA+PSBsaW1pdCB0aGVuICgqIGNhbiBubyBsb25nZXIgZGVjcmVhc2UgKikgbGltaXQgZWxzZVxuICAgIGxvb3Agcm93X21pbnVzMSByb3cgcm93X21pbnVzMiAoaSArIDEpIGxlbjAgbGltaXQgczAgczFcbiAgaW5cbiAgbGV0IGlnbm9yZSA9XG4gICAgKCogVmFsdWUgdXNlZCB0byBtYWtlIHRoZSB2YWx1ZXMgYXJvdW5kIHRoZSBkaWFnb25hbCBzdHJpcGUgaWdub3JlZFxuICAgICAgIGJ5IHRoZSBtaW4gY29tcHV0YXRpb25zIHdoZW4gd2UgaGF2ZSBhIGxpbWl0LiAqKVxuICAgIGxpbWl0ICsgMVxuICBpblxuICBsZXQgcm93X21pbnVzMiA9IEFycmF5Lm1ha2UgKGxlbjEgKyAxKSBpZ25vcmUgaW5cbiAgbGV0IHJvd19taW51czEgPSBBcnJheS5pbml0IChsZW4xICsgMSkgKGZ1biB4IC0+IHgpIGluXG4gIGxldCByb3cgPSBBcnJheS5tYWtlIChsZW4xICsgMSkgaWdub3JlIGluXG4gIGxldCBkID0gbG9vcCByb3dfbWludXMyIHJvd19taW51czEgcm93IDEgbGVuMCBsaW1pdCBzMCBzMSBpblxuICBpZiBkID4gbGltaXQgdGhlbiBsaW1pdCBlbHNlIGRcblxubGV0IGVkaXRfZGlzdGFuY2UgP2xpbWl0IHMwIHMxID1cbiAgbGV0IHVzMCA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzMCBpblxuICBlZGl0X2Rpc3RhbmNlJyA/bGltaXQgczAgdXMwIHMxXG5cbmxldCBkZWZhdWx0X21heF9kaXN0IHMgPSBtYXRjaCB1dGZfOF91Y2hhcl9sZW5ndGggcyB3aXRoXG4gIHwgMCB8IDEgfCAyIC0+IDBcbiAgfCAzIHwgNCAtPiAxXG4gIHwgXyAtPiAyXG5cbmxldCBzcGVsbGNoZWNrID8obWF4X2Rpc3QgPSBkZWZhdWx0X21heF9kaXN0KSBpdGVyX2RpY3QgcyA9XG4gIGxldCBtaW4gPSByZWYgKG1heF9kaXN0IHMpIGluXG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHNlbGVjdF93b3JkcyBzIHVzIHdvcmQgPVxuICAgIGxldCBkID0gZWRpdF9kaXN0YW5jZScgfmxpbWl0OighbWluICsgMSkgcyB1cyB3b3JkIGluXG4gICAgaWYgZCA9ICFtaW4gdGhlbiAoYWNjIDo9IHdvcmQgOjogIWFjYykgZWxzZVxuICAgIGlmIGQgPCAhbWluIHRoZW4gKG1pbiA6PSBkOyBhY2MgOj0gW3dvcmRdKSBlbHNlICgpXG4gIGluXG4gIGxldCB1cyA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzIGluXG4gIGl0ZXJfZGljdCAoc2VsZWN0X3dvcmRzIHMgdXMpO1xuICBMaXN0LnJldiAhYWNjXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfYmxpdF9zdHJpbmciLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX3N0cmluZ19oYXNoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQnl0ZXMiLCJidHMiLCJib3MiLCJtYWtlIiwibiIsImMiLCJpbml0Iiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsInN1YiIsInMiLCJvZnMiLCJsZW4iLCJibGl0IiwiY3N0IiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJpdGVyIiwiaSIsIml0ZXJpIiwibWFwIiwibWFwaSIsImZvbGRfcmlnaHQiLCJhIiwiZm9sZF9sZWZ0IiwiZXhpc3RzIiwiZm9yX2FsbCIsImlzX3NwYWNlIiwidHJpbSIsImVzY2FwZWQiLCJiIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJ1cHBlcmNhc2VfYXNjaWkiLCJsb3dlcmNhc2VfYXNjaWkiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImhhc2giLCJzcGxpdF9vbl9jaGFyIiwiaiIsInIiLCJjb21wYXJlIiwidG9fc2VxIiwidG9fc2VxaSIsIm9mX3NlcSIsImciLCJnZXRfdXRmXzhfdWNoYXIiLCJpc192YWxpZF91dGZfOCIsImdldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIiwic2xlbiIsInVjaGFycyIsImsiLCJkZWMiLCJlZGl0X2Rpc3RhbmNlIiwib3B0IiwiczEiLCJsaW1pdCIsImxlbjAiLCJzMCIsIm1hdGNoIiwibGVuMSIsImlnbm9yZSIsInJvd19taW51czIiLCJyb3dfbWludXMxIiwicm93IiwiZCIsInJvd19taW4iLCJqbWF4IiwiY29zdCIsIm1pbiIsInVzMCIsImRlZmF1bHRfbWF4X2Rpc3QiLCJ1bGVuIiwiZGVjX2xlbiIsInNwZWxsY2hlY2siLCJpdGVyX2RpY3QiLCJtYXhfZGlzdCIsInVzIiwid29yZCIsIlN0ZGxpYl9TdHJpbmciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDbUNFLE9BQVUsSUFBVixpQ0FBaUI7QUFBQSxZQUFBQyxLQUFBRixHQUFBZCxHQUVqQixPQUFVLElBQVYsaUNBQWlCO0FBQUEsT0FBQWlCLFdEckNuQixpQkFBQUMsV0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDMENFLGtEQUFrQztBQUFBLFlBQzVCO0FBQUEsSUFBTixPQUFxQixJQUFyQix3Q0FBNEI7QUFBQTtBQUFBLE9BQUFDLE9EM0M5QixrQkFBQUMsTUFBQTtBQUFBLFlBQUFDLE9BQUFDLEtBQUFDO0FBQUFBLElDK0RXLFFBQ0Q7QUFBQSxJQURDLGVBQUFQLElBQUEsTUFFQTtBQUFB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QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBb0YsSUFEQTtBQUFBO0FBQUEsS0FZRjtBQUFBO0FBQUE7QUFBQSxZQUFBWixnQkFBQUcsT0FBQUUsSUFBQUg7QUFBQUEsUUFBQWUsTUFHVTtBQUFBLElBQ1Ysd0NBQStCO0FBQUE7QUFBQSxZQUFBQyxpQkFBQTVHO0FBQUFBLFFBQUFzRixPQTVFL0IsMEJBQUF1QixPQUVBLEdBQUEzRixJQUFBO0FBQUE7QUFBQTtBQUFBLE1BNEVpRCwyQkFFdEMsOEJBREk7QUFBQSxNQUVSO0FBQUE7QUFBQTtBQUFBLE1BQUE0RixVQTlFUyw0QkFBZDtBQUFBLFVBQ0E7QUFBQSxNQUFBRCxTQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0E0RU07QUFBQSxZQUFBRSxXQUFBcEIsS0FBQXFCLFdBQUFoSDtBQUFBQTtBQUFBQSxLQUFBaUgsV0FFSztBQUFBLEtBQUFQLE1BQ0M7QUFBQSxLQUFBUSxLQU9MO0FBQUEsS0FBQXpHLE1BTlQ7QUFBQSxJQU9BO0FBQUE7QUFBQSxlQUFBMEc7QUFBQUEsV0FBQWIsSUFMVTtBQUFBLE9BQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUkyQix5Q0FDaEI7QUFBQTtBQUFBO0FBQUEsSUFBQWM7QUFBQUEsTUQzWGYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxNjAwMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgbWFrZSA6IChpbnRbQHVudGFnZ2VkXSkgLT4gKGZsb2F0W0B1bmJveGVkXSkgLT4gdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfbWFrZVwiIFwiY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2ZpbGxcbiAgICA6IHQgLT4gKGludFtAdW50YWdnZWRdKSAtPiAoaW50W0B1bnRhZ2dlZF0pIC0+IChmbG9hdFtAdW5ib3hlZF0pIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9mbG9hdGFycmF5X2ZpbGxcIiBcImNhbWxfZmxvYXRhcnJheV9maWxsX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N1YiA6IHQgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc3ViXCJcbiAgZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2FwcGVuZFwiXG4gIGV4dGVybmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0XCJcblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IGVtcHR5ID0gY3JlYXRlIDBcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBlbXB0eVxuICAgIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbiAgKCogaW5saW5pbmcgZXhwb3NlcyBhIGZsb2F0LXVuYm94aW5nIG9wcG9ydHVuaXR5IGZvciBbdl0gKilcbiAgbGV0W0BpbmxpbmVdIGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXF1YWwgZXEgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuIGZhbHNlIGVsc2VcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgZXEgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSkgZG8gaW5jciBpIGRvbmU7XG4gICAgIWkgPSBsZW5cblxuICBsZXQgZmxvYXRfY29tcGFyZSA9IGNvbXBhcmVcbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGFuZCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gICAgaWYgZGlmZiA8PiAwIHRoZW4gKGlmIGRpZmYgPCAwIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGkgPSByZWYgMCBhbmQgYyA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgICBkbyBjIDo9IGNtcCAodW5zYWZlX2dldCBhICFpKSAodW5zYWZlX2dldCBiICFpKTsgaW5jciBpIGRvbmU7XG4gICAgIWNcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgZmxvYXRfY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZmxvYXRhcnJheV9tYWtlIiwiY2FtbF9mbG9hdGFycmF5X3N1YiIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliIiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJpc19maW5pdGUiLCJ4IiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInRvX3N0cmluZyIsImlzX2ludGVnZXIiLCJzdWNjIiwicHJlZCIsImVxdWFsIiwieSIsIm1pbiIsIm1heCIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsImNoZWNrIiwiYSIsIm9mcyIsImxlbiIsIm1zZyIsImVtcHR5IiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwidiIsImluaXRfbWF0cml4Iiwicm93Iiwic3ViIiwiY29weSIsImFwcGVuZCIsImEyIiwibDEiLCJmaWxsIiwiYmxpdCIsInNyYyIsInNvZnMiLCJkc3QiLCJkb2ZzIiwiY3N0X0Zsb2F0X2FycmF5X2JsaXQiLCJ0b19saXN0Iiwib2ZfbGlzdCIsInJlc3VsdCIsInQiLCJoIiwiZXEiLCJiIiwiY29tcGFyZSIsImNtcCIsImxlbl9hIiwibGVuX2IiLCJkaWZmIiwiYyIsIml0ZXIiLCJpdGVyMiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwibWFwaV9pbnBsYWNlIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsImV4aXN0cyIsInAiLCJuIiwiZm9yX2FsbCIsIm1lbSIsIm1lbV9pZWVlIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJCb3R0b20iLCJzb3J0IiwibWF4c29uIiwiaTMxIiwiZSIsImoiLCJleG4iLCJmYXRoZXIiLCJzdGFibGVfc29ydCIsIm1lcmdlIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIiLCJzMSIsImkxIiwiaTIiLCJkIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImwyIiwic2h1ZmZsZSIsInJhbmQiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsInRvX3NlcWkiLCJvZl9zZXEiLCJhY2MiLCJ0bCIsImhkIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJTdGRsaWJfRmxvYXQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FB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QTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JEeE10QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdDd01zQjtBQUFBO0FBQUEsRUR4TXRCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTY4NjEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfaGFzaCIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX211bCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9TeXMiLCJBc3NlcnRfZmFpbHVyZSIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsImxvZ25vdCIsIm1hdGNoIiwibWF4X2ludCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInkiLCJ4IiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsIlN0ZGxpYl9JbnQzMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0MrQ3FCO0FBQUEsWUFBQUMsS0FBQUQsR0FDQTtBQUFBLFlBQUFFLElBQUFGLEdBQ04sNENBQXlCO0FBQUEsWUFBQUcsT0FBQUgsR0FHWDtBQUFBLE9BQUFJLFFEcEQ3QjtBQUFBO0FBQUE7QUFBQSxLQUFBQyxVQ3lEb0I7QUFBQSxLQUFBQztBQUFBQSxPQUNkLFNBQUFOO0FBQUFBLFFBQ0ssOEJBQVc7QUFBQSxTQUNaO0FBQUEsUUFFQTtBQUFBLE9BQUk7QUFBQTtBQUFBLElEOURkO0FBQUEsS0NvRU07QUFBQTtBQUFBLFFBQUFNLGtCQUZBLFNBQUFOLEdBQVMsbUJBQXlCO0FBQUE7QUFBQSxZQUFBTyxVQUFBUCxHQUt0Qix1Q0FBYTtBQUFBLFlBQUFRLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRDVFWDtBQUFBLDhCQzZFb0I7QUFBQSxLRDdFcEI7QUFBQTtBQUFBLEdDNkV3QjtBQUFBLE9BQUFDLFFEN0V4QjtBQUFBLFlBQUFDLGlCQUFBWixHQUFBYTtBQUFBQSxRQUFBQyxJQ3FGMEIsb0JBQUFDLElBQWhCO0FBQUEsSUFKa0IsNkJBSWE7QUFBQTtBQUFBLFlBQUFDLFlBQUFoQixHQUFBYTtBQUFBQSxJQUd2Qyw0REFBNkI7QUFBQTtBQUFBLFlBQUFJLElBQUFGLEdBQUFELEdBRVYsbUNBQW9CO0FBQUEsWUFBQUksSUFBQUgsR0FBQUQsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQUssT0QzRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBckIsR0FBQXNCO0FBQUFBLElDaUdLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUF6QixHQUFBc0I7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQVosR0FJVCxrQ0FBK0I7QUFBQSxZQUFBYSxLQUFBYixHQUMzQywrQkFBNEI7QUFBQTtBQUFBLElBQUFjO0FBQUFBLE1EOUd6QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE2OTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ncmVhdGVyZXF1YWwiLCJjYW1sX2hhc2giLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibWluX2ludCIsIm1heF9pbnQiLCJTdGRsaWIiLCJzdWNjIiwibiIsInByZWQiLCJhYnMiLCJsb2dub3QiLCJ1bnNpZ25lZF90b19pbnQiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwicyIsImV4biIsImNvbXBhcmUiLCJ4IiwieSIsImVxdWFsIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsIm1pbiIsIm1heCIsInVuc2lnbmVkX2RpdiIsImQiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDZCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQzZDYSwyQkFBUTtBQUFBLFlBQUFDLEtBQUFELEdBQ1IsMkJBQVE7QUFBQSxZQUFBRSxJQUFBRjtBQUFBQSxJQUNOLHFDQUFvQix5QkFBSztBQUFBO0FBQUEsWUFBQUcsT0FBQUgsR0FHekIsbUNBQWM7QUFBQTtBQUFBLElBQUFILFlBR2I7QUFBQSxRQUNkO0FBQUEsWUFBQU8sZ0JBQUFKO0FBQUFBLElBQ0ssOEJBQVc7QUFBQSxLQUNaO0FBQUEsSUFFQTtBQUFBLEdBQUk7QUFBQSxZQUFBSyxVQUFBTCxHQUdRLHlDQUFhO0FBQUEsWUFBQU0sY0FBQUM7QUFBQUEsSUFLN0IsWUFBUztBQUFBLFVBQUFDO0FBQUFBLFNBQUFBLE1EbEVYO0FBQUEsOEJDbUVvQjtBQUFBLEtEbkVwQjtBQUFBO0FBQUEsR0NtRXdCO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUMsR0FXSSwrQkFBa0I7QUFBQSxPQUFBQyxRQXhCNUM7QUFBQSxZQUFBQyxpQkFBQWIsR0FBQWM7QUFBQUEsUUFBQUgsSUE0QndCLDRCQUFBRCxJQUFoQjtBQUFBLElBSmtCLCtCQUlhO0FBQUE7QUFBQSxZQUFBSyxZQUFBZixHQUFBYztBQUFBQSxJQUd2QztBQUFBLHlDQUFnQiwyQkFBYTtBQUFBO0FBQUEsWUFBQUUsSUFBQU4sR0FBQUMsR0FFVixtQ0FBb0I7QUFBQSxZQUFBTSxJQUFBUCxHQUFBQyxHQUNwQixzQ0FBb0I7QUFBQSxZQUFBTyxhQUFBbEIsR0FBQW1CO0FBQUFBLElBTXBDLDJCQUNFLHFDQUlrQztBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FGN0I7QUFBQSxTQUFXO0FBQUEsV0FBSztBQUFBO0FBQUEsS0FBQUMsSUFDaEIsa0JBQU07QUFBQSxJQUNYLCtCQXRETSxvQkFzRDRCO0FBQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQW1CO0FBQUFBLElBRzVCLE9BQVgsa0JBQU0sZUFBSyx1QkFBcUI7QUFBQTtBQUFBLFlBQUFJLFlBQUFDLE1BQUFkLEdBSVQsa0NBQStCO0FBQUEsWUFBQWUsS0FBQWYsR0FDM0MsK0JBQTRCO0FBQUEsR0FyRHZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHRERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MDY3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9oYXNoIiwiY2FtbF9pbnRfY29tcGFyZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbXVsIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsInNpemUiLCJtaW5faW50IiwibWF4X2ludCIsImxvZ25vdCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ4IiwieSIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdDMkNxQjtBQUFBLFlBQUFDLEtBQUFELEdBQ0E7QUFBQSxZQUFBRSxJQUFBRixHQUNOLDRDQUF5QjtBQUFBO0FBQUEsSUFBQUcsT0Q3Q3hDO0FBQUEsSUFBQUMsVUMrQ2M7QUFBQSxJQUFBQyxVQUNBO0FBQUEsWUFBQUMsT0FBQU4sR0FDZTtBQUFBLE9BQUFLLFlBR2I7QUFBQSxZQUFBRSxnQkFBQVA7QUFBQUEsSUFFVCw4QkFBVyw4QkFDWjtBQUFBLElBRUE7QUFBQSxHQUFJO0FBQUEsWUFBQVEsVUFBQVIsR0FHUSx1Q0FBYTtBQUFBLFlBQUFTLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRGpFWDtBQUFBLDhCQ2tFb0I7QUFBQSxLRGxFcEI7QUFBQTtBQUFBLEdDa0V3QjtBQUFBLFlBQUFDLE1BQUFDLEdBQUFDLEdBSUksMkNBQ1MsQ0FBSTtBQUFBLFlBQUFDLGlCQUFBZixHQUFBZ0I7QUFBQUEsUUFBQUYsSUFHZixpQkFBQUQsSUFBaEI7QUFBQSxJQUprQiw2QkFJYTtBQUFBO0FBQUEsWUFBQUksWUFBQWpCLEdBQUFnQjtBQUFBQSxJQUd2QyxzREFBNkI7QUFBQTtBQUFBLFlBQUFFLElBQUFMLEdBQUFDLEdBRVYsbUNBQW9CO0FBQUEsWUFBQUssSUFBQU4sR0FBQUMsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQU0sT0RoRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQXVCO0FBQUFBLElDc0ZLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUExQixHQUFBdUI7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQWYsR0FJVCxrQ0FBK0I7QUFBQSxZQUFBZ0IsS0FBQWhCLEdBQzNDLCtCQUE0QjtBQUFBLEdBOUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHJERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MTU4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbWFwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkX3RvX2xpc3Q6IGtleSAtPiAnYSAtPiAnYSBsaXN0IHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPlxuICAgICAgJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBvZl9saXN0IDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgYWRkX3RvX2xpc3QgeCBkYXRhIG0gPVxuICAgICAgbGV0IGFkZCA9IGZ1bmN0aW9uIE5vbmUgLT4gU29tZSBbZGF0YV0gfCBTb21lIGwgLT4gU29tZSAoZGF0YSA6OiBsKSBpblxuICAgICAgdXBkYXRlIHggYWRkIG1cblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IHRvX2xpc3QgPSBiaW5kaW5nc1xuICAgIGxldCBvZl9saXN0IGJzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IGJzXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9NYXAiLCJPcmQiLCJoZWlnaHQiLCJwYXJhbSIsImgiLCJjcmVhdGUiLCJsIiwieCIsImQiLCJyIiwiaGwiLCJociIsInNpbmdsZXRvbiIsImJhbCIsImNzdF9NYXBfYmFsIiwibHIiLCJsZCIsImx2IiwibGwiLCJscnIiLCJscmQiLCJscnYiLCJscmwiLCJyciIsInJkIiwicnYiLCJybCIsInJsciIsInJsZCIsInJsdiIsInJsbCIsImlzX2VtcHR5IiwiYWRkIiwiZGF0YSIsIm0iLCJ2IiwiYyIsImZpbmQiLCJmaW5kX2ZpcnN0IiwiZDAiLCJ2MCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwibWVtIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInQxIiwidDIiLCJtYXRjaCIsInJlbW92ZSIsInVwZGF0ZSIsImFkZF90b19saXN0IiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwiYWNjdSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImpvaW4iLCJyaCIsImxoIiwiY29uY2F0IiwiY29uY2F0X29yX2pvaW4iLCJzcGxpdCIsInByZXMiLCJtZXJnZSIsInMxIiwiczIiLCJoMSIsInIxIiwiZDEiLCJ2MSIsImwxIiwicjIiLCJkMiIsImwyIiwidjIiLCJ1bmlvbiIsImgyIiwicyIsImZpbHRlciIsInB2ZCIsImZpbHRlcl9tYXAiLCJmdmQiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNvbnNfZW51bSIsImUiLCJjb21wYXJlIiwiY21wIiwibTEiLCJtMiIsImUyIiwiZTEiLCJlcXVhbCIsImNhcmRpbmFsIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJlbXB0eSIsIm9mX2xpc3QiLCJicyIsImFkZF9zZXEiLCJpIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJyZXN0IiwidCIsInRvX3NlcSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsIm4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxnQkFBQUM7QUFBQUEsaUJBQUFDLE9BQUFDO0FBQUFBLFNDZ0ZpQixZQUNBO0FBQUEsYUFBQUMsSUFEQTtBQUFBLFNBRUc7QUFBQSxRQUFDO0FBQUEsaUJBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLFVBQUFDLEtBR047QUFBQSxVQUFBQyxLQUFrQjtBQUFBLGNBQzNCO0FBQUE7QUFBQSxRQUEyRDtBQUFBLGlCQUFBQyxVQUFBTCxHQUFBQyxHQUV6QywwQkFBbUM7QUFBQSxpQkFBQUssSUFBQVAsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsU0FH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R0FBQWpDO0FBQUFBLFNBRXRCLFFBQ3JCO0FBQUE7QUFBQSxVQUFBbUgsT0FEcUI7QUFBQSxVQUFBQyxJQUFBO0FBQUEsVUFBQXBGLElBQUE7QUFBQSxVQUFBK0IsSUFBQTtBQUFBLGNBR1E7QUFBQSxTQUFrQixrQ0FBbkMsK0JBQW1DO0FBQUEsUUFBQztBQUFBLGlCQUFBeUQsV0FBQXZGO0FBQUFBLGFBQUEsSUFHeEM7QUFBQSxTQUFpQjtBQUFBO0FBQUEsaUJBQUF3RixZQUFBQyxLQUFBM0Y7QUFBQUE7QUFBQUE7QUFBQUEsY0FBQUEsTUFZckIsR0FBQUUsSUFBQTtBQUFBO0FBQUEsV0FUUztBQUFBO0FBQUEsWUFBQTNCLElBQUE7QUFBQSxZQUFBRCxJQUFBO0FBQUEsWUFBQTJCLElBQUE7QUFBQSxZQUFBN0IsSUFBQTtBQUFBLFlBQUF3SCxJQUdKO0FBQUEsV0FBaUI7QUFBQSxXQUVsQjtBQUFBLGdCQUFBMUYsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERTtBQUFBO0FBQUEsa0JBREY7QUFBQTtBQUFBLFNBS2E7QUFBQTtBQUFBLFFEamlCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODAxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCBkcm9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IF9oZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDFcbiAgfCBbXSAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkVtcHR5IiwiY3JlYXRlIiwicGFyYW0iLCJjbGVhciIsInMiLCJjb3B5IiwicHVzaCIsIngiLCJwb3AiLCJtYXRjaCIsInRsIiwiaGQiLCJwb3Bfb3B0IiwiZHJvcCIsInRvcCIsInRvcF9vcHQiLCJpc19lbXB0eSIsImxlbmd0aCIsIml0ZXIiLCJmIiwiZm9sZCIsImFjYyIsInRvX3NlcSIsImFkZF9zZXEiLCJxIiwiaSIsIm9mX3NlcSIsImciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsT0FBQUMsT0NtQmdCLGlCQUFvQjtBQUFBLFlBQUFDLE1BQUFDLEdBRXRCLFVBQVcsbUJBQVU7QUFBQSxZQUFBQyxLQUFBRCxHQUV0Qix1QkFBeUI7QUFBQSxZQUFBRSxLQUFBQyxHQUFBSCxHQUV2QixxQkFBaUIsOEJBQWtCO0FBQUEsWUFBQUksSUFBQUo7QUFBQUEsUUFBQUssUUFHaEQ7QUFBQSxnQkFFWTtBQUFBLFFBQUFDLEtBRlosVUFBQUMsS0FBQTtBQUFBLElBQ1k7QUFBQSxJQUFXO0FBQUEsSUFBb0I7QUFBQSxHQUNwQjtBQUFBLFlBQUFDLFFBQUFSO0FBQUFBLFFBQUFLLFFBR3ZCO0FBQUEsZ0JBRVk7QUFBQSxRQUFBQyxLQUZaLFVBQUFDLEtBQUE7QUFBQSxJQUNZO0FBQUEsSUFBVztBQUFBLElBQW9CO0FBQUEsR0FDM0I7QUFBQSxZQUFBRSxLQUFBVDtBQUFBQSxRQUFBSyxRQUdoQjtBQUFBLGdCQUVRO0FBQUEsUUFBQUMsS0FGUjtBQUFBLElBQ2E7QUFBQSxJQUFXO0FBQUE7QUFBQSxHQUNMO0FBQUEsWUFBQUksSUFBQVY7QUFBQUEsUUFBQUssUUFHbkI7QUFBQSxnQkFFVztBQUFBLFFBQUFFLEtBRlg7QUFBQSxJQUNXO0FBQUEsR0FDVztBQUFBLFlBQUFJLFFBQUFYO0FBQUFBLFFBQUFLLFFBR3RCO0FBQUEsZ0JBRVc7QUFBQSxRQUFBRSxLQUZYO0FBQUEsSUFDVztBQUFBLEdBQ0k7QUFBQSxZQUFBSyxTQUFBWixHQUVBLDBCQUFVO0FBQUEsWUFBQWEsT0FBQWIsR0FFWixZQUFLO0FBQUEsWUFBQWMsS0FBQUMsR0FBQWYsR0FFTCwwQ0FBZTtBQUFBLFlBQUFnQixLQUFBRCxHQUFBRSxLQUFBakIsR0FFWCwrQ0FBd0I7QUFBQSxZQUFBa0IsT0FBQWxCLEdBSTVCLHVDQUFlO0FBQUEsWUFBQW1CLFFBQUFDLEdBQUFDO0FBQUFBLElBRVoseUNBQUFsQixHQUFtQixpQkFBUSxNQUFHO0FBQUE7QUFBQSxZQUFBbUIsT0FBQUMsT0FBQXZCLElBR3RDLFdBQ1IsZUFBVyxTQUNWO0FBQUEsR0RyRUgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODA5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBkcm9wIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHFcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHRcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJTdGRsaWJfU2VxIiwiRW1wdHkiLCJjcmVhdGUiLCJwYXJhbSIsImNsZWFyIiwicSIsImFkZCIsIngiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsIm5leHQiLCJ0YWtlX29wdCIsImRyb3AiLCJjb3B5IiwicV9yZXMiLCJwcmV2IiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJpdGVyIiwiZm9sZCIsImFjY3UiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEiLCJhdXgiLCJjIiwiYWRkX3NlcSIsImkiLCJvZl9zZXEiLCJnIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEs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QUNWO0FBQUEsR0E5QkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEOUlGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTgyNjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIGJ5dGVzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gQnl0ZXMubGVuZ3RoIGJ5dGVzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdCBieXRlcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgYnl0ZXMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIGJ5dGVzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnl0ZXMgMCAoQnl0ZXMubGVuZ3RoIGJ5dGVzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2J5dGVzX3NldCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfU3lzIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIlN0ZGxpYl9TdHJpbmciLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiY3JlYXRlIiwibiIsInMiLCJjb250ZW50cyIsImIiLCJ0b19ieXRlcyIsInN1YiIsIm9mcyIsImxlbiIsImJsaXQiLCJzcmMiLCJzcmNvZmYiLCJkc3QiLCJkc3RvZmYiLCJudGgiLCJwb3NpdGlvbiIsIm1hdGNoIiwibGVuZ3RoIiwiYnVmZmVyIiwiY2xlYXIiLCJyZXNldCIsImlubmVyIiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImMiLCJwb3MiLCJhZGRfdXRmXzhfdWNoYXIiLCJ1IiwidWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4IiwidWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCIsImFkZF91dGZfMTZiZV91Y2hhciIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImljIiwidG9fcmVhZCIsImJ1ZiIsImFscmVhZHlfcmVhZCIsInIiLCJvdXRwdXRfYnVmZmVyIiwib2MiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSIsInByZXZpb3VzIiwiaSIsInN0YXJ0Iiwib3BlbmluZyIsInN0b3AiLCJ2YWwiLCJuZXdfc3RhcnQiLCJjbG9zaW5nIiwiayIsImV4biIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsIngiLCJ0b19zZXFpIiwiYWRkX3NlcSIsInNlcSIsIm9mX3NlcSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBO0FBQUFBLEtBQUFBLE1Dd0NDO0FBQUEsS0FBQUEsTUFDQTtBQUFBLEtBQUFDLElBQ1E7QUFBQSxJQUNSO0FBQUEsR0FBc0U7QUFBQSxZQUFBQyxTQUFBQyxHQUV0RCxtREFBNEM7QUFBQSxZQUFBQyxTQUFBRCxHQUM1QyxtREFBcUM7QUFBQSxZQUFBRSxJQUFBRixHQUFBRyxLQUFBQztBQUFBQSxJQUdwRDtBQUFBLEtBRUssb0RBQXVDO0FBQUEsSUFEdkMseUNBQ3VDO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxLQUFBQyxRQUFBQyxLQUFBQyxRQUFBTDtBQUFBQSxJQUk1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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QUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBMEMsYUFBQTdFLEdBQUFvRTtBQUFBQSxRQUFBLElBRzFCLGlCQUF1QztBQUFBLElBQXZDLHlCQUF1RDtBQUFBO0FBQUEsWUFBQVUsYUFBQTlFLEdBQUFvRTtBQUFBQSxRQUFBQSxNQUd2RCxxQkFBOEM7QUFBQSxJQUE5QywyQkFBdUQ7QUFBQTtBQUFBLFlBQUFXLGFBQUEvRSxHQUFBb0U7QUFBQUEsUUFBQSxJQUd2RCxpQkFBdUM7QUFBQSxJQUF2Qyx5QkFBdUQ7QUFBQTtBQUFBLFlBQUFZLGFBQUFoRixHQUFBb0U7QUFBQUEsUUFBQUEsTUFHdkQscUJBQThDO0FBQUEsSUFBOUMsMkJBQXVEO0FBQUE7QUFBQSxZQUFBYSxhQUFBakYsR0FBQW9FO0FBQUFBLFFBQUEsSUFHdkQsaUJBQXVDO0FBQUEsSUFBdkMseUJBQXVEO0FBQUE7QUFBQSxZQUFBYyxhQUFBbEYsR0FBQW9FO0FBQUFBLFFBQUFBLE1BR3ZELHFCQUE4QztBQUFBLElBQTlDLDJCQUF1RDtBQUFBO0FBQUEsR0Q5WXpEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTg3NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9tdXRleC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9tdXRleF9sb2NrIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsInByb3RlY3QiLCJtIiwieCIsImUiLCJTdGRsaWJfTXV0ZXgiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUg7QUFBQUEsSUMwQkU7QUFBQSxJQUFNLFFBQUFJLElBQ0E7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxJRDNCUjtBQUFBLEtDZ0NJO0FBQUEsS0FBUTtBQUFBO0FBQUEsSUFIUjtBQUFBLElBQVE7QUFBQSxHQUlDO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRGpDYiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE4Nzk2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJTdGRsaWJfQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODgxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2RvbWFpbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbmV4dGVybmFsIHNlbGZfaW5kZXggOiB1bml0IC0+IGludFxuICA9IFwiY2FtbF9tbF9kb21haW5faW5kZXhcIiBbQEBub2FsbG9jXVxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQ29uZGl0aW9uIiwiU3RkbGliX011dGV4IiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiQXNzZXJ0X2ZhaWx1cmUiLCJjcHVfcmVsYXgiLCJwYXJhbSIsIm5vbmUiLCJjcmVhdGVfZGxzIiwic3QiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJrIiwic3BsaXQiLCJraSIsImwiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJzIiwic2V0IiwieCIsImdldCIsImluaXQiLCJvbGR2YWwiLCJuZXdfb2JqIiwiY3VydmFsIiwidXBkYXRlZF9vYmoiLCJzZXRfaW5pdGlhbF9rZXlzIiwidiIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJuZXdfZXhpdCIsImRvX2F0X2V4aXQiLCJzcGF3biIsInBrIiwidGVybV9zeW5jIiwiYm9keSIsInJlcyIsImV4biIsImpvaW4iLCJsb29wIiwibWF0Y2giLCJleCIsInJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsIlN0ZGxpYl9Eb21haW4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsVUFBQUMsT0M4Q21CLDBDQUFnQjtBQUFBLE9BQUFDLE9EOUNuQztBQUFBLFlBQUFDLFdBQUFGO0FBQUFBLFFBQUFHLEtDd0ZhO0FBQUEsSUFDVDtBQUFBLEdBQWdCO0FBQUEsR0FFVjtBQUFBO0FBQUEsSUFBQUMsY0FJVTtBQUFBLElBQUFDLGNBS0E7QUFBQSxZQUFBQyxRQUFBQyxtQkFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsTUFRTjtBQUFBLEtBQUFDLElBQ1Y7QUFBQSxJQUNBO0FBQUEsU0FBQUMsUUFBQSxzQkFBQUMsS0FFZ0I7QUFBQSxLQVRoQjtBQUFBLFVBQUFDLElBQVE7QUFBQSxNQUNEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFVUDtBQUFBLEdBQUM7QUFBQSxZQUFBQyxXQUFBTDtBQUFBQSxJQUtEO0FBQUEsU0FBQU4sS0FBQSx3QkFBQVksS0FDQTtBQUFBLEtBQ0EsYUFBaUI7QUFBQSxTQUFBQyxTQUFqQjtBQUFBO0FBQUEsTUFHSTtBQUFBLFdBQUFDLFNBR1c7QUFBQSxPQUNiO0FBQUEsT0FPRyx3REFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBQyxJQVpvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBY3hCO0FBQUEsWUFBQUMsSUFBQW5CLE9BQUFvQjtBQUFBQSxRQUFBWCxNQUVHLFVBQUFOLEtBQ0c7QUFBQSxJQUlUO0FBQUEsSUFBZ0Q7QUFBQTtBQUFBLFdBN0NPO0FBQUEsWUFBQWtCLElBQUFyQjtBQUFBQTtBQUFBQSxLQUFBc0IsT0F5RGpEO0FBQUEsS0FBQWIsTUFBQTtBQUFBLEtBQUFOLEtBQ0c7QUFBQSxLQUFBb0IsU0FDQztBQUFBLElBQ1ksb0JBdEZEO0FBQUE7QUFBQSxLQUFBQyxVQXlGUDtBQUFBLEtBQUFyQixPQVdaO0FBQUEsS0FBQXNCLFNBdkJXO0FBQUEsU0FDYjtBQUFBLElBdUI2QyxNQUN0QztBQUFBLFFBQUFDLGNBSWU7QUFBQSxJQUNZLHlCQTNHYjtBQUFBLElBNkdaO0FBQUEsR0FFTjtBQUFBLFlBQUFDLGlCQUFBZDtBQUFBQSxJQVVIO0FBQUE7QUFBQSxzQkFBQWI7QUFBQUEsa0JBQUE0QixJQUFVLFVBQUFsQixJQUFBO0FBQUEsY0FBb0IsZ0JBQVE7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFtQixPQUFBN0IsV0FBQThCLFNBS2pDLFVBQWdCLGNBQU07QUFBQSxZQUFBQyxLQUFBL0IsT0FFbkIsMkJBQVc7QUFBQSxZQUFBZ0MsZUFBQWhDLE9BQVgseUNBRWtCLENBQVk7QUFBQTtBQUFBLElBQUFpQyx1QkFRakI7QUFBQSxJQUFBQyx1QkFBaUIsYUFBQWxDLE9BRUE7QUFBQSxZQUFBbUMsbUJBQUEvQztBQUFBQSxJQUd2QztBQUFBLEtBQ0Q7QUFBQTtBQUFBLFFBQUFnRCxRQUNHO0FBQUEsYUFBQUMsTUFBQXJDLE9BRVksc0JBQVEsdUJBQU07QUFBQSxJQUM3QjtBQUFBO0FBQUEsR0FDQztBQUFBO0FBQUEsSUFBQXNDO0FBQUFBLE1BVWEsb0JBQUF0QyxPQUF1QixnQkFBQUEsT0FBVyxTQUFFLENBQWIsQ0FBYztBQUFBLFlBQUF1QyxRQUFBbkQ7QUFBQUEsUUFBQW9ELFdBR3ZCO0FBQUEsYUFBQUMsU0FBQXpDO0FBQUFBLEtBRTVCO0FBQUEsS0FBSSw4QkFBYTtBQUFBO0FBQUEsSUFFbkIsaUNBQTRCO0FBQUE7QUFBQSxZQUFBMEMsV0FBQTFDO0FBQUFBLFFBQUFaLElBR0w7QUFBQSxJQUN2Qix1QkFBSTtBQUFBO0FBQUEsR0FYa0Q7QUFBQSxZQUFBdUQsTUFBQXZEO0FBQUFBLElBUC9DO0FBQUEsS0FDTDtBQUFBLEtBQ0E7QUFBQSxLQUF1QixtQ0FBQVksT0FFWSxTQUFFO0FBQUE7QUFBQTtBQUFBLFNBdENuQztBQUFBLEtBQUE0QztBQUFBQSxPQUF3QjtBQUFBO0FBQUEsa0JBQUE1QztBQUFBQSxjQUFBVyxRQUR4QixVQUFBRCxJQUFBO0FBQUEsVUFBc0MsY0FBUCxrQkFBTyxRQUFRO0FBQUEsU0FBRTtBQUFBO0FBQUEsU0FtRXJDO0FBQUEsS0FBQW1DLFlBREQ7QUFBQSxhQUFBQyxLQUFBOUM7QUFBQUEsS0FLWixJQUNFLGVBQ0EsMEJBQUErQyxNQUNVO0FBQUEsV0FBQUM7QUFBQUEsVUFBQUEsTUR6UWhCO0FBQUEsVUN3UmEscUJBQUFBO0FBQUFBLE1BQ0w7QUFBQTtBQUFBLEtBUEE7QUFBQSxLQUFhO0FBQUEsSUFPSjtBQUFBLFFBQUFsQixTQUVGO0FBQUEsSUFDYjtBQUFBLEdBQXNCO0FBQUEsWUFBQW1CLEtBQUFqRDtBQUFBQSxRQUFBNkMsWUFFZjtBQUFBLGFBQUFLLEtBQUFsRDtBQUFBQSxLQUdMO0FBQUEsVUFBQW1ELFFBQUE7QUFBQSxvQkFBQUosTUFBQSxVQUtJO0FBQUEsTUFIQTtBQUFBO0FBQUEsSUFHRztBQUFBLFFBQUFJLFFBRUg7QUFBQSxJQUFnQyx1QkFBQS9CLElBQUEsVUFDNUI7QUFBQSxRQUFBZ0MsS0FENEI7QUFBQTtBQUFBLEdBRWhCO0FBQUE7QUFBQSxJQUFBQywyQkFqRWdDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6T3hEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTkwMTEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiU3RkbGliIiwiU3RkbGliX0J1ZmZlciIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfU3lzIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfSW50IiwiY3JlYXRlX2NoYXJfc2V0IiwicGFyYW0iLCJhZGRfaW5fY2hhcl9zZXQiLCJjaGFyX3NldCIsImMiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImkiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiaWduIiwiZm10IiwiaWNvbnYiLCJwcmVjX29wdCIsIm5kZWMiLCJmbXR0eSIsIndpZHRoX29wdCIsImNvdW50ZXIiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImZjb252IiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwiYnVmIiwib3ZlcmhlYWQiLCJsZW4iLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInMiLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJvcHQiLCJjRiIsImJwcmludF9jaGFyX3NldCIsInByaW50X2NoYXIiLCJzZXQiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwic3dpdGNoZXIiLCJqIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkIiwibiIsImJwcmludF9wcmVjaXNpb24iLCJwcmVjIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm9ybWF0dGluZ19saXQiLCJzdHIiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiY2hyIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiY3N0X0xpIiwiY3N0X2kiLCJjc3RfbGkiLCJjc3RfbmkiLCJicHJpbnRfZm10dHkiLCJzdWJfZm10dHkiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5IiwieCIsImNzdCIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwicmVzdCIsImZtdGluZ19saXQiLCJmbXRpbmdfZ2VuIiwiYXJpdHkiLCJzeW1tIiwidHkiLCJ0eTIiLCJ0eTEiLCJmbXR0eV9yZWxfZGV0IiwibWF0Y2giLCJkZSIsImFmIiwiamQiLCJnYSIsImNzdF9jYW1saW50ZXJuYWxGb3JtYXRfbWwiLCJ0cmFucyIsInJlc3QxIiwicmVzdDIiLCJ0eTEyIiwidHkxMSIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IiwiVHlwZV9taXNtYXRjaCIsInR5cGVfcGFkZGluZyIsInciLCJ0eXBlX3BhZHByZWMiLCJwIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJzdWJfZm10dHkxIiwiZm10MSIsImZtdHR5MiIsImZtdDIiLCJmbXR0eTMiLCJmbXQzIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViMl9mbXR0eSIsInN1YjFfZm10dHkiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsInJlcyIsImZpeF9pbnRfcHJlY2lzaW9uIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwibCIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsInBvcyIsInB1dCIsImxlZnQiLCJjc3RfdSIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmIiwiayIsImFjYyIsImthY2MiLCJuZXdfYWNjIiwibyIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfZnJvbV9mbXR0eSIsIm1ha2VfaW52YWxpZF9hcmciLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsIm1ha2VfY3VzdG9tIiwibWFrZV9pcHJpbnRmIiwia29jIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsIm1zZyIsImJ1ZnB1dF9hY2MiLCJiIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleG4iLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiY3N0X2F0X2NoYXJhY3Rlcl9udW1iZXIiLCJjc3RfaW52YWxpZF9mb3JtYXQiLCJzdWJfZm9ybWF0IiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInJlYWQiLCJjc3RfdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwicGFyc2UiLCJsaXRfc3RhcnQiLCJlbmRfaW5kIiwiY3N0XzAiLCJwYXJzZV9mbGFncyIsInBjdF9pbmQiLCJzZXRfZmxhZyIsInplcm8iLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsImhhc2giLCJuZXdfaW5kIiwiY3N0X3ByZWNpc2lvbiIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9saXRlcmFsIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwYXJzZV9jb252ZXJzaW9uIiwicGx1c191c2VkIiwiZ2V0X3BsdXMiLCJoYXNoX3VzZWQiLCJnZXRfaGFzaCIsInNwYWNlX3VzZWQiLCJnZXRfc3BhY2UiLCJpZ25fdXNlZCIsImdldF9pZ24iLCJwYWRfdXNlZCIsImdldF9wYWQiLCJwcmVjX3VzZWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsInN1Yl9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCIsIm5leHRfaW5kIiwiY2hhcl9mb3JtYXQiLCJraW5kIiwicGFyc2VfYWZ0ZXJfYXQiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJvZmZzZXQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzaXplIiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwiZm9ybWF0dGluZyIsInBhcnNlX2NoYXJfc2V0IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsInBhcnNlX3Bvc2l0aXZlIiwicGFyc2VfaW50ZWdlciIsImFkZF9saXRlcmFsIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJjb21wdXRlX2ludF9jb252IiwiaW5jb21wYXRpYmxlX2ZsYWciLCJvcHRpb24iLCJzdWJmbXQiLCJjc3RfYW5kIiwiY3N0X2JhZF9pbnB1dF9mb3JtYXRfdHlwZV9taXNtIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQywyQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLGdCQUFBQyxPQ3VCeUIsd0NBQW9CO0FBQUEsWUFBQUMsZ0JBQUFDLFVBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFVBSzNDO0FBQUEsS0FBQUMsT0FBQTtBQUFBLFNBRTRCO0FBQUEsSUFBMUIsT0FERixrQ0FDRSx5QkFBaUU7QUFBQTtBQUFBLFlBQUFDLGdCQUFBSjtBQUFBQSxJQUduRSwyQ0FBd0I7QUFBQTtBQUFBLFlBQUFLLGFBQUFMO0FBQUFBLFFBQUFBLGFBSVIsb0JBQUFNLElBQ2hCO0FBQUE7QUFBQSxhQUU4QjtBQUFBLEtBRDVCLDhCQUNFO0FBQUEsYUFBNkQ7QUFBQSxrQkFFakUsOENBQWdDO0FBQUEsS0FGaUM7QUFBQTtBQUFBLEdBRWpDO0FBQUEsWUFBQUMsZUFBQVAsVUFBQUM7QUFBQUEsUUFBQUMsVUFLaEMsYUFBQUMsT0FBQTtBQUFBLElBQ2EsZ0VBQTZCO0FBQUEsR0FBZ0I7QUFBQSxZQUFBSyxlQUFBQztBQUFBQSxJQWEvQixjQUNqQjtBQUFBLFFBQUFDLFFBRGlCO0FBQUEsSUFFWDtBQUFBLEdBQTBCO0FBQUEsV0QvRDVDO0FBQUEsWUFBQUMsK0JBQUFDLEtBQUFDO0FBQUFBLElDMkVlO0FBQUE7QUFBQTtBQUFBLFFBRVg7QUFBQTtBQUFBLFFBRUE7QUFBQTtBQUFBLFFBNEJBO0FBQUEsZ0JBTUE7QUFBQTtBQUFBLElBdENXO0FBQUE7QUFBQSxXQUFBSixVQUFBLFFBTWUsNkNBQXNCO0FBQUE7QUFBQSxXQUFBQSxZQU5yQztBQUFBLE9BUW9CLCtDQUFzQjtBQUFBO0FBQUEsV0FBQUEsWUFSMUMsUUFBQUssUUFBQTtBQUFBLE9BVW1CLHlEQUFzQjtBQUFBO0FBQUEsV0FBQUwsWUFWekMsUUFBQUssVUFBQTtBQUFBLE9BYU0sMkRBQXNCO0FBQUE7QUFBQSxXQUFBTCxZQWI1QixRQUFBSyxVQUFBO0FBQUEsT0FnQlUsMkRBQXNCO0FBQUE7QUFBQSxXQUFBTCxZQWhCaEMsUUFBQUssVUFBQTtBQUFBLE9BbUJNLDJEQUFzQjtBQUFBO0FBQUEsV0FBQUMsV0FuQjVCLFFBQUFOLFlBQUE7QUFBQSxPQVRpQixpQkFBQU8sT0FBQSxpQkFFZix3QkFETDtBQUFBLE9BK0JFLHFEQUFzQjtBQUFBO0FBQUEsV0FBQVAsWUF2QnJCO0FBQUEsT0F5QmEsK0NBQXNCO0FBQUE7QUFBQSxXQUFBUSxRQXpCbkMsUUFBQVIsWUFBQTtBQUFBLE9BMkJYO0FBQUE7QUFBQSxXQUFBUSxVQTNCVyxRQUFBUixZQUFBO0FBQUEsT0E2Qlg7QUFBQTtBQUFBLFdBQUFULFdBN0JXLFFBQUFrQixZQUFBO0FBQUEsT0FrQ1g7QUFBQSxtQkFBQUMsVUFsQ1csUUFvQ1g7QUFBQTtBQUFBLEdBRXFDO0FBQUEsWUFBQUMsd0JBQUFDLE9BMkd2QywrQkFNZTtBQUFBLFlBQUFDLGNBQUFDO0FBQUFBLElBNkJnQywyQ0FBc0I7QUFBQSxHQUFFO0FBQUEsWUFBQUMsa0JBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLE1BSXZFO0FBQUEsS0FBQUMsVUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLE1BQUFDLFVBQ2dCO0FBQUEsTUFBQUMsVUFDQTtBQUFBLEtBQ2Q7QUFBQSxLQUFvQztBQUFBO0FBQUEsR0FFckM7QUFBQSxZQUFBQyxnQkFBQU4sS0FBQXhCO0FBQUFBLElBSUQ7QUFBQSxJQUNBO0FBQUEsSUFBNkI7QUFBQSxHQUNQO0FBQUEsWUFBQStCLGtCQUFBUCxLQUFBUTtBQUFBQSxRQUFBQyxVQUl0QjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBeUM7QUFBQSxHQUNiO0FBQUEsWUFBQUMsZ0JBQUFWO0FBQUFBLElBSTVCLG9EQUFvQztBQUFBO0FBQUEsWUFBQVcsY0FBQXRCO0FBQUFBLElBS1o7QUFBQTtBQUFBO0FBQUEsT0FFWTtBQUFBO0FBQUE7QUFBQSxPQUF3QjtBQUFBO0FBQUE7QUFBQSxPQUNoRDtBQUFBO0FBQUE7QUFBQSxPQUF3QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FGRTtBQUFBLGVBQzFCO0FBQUE7QUFBQSxHQUMyQjtBQUFBLFlBQUF1QixjQUFBQyxLQUFBakI7QUFBQUEsUUFBQWtCLEtBSXZCO0FBQUEsSUFBa0I7QUFBQTtBQUFBLE9BQ3JCO0FBQUE7QUFBQSxPQUFpQjtBQUFBO0FBQUEsT0FDakI7QUFBQTtBQUFBLE9BQWlCO0FBQUE7QUFBQSxPQUNqQjtBQUFBO0FBQUEsT0FBaUI7QUFBQTtBQUFBLE9BQ2pCO0FBQUE7QUFBQSxPQUFpQjtBQUFBLGVBQ2hCO0FBQUE7QUFBQSxHQUFHO0FBQUEsWUFBQUMsZ0JBQUFmLEtBQUF6QjtBQUFBQSxhQUFBeUMsV0FBQWhCLEtBQUFuQjtBQUFBQSxTQUFBTCxJQXlEWTtBQUFBLEtBQWE7QUFBQSxnQkFDL0IsMEJBQXVCO0FBQUE7QUFBQTtBQUFBLGtCQUN2QiwwQkFBdUI7QUFBQSxpQkFDdkIsdUJBQXNCO0FBQUE7QUFBQSxJQUVqQztBQUFBO0FBQUEsS0FBQXlDO0FBQUFBLE9BRUs7QUFBQSxXQUNJLDBCQUF5QjtBQUFBO0FBQUEsYUFBQUMsU0FBQTFDO0FBQUFBO0FBQUFBLE1BQUEyQyxRQWxEYztBQUFBLE1BQUFDLFNBQWxCO0FBQUEsVUFDMUI7QUFBQSxLQUFvQjtBQUFBO0FBQUEsV0FDWjtBQUFBLFdBQXlCLElBQUk7QUFBQSxXQUFKO0FBQUE7QUFBQSxjQURiO0FBQUE7QUFBQSxJQUMwQztBQUFBLElBQzdELGlCQUFrQjtBQUFBLFFBQUF2QyxJQUlyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFDd0IsS0FBbkIsb0JBQW1CLCtCQUFBQSxNQUNqQjtBQUFBLFVBQUF3QyxXQUVEO0FBQUEsTUFBYTtBQUFBLDJCQUNQO0FBQUE7QUFBQTtBQUFBLFdBQUF4QyxNQUNHO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFBQUEsTUFDUjtBQUFBLE1BRWUsS0FBbkIsb0JBQW1CO0FBQUEsT0FlcEI7QUFBQSxXQUFBQSxNQUFzQjtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUF3QyxhQWRoQjtBQUFBLE1BQWE7QUFBQTtBQUFBLFFBRWpCO0FBQUEsUUFBa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFFQyxvQkFBb0I7QUFBQSxPQUN2QztBQUFBLFdBQUF4QyxNQUFzQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRVMsS0FBcEIsb0JBQW9CO0FBQUEsT0FDL0I7QUFBQSxPQUNBO0FBQUEsV0FBQUEsTUFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBeUMsSUFHaEIsYUFBQXpDLE1BQUEsYUFBQXlDLE1BQUE7QUFBQTtBQUFBLE9BTUosa0JBQWtCLG9CQUFvQixpQ0FBQUEsTUFNcEM7QUFBQSxPQUxBO0FBQUEsT0FDQTtBQUFBLE9BQ0E7QUFBQSxPQUFzQjtBQUFBLFdBQUF6QyxNQUNOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQWxDZixpQkFBa0I7QUFBQSxLQStDdEIsK0JBQ3NCO0FBQUE7QUFBQTtBQUFBLFlBQUEwQyxhQUFBdkIsS0FBQXdCO0FBQUFBLElBS0k7QUFBQTtBQUFBLE9BQ2hCLCtCQUV1QjtBQUFBO0FBQUEsT0FEdkI7QUFBQSxlQUNBLCtCQUF1QjtBQUFBO0FBQUE7QUFBQSxZQUFBQyxvQkFBQXpCLEtBQUEwQjtBQUFBQSxJQUlsQyxrQkFBaUIsbUNBQXVCO0FBQUE7QUFBQSxZQUFBQyxlQUFBM0IsS0FBQWhCO0FBQUFBLElBSVQsY0FDckI7QUFBQSxRQUFBQyxRQURxQjtBQUFBLElBRU8sT0FBcUIsdUJBQXJCLGlDQUFxQjtBQUFBO0FBQUEsWUFBQTJDLGVBQUE1QixLQUFBNkI7QUFBQUEsSUFNOUMsNEJBQ0c7QUFBQSxJQURIO0FBQUEsU0FBQUMsSUFBQSxRQUFBTixRQUFBO0FBQUEsS0FHWDtBQUFBLEtBQ3NCLE9BQWlCLHVCQUFqQiw2QkFHQztBQUFBO0FBQUEsUUFBQUEsVUFQWjtBQUFBLElBTVg7QUFBQSxJQUFzQiwrQkFDQztBQUFBO0FBQUEsWUFBQU8saUJBQUEvQixLQUFBZ0M7QUFBQUEsSUFJVDtBQUFBLFNBQUFGLElBQUE7QUFBQSxLQUdkO0FBQUEsS0FDc0IsT0FBaUIsdUJBQWpCLDZCQUVJO0FBQUE7QUFBQSxJQU5aLFNBTWQsbUNBQTBCO0FBQUE7QUFBQSxZQUFBRyxrQkFBQWpDLEtBQUFYO0FBQUFBLElBS0k7QUFBQTtBQUFBO0FBQUEsT0FDWCwrQkFJZ0M7QUFBQTtBQUFBO0FBQUEsT0FIaEMsK0JBR2dDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FEakQsK0JBQ2lEO0FBQUEsZUFBRjtBQUFBO0FBQUEsR0FBRTtBQUFBLFlBQUE2QyxrQkFBQWxDLEtBQUEwQixVQUFBckMsT0FBQXdDLEtBQUFHLE1BQUF4RDtBQUFBQSxJQWFyRDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDb0IsT0FBcUIscUJBQXJCLHFCQUFxQjtBQUFBO0FBQUEsWUFBQTJELGtCQUFBbkMsS0FBQUo7QUFBQUEsSUFNekM7QUFBQTtBQUFBLE9BQ2tCO0FBQUE7QUFBQSxPQUNBO0FBQUE7QUFBQSxJQUVsQixrQkFDYywrQkFFcUI7QUFBQTtBQUFBLFlBQUF3Qyx5QkFBQUM7QUFBQUEsSUFhUztBQUFBO0FBQUE7QUFBQSxRQUNsQjtBQUFBO0FBQUEsUUFDQTtBQUFBO0FBQUEsUUFFQTtBQUFBO0FBQUEsUUFDQTtBQUFBO0FBQUEsUUFDQTtBQUFBO0FBQUEsUUFFQTtBQUFBLGdCQUNBO0FBQUE7QUFBQSxJQVRrQjtBQUFBLFNBQUE3RCxJQUFBLHVCQVVwQjtBQUFBLEtBQWlCO0FBQUE7QUFBQSxRQUFBOEQsTUFWRztBQUFBO0FBQUEsR0FVSDtBQUFBLFlBQUFDLG9CQUFBdkMsS0FBQXdDO0FBQUFBLElBS1Q7QUFBQSxjQUN2QjtBQUFBLGNBQ0YseUJBQXVCO0FBQUE7QUFBQSxZQUFBQyxzQkFBQXpDLEtBQUFzQztBQUFBQSxRQUFBLElBSTlCO0FBQUE7QUFBQSxTQUFBekQsSUFBQTtBQUFBO0FBQUEsTUFDRSx5QkFBd0I7QUFBQSxjQUFPO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUM3QjtBQUFBLE9BQUE2RCxTRHZlTixPQUFBQyxRQUFBLE1BQUFDLFNBQUEsT0FBQUMsU0FBQTtBQUFBLFlBQUFDLGFBQUE5QyxLQUFBUjtBQUFBQSxRQUFBQSxRQytlaUI7QUFBQTtBQUFBLG1DQXlCRztBQUFBLEtBekJIO0FBQUE7QUFBQSxZQUFBQSxVQUFBO0FBQUEsUUFDUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBRGxDO0FBQUEsUUFFUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBRmxDO0FBQUEsUUFHUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBSGxDO0FBQUEsUUFJUTtBQUFBLFFBQTJCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBSm5DO0FBQUEsUUFLUTtBQUFBLFFBQTJCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBTG5DO0FBQUEsUUFNUTtBQUFBLFFBQTJCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBTm5DO0FBQUEsUUFPUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBUGxDO0FBQUEsUUFRUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFVBUmxDLFVBQUF1RCxZQUFBO0FBQUEsUUFtQmI7QUFBQSxRQUE0QjtBQUFBLFFBQzVCO0FBQUEsUUFBMEI7QUFBQTtBQUFBO0FBQUEsWUFBQXZELFVBcEJiLFVBQUF1RCxjQUFBO0FBQUEsUUFzQmI7QUFBQSxRQUE0QjtBQUFBLFFBQzVCO0FBQUEsUUFBMEI7QUFBQTtBQUFBO0FBQUEsWUFBQXZELFdBdkJiO0FBQUEsUUFTUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFdBVGxDO0FBQUEsUUFVUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFdBVmxDO0FBQUEsUUFXUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFdBWGxDO0FBQUEsUUFZUTtBQUFBLFFBQTBCO0FBQUE7QUFBQTtBQUFBLFlBQUFBLFdBWmxDO0FBQUEsUUFlYjtBQUFBLFFBQTJCO0FBQUE7QUFBQTtBQUFBLEdBVVQ7QUFBQSxZQUFBd0Qsb0JBQUEzRTtBQUFBQSxJQUlkLFlBR1c7QUFBQSxRQUFBNEUsSUFIWDtBQUFBLElBSWlCLHFDQUFxQjtBQUFBO0FBQUEsT0FBQUMsUURoaEI5QyxNQUFBQSxNQUFBO0FBQUEsWUFBQUMsY0FBQS9EO0FBQUFBLFFBQUFZLE1DbW9CWTtBQUFBLGFBQUFvRCxRQUFBaEUsT0FBQXNDO0FBQUFBLFNBQUF0QyxNQTdHVSxPQUFBc0MsV0FBQTtBQUFBO0FBQUEsa0NBcUdDO0FBQUEsTUFyR0Q7QUFBQTtBQUFBLGFBQUEyQixPQUFBO0FBQUEsU0EyQmhCO0FBQUEsU0FBeUI7QUFBQSxTQUN6QjtBQUFBLFNBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBQUEsU0E1QlA7QUFBQSxTQThCaEI7QUFBQSxTQUF5QjtBQUFBLFNBQ3pCO0FBQUEsU0FBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFBQSxTQS9CUCxRQUFBeEIsTUFBQTtBQUFBLFNBRWhCO0FBQUEsU0FBeUI7QUFBQSxTQUN6QjtBQUFBLFNBQXdCO0FBQUEsU0FBdUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFBd0IsU0FIL0IsUUFBQXhCLFFBQUE7QUFBQSxTQU1oQjtBQUFBLFNBQXlCO0FBQUEsU0FDekI7QUFBQSxTQUF3QjtBQUFBLFNBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBQXdCLFNBUC9CLFFBQUFyQixPQUFBLFFBQUFILFFBQUEsUUFBQXhDLFFBQUE7QUFBQSxTQS9HcEI7QUFBQSxTQUNBO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxTQUNBO0FBQUEsU0FDeUMscUJBQXJCO0FBQUEsU0FxSDBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBZ0UsU0FYMUI7QUFBQSxVQUFBckIsU0FBQTtBQUFBLFVBQUFILFFBQUE7QUFBQSxVQUFBeEMsVUFBQTtBQUFBLFNBY2hCO0FBQUEsU0FBaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFnRSxTQWRqQztBQUFBLFVBQUFyQixTQUFBO0FBQUEsVUFBQUgsUUFBQTtBQUFBLFVBQUF4QyxVQUFBO0FBQUEsU0FpQmhCO0FBQUEsU0FBaUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFnRSxTQWpCakM7QUFBQSxVQUFBckIsU0FBQTtBQUFBLFVBQUFILFFBQUE7QUFBQSxVQUFBeEMsVUFBQTtBQUFBLFNBb0JoQjtBQUFBLFNBQWlEO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBQWdFLFNBcEJqQyxRQUFBckIsU0FBQSxRQUFBSCxRQUFBLFFBQUFqQyxRQUFBO0FBQUEsU0EvRXBCO0FBQUEsU0FDQTtBQUFBLFNBQ0E7QUFBQSxTQUNBO0FBQUEsU0FDQTtBQUFBLFNBQ3lDLHFCQUFyQjtBQUFBLFNBaUc0QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUF5RCxTQXZCNUIsUUFBQXhCLFFBQUE7QUFBQSxTQWlDaEI7QUFBQSxTQUF5QjtBQUFBLFNBQ3pCO0FBQUEsU0FBd0I7QUFBQSxTQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUF3QixTQWxDL0I7QUFBQSxTQW9EaEI7QUFBQSxTQUEwQjtBQUFBO0FBQUE7QUFBQSxhQUFBQSxVQXBEVixRQUFBZixNQUFBO0FBQUEsU0F3RGhCO0FBQUEsU0FBNkI7QUFBQTtBQUFBO0FBQUEsYUFBQWUsVUF4RGIsUUFBQWIsTUFBQTtBQUFBLFNBMkRoQjtBQUFBLFNBQTJCO0FBQUE7QUFBQTtBQUFBLGFBQUFhLFVBM0RYLFFBQUE3RCxRQUFBLFFBQUFSLFVBQUE7QUFBQSxTQStEaEI7QUFBQSxTQUF5QjtBQUFBLFNBQ3pCO0FBQUEsU0FBNEI7QUFBQSxTQUM1QjtBQUFBLFNBQXdCO0FBQUEsU0FBeUI7QUFBQSxTQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFxRSxVQWpFeEQsUUFBQTdELFVBQUEsUUFBQVIsWUFBQTtBQUFBLFNBb0VoQjtBQUFBLFNBQXlCO0FBQUEsU0FDekI7QUFBQSxTQUE0QjtBQUFBLFNBQzVCO0FBQUEsU0FBd0I7QUFBQSxTQUF5QjtBQUFBLFNBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBQXFFLFVBdEV4RDtBQUFBLFNBcUNoQjtBQUFBLFNBQXlCO0FBQUEsU0FDekI7QUFBQSxTQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFVBdENQO0FBQUEsU0F3Q2hCO0FBQUEsU0FBeUI7QUFBQSxTQUN6QjtBQUFBLFNBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBQUEsVUF6Q1AsUUFBQUMsYUFBQTtBQUFBLFNBMEZoQiwyQkFBMEI7QUFBQSxTQUFxQztBQUFBO0FBQUE7QUFBQSxhQUFBRCxVQTFGL0MsUUFBQUUsYUFBQTtBQUFBLFNBNkZoQjtBQUFBLGNBQUFqQixRQUFBO0FBQUEsVUFFRTtBQUFBLFVBQTRCO0FBQUEsVUFBeUI7QUFBQTtBQUFBO0FBQUEsY0FBQUEsUUFGdkQ7QUFBQSxVQUlFO0FBQUEsVUFBNEI7QUFBQSxVQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFlLFVBakd2QztBQUFBLFNBaURoQjtBQUFBLFNBQXlCO0FBQUEsU0FDekI7QUFBQSxTQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFVBbERQLFFBQUE5RSxXQUFBLFFBQUFrQixZQUFBO0FBQUEsU0EwRWhCO0FBQUEsU0FBeUI7QUFBQSxTQUN6QjtBQUFBLFNBQThCO0FBQUEsU0FBNEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFBNEQsVUEzRTFDLFFBQUEzRCxVQUFBO0FBQUEsU0E4RWhCO0FBQUEsU0FBeUI7QUFBQSxTQXBURDtBQUFBO0FBQUEsb0JBQ1Q7QUFBQTtBQUFBLG9CQUNBO0FBQUEsNEJBQ0E7QUFBQTtBQUFBLFNBa1RmO0FBQUEsU0FBNkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUFBMkQsVUEvRTdCO0FBQUEsU0FrRmhCO0FBQUEsU0FBeUI7QUFBQSxTQUN6QjtBQUFBLFNBQThCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBQSxVQW5GZDtBQUFBLFVBQUFsRSxNQUFBO0FBQUEsVUFBQUMsUUFzRlk7QUFBQSxTQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFpRSxVQXZGZ0IsUUFBQUcsUUFBQSxZQTJDRjtBQUFBLFNBQXlCO0FBQUEsY0FBQTNFLElBQUE7QUFBQTtBQUFBLFdBQ3JDO0FBQUEsV0FBeUI7QUFBQSxXQUN6QjtBQUFBLG1CQUF1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FFekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXNEbUI7QUFBQSxJQUVwQjtBQUFBLElBT2UsMkJBQ0M7QUFBQTtBQUFBLFlBQUE0RSxLQUFBcEY7QUFBQUEsSUFXYiw4QkF1Qlk7QUFBQSxJQXZCWjtBQUFBO0FBQUEsV0FBQWdGLE9BQUEsVUFNb0Isc0JBQVc7QUFBQTtBQUFBLFdBQUFBLFNBTi9CLFVBYXdCLHdCQUFXO0FBQUE7QUFBQSxXQUFBQSxTQWJuQyxVQU9rQix3QkFBVztBQUFBO0FBQUEsV0FBQUEsU0FQN0IsVUFRc0Isd0JBQVc7QUFBQTtBQUFBLFdBQUFBLFNBUmpDLFVBVThCLHdCQUFXO0FBQUE7QUFBQSxXQUFBQSxTQVZ6QyxVQVNzQix3QkFBVztBQUFBO0FBQUEsV0FBQUEsU0FUakMsVUFXc0Isd0JBQVc7QUFBQTtBQUFBLFdBQUFBLFNBWGpDLFVBWW9CLHdCQUFXO0FBQUE7QUFBQSxXQUFBQSxTQVovQixVQUFBSyxLQUFBLFVBb0JlLDRCQUFTO0FBQUE7QUFBQSxXQUFBTCxTQXBCeEIsVUFBQU0sTUFBQSxVQUFBQyxNQUFBO0FBQUEsT0FzQnVCLGtDQUFTO0FBQUE7QUFBQSxXQUFBUCxTQXRCaEMsVUFlc0IseUJBQVc7QUFBQTtBQUFBLFdBQUFBLFVBZmpDLFVBY3NCLDBCQUFXO0FBQUE7QUFBQSxXQUFBQSxVQWRqQyxVQWdCa0IsMEJBQVc7QUFBQTtBQUFBLFdBQUFBLFVBaEI3QixVQWlCd0IsMEJBQVc7QUFBQSxtQkFBQUEsVUFqQm5DLFVBa0J3QywwQkFBVztBQUFBO0FBQUEsR0FLM0I7QUFBQSxZQUFBUSxjQUFBeEY7QUFBQUEsSUFFeEI7QUFBQSxLQVNKLHNCQUFBQSxPQUNpQixjQUFBQSxPQUVBLEVBSGpCO0FBQUEsSUFUSTtBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsT0FBQTtBQUFBLFFBQUFTLFFBY2lCO0FBQUEsUUFBQUMsS0FBa0I7QUFBQSxRQUFBQyxLQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixNQUFlLFFBRHZDO0FBQUE7QUFBQTtBQUFBLFFBQUFnRixTQWZJO0FBQUEsUUFBQVMsVUFtQmlCO0FBQUEsUUFBQUMsT0FBa0I7QUFBQSxRQUFBQyxPQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixRQUFlLFVBRHZDO0FBQUE7QUFBQTtBQUFBLFFBQUFnRixTQXBCSTtBQUFBLFFBQUFTLFVBd0JpQjtBQUFBLFFBQUFDLE9BQWtCO0FBQUEsUUFBQUMsT0FBQTtBQUFBLE9BQ3ZDLHNCQUFBM0YsT0FDd0IsUUFBZSxVQUR2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsU0F6Qkk7QUFBQSxRQUFBUyxVQTZCaUI7QUFBQSxRQUFBQyxPQUFrQjtBQUFBLFFBQUFDLE9BQUE7QUFBQSxPQUN2QyxzQkFBQTNGLE9BQ3dCLFFBQWUsVUFEdkM7QUFBQTtBQUFBO0FBQUEsUUFBQWdGLFNBOUJJO0FBQUEsUUFBQVMsVUF1Q2lCO0FBQUEsUUFBQUMsT0FBa0I7QUFBQSxRQUFBQyxPQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixRQUFlLFVBRHZDO0FBQUE7QUFBQTtBQUFBLFFBQUFnRixTQXhDSTtBQUFBLFFBQUFTLFVBa0NpQjtBQUFBLFFBQUFDLE9BQWtCO0FBQUEsUUFBQUMsT0FBQTtBQUFBLE9BQ3ZDLHNCQUFBM0YsT0FDd0IsUUFBZSxVQUR2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsU0FuQ0k7QUFBQSxRQUFBUyxVQTRDaUI7QUFBQSxRQUFBQyxPQUFrQjtBQUFBLFFBQUFDLE9BQUE7QUFBQSxPQUN2QyxzQkFBQTNGLE9BQ3dCLFFBQWUsVUFEdkM7QUFBQTtBQUFBO0FBQUEsUUFBQWdGLFNBN0NJO0FBQUEsUUFBQVMsVUFpRGlCO0FBQUEsUUFBQUMsT0FBa0I7QUFBQSxRQUFBQyxPQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixRQUFlLFVBRHZDO0FBQUE7QUFBQTtBQUFBLFFBQUFnRixTQWxESTtBQUFBLFFBQUFTLFVBa0ZpQjtBQUFBLFFBQUFDLE9BQWtCO0FBQUEsUUFBQUMsT0FBQTtBQUFBLE9BQ3ZDLHNCQUFBM0YsT0FDd0IsUUFBZSxVQUR2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsU0FuRkk7QUFBQSxRQUFBTSxNQUFBO0FBQUEsUUFBQUMsTUFBQTtBQUFBLFFBQUFFLFVBdUZpQjtBQUFBLFFBQUFDLE9BQWtCO0FBQUEsUUFBQUMsT0FBQTtBQUFBLFFBQUFOLEtBQzlCLE1BQU07QUFBQSxRQUFBSSxVQUNNO0FBQUEsUUFBQUcsS0FBZ0I7QUFBQSxRQUFBQyxLQUFBO0FBQUEsT0FDckM7QUFBQTtBQUFBLHdCQUFBN0YsT0FDd0IsT0FBc0IsUUFBZTtBQUFBO0FBQUEsd0JBQUFBLE9BRXJDLE9BQXNCLFFBQWUsRUFIN0Q7QUFBQTtBQUFBO0FBQUEsUUFBQWdGLFNBMUZJO0FBQUEsUUFBQVMsV0E0RGlCO0FBQUEsUUFBQUMsT0FBa0I7QUFBQSxRQUFBQyxPQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixRQUFlLFVBRHZDO0FBQUE7QUFBQTtBQUFBLFFBQUFnRixVQTdESTtBQUFBLFFBQUFTLFdBdURpQjtBQUFBLFFBQUFDLFFBQWtCO0FBQUEsUUFBQUMsUUFBQTtBQUFBLE9BQ3ZDLHNCQUFBM0YsT0FDd0IsU0FBZSxXQUR2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsVUF4REk7QUFBQSxRQUFBUyxXQWlFaUI7QUFBQSxRQUFBQyxRQUFrQjtBQUFBLFFBQUFDLFFBQUE7QUFBQSxPQUN2QyxzQkFBQTNGLE9BQ3dCLFNBQWUsV0FEdkM7QUFBQTtBQUFBO0FBQUEsUUFBQWdGLFVBbEVJO0FBQUEsUUFBQVMsV0FzRWlCO0FBQUEsUUFBQUMsUUFBa0I7QUFBQSxRQUFBQyxRQUFBO0FBQUEsT0FDdkMsc0JBQUEzRixPQUN3QixTQUFlLGNBQUFBLE9BRWYsU0FBZSxFQUh2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsVUF2RUk7QUFBQSxRQUFBUyxXQTRFaUI7QUFBQSxRQUFBQyxRQUFrQjtBQUFBLFFBQUFDLFFBQUE7QUFBQSxPQUN2QyxzQkFBQTNGLE9BQ3dCLFNBQWUsY0FBQUEsT0FFZixTQUFlLEVBSHZDO0FBQUE7QUFBQSxHQWdCOEQ7QUFBQTtBQUFBLElBQUE4Riw0QkR0d0JsRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsTUFBQVIsS0FBQUQ7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsV0NreUJpQjtBQUFBO0FBQUE7QUFBQSxtQkFBQVUsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUFBQyxRQUFBLFFBQzJCLCtCQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBQUQsVUFEOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsVUFBQSxRQUVpQyxtQ0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFELFVBRnBEO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQUFDLFVBQUEsUUFJd0IsbUNBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBRCxVQUozQztBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUFBQyxVQUFBLFFBSzhCLG1DQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBQUQsVUFMakQ7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsVUFBQSxRQU8wQyxtQ0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFELFVBUDdEO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQUFDLFVBQUEsUUFNOEIsbUNBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBRCxVQU5qRDtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUFBQyxVQUFBLFFBUThCLG1DQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBQUQsVUFSakQ7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsVUFBQSxRQUcyQixtQ0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFELFVBSDlDLFFBQUFULFFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFBVSxVQUFBO0FBQUEsb0JBQUFYLFFBQUE7QUFBQSx3QkFnQ2lCO0FBQUEsbUJBQWYsa0NBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFDTjtBQUFBO0FBQUEsbUJBQUFVLFVBakNULFFBQUFFLE9BQUEsUUFBQUMsT0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBQUFGLFVBQUE7QUFBQSxvQkFBQUcsT0FBQTtBQUFBLG9CQUFBQyxPQUFBO0FBQUEsb0JBQUFoQixLQXNDSixNQUFNO0FBQUEsb0JBQUFJLFFBQ0k7QUFBQSxvQkFBQWEsS0FBZ0I7QUFBQSxvQkFBQUMsS0FBQTtBQUFBLG1CQUN4QjtBQUFBLG1CQUNBO0FBQUEsbUJBQ2tCLCtDQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFDdEI7QUFBQTtBQUFBLG1CQUFBUCxVQTNDWDtBQUFBO0FBQUEsb0JBQUFDLFVBQUE7QUFBQSxnQkFVOEIsb0NBQW1CO0FBQUE7QUFBQSxlQUM3QztBQUFBO0FBQUEsbUJBQUFELFdBWEo7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsV0FBQTtBQUFBLG1CQWM4QixzQ0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUM3QztBQUFBO0FBQUEsbUJBQUFELFdBZko7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsV0FBQTtBQUFBLG1CQWtCd0Isc0NBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQ3pDO0FBQUE7QUFBQSxtQkFBQUQsV0FuQkY7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQUMsV0FBQTtBQUFBLG1CQXNCaUMsc0NBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUMvQztBQUFBO0FBQUEsbUJBQUFELFdBdkJMO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQUFDLFdBQUE7QUFBQSxtQkEyQkssc0NBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFDWDtBQUFBO0FBQUEsWUFvQlA7QUFBQTtBQUFBLFdBaEROLDRCQThDaUI7QUFBQSxXQTlDakI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0ErQ007QUFBQTtBQUFBO0FBQUEsVUFISztBQUFBO0FBQUEsU0FWRjtBQUFBO0FBQUEsUUFMSTtBQUFBO0FBQUEsT0FMUjtBQUFBO0FBQUEsTUFKSDtBQUFBO0FBQUEsS0FKRTtBQUFBO0FBQUEsSUFKQTtBQUFBLEdBb0NjO0FBQUEsWUFBQU8sYUFBQXJGO0FBQUFBLFFBQUFBLFFBWXRCO0FBQUE7QUFBQSxtQ0FxRHFCO0FBQUEsS0FyRHJCO0FBQUE7QUFBQTtBQUFBLFNBQUE2RCxTQUFBO0FBQUEsU0FBQXJCLE9BQUE7QUFBQSxTQUFBSCxRQUFBO0FBQUEsU0FBQWlELFVBT0s7QUFBQSxTQUFBQyxVQUNBO0FBQUEsUUFDZCw2Q0E0QzBDO0FBQUE7QUFBQTtBQUFBLFNBQUExQixTQXJEakM7QUFBQSxTQUFBckIsU0FBQTtBQUFBLFNBQUFILFFBQUE7QUFBQSxTQUFBaUQsWUFXSztBQUFBLFNBQUFDLFlBQ0E7QUFBQSxRQUNkLCtDQXdDMEM7QUFBQTtBQUFBO0FBQUEsU0FBQTFCLFNBckRqQztBQUFBLFNBQUFyQixTQUFBO0FBQUEsU0FBQUgsUUFBQTtBQUFBLFNBQUFpRCxZQWVLO0FBQUEsU0FBQUMsWUFDQTtBQUFBLFFBQ2QsK0NBb0MwQztBQUFBO0FBQUE7QUFBQSxTQUFBMUIsU0FyRGpDO0FBQUEsU0FBQXJCLFNBQUE7QUFBQSxTQUFBSCxRQUFBO0FBQUEsU0FBQWlELFlBbUJLO0FBQUEsU0FBQUMsWUFDQTtBQUFBLFFBQ2QsK0NBZ0MwQztBQUFBO0FBQUE7QUFBQSxTQUFBMUIsU0FyRGpDO0FBQUEsU0FBQXJCLFNBQUE7QUFBQSxTQUFBSCxRQUFBO0FBQUEsU0FBQWlELFlBdUJLO0FBQUEsU0FBQUMsWUFDQTtBQUFBLFFBQ2QsK0NBNEIwQztBQUFBO0FBQUEsWUFBQTFCLFNBckRqQyxVQUFBeEIsUUFBQTtBQUFBLFFBOEI2QixPQUFtQixrQ0FBbkIsc0JBdUJJO0FBQUE7QUFBQSxZQUFBckMsVUFyRGpDLFVBeUNxQjtBQUFBO0FBQUEsWUFBQTZELFNBekNyQixVQUFBSyxLQUFBO0FBQUEsUUFxQ1Usb0NBQWlCO0FBQUE7QUFBQSxZQUFBTCxTQXJDM0IsVUFBQUssT0FBQTtBQUFBLFFBdUNnQiw0Q0FBaUI7QUFBQTtBQUFBLFlBQUFMLFNBdkNqQyxVQStCOEIsaUNBQW1CO0FBQUE7QUFBQSxZQUFBQSxVQS9CakQsVUFnQzhCLGtDQUFtQjtBQUFBO0FBQUE7QUFBQSxTQUFBQSxVQWhDakQ7QUFBQSxTQUFBMkIsaUJBQUE7QUFBQSxhQW1EeUM7QUFBQSxRQTFEaEM7QUFBQSxhQUFBNUYsTUFBQSwwQkFDWTtBQUFBO0FBQUEsYUFBQUEsUUFEWiwwQkFFWTtBQUFBLFFBd0RtQixtREFFUDtBQUFBO0FBQUEsWUFBQWlFLFVBckRqQyxVQWtDK0Isa0NBQW1CO0FBQUE7QUFBQSxZQUFBQSxVQWxDbEQsVUE2QytCLGlDQUFtQjtBQUFBO0FBQUEsWUFBQUEsVUE3Q2xELFVBOEM0QixpQ0FBbUI7QUFBQTtBQUFBLFlBQUE3RCxVQTlDL0MsVUFBQUwsTUFBQTtBQUFBLFFBb0VFO0FBQUEsdUJBYTBDLGtDQUFrQjtBQUFBLFNBYjVEO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQUssVUFBQSxZQVkyQztBQUFBLFVBQWtCLHlEQTNCOUI7QUFBQTtBQUFBLFNBZS9CO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQTZELFVBcEVGLFVBQUFHLFFBQUE7QUFBQSxRQWlDMkMsT0FBbUIsdUJBQW5CLHNCQW9CVjtBQUFBO0FBQUE7QUFBQSxZQUFBSCxTQXJEakMsVUFBQXhCLE1BQUE7QUFBQSxxRUFxRGlDO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXdCLE9BckRqQztBQUFBLG9CQUFBN0QsVUFBQTtBQUFBO0FBQUE7QUFBQSxHQXFEaUM7QUFBQSxZQUFBeUYsZ0JBQUF6QixPQUFBaEU7QUFBQUEsSUFLM0IsWUFDQTtBQUFBLFFBQUFnRSxVQURBO0FBQUEsSUFFYSw0Q0FBNkI7QUFBQTtBQUFBLFlBQUEwQix1QkFBQXJELEtBQUFyQztBQUFBQSxJQTZCMUMsMEVBR2dCO0FBQUE7QUFBQSxZQUFBMkYseUJBQUFuRCxNQUFBeEM7QUFBQUEsSUFLZixtRUFHaUI7QUFBQTtBQUFBO0FBQUEsSUFBQTRGO0FBQUFBLE1EbDhCckM7QUFBQSxZQUFBQyxhQUFBeEQsS0FBQXJDO0FBQUFBLElDZzlCaUIsNEJBQ0k7QUFBQSxJQURKO0FBQUEsU0FBQThGLElBQUEsUUFBQTlELFFBQUE7QUFBQSxLQUVnQjtBQUFBO0FBQUEsSUFGaEI7QUFBQSxTQUFBNkIsT0FBQSxVQUFBN0IsVUFBQTtBQUFBLEtBR3FCO0FBQUE7QUFBQSxJQUM3QjtBQUFBLEdBQW1CO0FBQUEsWUFBQStELGFBQUExRCxLQUFBRyxNQUFBeEM7QUFBQUEsUUFBQXNFLFFBUU07QUFBQSxJQUFzQjtBQUFBLFNBQUFULFNBQUEsVUFBQXhCLFFBQUEsVUFBQTJELElBQUE7QUFBQSxLQUlwRDtBQUFBO0FBQUEsSUFKb0Q7QUFBQSxTQUFBbkMsU0FBQSxVQUFBeEIsUUFBQTtBQUFBLEtBRXBEO0FBQUE7QUFBQSxRQUFBaUMsVUFGb0Q7QUFBQTtBQUFBLFNBQUFULE9BQUEsWUFBQXhCLFFBQUE7QUFBQSxLQU1wRDtBQUFBO0FBQUEsSUFDK0I7QUFBQSxHQUFtQjtBQUFBLFlBQUE0RCxZQUFBckcsS0FBQUk7QUFBQUEsUUFBQSxJQVk3QjtBQUFBLElBQXlCO0FBQUEsS0FFekM7QUFBQSxRQUFBSixRQUZ5QztBQUFBLElBQ1I7QUFBQSxHQUNkO0FBQUEsWUFBQXNHLGdCQUFBdEcsS0FBQXVHO0FBQUFBLElBUVQsNEJBbUhjO0FBQUEsSUFuSGQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFBQyxhQUFBO0FBQUEsU0FBQUMsV0FBQTtBQUFBLFNBQUEvQixRQUVvQjtBQUFBLFNBQUF0RSxRQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BSGU7QUFBQTtBQUFBLFNBQUF3RyxlQUFBO0FBQUEsU0FBQUMsYUFBQTtBQUFBLFNBQUEvQixVQUtvQjtBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBTmU7QUFBQSxRQUFBaEUsTUFBQTtBQUFBLFFBQUFpQyxVQVFUO0FBQUEsUUFBQWpDLFFBQXNCO0FBQUEsUUFBQWlDLFVBQUE7QUFBQTtBQUFBO0FBQUEsU0FBQThCLGVBQUE7QUFBQSxTQUFBOUIsVUFFUztBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUEsT0FDNEI7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBWmY7QUFBQSxRQUFBaEUsUUFBQTtBQUFBLFFBQUFpQyxVQWVUO0FBQUEsUUFBQWpDLFFBQXNCO0FBQUEsUUFBQWlDLFVBQUE7QUFBQTtBQUFBO0FBQUEsU0FBQThCLGVBQUE7QUFBQSxTQUFBOUIsVUFFUztBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUEsT0FDNEI7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBbkJmO0FBQUEsUUFBQTdELE9BQUE7QUFBQSxRQUFBSCxRQUFBO0FBQUEsUUFBQXhDLFFBQUE7QUFBQSxRQUFBeUUsVUFzQlQ7QUFBQSxRQUFBakMsUUFBMkI7QUFBQSxRQUFBaUMsVUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFBOEIsZUFBQTtBQUFBLFNBQUE1RCxTQUFBO0FBQUEsU0FBQThCLFVBRUk7QUFBQSxTQUFBdEUsVUFBbUM7QUFBQSxTQUFBSixRQUFBO0FBQUEsUUFDdEU7QUFBQTtBQUFBLE9BQytCO0FBQUE7QUFBQTtBQUFBLFFBQUF5RyxhQTFCbEI7QUFBQSxRQUFBN0QsU0FBQTtBQUFBLFFBQUFILFFBQUE7QUFBQSxRQUFBeEMsVUFBQTtBQUFBLFFBQUF5RSxXQTZCVDtBQUFBLFFBQUFqQyxRQUEyQjtBQUFBLFFBQUFpQyxXQUFBO0FBQUE7QUFBQTtBQUFBLFNBQUE4QixlQUFBO0FBQUEsU0FBQTVELFNBQUE7QUFBQSxTQUFBOEIsV0FFSTtBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUEsT0FDK0I7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBakNsQjtBQUFBLFFBQUE3RCxTQUFBO0FBQUEsUUFBQUgsUUFBQTtBQUFBLFFBQUF4QyxVQUFBO0FBQUEsUUFBQXlFLFdBb0NUO0FBQUEsUUFBQWpDLFFBQTJCO0FBQUEsUUFBQWlDLFdBQUE7QUFBQTtBQUFBO0FBQUEsU0FBQThCLGVBQUE7QUFBQSxTQUFBNUQsU0FBQTtBQUFBLFNBQUE4QixXQUVJO0FBQUEsU0FBQXRFLFVBQW1DO0FBQUEsU0FBQUosUUFBQTtBQUFBLFFBQ3RFO0FBQUE7QUFBQSxPQUMrQjtBQUFBO0FBQUE7QUFBQSxRQUFBeUcsYUF4Q2xCO0FBQUEsUUFBQTdELFNBQUE7QUFBQSxRQUFBSCxRQUFBO0FBQUEsUUFBQXhDLFVBQUE7QUFBQSxRQUFBeUUsV0EyQ1Q7QUFBQSxRQUFBakMsU0FBMkI7QUFBQSxRQUFBaUMsV0FBQTtBQUFBO0FBQUE7QUFBQSxTQUFBOEIsZUFBQTtBQUFBLFNBQUE1RCxTQUFBO0FBQUEsU0FBQThCLFdBRUk7QUFBQSxTQUFBdEUsVUFBbUM7QUFBQSxTQUFBSixRQUFBO0FBQUEsUUFDdEU7QUFBQTtBQUFBLE9BQytCO0FBQUE7QUFBQTtBQUFBLFFBQUF5RyxhQS9DbEI7QUFBQSxRQUFBN0QsU0FBQTtBQUFBLFFBQUFILFNBQUE7QUFBQSxRQUFBakMsUUFBQTtBQUFBLFFBQUFrRSxXQWtEVDtBQUFBLFFBQUFqQyxTQUEyQjtBQUFBLFFBQUFpQyxXQUFBO0FBQUE7QUFBQTtBQUFBLFNBQUE4QixlQUFBO0FBQUEsU0FBQTVELFNBQUE7QUFBQSxTQUFBOEIsV0FFSTtBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUEsT0FDK0I7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBdERsQjtBQUFBLFFBQUFoRSxTQUFBO0FBQUEsUUFBQWlDLFdBeURUO0FBQUEsUUFBQWpDLFNBQXNCO0FBQUEsUUFBQWlDLFdBQUE7QUFBQTtBQUFBO0FBQUEsU0FBQThCLGVBQUE7QUFBQSxTQUFBOUIsV0FFUztBQUFBLFNBQUF0RSxVQUFtQztBQUFBLFNBQUFKLFFBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUEsT0FDNEI7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGFBN0RmO0FBQUEsUUFBQS9CLFdBZ0VvQjtBQUFBLFFBQUF0RSxVQUFtQztBQUFBLFFBQUFKLFNBQUE7QUFBQSxPQUN0RTtBQUFBO0FBQUE7QUFBQSxRQUFBeUcsY0FqRWU7QUFBQSxRQUFBdkQsTUFBQTtBQUFBLFFBQUF3QixXQW9Fb0I7QUFBQSxRQUFBdEUsV0FBbUM7QUFBQSxRQUFBSixTQUFBO0FBQUEsT0FDdEU7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGNBckVlO0FBQUEsUUFBQXJELE1BQUE7QUFBQSxRQUFBc0IsV0F1RW9CO0FBQUEsUUFBQXRFLFdBQW1DO0FBQUEsUUFBQUosU0FBQTtBQUFBLE9BQ3RFO0FBQUE7QUFBQSxPQXhFZTtBQUFBO0FBQUEsU0FBQXdHLGVBQUE7QUFBQSxTQUFBN0MsWUFBQTtBQUFBLFNBQUE4QyxjQUFBO0FBQUEsU0FBQTlDLGNBQUE7QUFBQSxTQUFBL0QsVUFBQTtBQUFBLFFBNEVaO0FBQUEsU0FBaUQ7QUFBQTtBQUFBLFNBQUE4RSxXQUNqQjtBQUFBLFNBQUF0RSxXQUFtQztBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BOUVlO0FBQUE7QUFBQSxTQUFBd0csZ0JBQUE7QUFBQSxTQUFBRSxhQUFBO0FBQUEsU0FBQUQsY0FBQTtBQUFBLFNBQUE5QyxjQUFBO0FBQUEsU0FBQS9ELFlBQUE7QUFBQSxhQWlGaUM7QUFBQSxRQUFuQztBQUFBLFVBQVY7QUFBQSxnQkFBVTtBQUFBLFNBQ1g7QUFBQTtBQUFBLFNBQUE4RTtBQUFBQSxXQUVBO0FBQUE7QUFBQSxhQUF5QjtBQUFBLFNBQUF0RSxXQUFzQjtBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUVqRDtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BdEZlO0FBQUE7QUFBQSxTQUFBd0csZ0JBQUE7QUFBQSxTQUFBQyxjQUFBO0FBQUEsU0FBQS9CLFdBeUZvQjtBQUFBLFNBQUF0RSxXQUFtQztBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BMUZlO0FBQUE7QUFBQSxTQUFBd0csZ0JBQUE7QUFBQSxTQUFBQyxjQUFBO0FBQUEsU0FBQS9CLFdBNEZvQjtBQUFBLFNBQUF0RSxXQUFtQztBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFBQXlHLGNBN0ZlO0FBQUEsUUFBQXhELGlCQUFBO0FBQUEsUUFBQXlCLFdBaUdvQjtBQUFBLFFBQUF0RSxXQUFtQztBQUFBLFFBQUFKLFNBQUE7QUFBQSxPQUN0RTtBQUFBO0FBQUEsV0FBQXlHLGNBbEdlLFFBQUFiLGlCQUFBO0FBQUEsT0E0SGU7QUFBQTtBQUFBLFNBQUFsQixXQUFBO0FBQUEsU0FBQXhCLFFBQUE7QUFBQSxTQUFBeUQsT0FBQTtBQUFBLFNBQUFqQyxXQUVLO0FBQUEsU0FBQWtDLFNBQTJCO0FBQUEsU0FBQUMsT0FBQTtBQUFBLFNBQUFuQyxXQUMzQjtBQUFBLFNBQUFvQyxTQUEyQjtBQUFBLFNBQUFDLE9BQUE7QUFBQSxRQUM5RDtBQUFBO0FBQUE7QUFBQSxRQUFBckMsV0FKOEI7QUFBQSxRQUFBeEIsUUFBQTtBQUFBLFFBQUF5RCxTQUFBO0FBQUEsUUFBQWpDLFdBTUs7QUFBQSxRQUFBa0MsV0FBMkI7QUFBQSxRQUFBQyxTQUFBO0FBQUEsUUFBQW5DLFdBQzNCO0FBQUEsUUFBQW9DLFdBQTJCO0FBQUEsUUFBQUMsU0FBQTtBQUFBLE9BQzlEO0FBQUE7QUFBQSxPQXBJZTtBQUFBO0FBQUEsU0FBQVAsZ0JBQUE7QUFBQSxTQUFBQyxjQUFBO0FBQUEsU0FBQS9CLFdBd0dvQjtBQUFBLFNBQUF0RSxXQUFtQztBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BekdlO0FBQUE7QUFBQSxTQUFBd0csZ0JBQUE7QUFBQSxTQUFBQyxjQUFBO0FBQUEsU0FBQXRILFdBQUE7QUFBQSxTQUFBa0IsWUFBQTtBQUFBLFNBQUFxRSxXQTJHb0I7QUFBQSxTQUFBdEUsV0FBbUM7QUFBQSxTQUFBSixTQUFBO0FBQUEsUUFDdEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQTVHZTtBQUFBO0FBQUEsU0FBQXdHLGdCQUFBO0FBQUEsU0FBQUMsY0FBQTtBQUFBLFNBQUFuRyxVQUFBO0FBQUEsU0FBQW9FLFdBOEdvQjtBQUFBLFNBQUF0RSxXQUFtQztBQUFBLFNBQUFKLFNBQUE7QUFBQSxRQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUFpRSxPQS9HZSxRQUFBbEUsTUFBQTtBQUFBLE9BNElFO0FBQUE7QUFBQTtBQUFBLGVBQUE0RCxjQUFBLFFBQUEvRCxZQUFBO0FBQUEsV0FlakI7QUFBQSw4REF0Q3dCO0FBQUE7QUFBQTtBQUFBLFlBQUErRCxjQXVCUDtBQUFBLFlBQUEvRCxZQUFBO0FBQUEsZ0JBa0JmO0FBQUEsWUFBQThFLFdBQW9EO0FBQUEsWUFBQXRFLFdBQUE7QUFBQSxZQUFBSixTQUFBO0FBQUEsWUFBQTJELGNBQUE7QUFBQSxXQUN0RDtBQUFBLG1CQW5CaUIsZ0RBdkJPO0FBQUE7QUFBQSxPQXVCUCw4REF2Qk87QUFBQSxPQTZDTjtBQUFBO0FBQUEsU0FBQTZDLGdCQUFBO0FBQUEsU0FBQTlCLFdBR21CO0FBQUEsU0FBQXRFLFdBQThCO0FBQUEsU0FBQUosU0FBQTtBQUFBLFFBQ2pFO0FBQUE7QUFBQSxPQUNLO0FBQUE7QUFBQSxJQWxERjtBQUFBLEdBQW1CO0FBQUEsWUFBQWdILHVCQUFBakgsS0FBQUMsS0FBQUk7QUFBQUE7QUFBQUEsS0FBQXNFLFFBMkRTO0FBQUEsS0FBQXRFLFVBQXlCO0FBQUEsS0FBQUosUUFBQTtBQUFBLElBQzVEO0FBQUEsR0FBaUQ7QUFBQSxZQUFBaUgsK0JBQUF0RCxXQUFBM0QsS0FBQUk7QUFBQUEsSUFPeEI7QUFBQSxLQTBFTSwwQ0FBeUI7QUFBQSxJQTFFL0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFBb0csYUFBQTtBQUFBLFNBQUFVLGlCQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBR3JCO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG1CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUp1QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG1CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBT3JCO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG1CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQVJ1QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG1CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBV3JCO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG1CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQVp1QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG1CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBZXJCO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG1CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQWhCdUI7QUFBQTtBQUFBLFNBQUFWLGVBQUE7QUFBQSxTQUFBVSxtQkFBQTtBQUFBLFNBQUF4QztBQUFBQSxXQW1CckI7QUFBQSxTQUFBMUUsUUFBOEQ7QUFBQSxTQUFBa0gsbUJBQUE7QUFBQSxRQUNoRTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BcEJ1QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG1CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBdUJyQjtBQUFBLFNBQUExRSxRQUE4RDtBQUFBLFNBQUFrSCxvQkFBQTtBQUFBLFFBQ2hFO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0F4QnVCO0FBQUE7QUFBQSxTQUFBVixlQUFBO0FBQUEsU0FBQVUsb0JBQUE7QUFBQSxTQUFBeEM7QUFBQUEsV0EyQnJCO0FBQUE7QUFBQSxTQUFBMUUsUUFBOEQ7QUFBQSxTQUFBa0gsb0JBQUE7QUFBQSxRQUNoRTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BNUJ1QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG9CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBK0JyQjtBQUFBO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG9CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQWhDdUI7QUFBQTtBQUFBLFNBQUFWLGVBQUE7QUFBQSxTQUFBVyxhQUFBO0FBQUEsU0FBQUQsb0JBQUE7QUFBQSxTQUFBQyxlQUFBO0FBQUEsUUFvRHBCO0FBQUEsU0FBbUQ7QUFBQTtBQUFBLFNBQUF6QztBQUFBQSxXQUVwRDtBQUFBO0FBQUEsU0FBQTFFLFFBQThEO0FBQUEsU0FBQWtILG9CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQXZEdUI7QUFBQTtBQUFBLFNBQUFWLGVBQUE7QUFBQSxTQUFBVyxlQUFBO0FBQUEsU0FBQUMsYUFBQTtBQUFBLFNBQUFGLG9CQUFBO0FBQUEsU0FBQUMsZUFBQTtBQUFBLFNBQUFDLGVBQUE7QUFBQSxhQTJEMEI7QUFBQSxRQUFwQztBQUFBLFVBQVY7QUFBQSxnQkFBVTtBQUFBLFNBQ1I7QUFBQSxnQkFDNEM7QUFBQSxRQUFwQztBQUFBLFVBQVY7QUFBQSxnQkFBVTtBQUFBLFNBQ1I7QUFBQTtBQUFBLFNBQUF6RCxjQUNZLE1BQU07QUFBQSxTQUFBZSxVQUNKO0FBQUEsU0FBQWEsS0FBd0I7QUFBQSxTQUFBQyxLQUFBO0FBQUEsUUFDaEM7QUFBQSxRQUNBO0FBQUE7QUFBQSxTQUFBZDtBQUFBQSxXQUVUO0FBQUEsYUFBaUM7QUFBQTtBQUFBO0FBQUEsU0FBQTFFLFFBQXlDO0FBQUEsU0FBQWtILG9CQUFBO0FBQUEsUUFHNUM7QUFBQTtBQUFBLHNCQUFvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BdkU3QjtBQUFBO0FBQUEsU0FBQVYsZUFBQTtBQUFBLFNBQUFVLG9CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBbUNyQjtBQUFBO0FBQUEsU0FBQTFFLFNBQThEO0FBQUEsU0FBQWtILG9CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQXBDdUI7QUFBQTtBQUFBLFNBQUFWLGdCQUFBO0FBQUEsU0FBQVUsb0JBQUE7QUFBQSxTQUFBeEM7QUFBQUEsV0F1Q3JCO0FBQUE7QUFBQSxTQUFBMUUsU0FBOEQ7QUFBQSxTQUFBa0gsb0JBQUE7QUFBQSxRQUNoRTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BeEN1QjtBQUFBO0FBQUEsU0FBQVYsZ0JBQUE7QUFBQSxTQUFBVSxvQkFBQTtBQUFBLFNBQUF4QztBQUFBQSxXQTJDckI7QUFBQTtBQUFBLFNBQUExRSxTQUE4RDtBQUFBLFNBQUFrSCxvQkFBQTtBQUFBLFFBQ2hFO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0E1Q3VCO0FBQUE7QUFBQSxTQUFBVixnQkFBQTtBQUFBLFNBQUFVLG9CQUFBO0FBQUEsU0FBQXhDO0FBQUFBLFdBK0NyQjtBQUFBO0FBQUEsU0FBQTFFLFNBQThEO0FBQUEsU0FBQWtILG9CQUFBO0FBQUEsUUFDaEU7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQTJCSztBQUFBLEdBQW1CO0FBQUEsWUFBQUcsT0FBQXJILEtBQUFJO0FBQUFBLFFBQUEsSUFtQ0M7QUFBQSxJQUFYLE9BQXdCLGlCQUF4QiwwQ0FBd0I7QUFBQTtBQUFBLFlBQUFrSCxZQUFBbEYsT0FBQXZDLE9BQUFxRDtBQUFBQTtBQUFBQSxLQUFBcEMsTUFPeEM7QUFBQSxLQUFBc0IsVUFDQTtBQUFBLEtBQUF2QyxVQUNFO0FBQUEsSUFXRixtQkFBcUI7QUFBQTtBQUFBLFNBQ25CO0FBQUEsS0FBQTBILE1BQVU7QUFBQSxJQUNWO0FBQUE7QUFBQSxPQUNXO0FBQUE7QUFBQSxPQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUNjO0FBQUE7QUFBQSxvQkFBaUIsa0NBQWlCO0FBQUE7QUFBQSxRQUN6RCx1QkFBZ0I7QUFBQSxRQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNEJBQ3NCO0FBQUEsUUFBa0IsNkNBQWlCO0FBQUE7QUFBQSxRQUN6RCx1QkFBZ0I7QUFBQSxRQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BRUE7QUFBQTtBQUFBLElBRUYsdUNBQTBCO0FBQUE7QUFBQSxZQUFBQyxrQkFBQTVFLE1BQUFNO0FBQUFBO0FBQUFBLEtBQUFOLFNBSWpCO0FBQUEsS0FBQTlCLE1BQ1g7QUFBQSxLQUFBMUIsSUFDTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FNRjtBQUFBO0FBQUEsV0FBOEI7QUFBQSx1REFBaUI7QUFBQTtBQUFBLGVBQUFtSSxRQUM5QztBQUFBLFdBQ1YseUJBQWdCO0FBQUEsV0FDaEI7QUFBQTtBQUFBLFdBQWdELHlDQU83QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BZnlCO0FBQUEsV0FBQUEsUUFDbEI7QUFBQSxPQUNWO0FBQUEsT0FDQTtBQUFBO0FBQUEsT0FBZ0QseUNBWTdDO0FBQUE7QUFBQSxNQWhCUTtBQUFBO0FBQUEsS0FXK0I7QUFBQSxVQUFBQSxNQUNoQztBQUFBLE1BQ1Y7QUFBQSxNQUFzQyx1Q0FHbkM7QUFBQTtBQUFBO0FBQUEsSUFBSDtBQUFBLEdBQUc7QUFBQSxZQUFBRSxzQkFBQXZFO0FBQUFBO0FBQUFBLEtBQUFBLFFBSUs7QUFBQSxLQUFBd0UsSUFDVjtBQUFBLEtBQUFILE1BQ1U7QUFBQSxJQUNWO0FBQUEsSUFBZ0MsdUNBQ047QUFBQTtBQUFBLFdELzFDNUI7QUFBQSxZQUFBSSxnQkFBQW5ILE9BQUFvQztBQUFBQTtBQUFBQSxLQUFBQSxTQ3E0Q2U7QUFBQSxLQUFBZ0YsT0FDQTtBQUFBLEtBQUFoSCxNQUNEO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQSx1QkFBc0I7QUFBQSxJQUN0QjtBQUFBLElBQXdCLDJCQUNMO0FBQUE7QUFBQSxZQUFBaUgsa0JBQUE1SCxPQUFBbUI7QUFBQUEsSUFHckIsZUFzQk87QUFBQSxZQWxCSCxzQ0FGRjtBQUFBLElBRUU7QUFBQSxTQUFBc0IsTUFBQTtBQUFBO0FBQUEsU0FBQUEsSUFBQSxHQUFBakQsTUFBQTtBQUFBO0FBQUEsTUFDRTtBQUFBLFdBQUFpRCxNQUFBO0FBQUE7QUFBQSxXQUFBQSxNQUNjLFdBQUFBLE1BQUE7QUFBQSxjQURkO0FBQUEsd0JBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQTlCO0FBQUFBLE9BTU07QUFBQSxTQUFWO0FBQUEsS0FBQWtILE1BQ0E7QUFBQSxhQUFBQyxJQUFBM0ksR0FDWSxnQ0FBb0IsU0FBVTtBQUFBO0FBQUEsU0FFMUM7QUFBQTtBQUFBO0FBQUEsU0FBQTRJLE9BQUEsR0FBQXZJLElBQUE7QUFBQTtBQUFBLFVBQUFMLElBQ0U7QUFBQTtBQUFBLE9BR087QUFBQSxXQUFBNEksU0FBSztBQUFBO0FBQUE7QUFBQSxXQUFBQSxTQURSLGNBQW1CLG9CQUFBQSxTQUFxQjtBQUFBLE9BQVc7QUFBQSxXQUFBQSxTQUFLO0FBQUE7QUFBQSxjQUY1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUtGLHVDQUNNO0FBQUE7QUFBQSxPQUFBQyxRRHQ2Q1Y7QUFBQSxZQUFBQyxZQUFBakksT0FBQXlDO0FBQUFBLElDbTJDc0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBdUVJLE9BQXNDLHlCQUF0QyxzQkFBc0M7QUFBQTtBQUFBLFlBQUF5RixjQUFBbEksT0FBQXlDO0FBQUFBLElBdkR6QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUF5REcsT0FBeUMseUJBQXpDLHNCQUF5QztBQUFBO0FBQUEsWUFBQTBGLGtCQUFBbkksT0FBQXlDO0FBQUFBLElBakQ1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFtREcsT0FBNkMseUJBQTdDLHNCQUE2QztBQUFBO0FBQUEsWUFBQTJGLGNBQUFwSSxPQUFBeUM7QUFBQUEsSUFuRWhEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQXFFRyxPQUF5Qyx5QkFBekMsZ0NBQXlDO0FBQUE7QUFBQSxZQUFBNEYsY0FBQTlILE9BQUFvQyxNQUFBaUI7QUFBQUEsYUFBQTBFLElBQUF0SjtBQUFBQSxLQU0vRDtBQUFBO0FBQUEsWUFBQXVKLE9BSVM7QUFBQTtBQUFBLFlBQUFBLE9BRlc7QUFBQSxvQkFBQUEsT0FDQTtBQUFBO0FBQUEsS0FFcEIscURBQThCO0FBQUE7QUFBQSxhQUFBQyxpQkFBQXZGO0FBQUFBLFNBQUF3QixRQVNDO0FBQUEsS0FBZ0I7QUFBQTtBQUFBLHVDQUc5QjtBQUFBO0FBQUEsSUFDbkI7QUFBQTtBQUFBO0FBQUEsUUFBQXhCLE1BS1ksa0JBQWE7QUFBQSxRQUFBcEMsTUFoQnZCO0FBQUEsUUFBQXJCLElBTUc7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUpEO0FBQUEsa0JBQ1E7QUFBQTtBQUFBO0FBQUEsV0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUNRO0FBQUE7QUFBQTtBQUFBLGNBQUFBLE1BQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFITztBQUFBO0FBQUEsZ0JBSUwsVUFBZTtBQUFBLFFBV1ksMEJBRUc7QUFBQTtBQUFBO0FBQUEsT0FQaEMsYUFPZ0M7QUFBQTtBQUFBLGVBTlQsUUFBUSxzQ0FNQztBQUFBO0FBQUEsT0FMZCxPQUFRLGlCQUFSLE9BS2M7QUFBQSxlQUE5QixPQUFiLGtCQUFhLGdDQUE4QjtBQUFBO0FBQUE7QUFBQSxZQUFBaUosZ0JBQUF0STtBQUFBQSxRQUFBUSxNQVluQztBQUFBLElBQ1Y7QUFBQSxJQUFzQiwyQkFDSDtBQUFBO0FBQUEsV0Q5OUNyQjtBQUFBLFlBQUErSCxjQUFBckksU0FBQXNJLEtBQUFDLE9BQUE3STtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxrQkFBQTRJLElDNitDaUIsS0FBQUMsTUFBQSxPQUFBN0ksTUFBQTtBQUFBO0FBQUE7QUFBQSwyQ0F1RmIseUJBQUs7QUFBQSxlQXZGUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQUFpRSxTQUFBLFFBQUF4QixRQUFBO0FBQUEsa0JBWWI7QUFBQSx3RUEyRUs7QUFBQTtBQUFBO0FBQUEsbUJBQUF3QixTQXZGUTtBQUFBLG1CQUFBckIsT0FBQTtBQUFBLG1CQUFBSCxRQUFBO0FBQUEsbUJBQUF4QyxRQUFBO0FBQUEsa0JBY2I7QUFBQSwyRUF5RUs7QUFBQTtBQUFBO0FBQUEsbUJBQUFnRSxTQXZGUTtBQUFBLG1CQUFBckIsU0FBQTtBQUFBLG1CQUFBSCxRQUFBO0FBQUEsbUJBQUF4QyxVQUFBO0FBQUEsa0JBZ0JiO0FBQUEsaUZBdUVLO0FBQUE7QUFBQTtBQUFBLG1CQUFBZ0UsU0F2RlE7QUFBQSxtQkFBQXJCLFNBQUE7QUFBQSxtQkFBQUgsUUFBQTtBQUFBLG1CQUFBeEMsVUFBQTtBQUFBLGtCQWtCYjtBQUFBLHFGQXFFSztBQUFBO0FBQUE7QUFBQSxtQkFBQWdFLFNBdkZRO0FBQUEsbUJBQUFyQixTQUFBO0FBQUEsbUJBQUFILFFBQUE7QUFBQSxtQkFBQXhDLFVBQUE7QUFBQSxrQkFvQmI7QUFBQSxpRkFtRUs7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFBQWdFLFNBdkZRLFFBQUF4QixRQUFBO0FBQUEsa0JBd0JiLHNEQStESztBQUFBO0FBQUEsc0JBQUF3QixTQXZGUSxRQUFBNEUsUUEwQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUFBNUUsVUExQ2EsUUFBQWYsTUFBQSxRQUFBMkYsUUE2Q2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUFBNUUsVUE3Q2EsUUFBQWIsTUFBQSxRQUFBeUYsUUErQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBNUUsVUEvQ2E7QUFBQSxtQkFBQUMsYUFBQTtBQUFBLG1CQUFBMkUsUUE0RWI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDBCQTVFYTtBQUFBO0FBQUEsdUJBQUE1RSxVQUFBLFFBQUFqRSxRQUFBO0FBQUEsdUJBQUE2SSxRQThFYixLQUFBRCxNQUFBLEdBQUEzRSxPQUFBO0FBQUE7QUFBQSxvQkFBQTJFO0FBQUFBLHNCQUFBLFNBQUFFO0FBQUFBLHVCQUNFLG9EQUFnRTtBQUFBO0FBQUEsbUJBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQTdFLFVBaEZhLFFBQUFqRSxRQUFBO0FBQUEsdUJBQUE2SSxRQWtGYixLQUFBRCxNQUFBLEdBQUEzRSxPQUFBO0FBQUE7QUFBQSxvQkFBQTJFO0FBQUFBLHNCQUFBLFNBQUFFO0FBQUFBLHVCQUNFLG9EQUFnRTtBQUFBO0FBQUEsbUJBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGtCQTVDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQUE3RSxVQXhDYSxRQUFBbEUsTUFBQTtBQUFBLGtCQXlFYjtBQUFBO0FBQUE7QUFBQTtBQUFBLDZFQWNLO0FBQUE7QUFBQTtBQUFBLG1CQUFBa0UsVUF2RlE7QUFBQSxtQkFBQXRHLElBQUE7QUFBQSxtQkFBQXlHLFFBQUE7QUFBQSx1QkE4QmdCO0FBQUEsa0JBQU07QUFBQTtBQUFBO0FBQUEsMkVBeUQ5QjtBQUFBO0FBQUE7QUFBQSxrQkFBQUgsVUF2RlE7QUFBQSxjQXFFYixnQkFBQTdFO0FBQUFBLG1CQUFBMkosVUFDRTtBQUFBLGVBQ0EsdUNBQTBCLEVBRjVCO0FBQUE7QUFBQSxpQkFBQTlFLFVBckVhO0FBQUEsYUFpRWIsZ0JBQUF2QjtBQUFBQSxrQkFBQXFHLFVBQ3NDO0FBQUEsY0FDcEMsdUNBQTBCLEVBRjVCO0FBQUE7QUFBQTtBQUFBLGFBQUE5RSxVQWpFYTtBQUFBLGFBQUE4RSxVQTJEYjtBQUFBLFlBQ0EsZ0JBQUE5SixPQUFTLHVDQUEwQixFQUFuQztBQUFBO0FBQUEsZUFBQWdGLFVBNURhO0FBQUEsV0E0QmIsZ0JBQUF0RyxHQUFTLDJDQUF1QyxFQUFoRDtBQUFBO0FBQUEsY0FBQXNHLFVBNUJhO0FBQUEsVUEwQmIsZ0JBQUF0RyxHQUFBa0c7QUFBQUEsV0FBVztBQUFBO0FBQUEsc0NBQUFtRixHQUF3QywwQkFBSztBQUFBLDRCQUFPLEVBQS9EO0FBQUE7QUFBQSxhQUFBL0UsVUExQmEsUUFBQTdELFFBQUE7QUFBQSxTQXVEYixnQkFBQW5CO0FBQUFBLGNBQUFlLE1BQUEsY0FDYztBQUFBLFVBQVosT0FBb0M7QUFBQSwyQkFBcEMsbURBQW9DLEVBRHRDO0FBQUE7QUFBQTtBQUFBLFNBQUFpRSxVQXZEYTtBQUFBLFNBQUFOLFlBQUE7QUFBQSxTQUFBVyxLQWtESjtBQUFBLFFBQ1QsZ0JBQUFwQixLQUVFLDRDQUE4QyxFQUZoRDtBQUFBO0FBQUEsV0FBQWUsU0FuRGEsUUFBQXJCLFNBQUEsUUFBQUgsUUFBQSxRQUFBakMsUUFBQTtBQUFBLE9BeU5pQjtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBNEYsR0FBQXZDO0FBQUFBLHVCQUFBWCxNQVdsQjtBQUFBLG1CQUNWLDRDQUE4QztBQUFBO0FBQUE7QUFBQSxtQkFBQVc7QUFBQUE7QUFBQUEsb0JBQUFYO0FBQUFBLHNCQVRwQyxxQkFBb0I7QUFBQSxtQkFDOUIsNENBQThDO0FBQUEsbUJBdEkzQztBQUFBLFlBQUFrRCxJQWtJeUI7QUFBQSxRQU05QixnQkFBQXZDO0FBQUFBLGFBQUFYLE1BQ1k7QUFBQSxTQUNWLDRDQUE4QyxFQUZoRDtBQUFBO0FBQUEsT0FOOEI7QUFBQSxZQUFBZ0QsSUFBQSxVQUFBOUQsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFBZ0UsR0FBQXZDO0FBQUFBLHVCQUFBWCxNQXdCbEIsc0JBQW9CO0FBQUEsbUJBQzlCLDRDQUE4QztBQUFBO0FBQUE7QUFBQSxtQkFBQVc7QUFBQUE7QUFBQUEsb0JBQUFYO0FBQUFBLHNCQVZwQyxxQkFBb0I7QUFBQSxvQkFBQUEsUUFDbkI7QUFBQSxtQkFDWCw4Q0FBK0M7QUFBQSxtQkFuSjVDO0FBQUEsWUFBQWtELE1Ba0l5QjtBQUFBLFFBbUI5QixnQkFBQXZDO0FBQUFBLGFBQUFYLE1BQ1ksc0JBQW9CO0FBQUEsU0FDOUIsNENBQThDLEVBRmhEO0FBQUE7QUFBQSxXQUFBZCxVQW5COEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQkFBQThELEdBQUFFLEdBQUF2QztBQUFBQTtBQUFBQSxtQkFBQVgsTUFxQ2xCLHdCQUFvQjtBQUFBLGtCQUM5Qiw0Q0FBOEM7QUFBQTtBQUFBO0FBQUEsa0JBQUFnRCxHQUFBckM7QUFBQUE7QUFBQUEsbUJBQUFYO0FBQUFBLHFCQVZwQyxxQkFBb0I7QUFBQSxtQkFBQUEsUUFDbkI7QUFBQSxrQkFDWCw4Q0FBK0M7QUFBQSxrQkFoSzVDO0FBQUEsV0FBQWtELE1Ba0l5QjtBQUFBLE9BZ0M5QixnQkFBQUYsR0FBQXJDO0FBQUFBLFlBQUFYLE1BQ1ksd0JBQW9CO0FBQUEsUUFDOUIsNENBQThDLEVBRmhEO0FBQUE7QUFBQSxVQUFBZSxTQXpQYSxRQUFBeEIsTUFBQTtBQUFBLE1BVWIsa0RBQUFTLEtBQXdDLFdBQUcsRUE2RXRDO0FBQUE7QUFBQSxTQUFBZSxTQXZGUTtBQUFBLEtBTWIsZ0JBQUE3RTtBQUFBQTtBQUFBQSxPQUFBOEQsTUEvQlE7QUFBQSxPQUFBd0UsSUFDVjtBQUFBLE9BQUFILE1BQ1U7QUFBQSxNQUNWO0FBQUEsVUFBQXdCLFVBQWdDO0FBQUEsTUE4QjVCLHNDQUEwQixFQUY1QjtBQUFBO0FBQUEsUUFBQTlFLE9BTmE7QUFBQSxJQUViLGdCQUFBN0U7QUFBQUEsU0FBQTJKLFVBQ0U7QUFBQSxLQUNBLG9DQUEwQixFQUY1QjtBQUFBLEdBcUZLO0FBQUEsWUFBQUosWUFBQUMsR0FBQUMsS0FBQTdJO0FBQUFBLElBdkZRLE9ENytDakIsZ0JDNitDaUIsOEJBdUZSO0FBQUE7QUFBQSxXRHBrRFQ7QUFBQSxZQUFBaUoscUJBQUEzSSxTQUFBc0ksR0FBQUMsS0FBQTlJLEtBQUFDO0FBQUFBLElDNGtEcUI7QUFBQTtBQUFBLE1BYWtCO0FBQUEsS0FibEI7QUFBQTtBQUFBLHlFQWdCNEM7QUFBQTtBQUFBLElBaEI1QztBQUFBO0FBQUE7QUFBQSx5RUFnQjRDO0FBQUEsUUFBQUksUUFoQjVDO0FBQUEsSUFZa0I7QUFBQTtBQUFBO0FBQUEsMERBSTBCO0FBQUE7QUFBQSxZQUFBNkksbUJBQUFMLEdBQUFDLEtBQUE5SSxLQUFBQztBQUFBQSxJQWhCNUMsT0Q1a0RyQixnQkM0a0RxQiwwQ0FnQjRDO0FBQUE7QUFBQTtBQUFBLFFENWxEakU7QUFBQTtBQUFBLFlBQUFrSixrQkFBQTVJLFNBQUFzSSxHQUFBQyxLQUFBekksT0FBQUo7QUFBQUEsSUNvbUR1QjtBQUFBLEtBZVE7QUFBQTtBQUFBLHlFQUc4QjtBQUFBLElBbEJ0QztBQUFBO0FBQUEsV0FBQWlFLE9BQUE7QUFBQSxPQUNRLGdCQUFBaEYsT0FBUyx5Q0FBOEIsRUFBdkM7QUFBQTtBQUFBLFdBQUFnRixTQURSO0FBQUEsT0FFUSxnQkFBQWhGLE9BQVMsMkNBQThCLEVBQXZDO0FBQUE7QUFBQSxXQUFBZ0YsU0FGUjtBQUFBLE9BR1EsZ0JBQUFoRixPQUFTLDJDQUE4QixFQUF2QztBQUFBO0FBQUEsV0FBQWdGLFNBSFI7QUFBQSxPQUlRLGdCQUFBaEYsT0FBUywyQ0FBOEIsRUFBdkM7QUFBQTtBQUFBLFdBQUFnRixTQUpSO0FBQUEsT0FLUSxnQkFBQWhGLE9BQVMsMkNBQThCLEVBQXZDO0FBQUE7QUFBQSxXQUFBZ0YsU0FMUjtBQUFBLE9BTVEsZ0JBQUFoRixPQUFTLDJDQUE4QixFQUF2QztBQUFBO0FBQUEsV0FBQWdGLFNBTlI7QUFBQSxPQU9RLGdCQUFBaEYsT0FBUywyQ0FBOEIsRUFBdkM7QUFBQTtBQUFBLFdBQUFnRixTQVBSO0FBQUEsT0FRUSxnQkFBQWhGLE9BQVMsMkNBQThCLEVBQXZDO0FBQUE7QUFBQSxXQUFBZ0YsU0FSUjtBQUFBLE9BY1EsZ0JBQUFoRixPQUFTLDJDQUE4QixFQUF2QztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsU0FkUjtBQUFBLFFBQUFNLE1BQUE7QUFBQSxRQUFBQyxNQUFBO0FBQUEsUUFBQUYsS0FpQlYsTUFBTTtBQUFBLE9BQ2YsZ0JBQUFyRjtBQUFBQSxRQUErQixPQUFzQjtBQUFBO0FBQUE7QUFBQSxpQkFBdEI7QUFBQSxxQkFBMEIsRUFBekQ7QUFBQTtBQUFBLFdBQUFnRixTQWxCbUI7QUFBQSxPQVNRLG1CQUFBaEY7QUFBQUEsUUFBVywyQ0FBOEIsRUFBekM7QUFBQTtBQUFBLFdBQUFnRixVQVRSO0FBQUEsT0FVUSxnQkFBQWhGLE9BQVMsNENBQThCLEVBQXZDO0FBQUE7QUFBQSxXQUFBZ0YsVUFWUjtBQUFBLE9BV1EsZ0JBQUFoRixPQUFTLDRDQUE4QixFQUF2QztBQUFBO0FBQUEsT0FDQTtBQUFBLGVBQ0E7QUFBQTtBQUFBLEdBSzhCO0FBQUEsWUFBQWlLLGdCQUFBTixHQUFBQyxLQUFBekksT0FBQUo7QUFBQUEsSUFsQnRDLE9EcG1EdkIsZ0JDb21EdUIseUNBa0JzQztBQUFBO0FBQUEsWUFBQW1KLGlCQUFBN0ksU0FBQXNJLEdBQUFDLEtBQUE3STtBQUFBQSxRQUFBLElBUTNEO0FBQUE7QUFBQTtBQUFBLG1FQUFzRTtBQUFBO0FBQUEsWUFBQW9KLGFBQUFSLEdBQUFDLEtBQUE3SSxLQUFBeUMsS0FBQXVDO0FBQUFBLElBTzNDO0FBQUEsS0FFekIsZ0JBQUFuQjtBQUFBQSxVQUFBa0YsVUFDc0M7QUFBQSxNQUNwQyxtQ0FBeUIsRUFGM0I7QUFBQSxJQUZ5QjtBQUFBLFNBQUFsSixRQUFBLFFBQUF1QyxRQUFBO0FBQUEsS0FNekIsZ0JBQUF5QjtBQUFBQSxVQUFBa0YsVUFDOEQsU0FBeEIsMEJBQXdCO0FBQUEsTUFDNUQsbUNBQXlCLEVBRjNCO0FBQUE7QUFBQSxRQUFBM0csVUFOeUI7QUFBQSxJQVV6QixnQkFBQThELEdBQUFyQztBQUFBQSxTQUFBa0YsVUFDMEQsU0FBcEIsd0JBQW9CO0FBQUEsS0FDeEQsbUNBQXlCLEVBRjNCO0FBQUEsR0FFMkI7QUFBQSxZQUFBTSwyQkFBQVQsR0FBQUMsS0FBQTdJLEtBQUF5QyxLQUFBRyxNQUFBb0MsT0FBQS9FO0FBQUFBLElBU1M7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQW1HLEdBQUF2QztBQUFBQSxvQkFBQVgsTUFXeEIscUJBQW9CO0FBQUEsZ0JBQzlCLHlDQUE4QztBQUFBO0FBQUE7QUFBQSxnQkFBQVc7QUFBQUEsb0JBQUFYLE1BVHBDO0FBQUEsZ0JBQ1YseUNBQThDO0FBQUEsZ0JBZ0NBO0FBQUEsU0FBQWtELElBcENaO0FBQUEsS0FNcEMsZ0JBQUF2QztBQUFBQSxVQUFBWCxNQUNZLHFCQUFvQjtBQUFBLE1BQzlCLHlDQUE4QyxFQUZoRDtBQUFBO0FBQUEsSUFOb0M7QUFBQSxTQUFBZ0QsSUFBQSxRQUFBOUQsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBZ0UsR0FBQXZDO0FBQUFBO0FBQUFBLGlCQUFBWDtBQUFBQSxtQkF1QnhCO0FBQUE7QUFBQTtBQUFBLHFCQUFvQixxQkFBcUI7QUFBQSxnQkFDbkQseUNBQThDO0FBQUE7QUFBQTtBQUFBLGdCQUFBVztBQUFBQSxvQkFBQVgsTUFUcEMsc0JBQW9CO0FBQUEsZ0JBQzlCLHlDQUE4QztBQUFBLGdCQW9CQTtBQUFBLFNBQUFrRCxNQXBDWjtBQUFBLEtBa0JwQyxnQkFBQXZDO0FBQUFBO0FBQUFBLE9BQUFYO0FBQUFBLFNBQ1k7QUFBQSxxQkFBb0IsdUJBQXFCO0FBQUEsTUFDbkQseUNBQThDLEVBRmhEO0FBQUE7QUFBQSxRQUFBZCxVQWxCb0M7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBOEQsR0FBQUUsR0FBQXZDO0FBQUFBO0FBQUFBLGdCQUFBWDtBQUFBQSxrQkFtQ3hCO0FBQUE7QUFBQTtBQUFBLG9CQUFvQixxQkFBcUI7QUFBQSxlQUNuRCx5Q0FBOEM7QUFBQTtBQUFBO0FBQUEsZUFBQWdELEdBQUFyQztBQUFBQSxtQkFBQVgsTUFUcEMsd0JBQW9CO0FBQUEsZUFDOUIseUNBQThDO0FBQUEsZUFRQTtBQUFBLFFBQUFrRCxNQXBDWjtBQUFBLElBOEJwQyxnQkFBQUYsR0FBQXJDO0FBQUFBO0FBQUFBLE1BQUFYO0FBQUFBLFFBQ1k7QUFBQSxzQkFBb0IsdUJBQXFCO0FBQUEsS0FDbkQseUNBQThDLEVBRmhEO0FBQUEsR0FNZ0Q7QUFBQSxZQUFBb0csY0FBQWhKLFNBQUFzSSxHQUFBQyxLQUFBNUUsTUFBQUcsT0FBQXpHO0FBQUFBLElBbUR4QjtBQUFBLFNBQUF5RyxVQUFBO0FBQUEsS0FHeEIsZ0JBQUFQO0FBQUFBLE1BQytCLE9BQUssbUNBQUwsaUJBQUssRUFEcEM7QUFBQTtBQUFBLFlBRmU7QUFBQTtBQUFBO0FBQUEsb0VBR3FCO0FBQUE7QUFBQSxZQUFBeUYsWUFBQVYsR0FBQUMsS0FBQTVFLE1BQUFHLE9BQUF6RztBQUFBQSxJQUpaLE9EanZENUIsZ0JDaXZENEIseUNBSVk7QUFBQTtBQUFBLFdEcnZEeEM7QUFBQSxZQUFBNEwsZUFBQWpKLFNBQUFzSSxLQUFBSSxHQUFBaEo7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsaUJBQUE0SSxJQzJ2RGlCLEtBQUE1SSxNQUFBO0FBQUE7QUFBQTtBQUFBLDBDQXNFVCx1QkFBRztBQUFBLGNBdEVNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBQWlFLFVBQUEsUUE0Q1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEseUJBNUNTO0FBQUE7QUFBQSxzQkFBQUEsVUFBQSxRQUFBakUsUUFBQTtBQUFBLHNCQUFBNEksTUFrRVQsR0FBQTNFLE9BQUE7QUFBQTtBQUFBLG1CQUFBMkUsTUFBQSxTQUFBWSxLQUF5QixtQ0FBdUI7QUFBQSxrQkFBaEQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxzQkFBQXZGLFVBbEVTLFFBQUFqRSxRQUFBO0FBQUEsc0JBQUE0SSxNQW9FVCxHQUFBM0UsT0FBQTtBQUFBO0FBQUEsbUJBQUEyRSxNQUFBLFNBQUFZLEtBQXlCLG1DQUF1QjtBQUFBLGtCQUFoRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBMUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUFBdkYsVUExQ1MsUUFBQUcsUUFBQTtBQUFBLGlCQXNDVDtBQUFBO0FBQUE7QUFBQTtBQUFBLDRFQWdDRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUFBSCxVQXRFTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBQUEsVUFBQSxRQUFBbEUsTUFBQTtBQUFBLGFBOERUO0FBQUEsK0JBQUFkLE9BQTZCLHVCQUFHLG9CQVE3QjtBQUFBO0FBQUEsZ0JBQUFnRixVQXRFTSxRQUFBSixPQTBESDtBQUFBLFlBQXVCLGdCQUFBNUUsT0E5RHJCLGFBOERxQjtBQUFBO0FBQUE7QUFBQSxZQUFBZ0YsVUExRHBCO0FBQUEsWUFBQUosT0FrQ0k7QUFBQSxZQUFBQSxPQUFQLFNBQUE1RSxPQXRDRTtBQUFBLFdBc0M2QixnQkFBQUEsT0F0QzdCLGFBc0M2QjtBQUFBO0FBQUEsY0FBQWdGLFVBbEM1QixRQUFBN0QsUUFBQTtBQUFBLFVBb0RULGdCQUFBbkI7QUFBQUEsZUFBQWUsTUFBQSxjQUVnQjtBQUFBLFdBQVosT0FBb0M7QUFBQSwwQkFBcEMsbURBQW9DLEVBRnhDO0FBQUE7QUFBQSxhQUFBaUUsVUFwRFMsUUFBQUosT0FBQTtBQUFBLHlCQUFBNUUsT0FKRCxhQUlDO0FBQUE7QUFBQSxZQUFBeUYsVUFBQTtBQUFBO0FBQUEsYUFBQVQsU0FBQSxRQUFBSixNQTRCSDtBQUFBLFNBQXVCLGdCQUFBNUUsT0FoQ3JCLFlBZ0NxQjtBQUFBO0FBQUEsUUE1QnBCO0FBQUEsYUFBQWdGLFNBQUEsUUFBQUosTUE4Qkg7QUFBQSxTQUF1QixnQkFBQTVFLE9BbENyQixZQWtDcUI7QUFBQTtBQUFBO0FBQUEsU0FBQWdGLFNBOUJwQjtBQUFBLFNBQUFKLE9BZ0NJO0FBQUEsU0FBQUEsT0FBUCxTQUFBNUUsT0FwQ0U7QUFBQSxRQW9DNkIsZ0JBQUFBLE9BcEM3QixhQW9DNkI7QUFBQTtBQUFBLFdBQUFnRixTQWhDNUIsUUFBQXJCLE9BQUEsUUFBQUgsTUFBQTtBQUFBLE9BMkVTO0FBQUE7QUFBQSxhQUFBb0IsT0FJWjtBQUFBLFNBQXNCLGdCQUFBNUUsT0FuRnBCLGFBbUZvQjtBQUFBO0FBQUEsUUFKVjtBQUFBO0FBQUEsVUFBQTRFLE9BTUw7QUFBQSxVQUFBQSxPQUFQLFNBQUE1RSxPQXJGRTtBQUFBLFNBcUY0QixnQkFBQUEsT0FyRjVCLGFBcUY0QjtBQUFBO0FBQUEsWUFBQTRFLE9BSjlCO0FBQUEsUUFBc0IsZ0JBQUE1RSxPQWpGcEIsYUFpRm9CO0FBQUE7QUFBQSxPQUZWO0FBQUE7QUFBQSxhQUFBNEUsT0FVWjtBQUFBLFNBQXNCLGdCQUFBNUUsT0F6RnBCLGFBeUZvQjtBQUFBO0FBQUEsUUFWVjtBQUFBO0FBQUEsVUFBQTRFLE9BWUw7QUFBQSxVQUFBQSxPQUFQLFNBQUE1RSxPQTNGRTtBQUFBLFNBMkY0QixnQkFBQUEsT0EzRjVCLGFBMkY0QjtBQUFBO0FBQUEsWUFBQTRFLE9BSjlCO0FBQUEsUUFBc0IsZ0JBQUE1RSxPQXZGcEIsYUF1Rm9CO0FBQUE7QUFBQSxPQVJWO0FBQUE7QUFBQSxTQUFBNEUsT0FnQkw7QUFBQSxTQUFBQSxPQUFQLFNBQUE1RSxPQS9GRTtBQUFBLFFBK0Y0QixnQkFBQUEsT0EvRjVCLGFBK0Y0QjtBQUFBO0FBQUEsT0FoQmxCO0FBQUE7QUFBQSxTQUFBNEUsT0FrQkU7QUFBQSxTQUFBQSxPQUFQLFNBQUE1RSxPQWpHTDtBQUFBLFNBQUE0RSxPQWlHRixTQUFBNUUsT0FqR0U7QUFBQSxRQWlHb0MsZ0JBQUFBLE9BakdwQyxhQWlHb0M7QUFBQTtBQUFBO0FBQUEsUUFBQTRFLE9BSi9CO0FBQUEsUUFBQUEsT0FBUCxTQUFBNUUsT0E3RkU7QUFBQSxPQTZGNEIsZ0JBQUFBLE9BN0Y1QixhQTZGNEI7QUFBQTtBQUFBLFVBQUF5RixVQXpGM0I7QUFBQTtBQUFBLFdBQUFULFNBQUEsUUFBQUosTUFZSDtBQUFBLE9BQXVCLGdCQUFBNUUsT0FoQnJCLFlBZ0JxQjtBQUFBO0FBQUEsTUFacEI7QUFBQSxXQUFBZ0YsU0FBQSxRQUFBSixNQWNIO0FBQUEsT0FBdUIsZ0JBQUE1RSxPQWxCckIsWUFrQnFCO0FBQUE7QUFBQTtBQUFBLE9BQUFnRixTQWRwQjtBQUFBLE9BQUFKLE1BZ0JJO0FBQUEsT0FBQUEsTUFBUCxTQUFBNUUsT0FwQkU7QUFBQSxNQW9CNkIsZ0JBQUFBLE9BcEI3QixZQW9CNkI7QUFBQTtBQUFBLFNBQUF5RixRQWhCNUI7QUFBQTtBQUFBLFVBQUFULFNBQUEsUUFBQUosTUFNSDtBQUFBLE1BQXVCLGdCQUFBNUUsT0FWckIsWUFVcUI7QUFBQTtBQUFBLEtBTnBCO0FBQUEsVUFBQWdGLFNBQUEsUUFBQUosTUFRSDtBQUFBLE1BQXVCLGdCQUFBNUUsT0FackIsWUFZcUI7QUFBQTtBQUFBO0FBQUEsTUFBQWdGLFNBUnBCO0FBQUEsTUFBQUosTUFVSTtBQUFBLE1BQUFBLE1BQVAsU0FBQTVFLE9BZEU7QUFBQSxLQWM2QixnQkFBQUEsT0FkN0IsWUFjNkI7QUFBQTtBQUFBLFFBQUFnRixPQVY1QixRQUFBSixJQUFBO0FBQUEsb0JBQUE1RSxPQUpELFVBSUM7QUFBQSxHQXNFTjtBQUFBLFlBQUFzSyxhQUFBWCxHQUFBSSxHQUFBaEo7QUFBQUEsSUF0RU0sT0QzdkRqQixnQkMydkRpQiw2QkFzRU47QUFBQTtBQUFBLFlBQUF5SixxQkFBQW5KLFNBQUFzSSxHQUFBSSxHQUFBaEosS0FBQWY7QUFBQUEsSUF3QlA7QUFBQSxLQUtJO0FBQUE7QUFBQSxxRUFFd0M7QUFBQSxRQUFBbUYsUUFQNUMsVUFBQVAsSUFPVTtBQUFBLElBQWtDLGdCQUFBNUUsT0F6R2hDLFVBeUdnQztBQUFBO0FBQUEsWUFBQXdLLG1CQUFBYixHQUFBSSxHQUFBaEosS0FBQWY7QUFBQUEsSUFQNUMsT0R6MURKLGdCQ3kxREksMENBTzRDO0FBQUE7QUFBQSxZQUFBeUssV0FBQVYsR0FBQUg7QUFBQUEsUUFBQUEsTUFRckI7QUFBQTtBQUFBLGlDQWVLO0FBQUEsS0FmTDtBQUFBO0FBQUE7QUFBQSxTQUFBM0UsYUFBQTtBQUFBLFNBQUFrQyxJQUFBO0FBQUEsU0FBQWhGLElBRWY7QUFBQSxRQUNSO0FBQUEsUUFBYyxrQ0FZZ0I7QUFBQTtBQUFBLFlBQUFzRCxRQWZQLFFBQUEwQixNQUFBO0FBQUE7QUFBQSxhQUFBeUMsUUFBQTtBQUFBLFNBS3ZCO0FBQUEsU0FBZ0I7QUFBQSxTQUFvQjtBQUFBO0FBQUE7QUFBQSxhQUFBQSxRQUxiO0FBQUEsU0FPdkI7QUFBQSxTQUFnQjtBQUFBLFNBQW9CO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQWxMLElBUGIsUUFBQXlJLE1BQUE7QUFBQSxRQVlLO0FBQUEsUUFBYyx1QkFHWjtBQUFBO0FBQUEsWUFBQUEsTUFmUCxRQWFLLG9CQUFjLCtCQUVaO0FBQUE7QUFBQSxZQUFBdUQsTUFmUCxRQUFBdkQsTUFBQTtBQUFBLFFBY0s7QUFBQSxRQUFjLGdDQUNaO0FBQUE7QUFBQTtBQUFBLFlBQUFoRixNQWZQLFFBQUFnRixNQUFBO0FBQUEsUUFTSztBQUFBLFFBQWMsb0NBTVo7QUFBQTtBQUFBLFlBQUFoSCxJQWZQLFFBQUFnSCxNQUFBO0FBQUEsUUFXSztBQUFBLFFBQWMsa0NBSVo7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBd0QsV0FBQUMsR0FBQWhCO0FBQUFBLFFBQUFBLE1BS1A7QUFBQTtBQUFBLGlDQWVLO0FBQUEsS0FmTDtBQUFBO0FBQUE7QUFBQSxTQUFBM0UsYUFBQTtBQUFBLFNBQUFrQyxJQUFBO0FBQUEsU0FBQWhGLElBRWY7QUFBQSxRQUNSO0FBQUEsUUFBYyx5Q0FZZ0I7QUFBQTtBQUFBLFlBQUFzRCxRQWZQLFFBQUEwQixNQUFBO0FBQUE7QUFBQSxhQUFBeUMsUUFBQTtBQUFBLFNBS3ZCO0FBQUEsU0FBZ0I7QUFBQSxTQUF3QjtBQUFBO0FBQUE7QUFBQSxhQUFBQSxRQUxqQjtBQUFBLFNBT3ZCO0FBQUEsU0FBZ0I7QUFBQSxTQUF3QjtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFsTCxJQVBqQixRQUFBeUksTUFBQTtBQUFBLFFBWUs7QUFBQSxRQUFjLHVCQUdaO0FBQUE7QUFBQSxZQUFBeUMsUUFmUCxRQWFLO0FBQUE7QUFBQSxZQUFBYyxNQWJMLFFBQUF2RCxNQUFBO0FBQUEsUUFjSztBQUFBLFFBQWMsZ0NBQ1o7QUFBQTtBQUFBO0FBQUEsWUFBQWhGLE1BZlAsUUFBQWdGLE1BQUE7QUFBQSxRQVNLO0FBQUEsUUFBYywyQ0FNWjtBQUFBO0FBQUEsWUFBQWhILElBZlAsUUFBQWdILE1BQUE7QUFBQSxRQVdLO0FBQUEsUUFBYyx5Q0FJWjtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUEwRCxXQUFBRCxHQUFBaEI7QUFBQUEsUUFBQUEsTUFNUDtBQUFBO0FBQUEsaUNBZUs7QUFBQSxLQWZMO0FBQUE7QUFBQTtBQUFBLFNBQUEzRSxhQUFBO0FBQUEsU0FBQWtDLElBQUE7QUFBQSxTQUFBaEYsSUFFZjtBQUFBLFFBQ1I7QUFBQSxRQUFjLHlDQVlnQjtBQUFBO0FBQUEsWUFBQXNELFFBZlAsUUFBQTBCLE1BQUE7QUFBQTtBQUFBLGFBQUF5QyxRQUFBO0FBQUEsU0FLdkI7QUFBQSxTQUFnQjtBQUFBLFNBQXdCO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFFBTGpCO0FBQUEsU0FPdkI7QUFBQSxTQUFnQjtBQUFBLFNBQXdCO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQWxMLElBUGpCLFFBQUF5SSxNQUFBO0FBQUEsUUFZSztBQUFBLGdCQUFvQztBQUFBLFFBQU0seUNBR3hDO0FBQUE7QUFBQSxZQUFBeUMsUUFmUCxRQWFLO0FBQUE7QUFBQSxZQUFBYyxNQWJMLFFBQUF2RCxNQUFBO0FBQUEsUUFjSztBQUFBLFFBQWMsZ0NBQ1o7QUFBQTtBQUFBO0FBQUEsWUFBQWhGLE1BZlAsUUFBQWdGLE1BQUE7QUFBQSxRQVNLO0FBQUEsUUFBYywyQ0FNWjtBQUFBO0FBQUEsWUFBQWhILElBZlAsUUFBQWdILE1BQUE7QUFBQSxRQVdLO0FBQUEsUUFBYyx5Q0FJWjtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUEyRCxpQkFBQTlLO0FBQUFBLFFBQUFlLE1BTWIsVUFBQVksTUFDVDtBQUFBLGFBQUFnSSxFQUFBQztBQUFBQSxLQUNFO0FBQUEsYUFBNkI7QUFBQSxLQUFxQjtBQUFBO0FBQUEsSUFDOUQsNkJBQTRCO0FBQUE7QUFBQTtBQUFBLElBQUEvRSxRRHo2RDlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFrRyxtQkFBQTlHO0FBQUFBLElDZzdEYSxrQkFBTTtBQUFBLFFBQUFwQyxNQUNmO0FBQUEsYUFBQW1KLFlBQUFoTCxPQUNxQiwyQ0FBaUQ7QUFBQSxhQUFBaUwsYUFBQXpLO0FBQUFBLFNBQUFBLElBRXBFO0FBQUE7QUFBQSxvQkFBZ0I7QUFBQSxVQUFBaUYsUUFDUjtBQUFBLE1BQU8sZ0NBRU47QUFBQSxVQUFBakYsTUFEUztBQUFBO0FBQUE7QUFBQSxJQUNSO0FBQUEsUUFBQTBLLFNBV0MsaUJBQUFDLE9BQ0Y7QUFBQTtBQUFBLEtBVlQ7QUFBQSxLQUNRO0FBQUEsU0FBQWxJLElBQ1U7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBbUksV0FTTDtBQUFBLEtBQUFDLFNBQ0Y7QUFBQSxLQUFBQyxPQUNGO0FBQUE7QUFBQSxLQVJUO0FBQUEsU0FBQTdGLFFBQ1E7QUFBQSxLQUFPO0FBQUEsU0FBQXhDLE1BQ1M7QUFBQTtBQUFBO0FBQUEsSUFPMUI7QUFBQSxTQUFBc0ksU0FDd0I7QUFBQTtBQUFBLEtBRHhCO0FBQUE7QUFBQTtBQUFBLFNBRVE7QUFBQSxXQUFjO0FBQUEsT0FBQUEsU0FBQTtBQUFBO0FBQUEsV0FBQUM7QUFBQUEsVUFBQUEsTUR6OEQxQjtBQUFBO0FBQUEsVUFBQUQsU0MwOEQwQjtBQUFBO0FBQUEsUUFBQUUsVUFDUjtBQUFBLElBQ2Qsb0JBQXVCO0FBQUE7QUFBQTtBQUFBLEtBQ3ZCO0FBQUEsK0JBQUFDLFdBRWdCO0FBQUEsTUFGaEIsMkJBQUFBLFdBS2dCO0FBQUEsTUFMaEIsMEJBQUFBLFdBSWdCO0FBQUEsTUFKaEIseUJBQUFBLFdBTWdCO0FBQUEsVUFBQUEsV0FIQTtBQUFBO0FBQUE7QUFBQSxTQUFBQSxXQUZBO0FBQUE7QUFBQSxJQU1oQjtBQUFBLEdBQWtCO0FBQUEsWUFBQUMscUJBQUFuSSxLQUFBekM7QUFBQUEsSUFVUCw0QkFDVztBQUFBLElBRFgscUJBQUFrRyxJQUFBLFFBQUE5RSxJQUFBLFFBRVc7QUFBQSxRQUFBQSxNQUZYO0FBQUEsSUFHVztBQUFBLEdBQW9DO0FBQUEsWUFBQXlKLHFCQUFBcEksS0FBQUcsTUFBQTVDO0FBQUFBLElBTzlDO0FBQUEsU0FBQTBFLFFBQUE7QUFBQTtBQUFBLFNBQUEwQixJQUFBLFNBQUExQixRQUVPO0FBQUEsUUFBQTlCLFNBVytDO0FBQUEsSUFDcEUsNEJBQ3dCO0FBQUEsSUFEeEI7QUFBQSxTQUFBc0QsSUFBQSxRQUFBOUUsSUFBQTtBQUFBLEtBRXdCO0FBQUE7QUFBQSxRQUFBQSxNQUZ4QjtBQUFBLElBR3dCO0FBQUEsR0FBMkM7QUFBQTtBQUFBLElBQUEwQyxRRHovRHJFO0FBQUEsSUFBQWdILDBCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQS9ILGlCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBZ0ksa0JBQUFDLGlCQUFBaEk7QUFBQUEsSUNpaEVFO0FBQUEsU0FBQWlJLE9BQUEsb0JBQUFELG9CQUNpQjtBQUFBO0FBQUEsU0FBQUEsb0JBQ0w7QUFBQSxhQUFBRSx1QkFBQS9MLFNBQUFzSztBQUFBQSxLQWdCVix5REFFaUI7QUFBQTtBQUFBLGFBQUEwQix1QkFBQWhNLFNBQUFELEdBQUFnQztBQUFBQSxLQWtCakIsMERBRWlCO0FBQUE7QUFBQSxhQUFBa0ssbUJBQUFqTSxTQUFBa00sVUFBQUM7QUFBQUEsS0FNakIsb0VBRTJCO0FBQUE7QUFBQSxRQUFBQywrQkRqa0UvQjtBQUFBLGFBQUFDLE1BQUFDLFdBQUFDO0FBQUFBLFNBQUF2TSxVQ3NrRXlCO0FBQUE7QUFBQSxNQUtyQix3QkFBMEIseUNBTGdDO0FBQUEsVUFBQXFGLFFBTWxEO0FBQUEsTUFBYTtBQUFBO0FBQUEsV0FBQStCLGFBS007QUFBQSxPQUN2QixrREFac0Q7QUFBQTtBQUFBLFVBQUFwSCxZQWN0RDtBQUFBO0FBQUE7QUFBQSxTQUFBQSxZQUlpQjtBQUFBLEtBSXJCO0FBQUEsTUFqREE7QUFBQTtBQUFBLE1BQUFxRjtBQUFBQSxRQWtETTtBQUFBLFdBQ0s7QUFBQSxXQUNGO0FBQUEsTUFBQStCLFdBakI4QztBQUFBLEtBQ25ELGdEQVRzRDtBQUFBO0FBQUEsUUFBQW9GLFFEdGtFOUQ7QUFBQSxhQUFBQyxZQUFBQyxTQUFBMU0sU0FBQXVNLFNBQUE3TDtBQUFBQSxjQUFBaU0sU0FBQTNNLFNBQUE4TDtBQUFBQSxVQUFBLElDeW1FTTtBQUFBO0FBQUEsZUFHZ0I7QUFBQSxPQUZkO0FBQUE7QUFBQSxNQUdGO0FBQUEsS0FBYTtBQUFBO0FBQUEsTUFBQTlMLFlBZWY7QUFBQSxNQUFBNE0sT0F4QkE7QUFBQSxNQUFBQyxRQUFBO0FBQUEsTUFBQUMsT0FBQTtBQUFBLE1BQUFDLFFBQUE7QUFBQSxNQUFBQyxPQUFBO0FBQUE7QUFBQSxLQXdCQTtBQUFBLE1BWkU7QUFBQSxPQXJFRjtBQUFBLFVBQUFwSyxXQXNFYztBQUFBLE1BQWE7QUFBQTtBQUFBO0FBQUEsU0FLaEI7QUFBQSxhQUFBNUMsWUFBc0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUR0QjtBQUFBLGFBQUFBLFlBQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FEckI7QUFBQSxhQUFBQSxZQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBRHJCO0FBQUEsYUFBQUEsWUFBc0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUR0QjtBQUFBLGFBQUFBLFlBQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBQStNLFVBTTVCO0FBQUEsTUFBQUMsU0FBQTtBQUFBLE1BQUFGLFNBQUE7QUFBQSxNQUFBRCxVQUFBO0FBQUEsTUFBQUQsU0FBQTtBQUFBLEtBV0o7QUFBQSxNQXhGQTtBQUFBO0FBQUEsTUFBQTdKO0FBQUFBLFFBeUZBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFNUztBQUFBO0FBQUE7QUFBQSxNQUFBc0MsUUFDSDtBQUFBLEtBQWE7QUFBQTtBQUFBO0FBQUEsUUFBQUEsVUFFSTtBQUFBLFFBQUE3RSxRQUFnQztBQUFBLFFBQUF5TSxVQUFBO0FBQUEsT0FDckQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0NBbEJnQjtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BcUJoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFyQmdCO0FBQUEsS0F3QmhCO0FBQUE7QUFBQSxRQUVFO0FBQUEsU0FDRTtBQUFBLFFBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBNUJjO0FBQUE7QUFBQSxRQXFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFyQ2M7QUFBQTtBQUFBLFFBa0NkO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQWxDYztBQUFBO0FBQUE7QUFBQSxRQUFBQyxnQkQ1bkV0QjtBQUFBLGFBQUFDO0FBQUFBLEtBQUFULFNBQUExTSxTQUFBdU0sU0FBQU0sT0FBQUMsTUFBQUUsTUFBQUQsT0FBQXJNLEtBQUEwQztBQUFBQSxLQzBxRUk7QUFBQSxNQS9IQTtBQUFBLFNBQUFtRixPQWdJTTtBQUFBLEtBQWE7QUFBQSxNQUtqQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBQ3VCO0FBQUEsU0FBQXZJLFlBSnZCO0FBQUEsS0FXRjtBQUFBLE1BN0lBO0FBQUEsY0FBQW9OLGNBQUFQLE9BQUE3TTtBQUFBQTtBQUFBQSxPQUFBcUYsUUErSXNCO0FBQUEsT0FBQTlCLE9BQWdDO0FBQUEsT0FBQTBKLFVBQUE7QUFBQSxNQUNwRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHlCQUMwQjtBQUFBO0FBQUEsU0FBQTFFLFNBQ3RCO0FBQUEsS0FBYTtBQUFBLHNCQUNILHNDQWJTO0FBQUE7QUFBQTtBQUFBLE1BWU47QUFBQTtBQUFBLFNBYWpCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBekJ1QjtBQUFBO0FBQUE7QUFBQSxTQWNFO0FBQUE7QUFBQSxlQVN6QjtBQUFBLFdBQUFzRSxVQUFBO0FBQUEsMENBdkJ1QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBNEJ2QjtBQUFBLGVBSUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBR0EsNERBbkNxQjtBQUFBO0FBQUEsYUFBQVE7QUFBQUEsS0FBQVgsU0FBQTFNLFNBQUF1TSxTQUFBTSxPQUFBQyxNQUFBRSxNQUFBRCxPQUFBck0sS0FBQTBDLEtBQUFHO0FBQUFBLEtBMEN6QjtBQUFBLE1BaExBO0FBQUEsY0FBQStKLFdBQUFDO0FBQUFBLE1BbUxpQixPQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFiLDhCQUFhO0FBQUE7QUFBQSxLQU85Qiw0QkFTUyxzQkFBYztBQUFBLEtBUlAsdUNBRVMsb0JBTUY7QUFBQSxLQVJQO0FBQUEsbUNBTWEsb0JBRU47QUFBQSxVQUFBbEssSUFSUDtBQUFBLE1BSWUsNEJBSVI7QUFBQTtBQUFBLEtBUlAsNkJBS2Msb0JBR1A7QUFBQSxTQUFBQSxNQVJQO0FBQUEsS0FHZ0IsOEJBS1Q7QUFBQTtBQUFBLFFBQUFvQixRRDl1RTNCLE9BQUFBLFFBQUEsT0FBQUEsTUFBQTtBQUFBLGFBQUErSTtBQUFBQSxLQUFBZDtBQUFBQSxLQUFBMU07QUFBQUEsS0FBQXVNO0FBQUFBLEtBQUFPO0FBQUFBLEtBQUFFO0FBQUFBLEtBQUFEO0FBQUFBLEtBQUFyTTtBQUFBQSxLQUFBMEM7QUFBQUEsS0FBQUc7QUFBQUEsS0FBQWdLO0FBQUFBLEtBQUFoRjtBQUFBQSxTQUFBa0YsWUNzdkVJO0FBQUEsY0FBQUMsU0FBQTlOLE9BS3FCLGtCQUFvQixZQUFJO0FBQUEsU0FBQStOLFlBTDdDO0FBQUEsY0FBQUMsU0FBQWhPLE9BTW9CLGtCQUFtQixZQUFJO0FBQUEsU0FBQWlPLGFBTjNDO0FBQUEsY0FBQUMsVUFBQWxPLE9BT3FCLG1CQUFvQixhQUFLO0FBQUEsU0FBQW1PLFdBUDlDO0FBQUEsY0FBQUMsUUFBQXBPLE9BUXFCLGlCQUFvQixXQUFHO0FBQUEsU0FBQXFPLFdBUjVDO0FBQUEsY0FBQUMsUUFBQXRPLE9BU3FCLGlCQUFvQixXQUFHO0FBQUEsU0FBQXVPLFlBVDVDO0FBQUEsY0FBQUMsU0FBQXhPLE9BVXFCLGtCQUFvQixZQUFJO0FBQUEsY0FBQXlPLFlBQUF6TyxPQUN4QixpQkFBb0IsZUFBTztBQUFBLGNBQUEwTyxZQUFBMU87QUFBQUEsVUFBQXdELE1BY3ZDLFlBQUFpQyxRQUFZO0FBQUEsTUFBVyx5Q0FDSjtBQUFBLE1BREksNEJBRUo7QUFBQSxNQUZJO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBUXBCO0FBQUEsb0JBRXlCO0FBQUEsTUFWTCxlQVNFO0FBQUEsVUFBQWhDLElBVEY7QUFBQSxNQUl6QjtBQUFBO0FBQUEsZ0JBQ0ssc0RBS3lCO0FBQUE7QUFBQSxjQUFBa0wsV0FBQWhHLE1BQUFuRjtBQUFBQSxNQUluQyw0QkFDZ0I7QUFBQSxNQURoQjtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQVNPO0FBQUEsb0JBQTBDO0FBQUEsTUFUakQsZUFFcUM7QUFBQSxVQUFBNUMsUUFGckM7QUFBQSxNQUtFO0FBQUE7QUFBQSxnQkFDSyxnREFHMEM7QUFBQTtBQUFBLFNBQUFpRSxRRHR5RXZEO0FBQUEsY0FBQStKLFdBQUF6TyxHQUFBcUQ7QUFBQUEsTUM0eUVnRSw0QkFDMUM7QUFBQSxNQUQwQztBQUFBO0FBQUE7QUFBQSxjQUFBNUMsUUFBQTtBQUFBLFVBT3hEO0FBQUE7QUFBQSxvQkFDSyw2Q0FDcUQ7QUFBQTtBQUFBLGNBQUFBLFVBVEYsUUFFMUI7QUFBQTtBQUFBLGNBQUFBLFVBRjBCO0FBQUEsVUFJeEQ7QUFBQTtBQUFBLG9CQUNLLDZDQUlxRDtBQUFBO0FBQUEsTUFBekMsb0RBQXlDO0FBQUE7QUFBQSxjQUFBaU8sWUFBQTFPLEdBRTdCLE9BQVksY0FBWixXQUFZO0FBQUEsY0FBQTJPLGdCQUFBM08sR0FDUixPQUFnQixjQUFoQixlQUFnQjtBQUFBO0FBQUE7QUFBQSxNQVdyRDtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUFxSCxhQStJeUI7QUFBQSxXQUFBdUgsYUFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBQyxVQWVjO0FBQUEsV0FBQXhILGFBQ1M7QUFBQSxXQUFBeUgsVUFDRDtBQUFBLFdBQUF2SyxZQUNOO0FBQUEsVUFDYjtBQUFBO0FBQUEsWUFBQXdLLFlBQ21DO0FBQUEsWUFBQUgsYUFDcEM7QUFBQTtBQUFBO0FBQUEsY0FBQUEsYUFFc0MsU0FBZjtBQUFBO0FBQUE7QUFBQSxjQUFBQSxhQXJLekI7QUFBQTtBQUFBLGNBQUF2SCxjQXNCdUI7QUFBQSxVQUNwQixtQkFBQXVILGFBQWdCO0FBQUEsY0FBQUEsYUFDZDtBQUFBO0FBQUE7QUFBQSxjQUFBdkgsY0FpQ2tCLDRCQUFBbkcsWUFBcUI7QUFBQSxVQUV6QztBQUFBLGVBQUEwTixhQUVEO0FBQUE7QUFBQTtBQUFBLGNBQUFBLGFBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBdkwsUUEzQlEsaUJBQWdCO0FBQUEsV0FBQWdFLGNBQ0g7QUFBQSxVQUNwQjtBQUFBO0FBQUEsWUFBQTBILFlBQ2lDO0FBQUEsWUFBQUgsYUFDbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBdEosVUFHRTtBQUFBLFdBQUErQixjQUFpQztBQUFBLFdBQUFoRSxRQUFBO0FBQUEsV0FBQXVMLGFBQ25DO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQXRKLFVBMkh1QjtBQUFBLFdBQUF2RixXQUE4QjtBQUFBLFdBQUFpUCxXQUFBO0FBQUEsV0FBQTNILGNBQ2hDO0FBQUEsVUFDcEI7QUFBQTtBQUFBLFlBQUEwSCxZQUNvQztBQUFBLFlBQUFILGFBQ3JDO0FBQUE7QUFBQTtBQUFBLGNBQUFBLGFBRXVDLFNBQWY7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBdkgsY0ExQ0g7QUFBQSxXQUFBdUgsYUFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBSztBQUFBQSxhQWxJQSxTQUFBNUg7QUFBQUEsY0FDSywrREFFeUI7QUFBQTtBQUFBLFdBQUFBLGNBT1A7QUFBQSxXQUFBL0IsVUFDWDtBQUFBLFVBQWUsa0JBQUFzSixhQUNmO0FBQUEsY0FBQXRMLElBRGU7QUFBQTtBQUFBLFdBTHRCO0FBQUEsZ0JBQUFzTCxhQUNFO0FBQUE7QUFBQTtBQUFBLGVBQUFBLGFBQ0E7QUFBQTtBQUFBO0FBQUEsVUFPRjtBQUFBLGVBQUFBLGFBRW9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQUE7QUFBQUEsYUF2UzNDO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBQXZILGNBNlp5QjtBQUFBLFVBQ3BCLG1CQUFBdUgsYUFBZ0I7QUFBQSxjQUFBQSxhQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQXZMLFFBakhLLGlCQUFnQjtBQUFBLFdBQUFnRSxjQUNIO0FBQUEsVUFDcEI7QUFBQTtBQUFBLFlBQUEwSCxZQUM0QjtBQUFBLFlBQUFILGFBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQXRKLFVBR0U7QUFBQSxXQUFBK0IsY0FBaUM7QUFBQSxXQUFBaEUsU0FBQTtBQUFBLFdBQUF1TCxhQUNuQztBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUF2SCxjQW9HcUI7QUFBQSxXQUFBdUgsYUFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUFBQyxZQVljO0FBQUEsV0FBQUMsWUFDUTtBQUFBLFdBQUF6SCxjQUNDO0FBQUEsV0FBQTlDLGNBQ1A7QUFBQSxVQUNiO0FBQUE7QUFBQSxZQUFBd0ssYUFDaUM7QUFBQSxZQUFBSCxhQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUFBLGFBRW9DLFNBQWY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUF2TCxRQWxDYixpQkFBZ0I7QUFBQSxXQUFBZ0UsYUFDSDtBQUFBLFVBQ3BCO0FBQUE7QUFBQSxZQUFBMEgsWUFDMEI7QUFBQSxZQUFBSCxhQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUF0SixVQUdFO0FBQUEsV0FBQStCLGFBQWlDO0FBQUEsV0FBQWhFLFFBQUE7QUFBQSxXQUFBdUwsYUFDbkM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUF2SCxhQWVxQjtBQUFBLFdBQUF1SCxhQUN2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFqRnFCO0FBQUEsZUFBQXBHLFNBQW9DLG1DQXNjdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUNrQjtBQUFBO0FBQUEsb0JBQ2hDO0FBQUE7QUFBQSxXQXhja0U7QUFBQTtBQUFBLGNBQUFuQixjQUNoRDtBQUFBO0FBQUE7QUFBQSxXQTBjQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFBbkcsVUFDaEI7QUFBQTtBQUFBLG9CQUFBQSxVQUF1QjtBQUFBO0FBQUE7QUFBQSxvQ0FBQUEsVUFDdkI7QUFBQSxXQUFxQjtBQUFBO0FBQUEsVUExY3pCO0FBQUE7QUFBQSxZQUFBNk4sWUFDRDtBQUFBLFlBQUFILGFBQ0E7QUFBQTtBQUFBO0FBQUEsY0FBQUEsYUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQUEsYUF3R0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFoSUU7QUFBQSxlQUR5RDtBQUFBLFdBQUEvTjtBQUFBQSxhQUEvQyxtQ0FBaUM7QUFBQSxXQUFBd0csY0FFdEI7QUFBQSxVQUNwQjtBQUFBO0FBQUEsWUFBQTBILFlBQ2lDO0FBQUEsWUFBQUgsYUFDbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUd3QztBQUFBLFdBQUF0SixVQUF0QyxxQkFBcUI7QUFBQSxXQUFBK0IsY0FBdUM7QUFBQSxXQUFBN0QsU0FBQTtBQUFBLFdBQUFILFFBQUE7QUFBQSxXQUFBdUwsYUFDOUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQUE1QixVQXdEOEI7QUFBQSxXQUFBQyxTQUFkO0FBQUEsV0FBQUYsU0FBZDtBQUFBLFdBQUFoQjtBQUFBQSxhQXNjTjtBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQU9PO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUNQO0FBQUEsZ0JBQUFsSixXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JBQUFxTSxPQUVZO0FBQUE7QUFBQSxvQkFBQUEsT0FEQTtBQUFBO0FBQUEsb0JBQUFBLE9BR0E7QUFBQSw0QkFBQUEsT0FFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBTlo7QUFBQTtBQUFBLG1CQUFBQSxPQUdZO0FBQUE7QUFBQSxtQkFBQUEsT0FFQTtBQUFBO0FBQUEsbUJBQUFBLE9BRUE7QUFBQTtBQUFBLFdBUFo7QUFBQSxnQ0FBQUEsT0FTZTtBQUFBO0FBQUEsb0NBQUFBLE9BREM7QUFBQSxXQUVUO0FBQUE7QUFBQTtBQUFBLFdBQUE5TixRQUNQO0FBQUEsV0FBQWlHLGNBeGR5QjtBQUFBLFVBQ3BCO0FBQUE7QUFBQSxnQkFLbUM7QUFBQSxZQUFBL0IsVUFBbEMscUJBQXFCO0FBQUEsWUFBQStCLGNBQW1DO0FBQUEsWUFBQTdELFNBQUE7QUFBQSxZQUFBSCxRQUFBO0FBQUEsWUFBQXVMLGFBQzFEO0FBQUE7QUFBQTtBQUFBLGNBQUF0SixRQS9Id0I7QUFBQSxVQUFXO0FBQUEsMkJBR2I7QUFBQTtBQUFBLGVBQUF2RSxPQUhhLGNBRWI7QUFBQTtBQUFBLFdBQUFnTyxZQXdITztBQUFBLFdBQUFILGFBQzdCO0FBQUE7QUFBQTtBQUFBLE1BckhKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkE2RXFCO0FBQUEsZ0JBQWY7QUFBQSxnQkFEbUQ7QUFBQSxZQUFBL047QUFBQUEsY0FBckQsMkNBQXVDO0FBQUEsWUFBQXdHLFdBRWxCO0FBQUEsV0FDcEI7QUFBQTtBQUFBLGFBQUEwSCxVQUNtQztBQUFBLGFBQUFILGFBQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBR3dDO0FBQUEsWUFBQXRKLFVBQXRDLHFCQUFxQjtBQUFBLFlBQUErQixhQUF1QztBQUFBLFlBQUE3RCxTQUFBO0FBQUEsWUFBQUgsUUFBQTtBQUFBLFlBQUF1TCxhQUM5RDtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUkrQjtBQUFBLGdCQUFmO0FBQUEsZ0JBQWQ7QUFBQSxZQUFBL047QUFBQUEsY0FERiwyQ0FBdUM7QUFBQSxZQUFBd0csYUFFbEI7QUFBQSxXQUNwQjtBQUFBO0FBQUEsYUFBQTBILFlBQ3VDO0FBQUEsYUFBQUgsYUFDeEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFHd0M7QUFBQSxZQUFBdEosVUFBdEMscUJBQXFCO0FBQUEsWUFBQStCLGFBQXVDO0FBQUEsWUFBQTdELFNBQUE7QUFBQSxZQUFBSCxRQUFBO0FBQUEsWUFBQXVMLGFBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBSWlCO0FBQUEsWUFBZjtBQUFBLFlBRG1EO0FBQUEsUUFBQS9OO0FBQUFBLFVBQXJELDJDQUF1QztBQUFBLFFBQUF3RyxhQUVsQjtBQUFBLE9BQ3BCO0FBQUE7QUFBQSxTQUFBMEgsWUFDbUM7QUFBQSxTQUFBSCxhQUNwQztBQUFBO0FBQUE7QUFBQTtBQUFBLFlBR3dDO0FBQUEsUUFBQXRKLFVBQXRDLHFCQUFxQjtBQUFBLFFBQUErQixhQUF1QztBQUFBLFFBQUE3RCxTQUFBO0FBQUEsUUFBQUgsUUFBQTtBQUFBLFFBQUF1TCxhQUM5RDtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFBO0FBQUFBLFNBeUVGO0FBQUE7QUFBQSxLQVFGO0FBQUEsY0FBNEIsa0JBQUE3QixTQUFBO0FBQUEsaUJBRTFCO0FBQUEsY0FDRixrQkFBQUUsU0FBQTtBQUFBLGlCQUNFO0FBQUEsY0FDRixtQkFBQUQsVUFBQTtBQUFBLGtCQUNFO0FBQUEsY0FDRix5QkFBcUI7QUFBQSxNQUFyQixNQUNFO0FBQUEsY0FDRiwwQkFBcUI7QUFBQSxNQUFyQjtBQUFBLGVBQ0U7QUFBQTtBQUFBO0FBQUEsVUFBQUQsU0FFRjtBQUFBLGlCQUFvQjtBQUFBO0FBQUEsYUFLcEIsaUJBQUFwTSxRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUNFO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FFaUM7QUFBQTtBQUFBLE1BRTdCO0FBQUE7QUFBQSxLQUVOO0FBQUE7QUFBQSxhQUFBd08sZUFBQWxQLFNBQUF1TTtBQUFBQSxLQUtBLHdCQUEwQjtBQUFBLFNBQUF4TSxJQUVsQjtBQUFBLEtBQWE7QUFBQTtBQUFBLFdBQUE2QyxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FPakIsNkNBa0NpRDtBQUFBO0FBQUEsZUFBQXdFLGFBaEMxQjtBQUFBLFdBQ3ZCO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FWaUI7QUFBQTtBQUFBLFVBRWpCLDZDQXVDaUQ7QUFBQTtBQUFBLGNBQUFBLGFBckMxQjtBQUFBLFVBQ3ZCO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFMaUI7QUFBQSxXQUFBQSxhQXVCTTtBQUFBLE9BQ3ZCO0FBQUE7QUFBQSxNQXhCaUI7QUFBQTtBQUFBO0FBQUEsY0FBQUEsYUFlTTtBQUFBLFVBQ3ZCO0FBQUE7QUFBQSxVQWlCUztBQUFBO0FBQUEsc0JBQXlCO0FBQUEsZUFBQUEsYUFDWDtBQUFBLFdBQ3ZCO0FBQUE7QUFBQSxjQUFBQSxhQUV1QjtBQUFBLFVBQ3ZCO0FBQUE7QUFBQSxjQUFBQSxhQTFCdUI7QUFBQSxVQUN2QjtBQUFBO0FBQUEsY0FBQUEsYUFhdUI7QUFBQSxVQUN2QjtBQUFBO0FBQUEsY0FBQXBILFlBVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDRCQXVEd0I7QUFBQSxpQkFBMEI7QUFBQTtBQUFBLFlBQUFtUCxZQUNsQztBQUFBLFlBQUE5SixRQUNWO0FBQUE7QUFBQTtBQUFBLFlBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFVBRUk7QUFBQSxhQUFBN0UsUUFBK0I7QUFBQSxhQUFBNE8sWUFBQTtBQUFBLGFBQUFDLFlBQ3BDO0FBQUEsYUFBQXpNLGFBQ1Y7QUFBQSxZQUFlO0FBQUE7QUFBQTtBQUFBLGVBQUFiO0FBQUFBLGlCQUVUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDUjtBQUFBLGVBQUE2QixtQkFBQTtBQUFBLGVBQUFtTCxXQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQUExSixVQUV3QjtBQUFBLGNBQUFpSyxTQUErQjtBQUFBLGNBQUFDLFlBQUE7QUFBQSxjQUFBQyxZQUN2QztBQUFBLGFBQ2I7QUFBQSxjQUE0QjtBQUFBO0FBQUEsY0FBQXpOO0FBQUFBLGdCQUN2QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQ1I7QUFBQSxjQUFBNkIsbUJBQUE7QUFBQSxjQUFBbUwsV0FBQTtBQUFBO0FBQUE7QUFBQSxZQUNLO0FBQUE7QUFBQSxXQUVOO0FBQUE7QUFBQSxnQkFBQTNEO0FBQUFBLGVBQUFBLE1EM25GZjtBQUFBO0FBQUEsZ0JBQUF4SCxtQkFBQSxnQkFBQW1MLFdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQW5MLG1CQUFBLGdCQUFBbUwsV0FBQTtBQUFBO0FBQUE7QUFBQSxjQUFBM0gsY0MrbkYyQjtBQUFBLFVBQ3ZCO0FBQUE7QUFBQSxjQUFBcEgsWUFuRUk7QUFBQSxVQXdFSjtBQUFBO0FBQUEsWUFBQW1QLGNBRW9CO0FBQUEsWUFBQTlKLFVBQ1Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQUFBLFVBRUc7QUFBQSxjQUFBb0ssT0FBK0I7QUFBQSxjQUFBTCxjQUFBO0FBQUEsY0FBQUMsY0FDckM7QUFBQSxhQUNiO0FBQUEsY0FBNEI7QUFBQTtBQUFBLGNBQUF0TjtBQUFBQSxnQkFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGtCQUNSO0FBQUE7QUFBQTtBQUFBLG9CQUNLO0FBQUE7QUFBQSxlQUFBc0QsVUFBQTtBQUFBO0FBQUEsZ0JBQUErRjtBQUFBQSxlQUFBQSxRRC9vRmY7QUFBQTtBQUFBO0FBQUEsZUFBQS9GLFVDaXBGUTtBQUFBO0FBQUEsVUFaSjtBQUFBO0FBQUEsWUFBQUEsVUFBQTtBQUFBLFlBQUF6QixtQkFBQTtBQUFBLFlBQUFtTCxhQUFBO0FBQUEsWUFBQTNILGNBZXlCO0FBQUEsV0FDdkI7QUFBQTtBQUFBLGNBQUFBLGNBRXVCO0FBQUEsVUFDdkI7QUFBQTtBQUFBLGNBQUFBLGFBcEd5QjtBQUFBLFVBQ3ZCO0FBQUE7QUFBQSxjQUFBQSxhQVV1QjtBQUFBLFVBQ3ZCO0FBQUE7QUFBQTtBQUFBLFNBQUFBLFdBUXVCO0FBQUEsS0FDdkI7QUFBQSxJQUFpRDtBQUFBLGFBQUFzSSxVQUFBQyxhQUFBM1AsU0FBQXVNO0FBQUFBLEtBS3JEO0FBQUEsOEJBQzRCO0FBQUEsTUFDcEI7QUFBQSxPQVlKO0FBQUEsVUFBQXFELE1BVlU7QUFBQSxNQUNWLG1CQUF1QjtBQUFBO0FBQUEsT0FBQUM7QUFBQUEsU0FDVDtBQUFBO0FBQUEsT0FBQXpJLGFBQ1M7QUFBQSxPQUFBeUgsVUFDRDtBQUFBLE9BQUFsRCxlQUN0QjtBQUFBLE9BQUFtRSxlQUNBO0FBQUE7QUFBQTtBQUFBLFdBQUExRTtBQUFBQSxVQUFBQSxNRHhsRlI7QUFBQTtBQUFBO0FBQUEsT0FBQWhFLFdDOGxGNkI7QUFBQSxPQUFBMEksYUFFdkI7QUFBQSxNQUVBO0FBQUE7QUFBQSxJQUErQztBQUFBLGFBQUFDLGVBQUEvUCxTQUFBdU07QUFBQUEsS0EwRGpEO0FBQUEsTUFqbkJBO0FBQUEsU0FBQXpNLFdBbW5CZTtBQUFBLGNBQUFrUSxVQUFBalEsS0FBQUE7QUFBQUEsTUFLYjtBQUFBLFdBQUFLLElBQUE7QUFBQTtBQUFBLFFBQ0UsMEJBQXlCO0FBQUEsZ0JBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQ3RDO0FBQUEsY0FBQTZQLG9CQUFBalE7QUFBQUEsTUFJSixvREFFZ0Q7QUFBQTtBQUFBLGNBQUFrUSx1QkFBQWpQLFNBQUFqQixXQUFBdU07QUFBQUEsVUFBQXZNLFVBV2hEO0FBQUE7QUFBQTtBQUFBLFFBM29CRjtBQUFBLFdBQUFELElBNG9CUTtBQUFBLE9BQWE7QUFBQSxxQkFFakI7QUFBQSxnQkFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1FQUFpRDtBQUFBO0FBQUEsT0E5Qm5EO0FBQUEsV0FBQUMsWUEyQmM7QUFBQTtBQUFBO0FBQUEsS0FHcUM7QUFBQSxjQUFBbVEsNEJBQUFsUCxTQUFBakIsV0FBQXVNLFNBQUF4TTtBQUFBQSxVQUFBQyxVQUluRCxXQUFBRCxJQUFBO0FBQUE7QUFBQTtBQUFBLFFBdnBCRjtBQUFBLFdBQUFBLE1Bd3BCUTtBQUFBO0FBQUE7QUFBQSxRQUFhO0FBQUE7QUFBQTtBQUFBLFVBbkNuQjtBQUFBLFVBcUNZO0FBQUE7QUFBQTtBQUFBLDRCQUZPO0FBQUEsUUFNTTtBQUFBLFNBekN6QjtBQUFBLGlCQTBDYTtBQUFBO0FBQUE7QUFBQTtBQUFBLDREQVF1QztBQUFBO0FBQUE7QUFBQSxPQUxsRCxhQUFnQjtBQUFBLE9BN0NsQjtBQUFBLFdBQUFDLFlBaURZO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFBQUEsWUFUVjtBQUFBLE1BY0Y7QUFBQSxPQTNxQkY7QUFBQSxVQUFBRCxNQTRxQlE7QUFBQSxNQUFhO0FBQUEsT0FNakI7QUFBQSxRQWxyQko7QUFBQSxXQUFBQSxNQW1yQmdCO0FBQUEsT0FBaUIsNkJBSXBCLHFDQWhCeUM7QUFBQSxPQWM5QztBQUFBLGVBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQSwwREFkZ0M7QUFBQTtBQUFBLE1BS2pDO0FBQUEsT0F2RG5CO0FBQUE7QUFBQSxPQTBEYztBQUFBO0FBQUEsTUFXWjtBQUFBLGNBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQSx5REFuQm9DO0FBQUE7QUFBQSxjQUFBb1EsMEJBQUFuUSxTQUFBdU0sU0FBQXhNO0FBQUFBLE1BaEJwRCxPRGxzRk47QUFBQSxlQ2tzRk0sb0RBZ0JvRDtBQUFBO0FBQUEsS0FzQnREO0FBQUEsTUE3ckJBO0FBQUEsS0ErckJRO0FBQUEsVUFBQUMsWUFDSyxpQkFBQW9RLFVBRWIsR0FBQXBRLFlBQUE7QUFBQTtBQUFBLFVBQUFvUSxVQURXLEdBQUFwUSxZQUFBO0FBQUEsS0E1RFQ7QUFBQSxNQXJvQkY7QUFBQTtBQUFBLE1BQUFELElBc29CVTtBQUFBLE1BQUFnUCxXQUNSO0FBQUEsTUFBQWpQLGFBNERhO0FBQUEsVUFDZixVQUEyQjtBQUFBLEtBQTNCO0FBQUEsSUFBK0Q7QUFBQSxhQUFBK0ssYUFBQTdLLFdBQUF1TTtBQUFBQSxTQUFBdk0sVUFJL0Q7QUFBQTtBQUFBO0FBQUEsT0F4c0JBO0FBQUEsTUF5c0JHLHlDQUFpRTtBQUFBLFVBQUFBLFlBQXhDO0FBQUE7QUFBQTtBQUFBLElBQStDO0FBQUEsYUFBQXFRLGVBQUFyUSxXQUFBdU0sU0FBQS9DO0FBQUFBLFNBQUF4SixVQUszRSxXQUFBd0osTUFBQTtBQUFBO0FBQUE7QUFBQSxPQTlzQkE7QUFBQSxVQUFBekosSUErc0JNO0FBQUEsTUFBYSxxQkFTWjtBQUFBLFVBQUEySixVQVBMO0FBQUEsTUFDQTtBQUFBLGVBQ0U7QUFBQSw4REFLZTtBQUFBO0FBQUEsVUFBQTFKLFlBRGY7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUNlO0FBQUEsYUFBQXNRLGNBQUF0USxTQUFBdU07QUFBQUEsS0FLbkI7QUFBQSxNQTd0QkE7QUFBQSxTQUFBbEgsUUE4dEJNO0FBQUEsS0FBYTtBQUFBLHFCQUNILDBDQVVHO0FBQUE7QUFBQTtBQUFBLE1BVFY7QUFBQSxPQWh1QlQ7QUFBQSxVQUFBdEYsSUFrdUJRO0FBQUEsTUFBaUI7QUFBQSxPQUtyQixzREFFZTtBQUFBO0FBQUEsT0FBQXNGLFVBTEc7QUFBQSxPQUFBaEMsSUFBc0M7QUFBQSxPQUFBMEwsV0FBQTtBQUFBLE1BQ3hEO0FBQUE7QUFBQSxLQUlHO0FBQUEsSUFBWTtBQUFBLGFBQUF3QixZQUFBakUsV0FBQXRNLFNBQUFXO0FBQUFBLFNBQUE4TyxPQU1RO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFFTTtBQUFBO0FBQUEsc0JBQ0UseURBQW9DO0FBQUE7QUFBQSxhQUFBZSxxQkFBQXhRLFdBQUF1TSxTQUFBeE07QUFBQUEsU0FBQUMsVUFLdkU7QUFBQTtBQUFBO0FBQUEsT0FDRTtBQUFBLE1BR0k7QUFBQSxPQUVKO0FBQUEsUUE3dkJGO0FBQUEsT0E4dkJLLGdEQUFxRDtBQUFBLFdBQUFxRixRQUMxQztBQUFBLE9BQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQUF1SixVQWViO0FBQUEsY0FBQTVPLFlBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQU9BLGdFQU82QztBQUFBO0FBQUE7QUFBQTtBQUFBLFNBM0I3QztBQUFBLFVBbHdCTjtBQUFBLGFBQUFxRixVQW13QmtCO0FBQUEsU0FBaUI7QUFBQTtBQUFBLFdBQUF1SixZQUtiO0FBQUEsV0FBQTVPLFlBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQU4yQjtBQUFBO0FBQUEsV0FBQTRPLFlBRWI7QUFBQSxXQUFBNU8sWUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFlBSUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFYb0I7QUFBQTtBQUFBLFVBQUE0TyxZQW1CYjtBQUFBLFVBQUE1TyxZQUNkO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFwQjJCO0FBQUEsU0EwQjNCLCtEQUk2QztBQUFBO0FBQUEsV0FBQUEsWUFGN0M7QUFBQTtBQUFBO0FBQUEsZUFBQUEsWUFFQztBQUFBO0FBQUEsSUFBNEM7QUFBQSxhQUFBeVEsaUJBQUEvRCxTQUFBMU0sU0FBQThNLFFBQUFFLFFBQUFELFNBQUF4RTtBQUFBQSxTQUFBdUUsT0FjbkQsUUFBQUUsT0FBQSxRQUFBRCxRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsMEJBRzhCO0FBQUEsU0FIOUIsaUJBR21FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxRQUhuRTtBQUFBO0FBQUEsMkJBRThCO0FBQUEsVUFGOUIsaUJBRW1FO0FBQUE7QUFBQTtBQUFBLGFBQUFuSyxhQUZuRTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBSW1FO0FBQUE7QUFBQSxZQUhyQztBQUFBO0FBQUEsWUFBcUM7QUFBQTtBQUFBLFlBS3JDO0FBQUE7QUFBQSxZQUVBO0FBQUE7QUFBQSxZQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFKOUI7QUFBQSxhQUFBQSxhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFLbUU7QUFBQTtBQUFBLGFBSXJDO0FBQUE7QUFBQSxhQUNBO0FBQUE7QUFBQSxhQUhBO0FBQUE7QUFBQSxhQUlBO0FBQUE7QUFBQSxhQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FBQUEsV0FMOUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQWF1QixzQkFBbUI7QUFBQTtBQUFBLFdBQ25CLHNCQUFtQjtBQUFBO0FBQUEsV0FGbkIsc0JBQW1CO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FJeEM7QUFBQSxZQUVLLHVEQWM2QjtBQUFBLFdBZmhDO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFqQko7QUFBQTtBQUFBLFFBb0JFO0FBQUEsU0FHSyxtREFTNkI7QUFBQSxRQVZoQztBQUFBO0FBQUE7QUFBQSxRQU9GO0FBQUEsU0FFSyxxREFDNkI7QUFBQSxRQUZoQztBQUFBO0FBQUE7QUFBQSxPQTlCSjtBQUFBLFFBZ0N3QjtBQUFBLE9BUHRCO0FBQUEsUUFFSyx1REFLNkI7QUFBQSxPQU5oQztBQUFBO0FBQUE7QUFBQSxJQU1nQztBQUFBLGFBQUE4TixrQkFBQWhFLFNBQUExTSxTQUFBdUksTUFBQW9JO0FBQUFBO0FBQUFBLE1BQUFDO0FBQUFBLFFBNEJyQjtBQUFBLEtBQ2I7QUFBQSxzRUFHZ0M7QUFBQTtBQUFBLElBRWpDO0FBQUE7QUFBQTtBQUFBLElBQUFDLFVEeDVGTDtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQTtBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyx1QkFBQWxOLEtBQUE5QztBQUFBQSxRQUFBSixNQ2c2Rm9CO0FBQUEsSUFDbEIsWUFBWTtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRGo2RmQ7QUFBQTtBQUFBLGFDcTZGVTtBQUFBLEtBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNRHI2RmpDO0FBQUE7QUFBQTtBQUFBLFlBQUE0Rix3QkFBQW5OLEtBQUFqRTtBQUFBQTtBQUFBQSxLQUFBaUUsUUN5NkY0QjtBQUFBLEtBQUFsRCxNQUFBO0FBQUEsS0FBQUEsUUFDUjtBQUFBLElBQ2xCLFlBQTRCLElBQWhCLG1CQUFnQjtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRDM2RjlCO0FBQUE7QUFBQSxNQzY2Rkksa0RBQzhEO0FBQUEsS0Q5NkZsRTtBQUFBO0FBQUEsR0M4NkZrRTtBQUFBLEdEOTZGbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzg2NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYiIsImtmcHJpbnRmIiwiayIsIm8iLCJwYXJhbSIsImZtdCIsImFjYyIsImticHJpbnRmIiwiYiIsImlrZnByaW50ZiIsIm9jIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwiYnVmIiwic3ByaW50ZiIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQUMsTUNrQmE7QUFBQSxJQUNYO0FBQUE7QUFBQSxzQkFBQUM7QUFBQUEsY0FBd0I7QUFBQSxjQUFnQix1QkFBSztBQUFBO0FBQUE7QUFBQSxpQkFBZ0I7QUFBQTtBQUFBLFlBQUFDLFNBQUFMLEdBQUFNLEdBQUFKO0FBQUFBLFFBQUFDLE1BQ2xEO0FBQUEsSUFDWDtBQUFBO0FBQUEsc0JBQUFDO0FBQUFBLGNBQXdCO0FBQUEsY0FBZ0IsdUJBQUs7QUFBQTtBQUFBO0FBQUEsaUJBQWdCO0FBQUE7QUFBQSxZQUFBRyxVQUFBUCxHQUFBUSxJQUFBTjtBQUFBQSxRQUFBQyxNQUNqRDtBQUFBLElBQ1osbURBQXFCO0FBQUE7QUFBQSxZQUFBTSxRQUFBRCxJQUFBTDtBQUFBQSxJQUdGLDRCRDFCckIsb0JDMEIyQztBQUFBO0FBQUEsWUFBQU8sUUFBQUosR0FBQUgsS0FDdkIsNEJEM0JwQixtQkMyQnlDO0FBQUEsWUFBQVEsU0FBQUgsSUFBQUw7QUFBQUEsSUFDbkIsNkJENUJ0QixvQkM0QjZDO0FBQUE7QUFBQSxZQUFBUyxTQUFBTixHQUFBSDtBQUFBQSxJQUN4Qiw2QkQ3QnJCLG1CQzZCMkM7QUFBQTtBQUFBLFlBQUFVLE9BQUFWLEtBQzFCLCtCQUFrQjtBQUFBLFlBQUFXLFFBQUFYLEtBQ2pCLCtCQUFrQjtBQUFBLFlBQUFZLFNBQUFmLEdBQUFFO0FBQUFBLFFBQUFDLE1BRXZCO0FBQUEsYUFBQUgsSUFBQUk7QUFBQUEsU0FBQVksTUFFQztBQUFBLEtBQ1Y7QUFBQSxLQUNFLE9BQXFCLGNBQXJCLGlDQUFxQjtBQUFBO0FBQUEsSUFDekIsb0RBQTZCO0FBQUE7QUFBQSxZQUFBQyxRQUFBZCxLQUViLHlCQUFBZSxHQUFtQixTQUFDLE9BQUs7QUFBQSxHRHhDM0MiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzk1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsNSIsImEyIiwiYTMiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUHJpbnRmIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9CdWZmZXIiLCJTdGRsaWJfT2JqIiwicHJpbnRlcnMiLCJmaWVsZCIsIngiLCJpIiwiY3N0Iiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwicGFyYW0iLCJ0bCIsImhkIiwidmFsIiwicyIsInN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0byIsInQiLCJjb25zdHJ1Y3RvciIsIm1hdGNoIiwiZmllbGRzX29wdCIsImNzdF9jaGFyYWN0ZXJzIiwibG9jZm10IiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyIiwibGluZSIsImZpbGUiLCJ0b19zdHJpbmciLCJlIiwiY3N0X1VuY2F1Z2h0X2V4Y2VwdGlvbiIsImNzdF9VbmNhdWdodF9leGNlcHRpb25fcyIsInByaW50IiwiZmN0IiwiYXJnIiwiY2F0Y2gkIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJwb3MiLCJzbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJjc3RfcyIsImNzdF9Qcm9ncmFtX25vdF9saW5rZWRfd2l0aF9nXyIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsImEiLCJzdHIiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImIiLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsInN1Y2Nlc3MiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImNzdF9GYXRhbF9lcnJvcl9leGNlcHRpb24iLCJjc3RfRmF0YWxfZXJyb3JfZXhjZXB0aW9uX3MiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJleG4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJTdGRsaWJfUHJpbnRleGMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQ0FBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtB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eldOO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0M0V1E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFBLEtBVUo7QUFBQSxHQUFFO0FBQUEsR0FNSjtBQUFBO0FBQUE7QUFBQSxJQUFBTztBQUFBQSxNQUMyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN1g3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NDMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZnVuLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9QcmludGV4YyIsIlN0ZGxpYiIsImNvbnN0JCIsImMiLCJwYXJhbSIsImNvbXBvc2UiLCJnIiwieCIsImZsaXAiLCJ5IiwibmVnYXRlIiwicCIsInYiLCJGaW5hbGx5X3JhaXNlZCIsImV4biIsImR1bW15IiwicHJvdGVjdCIsImZpbmFsbHkkIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwiZSIsImJ0IiwicmVzdWx0Iiwid29ya19leG4iLCJ3b3JrX2J0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FBQUMsR0FBQUMsT0NnQmdCLFNBQUM7QUFBQSxZQUFBQyxRQUFBVixHQUFBVyxHQUFBQyxHQUNLLE9BQUssY0FBTCxpQkFBSztBQUFBLFlBQUFDLEtBQUFiLEdBQUFZLEdBQUFFLEdBQ1YsMEJBQUs7QUFBQSxZQUFBQyxPQUFBQyxHQUFBQyxHQUNELDJCQUFLO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRG5CMUI7QUFBQSxHQ3VCUztBQUFBO0FBQUEsY0FBQVQ7QUFBQUEsTUFBNkIsZ0NBRS9CO0FBQUEsVUFBQVUsTUFGK0IsY0FDaUI7QUFBQSxNQUExQiw0REFBaUQ7QUFBQSxLQUNuRTtBQUFBLE9BQUFDLFFBQUE7QUFBQSxZQUFBQyxRQUFBQyxVQUFBQztBQUFBQSxhQUFBQyxlQUFBZjtBQUFBQSxLQUlQLElBQUk7QUFBQSxXQUFBZ0I7QUFBQUE7QUFBQUEsT0FBQUEsSUQ3QlI7QUFBQSxPQUFBQyxLQzhCZTtBQUFBLE9BQUFQLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFtRDtBQUFBLElBRXZELFFBQUFRLFNBQU07QUFBQSxVQUFBQztBQUFBQTtBQUFBQSxNQUFBQSxXRGpDUjtBQUFBLE1BQUFDLFVDb0NvQjtBQUFBLEtBQ2Q7QUFBQSxLQUFpQjtBQUFBO0FBQUE7QUFBQSxJQUhUO0FBQUEsSUFBaUI7QUFBQSxHQUlxQjtBQUFBLEdBYnpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHpCWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NTA0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IFN5cy5pb19idWZmZXJfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9GdW4iLCJzdGRpbiIsIm9wZW5fYmluIiwib3Blbl90ZXh0Iiwib3Blbl9nZW4iLCJ3aXRoX29wZW4iLCJvcGVuZnVuIiwicyIsImljIiwicGFyYW0iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwiZmxhZ3MiLCJwZXJtIiwic2VlayIsInBvcyIsImxlbmd0aCIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiYyIsImV4biIsImlucHV0X2J5dGUiLCJuIiwiaW5wdXRfbGluZSIsImlucHV0IiwiaW5wdXRfYmlnYXJyYXkiLCJidWYiLCJvZnMiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfYmlnYXJyYXkiLCJyIiwicmVhbGx5X2lucHV0X3N0cmluZyIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsIm5yZWFkIiwicmVtIiwiaW5wdXRfbGluZXMiLCJsaW5lIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJmb2xkX2xpbmVzIiwiYWNjdSIsInNldF9iaW5hcnlfbW9kZSIsIlN0ZGxpYl9Jbl9jaGFubmVsIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFD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QSxVQUFBQSxRRG5NUjtBQUFBO0FBQUEsTUNxTTZCO0FBQUEsTUFESztBQUFBO0FBQUEsU0FBQXlCLFFBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUNtQjtBQUFBLFlBQUFFLFdBQUF6RCxHQUFBMEQsUUFBQTFDO0FBQUFBLFFBQUEwQyxPQUc3QjtBQUFBO0FBQUEsYUFBQUwsT0FBTTtBQUFBLFdBQUF2QjtBQUFBQSxVQUFBQSxNRHhNUjtBQUFBLDZCQzBNNkI7QUFBQSxNRDFNN0I7QUFBQTtBQUFBLFNBQUE0QixTQ3lNeUI7QUFBQSxLQUFhO0FBQUE7QUFBQSxHQUNMO0FBQUE7QUFBQSxJQUFBQyxrQkQxTWpDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NzcxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZGlnZXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2J5dGVzOiBpbnQgLT4gc3RyaW5nIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX2J5dGVzXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHVuc2FmZV9ieXRlcyBoYXNoX2xlbmd0aCBcIlwiIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIjtcbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YmJ5dGVzXCI7XG4gICAgdW5zYWZlX2J5dGVzIGhhc2hfbGVuZ3RoIFwiXCIgYiBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IGJ1ZiAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggYnVmIDAgbjtcbiAgICAgICAgICAgIGRvX3JlYWQgKHRvcmVhZCAtIG4pXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgaW4gZG9fcmVhZCB0b3JlYWRcbiAgICBlbmRcblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gaGFzaF9sZW5ndGhcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiBoYXNoX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGhhc2hfbGVuZ3RoICogMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxubW9kdWxlIEJMQUtFMTI4ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAxNiBlbmQpXG5tb2R1bGUgQkxBS0UyNTYgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDMyIGVuZClcbm1vZHVsZSBCTEFLRTUxMiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gNjQgZW5kKVxuXG4oKiBNRDUgaGFzaGluZyAqKVxuXG5tb2R1bGUgTUQ1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID0gMTZcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG4gIGV4dGVybmFsIHVuc2FmZV9ieXRlczogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9ieXRlc1wiXG4gIGV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9XG4gICAgdW5zYWZlX2J5dGVzIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYiAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3ViYnl0ZXNcIlxuICAgIGVsc2UgdW5zYWZlX2J5dGVzIGIgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYmxha2UyX2J5dGVzIiwiY2FtbF9ibGFrZTJfZmluYWwiLCJjYW1sX2JsYWtlMl9zdHJpbmciLCJjYW1sX2JsYWtlMl91cGRhdGUiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9tZDVfY2hhbiIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZ2V0IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfSW5fY2hhbm5lbCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJoZXhfb2Zfc3RyaW5nIiwiZCIsImNoYXJfaGV4IiwibiIsImxlbiIsInJlc3VsdCIsImkiLCJ4IiwiY3N0X0RpZ2VzdF9vZl9oZXgiLCJzdHJpbmdfb2ZfaGV4IiwicyIsImRpZ2l0IiwiYyIsImNzdF9EaWdlc3Rfc3ViYnl0ZXMiLCJjc3RfRGlnZXN0X3N1YnN0cmluZyIsImNzdF9EaWdlc3RfdG9faGV4IiwiQkxBS0UyIiwiWCIsImhhc2hfbGVuZ3RoIiwiY29tcGFyZSIsImVxdWFsIiwiY3N0Iiwic3RyaW5nIiwic3RyIiwiYnl0ZXMiLCJiIiwic3Vic3RyaW5nIiwib2ZzIiwic3ViYnl0ZXMiLCJjaGFubmVsIiwiaWMiLCJ0b3JlYWQiLCJidWYiLCJjdHgiLCJidWZfc2l6ZSIsImZpbGUiLCJmaWxlbmFtZSIsIm91dHB1dCIsImNoYW4iLCJkaWdlc3QiLCJpbnB1dCIsInRvX2hleCIsIm9mX2hleCIsIkJMQUtFMTI4IiwiQkxBS0UyNTYiLCJCTEFLRTUxMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFB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V0RwRUo7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUExQixVQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFFLE9BQUFDO0FBQUFBLElDbUtJLDBEQUF1QztBQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0FHdkMsb0RBQWlDO0FBQUEsWUFBQUMsVUFBQUgsS0FBQUksS0FBQXZCO0FBQUFBLElBR2pDO0FBQUEsS0FFSyxxQ0FBeUI7QUFBQSxJQUR6QixpREFDeUI7QUFBQTtBQUFBLFlBQUF3QixTQUFBSCxHQUFBRSxLQUFBdkI7QUFBQUEsSUFHOUI7QUFBQSxLQUVLLGtDQUFzQjtBQUFBLElBRHRCLGdEQUNzQjtBQUFBO0FBQUEsWUFBQStCLEtBQUFDO0FBQUFBLElBRzNCO0FBQUEsc0NBQUFOLElBQTZDLDRCQUFlLEdBQUM7QUFBQTtBQUFBLFlBQUFPLE9BQUFDLE1BQUFDLFFBRXRDLDBDQUF5QjtBQUFBLFlBQUFDLE1BQUFGLE1BRWpDLHNDQUEyQjtBQUFBLFlBQUFHLE9BQUF4QztBQUFBQSxJQUcxQztBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLFlBQUF5QyxPQUFBaEM7QUFBQUEsSUFHZjtBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLEdEL0xuQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1MDEwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2JhX2NyZWF0ZSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9iYV9zZXRfMyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX2JhX3NsaWNlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfbXVsIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3lzIiwia2luZF9zaXplX2luX2J5dGVzIiwicGFyYW0iLCJjbG9vcCIsImFyciIsImlkeCIsImNvbCIsIm1heCIsImoiLCJmbG9vcCIsImluaXQiLCJraW5kIiwibGF5b3V0IiwiZGltcyIsImRsZW4iLCJhIiwibiIsImQiLCJpIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSIsImdldCIsInNldCIsIm9mX3ZhbHVlIiwidiIsImRpbSIsInNsaWNlIiwib2ZfYXJyYXkiLCJkYXRhIiwiYmEiLCJvZnMiLCJkaW0xIiwiZGltMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsInJvdyIsImRpbTMiLCJzbGljZV9sZWZ0XzEiLCJtIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJrIiwiY3N0X0JpZ2FycmF5X0FycmF5M19vZl9hcnJheV9uIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMs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ImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yYW5kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVsbHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2JsaXQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZ3JlYXRlcnRoYW4iLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbHhtX25leHQiLCJjYW1sX21vZCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfU3lzIiwiU3RkbGliX0ludDMyIiwiU3RkbGliX0ludDY0IiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX0RpZ2VzdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfTmF0aXZlaW50IiwiY3JlYXRlIiwicGFyYW0iLCJzZXQiLCJzIiwiaTEiLCJpMiIsImkzIiwiaTQiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4IiwidG9fYmluYXJ5X3N0cmluZyIsImJ1ZiIsImkiLCJvZl9iaW5hcnlfc3RyaW5nIiwiY29weSIsInNyYyIsImRzdCIsInJlaW5pdCIsInNlZWQiLCJuIiwiYiIsImQxIiwiZDIiLCJtYWtlIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiaW50X2F1eCIsIm1hc2siLCJyIiwidiIsIm1heF9pbnQzMSIsImludCIsImJvdW5kIiwibWF4X2ludDMyIiwiZnVsbF9pbnQiLCJpbnRfaW5fcmFuZ2VfYXV4IiwibWluIiwibWF4IiwibmJpdHMiLCJzcGFuIiwiZHJvcCIsImludF9pbl9yYW5nZSIsImJpdHMzMiIsImludDMyYXV4IiwiaW50MzIiLCJpbnQzMl9pbl9yYW5nZSIsImludDY0YXV4IiwiaW50NjQiLCJpbnQ2NF9pbl9yYW5nZSIsIm5hdGl2ZWJpdHMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfaW5fcmFuZ2UiLCJmbG9hdCIsImJvb2wiLCJzcGxpdCIsIm1rX2RlZmF1bHQiLCJyYW5kb21fa2V5Iiwic2NhbGUiLCJiaXRzNjQiLCJmdWxsX2luaXQiLCJpbml0Iiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGlDQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElB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O0FBQUEsSUF0R3pCLHVCQXNHb0Q7QUFBQTtBQUFBLFlBQUE4QyxhQUFBaEQ7QUFBQUEsSUFDbkIsT0FBMkIsV0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBMEQsVUFBQXpDO0FBQUFBLElBRTlCLE9BQTJCLE9BQTNCLG1EQUFnQztBQUFBO0FBQUEsWUFBQTBDLEtBQUExQyxNQUNsRCwyQkFBb0I7QUFBQSxZQUFBMkMsVUFBQTVELE9BQ1AsT0FBZSxVQUFmLHdCQUFlO0FBQUEsWUFBQXFELFFBQUFyRDtBQUFBQSxJQUlqQixPQUEyQixNQUEzQiw2Q0FBMkI7QUFBQTtBQUFBLFlBQUE2RCxVQUFBN0Q7QUFBQUEsSUFJeEIsT0FBMkIsS0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBOEQsVUFBQWhEO0FBQUFBLFFBQUFDLE1BQzFCO0FBQUEsSUFoUzNCLDZCQWdTd0Q7QUFBQTtBQUFBLEdBakNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcFY5RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1OTAyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxubGV0IG1lbSBoIGtleSA9XG4gIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9hcnJheV9tYWtlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY29tcGFyZSIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfc3lzX2dldGVudiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU3lzIiwiU3RkbGliIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfUmFuZG9tIiwiU3RkbGliX1NlcSIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3RyaW5nIiwib25nb2luZ190cmF2ZXJzYWwiLCJoIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsImV4biIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJwYXJhbSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nX2tleSIsInBvd2VyXzJfYWJvdmUiLCJ4IiwibiIsImNyZWF0ZSIsIm9wdCIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsInMiLCJzZWVkIiwiY2xlYXIiLCJyZXNldCIsImxlbiIsImNvcHlfYnVja2V0bGlzdCIsImtleSIsImRhdGEiLCJuZXh0IiwicHJlYyIsImNvcHkiLCJsZW5ndGgiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiaSIsImNlbGwiLCJuaWR4IiwibWF0Y2giLCJyZXNpemUiLCJvc2l6ZSIsIml0ZXIiLCJvbGRfdHJhdiIsImQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzbG90IiwiZm9sZCIsImluaXQiLCJhY2N1IiwiYiIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsIm0iLCJoaXN0byIsImwiLCJ0b19zZXEiLCJ0YmwiLCJ0YmxfZGF0YSIsImF1eCIsImJ1Y2siLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJNYWtlU2VlZGVkIiwiSCIsImtleV9pbmRleCIsImFkZCIsImJ1Y2tldCIsInJlbW92ZSIsImsiLCJmaW5kIiwiazEiLCJkMSIsIm5leHQxIiwiazIiLCJkMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9vcHQiLCJmaW5kX2FsbCIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwicmVwbGFjZSIsIm1lbSIsImFkZF9zZXEiLCJ2IiwicmVwbGFjZV9zZXEiLCJvZl9zZXEiLCJNYWtlIiwiZXF1YWwiLCJzZWVkZWRfaGFzaCIsImluY2x1ZGUiLCJzeiIsImhhc2giLCJoYXNoX3BhcmFtIiwibjEiLCJuMiIsInJlYnVpbGQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUEsWUFBQUMsa0JBQUFDO0FBQUFBLFFBQUEsSUN3Q0U7QUFBQTtBQUFBLEdBQ3FCO0FBQUEsWUFBQUMsdUJBQUFELEdBR3JCLDRCQUFrQztBQUFBLEdENUNwQyxZQ2tEUSxrQ0FBQUUsU0FBQTtBQUFBLFNBQUFDO0FBQUFBLFFBQUFBLE1EbERSO0FBQUE7QUFBQSxnQkNtRFEsaUNBQUFELFNBQUE7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxRRG5EUjtBQUFBO0FBQUEsU0FBQUQsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFFLHFCQ29ERTtBQUFBLElBQUFDLGFBRWU7QUFBQSxZQUFBQyxVQUFBQztBQUFBQSxJQUVFLGlEQUEwQjtBQUFBO0FBQUEsWUFBQUMsY0FB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RCxJQUZnQjtBQUFBLE1BQUE3QyxPQUFBO0FBQUEsVUFJaEI7QUFBQSxLQUFhO0FBQUE7QUFBQTtBQUFBLEdBR3lCO0FBQUEsWUFBQStELFFBQUE5QixLQUFBdEI7QUFBQUEsSUFHMUM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyxxQkFBWTtBQUFBO0FBQUEsZUFBRTtBQUFBO0FBQUEsWUFBQW9CLFlBQUFoQyxLQUFBdEI7QUFBQUEsSUFHckM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyx5QkFBZ0I7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFxQixPQUFBdkQ7QUFBQUEsUUFBQXNCLE1BRy9CO0FBQUEsSUFDVjtBQUFBLElBQWlCO0FBQUEsR0FDZDtBQUFBLFlBQUEyQyxRQUFBdkYsS0FBQWQ7QUFBQUE7QUFBQUEsS0FBQWdCLFNBRU8sZUFBVztBQUFBLEtBQUFDLElBQ2I7QUFBQSxJQUNSO0FBQUE7QUFBQSxVQUNtQztBQUFBLE1BQUFDLE9BQWxCO0FBQUE7QUFBQSxTQUFBQSxPQUNWO0FBQUE7QUFBQSxTQUVQO0FBQUEsS0FBQWxCLE1BRVM7QUFBQSxJQUlUO0FBQUEsa0JBQW1CO0FBQUEsSUFBbUM7QUFBQSxHQUNwRDtBQUFBLEdBOWpCeUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQzRDdEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MjY3MTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX3N1YnN0cmluZyBvZiB7IHNvdXJjZTpzdHJpbmc7IHBvczppbnQ7IGxlbjppbnR9ICgqIHNsaWNlIG9mIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBtdXRhYmxlIHBwX291dF93aWR0aCA6IHN0cmluZyAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X3dpZHRoOiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxubGV0IHBwX3N0cmluZ193aWR0aCBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3dpZHRoIHMgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyBzIHBvcyBsZW5cbmFuZCBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgPSBzdGF0ZS5wcF9vdXRfd2lkdGggcyB+cG9zIH5sZW5cbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHNsaWNlICopXG5sZXQgZm9ybWF0X3BwX3N1YnN0cmluZyBzdGF0ZSBzaXplIH5wb3MgfmxlbiBzb3VyY2UgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzb3VyY2U7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAocHBfc3RyaW5nX3dpZHRoIHN0YXRlIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG4gIHwgUHBfc3Vic3RyaW5nIHtzb3VyY2U7cG9zO2xlbn0gLT5cbiAgICBmb3JtYXRfcHBfc3Vic3RyaW5nIHN0YXRlIHNpemUgfnBvcyB+bGVuIHNvdXJjZVxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDw+IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIHBwX3N0cmluZ193aWR0aCBzdGF0ZSBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJGb3JtYXQ6IFVuc3luY2hyb25pemVkIGFjY2VzcyB0byBmb3JtYXR0ZXJcIlxuICAgICAgfCBTb21lIF8gLT4gICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICAgIGxldCBzaXplID1cbiAgICAgICAgICBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHlcbiAgICAgICAgaW5cbiAgICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbigqIFRvIGVucXVldWUgc3Vic3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gc3RhdGUgc2l6ZSBzb3VyY2UgPVxuICBsZXQgdG9rZW4gPSBQcF9zdWJzdHJpbmcge3NvdXJjZTtwb3M7bGVufSBpblxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgbGV0IHNpemUgPSBwcF9zdHJpbmdfd2lkdGggc3RhdGUgcyBpblxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgc2l6ZSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3Vic3RyaW5nIF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChwcF9zdHJpbmdfd2lkdGggc3RhdGUgcykgc1xuXG5sZXQgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdWJzdHJpbmdfYXMgfnBvcyB+bGVuIHN0YXRlIChTaXplLm9mX2ludCBzaXplKSBzXG5cbmxldCBwcF9wcmludF9zdWJzdHJpbmcgfnBvcyB+bGVuIHN0YXRlIHMgPVxuICBsZXQgd2lkdGggPSBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgaW5cbiAgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSB3aWR0aCBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cbmxldCBwcF9wcmludF9ub3RoaW5nIF9zdGF0ZSAoKSA9ICgpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOnRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPVxuICAgICAgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZVxuICAgICAgKyB3aWR0aFxuICAgICAgKyBwcF9zdHJpbmdfd2lkdGggc3RhdGUgYWZ0ZXJcbiAgICBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBpZiBtYXJnaW4gPj0gcHBfaW5maW5pdHkgdGhlblxuICAgIEVycm9yIFwibWFyZ2luID49IHBwX2luZmluaXR5XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF93aWR0aCA9IGYyO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X3dpZHRoIDwtIGYyO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF93aWR0aCA9IHN0YXRlLnBwX291dF93aWR0aDtcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG5sZXQgdXRmXzhfc2NhbGFyX3dpZHRoIHMgfnBvcyB+bGVuID1cbiAgbGV0IHJlYyB3aWR0aCBzIGNvdW50IGN1cnJlbnQgc3RvcCA9XG4gICAgaWYgY3VycmVudCA+PSBzdG9wIHRoZW4gY291bnRcbiAgICBlbHNlXG4gICAgICBsZXQgZGVjb2RlID0gU3RyaW5nLmdldF91dGZfOF91Y2hhciBzIGN1cnJlbnQgaW5cbiAgICAgIGxldCBhZHZhbmNlID0gVWNoYXIudXRmX2RlY29kZV9sZW5ndGggZGVjb2RlIGluXG4gICAgICB3aWR0aCBzIChjb3VudCArIDEpIChjdXJyZW50K2FkdmFuY2UpIHN0b3BcbiAgaW5cbiAgd2lkdGggcyAwIHBvcyAocG9zICsgbGVuKVxuXG5sZXQgYXNjaWlfd2lkdGggXyB+cG9zOl8gfmxlbiA9IGxlblxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9vdXRfd2lkdGggPSB1dGZfOF9zY2FsYXJfd2lkdGggaW5cbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfb3V0X3dpZHRoO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3N1YnN0cmluZyB+cG9zIH5sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZyAgfnBvcyB+bGVuIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBhc19sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFzX2xlbiB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3Vic3RyaW5nIH5wb3M6IWxlZnQgfmxlbjooIXJpZ2h0IC0gIWxlZnQpIHBwZiBzO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBmb3JtYXRfdGV4dCBmbXQ2ID1cbiAgbGV0IG9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIGluXG4gIGxldCBGb3JtYXQoZm10LF8pID0gZm10NiBpblxuICBsZXQgY29uc19zcGFjZSB+c3BhY2VzIGZtdCA9IEZvcm1hdHRpbmdfbGl0IChCcmVhayhcIlwiLHNwYWNlcywwKSwgZm10KSBpblxuICBsZXQgcmVjIHNraXBfYW5kX2NvdW50X3doaXRlcyBzcGFjZXMgbmV3bGluZXMgbGVuIHMgcG9zID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gcG9zLCBzcGFjZXMsIG5ld2xpbmVzIGVsc2VcbiAgICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgKDErc3BhY2VzKSBuZXdsaW5lcyBsZW4gcyAoMStwb3MpXG4gICAgfCAnXFxuJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgc3BhY2VzICgxK25ld2xpbmVzKSBsZW4gcyAoMStwb3MpXG4gICAgfCBfIC0+IHBvcywgc3BhY2VzLCBuZXdsaW5lc1xuICBpblxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBzcGxpdCBsZW4gcyBwb3MgZm10ID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gZm10XG4gICAgZWxzZVxuICAgICAgbGV0IHNwYWNlID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICcgJyBpblxuICAgICAgbGV0IG5ld2xpbmUgPSBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgaW5cbiAgICAgIGxldCBmaXJzdCA9IG1hdGNoIHNwYWNlLCBuZXdsaW5lIHdpdGhcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChtaW4geCB5KVxuICAgICAgICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgICAgIGluXG4gICAgICBtYXRjaCBmaXJzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBTdHJpbmdfbGl0ZXJhbChTdHJpbmcuc3ViIHMgcG9zIChsZW4tcG9zKSwgZm10KVxuICAgICAgfCBTb21lIHNlcCAtPlxuICAgICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgcG9zIChzZXAtcG9zKSBpblxuICAgICAgICAgIGxldCBwb3MsIHNwYWNlcywgbmV3bGluZXMgPSBza2lwX2FuZF9jb3VudF93aGl0ZXMgMCAwIGxlbiBzIHNlcCBpblxuICAgICAgICAgIGxldCByZXBlYXQsIGJyZWFrID1cbiAgICAgICAgICAgIG1hdGNoIG5ld2xpbmVzLCBzcGFjZXMgd2l0aFxuICAgICAgICAgICAgfCAoMHwxKSwgc3BhY2VzIC0+IDEsIEJyZWFrKFwiXCIsIG1heCBzcGFjZXMgMSwgMClcbiAgICAgICAgICAgIHwgYmwsIF8gLT4gYmwsIEZvcmNlX25ld2xpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0cmluZ19saXRlcmFsKGJlZm9yZSwgY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQpXG4gIGFuZFtAdGFpbF9tb2RfY29uc10gY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQgPVxuICAgIGlmIHJlcGVhdCA9IDAgdGhlblxuICAgICAgc3BsaXQgbGVuIHMgcG9zIGZtdFxuICAgIGVsc2VcbiAgICAgIEZvcm1hdHRpbmdfbGl0IChicmVhaywgY29ucyB+cmVwZWF0OihyZXBlYXQtMSkgYnJlYWsgbGVuIHMgcG9zIGZtdClcbiAgaW5cbiAgbGV0IGNvbmNhdCBzIGZtdCA9IG1hdGNoIHMgd2l0aFxuICAgIHwgYENoYXIgKCcgJ3wnXFxuJykgLT4gY29uc19zcGFjZSB+c3BhY2VzOjEgZm10XG4gICAgfCBgQ2hhciBjIC0+IENoYXJfbGl0ZXJhbChjLGZtdClcbiAgICB8IGBTdHJpbmcgcyAtPiBzcGxpdCAoU3RyaW5nLmxlbmd0aCBzKSBzIDAgZm10IGluXG4gIGxldCBmbXQgPSBzdHJpbmdfY29uY2F0X21hcCB7Zj1jb25jYXR9IGZtdCBpblxuICBGb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXQuc3RyaW5nX29mX2ZtdCBmbXQpXG5cblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9RdWV1ZSIsIlN0ZGxpYiIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfRG9tYWluIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9TdGFjayIsIlN0ZGxpYl9VY2hhciIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQnl0ZXMiLCJpZCIsIngiLCJTdHJpbmdfdGFnIiwicHBfZW5xdWV1ZSIsInN0YXRlIiwidG9rZW4iLCJwcF9vdXRwdXRfc3RyaW5nIiwicyIsInBwX3N0cmluZ193aWR0aCIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJzaXplIiwidGV4dCIsImNzdCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInBhcmFtIiwid2lkdGgiLCJhZnRlciIsIm9mZnNldCIsImJlZm9yZSIsImluZGVudCIsInJlYWxfaW5kZW50IiwibiIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsIm1hdGNoIiwidGFicyIsImFkZF90YWIiLCJscyIsImwiLCJsZW5ndGgiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImxlbiIsInBvcyIsInNvdXJjZSIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSIsImluc2VydGlvbl9wb2ludCIsImZpcnN0IiwidGFiIiwidGFpbCIsImhlYWQiLCJ0eSIsInRib3giLCJwcF9pbmZpbml0eSIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJ0b2siLCJlbnF1ZXVlX3N0cmluZ19hcyIsInVua25vd24iLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInNldF9zaXplIiwicXVldWVfZWxlbSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJiIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwiemVybyIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJlbmRfd2l0aF9uZXdsaW5lIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9zdWJzdHJpbmdfYXMiLCJwcF9wcmludF9zdWJzdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsImkiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwiYyIsInBwX3ByaW50X25vdGhpbmciLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwibXNnIiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJ1cGRhdGUiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJqIiwiaCIsImciLCJmMiIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJvYyIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJ1dGZfOF9zY2FsYXJfd2lkdGgiLCJjdXJyZW50Iiwic3RvcCIsImNvdW50IiwiZGVjb2RlIiwiYWR2YW5jZSIsImFzY2lpX3dpZHRoIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwib3V0cHV0IiwiZmx1c2giLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsInN0ZGJ1Zl9rZXkiLCJzdHJfZm9ybWF0dGVyX2tleSIsImJ1ZmZlcmVkX291dF9zdHJpbmciLCJrZXkiLCJzdHIiLCJvZnMiLCJidWZmZXJlZF9vdXRfZmx1c2giLCJidWYiLCJzdGRfYnVmX2tleSIsImVycl9idWZfa2V5Iiwic3RkX2Zvcm1hdHRlcl9rZXkiLCJlcnJfZm9ybWF0dGVyX2tleSIsImdldF9zdGRfZm9ybWF0dGVyIiwiZ2V0X2Vycl9mb3JtYXR0ZXIiLCJnZXRfc3RyX2Zvcm1hdHRlciIsImdldF9zdGRidWYiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciIsInN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0XyIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJ2Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJ3IiwicHJpbnRfc3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nX2FzIiwiYXNfbGVuIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2NoYXIiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9pdGVyIiwib3B0IiwiaXRlciIsInBwX3YiLCJwcF9zZXAiLCJpc19maXJzdCIsInBwX3ByaW50X2xpc3QiLCJwcF9wcmludF9hcnJheSIsInBwX3ByaW50X3NlcSIsInNlcSIsInBwX3ByaW50X3RleHQiLCJsZWZ0IiwicmlnaHQiLCJmb3JtYXRfdGV4dCIsImZtdDYiLCJmbXQiLCJza2lwX2FuZF9jb3VudF93aGl0ZXMiLCJzcGFjZXMiLCJuZXdsaW5lcyIsImNvbmNhdCIsInZhcmlhbnQiLCJzcGFjZSIsIm5ld2xpbmUiLCJ5Iiwic2VwIiwiYnJlYWskIiwicmVwZWF0IiwiYmxvY2siLCJkc3QiLCJwcF9wcmludF9vcHRpb24iLCJub25lIiwicHBfcHJpbnRfcmVzdWx0Iiwib2siLCJlcnJvciIsImUiLCJwcF9wcmludF9laXRoZXIiLCJyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nX2xpdCIsIm91dHB1dF9hY2MiLCJhY2MiLCJwIiwiYnR5Iiwic3RycHV0X2FjYyIsImtmcHJpbnRmIiwiayIsImlrZnByaW50ZiIsImlmcHJpbnRmIiwiZnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrZHByaW50ZiIsImRwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJmcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEdGpERCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTU3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsIlN0ZGxpYl9PYmoiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJuYW1lIiwiZXhuIiwic2xvdCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw0QkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxtQkFBQUMsTUFBQUM7QUFBQUE7QUFBQUEsS0FBQSxJQ3lCZ0I7QUFBQSxLQUFBQyxPQUFBO0FBQUEsSUFDZCw0Q0FBOEI7QUFBQTtBQUFBLEdEMUJoQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImZtdC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvZm10L2ZtdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIGZtdCBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubGV0IGludmFsaWRfYXJnJyA9IGludmFsaWRfYXJnXG5cbigqIEVycm9ycyAqKVxuXG5sZXQgZXJyX3N0cl9mb3JtYXR0ZXIgPSBcIkZvcm1hdC5zdHJfZm9ybWF0dGVyIGNhbid0IGJlIHNldC5cIlxuXG4oKiBTdGFuZGFyZCBvdXRwdXRzICopXG5cbmxldCBzdGRvdXQgPSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IHN0ZGVyciA9IEZvcm1hdC5lcnJfZm9ybWF0dGVyXG5cbigqIEZvcm1hdHRpbmcgKilcblxubGV0IHBmID0gRm9ybWF0LmZwcmludGZcbmxldCBwciA9IEZvcm1hdC5wcmludGZcbmxldCBlcHIgPSBGb3JtYXQuZXByaW50ZlxubGV0IHN0ciA9IEZvcm1hdC5hc3ByaW50ZlxubGV0IGtwZiA9IEZvcm1hdC5rZnByaW50ZlxubGV0IGtzdHIgPSBGb3JtYXQua2FzcHJpbnRmXG5sZXQgZmFpbHdpdGggZm10ID0ga3N0ciBmYWlsd2l0aCBmbXRcbmxldCBmYWlsd2l0aF9ub3RyYWNlIGZtdCA9IGtzdHIgKGZ1biBzIC0+IHJhaXNlX25vdHJhY2UgKEZhaWx1cmUgcykpIGZtdFxubGV0IGludmFsaWRfYXJnIGZtdCA9IGtzdHIgaW52YWxpZF9hcmcgZm10XG5sZXQgZXJyb3IgZm10ID0ga3N0ciAoZnVuIHMgLT4gRXJyb3IgcykgZm10XG5sZXQgZXJyb3JfbXNnIGZtdCA9IGtzdHIgKGZ1biBzIC0+IEVycm9yIChgTXNnIHMpKSBmbXRcblxuKCogRm9ybWF0dGVycyAqKVxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGZsdXNoIHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKVxubGV0IG5vcCBmbXQgcHBmID0gKClcbmxldCBhbnkgZm10IHBwZiBfID0gcGYgcHBmIGZtdFxubGV0IHVzaW5nIGYgcHAgcHBmIHYgPSBwcCBwcGYgKGYgdilcbmxldCBjb25zdCBwcF92IHYgcHBmIF8gPSBwcF92IHBwZiB2XG5sZXQgaWYnIGJvb2wgcHAgPSBpZiBib29sIHRoZW4gcHAgZWxzZSBub3BcbmxldCBmbXQgZm10IHBwZiA9IHBmIHBwZiBmbXRcblxuKCogU2VwYXJhdG9ycyAqKVxuXG5sZXQgY3V0IHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2N1dCBwcGYgKClcbmxldCBzcCBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zcGFjZSBwcGYgKClcbmxldCBzcHMgbiBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9icmVhayBwcGYgbiAwXG5sZXQgY29tbWEgcHBmIF8gPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBcIixcIjsgc3AgcHBmICgpXG5sZXQgc2VtaSBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIFwiO1wiOyBzcCBwcGYgKClcblxuKCogU2VxdWVuY2luZyAqKVxuXG5sZXQgaXRlciA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfZWx0IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX2VsdCB2ID1cbiAgICBpZiAhaXNfZmlyc3QgdGhlbiAoaXNfZmlyc3QgOj0gZmFsc2UpIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9lbHQgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF9lbHQgdlxuXG5sZXQgaXRlcl9iaW5kaW5ncyA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfYmluZGluZyBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF9iaW5kaW5nIGsgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gKGlzX2ZpcnN0IDo9IGZhbHNlKSBlbHNlIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfYmluZGluZyBwcGYgKGssIHYpXG4gIGluXG4gIGl0ZXIgcHBfYmluZGluZyB2XG5cbmxldCBhcHBlbmQgcHBfdjAgcHBfdjEgcHBmIHYgPSBwcF92MCBwcGYgdjsgcHBfdjEgcHBmIHZcbmxldCAoICsrICkgPSBhcHBlbmRcbmxldCBjb25jYXQgP3NlcCBwcHMgcHBmIHYgPSBpdGVyID9zZXAgTGlzdC5pdGVyIChmdW4gcHBmIHBwIC0+IHBwIHBwZiB2KSBwcGYgcHBzXG5cbigqIEJveGVzICopXG5cbmxldCBib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2JveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaGJveCBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hib3ggcHBmICgpOyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgdmJveCA/KGluZGVudCA9IDApIHBwX3YgcHBmIHYgPVxuICBGb3JtYXQuKHBwX29wZW5fdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaHZib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2h2Ym94IHBwZiBpbmRlbnQ7IHBwX3YgcHBmIHY7IHBwX2Nsb3NlX2JveCBwcGYgKCkpXG5cbmxldCBob3Zib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hvdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG4oKiBCcmFja2V0cyAqKVxuXG5sZXQgc3Vycm91bmQgczEgczIgcHBfdiBwcGYgdiA9XG4gIEZvcm1hdC4ocHBfcHJpbnRfc3RyaW5nIHBwZiBzMTsgcHBfdiBwcGYgdjsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzMilcblxubGV0IHBhcmVucyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCIoXCIgXCIpXCIgcHBfdilcbmxldCBicmFja2V0cyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCJbXCIgXCJdXCIgcHBfdilcbmxldCBveGZvcmRfYnJhY2tldHMgcHBfdiA9IGJveCB+aW5kZW50OjIgKHN1cnJvdW5kIFwiW3xcIiBcInxdXCIgcHBfdilcbmxldCBicmFjZXMgcHBfdiA9IGJveCB+aW5kZW50OjEgKHN1cnJvdW5kIFwie1wiIFwifVwiIHBwX3YpXG5sZXQgcXVvdGUgPyhtYXJrID0gXCJcXFwiXCIpIHBwX3YgPVxuICBsZXQgcHBfbWFyayBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMSBtYXJrIGluXG4gIGJveCB+aW5kZW50OjEgKHBwX21hcmsgKysgcHBfdiArKyBwcF9tYXJrKVxuXG4oKiBTdGRsaWIgdHlwZXMgZm9ybWF0dGVycyAqKVxuXG5sZXQgYm9vbCA9IEZvcm1hdC5wcF9wcmludF9ib29sXG5sZXQgaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxubGV0IG5hdGl2ZWludCBwcGYgdiA9IHBmIHBwZiBcIiVuZFwiIHZcbmxldCBpbnQzMiBwcGYgdiA9IHBmIHBwZiBcIiVsZFwiIHZcbmxldCBpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMZFwiIHZcbmxldCB1aW50IHBwZiB2ID0gcGYgcHBmIFwiJXVcIiB2XG5sZXQgdWludDMyIHBwZiB2ID0gcGYgcHBmIFwiJWx1XCIgdlxubGV0IHVpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMdVwiIHZcbmxldCB1bmF0aXZlaW50IHBwZiB2ID0gcGYgcHBmIFwiJW51XCIgdlxubGV0IGNoYXIgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxubGV0IHN0cmluZyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmxldCBidWZmZXIgcHBmIGIgPSBzdHJpbmcgcHBmIChCdWZmZXIuY29udGVudHMgYilcbmxldCBleG4gcHBmIGUgPSBzdHJpbmcgcHBmIChQcmludGV4Yy50b19zdHJpbmcgZSlcbmxldCBleG5fYmFja3RyYWNlIHBwZiAoZSwgYnQpID1cbiAgbGV0IHBwX2JhY2t0cmFjZV9zdHIgcHBmIHMgPVxuICAgIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAoKiB0aGVyZSdzIGEgbmV3bGluZSBhdCB0aGUgZW5kICopIGluXG4gICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgPVxuICAgICAgaWYgcmlnaHQgPSBzdG9wIHRoZW4gc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzIGxlZnQgKHJpZ2h0IC0gbGVmdCkpIGVsc2VcbiAgICAgIGlmIHMuW3JpZ2h0XSA8PiAnXFxuJyB0aGVuIGxvb3AgbGVmdCAocmlnaHQgKyAxKSBlbHNlXG4gICAgICBiZWdpblxuICAgICAgICBzdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgbGVmdCAocmlnaHQgLSBsZWZ0KSk7XG4gICAgICAgIGN1dCBwcGYgKCk7XG4gICAgICAgIGxvb3AgKHJpZ2h0ICsgMSkgKHJpZ2h0ICsgMSlcbiAgICAgIGVuZFxuICAgIGluXG4gICAgaWYgcyA9IFwiXCIgdGhlbiAoc3RyaW5nIHBwZiBcIk5vIGJhY2t0cmFjZSBhdmFpbGFibGUuXCIpIGVsc2VcbiAgICBsb29wIDAgMFxuICBpblxuICBwZiBwcGYgXCJAWzx2PkV4Y2VwdGlvbjogJWFALCVhQF1cIlxuICAgIGV4biBlIHBwX2JhY2t0cmFjZV9zdHIgKFByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGJ0KVxuXG5sZXQgZmxvYXQgcHBmIHYgPSBwZiBwcGYgXCIlZ1wiIHZcbmxldCByb3VuZCB4ID0gZmxvb3IgKHggKy4gMC41KVxubGV0IHJvdW5kX2RmcmFjIGQgeCA9XG4gIGlmIHggLS4gKHJvdW5kIHgpID0gMC4gdGhlbiB4IGVsc2UgICAgICAgICAgICAgICAgICAgKCogeCBpcyBhbiBpbnRlZ2VyLiAqKVxuICBsZXQgbSA9IDEwLiAqKiAoZmxvYXRfb2ZfaW50IGQpIGluICAgICAgICAgICAgICAgICgqIG0gbW92ZXMgMTBeLWQgdG8gMS4gKilcbiAgKGZsb29yICgoeCAqLiBtKSArLiAwLjUpKSAvLiBtXG5cbmxldCByb3VuZF9kc2lnIGQgeCA9XG4gIGlmIHggPSAwLiB0aGVuIDAuIGVsc2VcbiAgbGV0IG0gPSAxMC4gKiogKGZsb29yIChsb2cxMCAoYWJzX2Zsb2F0IHgpKSkgaW4gICAgICAgKCogdG8gbm9ybWFsaXplIHguICopXG4gIChyb3VuZF9kZnJhYyBkICh4IC8uIG0pKSAqLiBtXG5cbmxldCBmbG9hdF9kZnJhYyBkIHBwZiBmID0gcGYgcHBmIFwiJWdcIiAocm91bmRfZGZyYWMgZCBmKVxubGV0IGZsb2F0X2RzaWcgZCBwcGYgZiA9IHBmIHBwZiBcIiVnXCIgKHJvdW5kX2RzaWcgZCBmKVxuXG5sZXQgcGFpciA/c2VwOihwcF9zZXAgPSBjdXQpIHBwX2ZzdCBwcF9zbmQgcHBmIChmc3QsIHNuZCkgPVxuICBwcF9mc3QgcHBmIGZzdDsgcHBfc2VwIHBwZiAoKTsgcHBfc25kIHBwZiBzbmRcblxubGV0IG9wdGlvbiA/bm9uZToocHBfbm9uZSA9IG5vcCkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IHBwX25vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCByZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IGxpc3QgP3NlcCBwcF9lbHQgPSBpdGVyID9zZXAgTGlzdC5pdGVyIHBwX2VsdFxubGV0IGFycmF5ID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIEFycmF5Lml0ZXIgcHBfZWx0XG5sZXQgc2VxID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIFNlcS5pdGVyIHBwX2VsdFxubGV0IGhhc2h0YmwgP3NlcCBwcF9iaW5kaW5nID0gaXRlcl9iaW5kaW5ncyA/c2VwIEhhc2h0YmwuaXRlciBwcF9iaW5kaW5nXG5sZXQgcXVldWUgP3NlcCBwcF9lbHQgPSBpdGVyIFF1ZXVlLml0ZXIgcHBfZWx0XG5sZXQgc3RhY2sgP3NlcCBwcF9lbHQgPSBpdGVyIFN0YWNrLml0ZXIgcHBfZWx0XG5cbigqIFN0ZGxpYiB0eXBlIGR1bXBlcnMgKilcblxubW9kdWxlIER1bXAgPSBzdHJ1Y3RcblxuICAoKiBTdGRsaWIgdHlwZXMgKilcblxuICBsZXQgc2lnX25hbWVzID1cbiAgICBTeXMuWyBzaWdhYnJ0LCBcIlNJR0FCUlRcIjsgc2lnYWxybSwgXCJTSUdBTFJNXCI7IHNpZ2ZwZSwgXCJTSUdGUEVcIjtcbiAgICAgICAgICBzaWdodXAsIFwiU0lHSFVQXCI7IHNpZ2lsbCwgXCJTSUdJTExcIjsgc2lnaW50LCBcIlNJR0lOVFwiO1xuICAgICAgICAgIHNpZ2tpbGwsIFwiU0lHS0lMTFwiOyBzaWdwaXBlLCBcIlNJR1BJUEVcIjsgc2lncXVpdCwgXCJTSUdRVUlUXCI7XG4gICAgICAgICAgc2lnc2VndiwgXCJTSUdTRUdWXCI7IHNpZ3Rlcm0sIFwiU0lHVEVSTVwiOyBzaWd1c3IxLCBcIlNJR1VTUjFcIjtcbiAgICAgICAgICBzaWd1c3IyLCBcIlNJR1VTUjJcIjsgc2lnY2hsZCwgXCJTSUdDSExEXCI7IHNpZ2NvbnQsIFwiU0lHQ09OVFwiO1xuICAgICAgICAgIHNpZ3N0b3AsIFwiU0lHU1RPUFwiOyBzaWd0c3RwLCBcIlNJR1RTVFBcIjsgc2lndHRpbiwgXCJTSUdUVElOXCI7XG4gICAgICAgICAgc2lndHRvdSwgXCJTSUdUVE9VXCI7IHNpZ3Z0YWxybSwgXCJTSUdWVEFMUk1cIjsgc2lncHJvZiwgXCJTSUdQUk9GXCI7XG4gICAgICAgICAgc2lnYnVzLCBcIlNJR0JVU1wiOyBzaWdwb2xsLCBcIlNJR1BPTExcIjsgc2lnc3lzLCBcIlNJR1NZU1wiO1xuICAgICAgICAgIHNpZ3RyYXAsIFwiU0lHVFJBUFwiOyBzaWd1cmcsIFwiU0lHVVJHXCI7IHNpZ3hjcHUsIFwiU0lHWENQVVwiO1xuICAgICAgICAgIHNpZ3hmc3osIFwiU0lHWEZTWlwiOyBdXG5cbiAgbGV0IHNpZ25hbCBwcGYgcyA9IG1hdGNoIExpc3QuYXNzcV9vcHQgcyBzaWdfbmFtZXMgd2l0aFxuICB8IFNvbWUgbmFtZSAtPiBzdHJpbmcgcHBmIG5hbWVcbiAgfCBOb25lIC0+IHBmIHBwZiBcIlNJRyglZClcIiBzXG5cbiAgbGV0IHVjaGFyIHBwZiB1ID0gcGYgcHBmIFwiVSslMDRYXCIgKFVjaGFyLnRvX2ludCB1KVxuICBsZXQgc3RyaW5nIHBwZiBzID0gcGYgcHBmIFwiJVNcIiBzXG4gIGxldCBwYWlyIHBwX2ZzdCBwcF9zbmQgPVxuICAgIHBhcmVucyAodXNpbmcgZnN0IChib3ggcHBfZnN0KSArKyBjb21tYSArKyB1c2luZyBzbmQgKGJveCBwcF9zbmQpKVxuXG4gIGxldCBvcHRpb24gcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGYgcHBmIFwiTm9uZVwiXG4gIHwgU29tZSB2IC0+IHBmIHBwZiBcIkBbPDI+U29tZUAgQFslYUBdQF1cIiBwcF92IHZcblxuICBsZXQgcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHBmIHBwZiBcIkBbPDI+T2tAIEBbJWFAXUBdXCIgb2sgdlxuICB8IEVycm9yIGUgLT4gcGYgcHBmIFwiQFs8Mj5FcnJvckAgQFslYUBdQF1cIiBlcnJvciBlXG5cbiAgKCogU2VxdWVuY2luZyAqKVxuXG4gIGxldCBpdGVyIGl0ZXJfZiBwcF9uYW1lIHBwX2VsdCA9XG4gICAgbGV0IHBwX3YgPSBpdGVyIH5zZXA6c3AgaXRlcl9mIChib3ggcHBfZWx0KSBpblxuICAgIHBhcmVucyAocHBfbmFtZSArKyBzcCArKyBwcF92KVxuXG4gIGxldCBpdGVyX2JpbmRpbmdzIGl0ZXJfZiBwcF9uYW1lIHBwX2sgcHBfdiA9XG4gICAgbGV0IHBwX3YgPSBpdGVyX2JpbmRpbmdzIH5zZXA6c3AgaXRlcl9mIChwYWlyIHBwX2sgcHBfdikgaW5cbiAgICBwYXJlbnMgKHBwX25hbWUgKysgc3AgKysgcHBfdilcblxuICAoKiBTdGRsaWIgZGF0YSBzdHJ1Y3R1cmVzICopXG5cbiAgbGV0IGxpc3QgcHBfZWx0ID0gYnJhY2tldHMgKGxpc3QgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IGFycmF5IHBwX2VsdCA9IG94Zm9yZF9icmFja2V0cyAoYXJyYXkgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IHNlcSBwcF9lbHQgPSBicmFja2V0cyAoc2VxIH5zZXA6c2VtaSAoYm94IHBwX2VsdCkpXG5cbiAgbGV0IGhhc2h0YmwgcHBfayBwcF92ID1cbiAgICBpdGVyX2JpbmRpbmdzIEhhc2h0YmwuaXRlciAoYW55IFwiaGFzaHRibFwiKSBwcF9rIHBwX3ZcblxuICBsZXQgc3RhY2sgcHBfZWx0ID0gaXRlciBTdGFjay5pdGVyIChhbnkgXCJzdGFja1wiKSBwcF9lbHRcbiAgbGV0IHF1ZXVlIHBwX2VsdCA9IGl0ZXIgUXVldWUuaXRlciAoYW55IFwicXVldWVcIikgcHBfZWx0XG5cbiAgKCogUmVjb3JkcyAqKVxuXG4gIGxldCBmaWVsZCA/KGxhYmVsID0gc3RyaW5nKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgICBwZiBwcGYgXCJAWzwxPiVhID1AICVhQF1cIiBsYWJlbCBsIHBwX3YgKHByaiB2KVxuXG4gIGxldCByZWNvcmQgcHBzID1cbiAgICBib3ggfmluZGVudDoyIChzdXJyb3VuZCBcInsgXCIgXCIgfVwiIEBAIHZib3ggKGNvbmNhdCB+c2VwOihhbnkgXCI7QCxcIikgcHBzKSlcbmVuZFxuXG4oKiBNYWduaXR1ZGVzICopXG5cbmxldCBpbG9nMTAgeCA9XG4gIGxldCByZWMgbG9vcCBwIHggPSBpZiB4ID0gMCB0aGVuIHAgZWxzZSBsb29wIChwICsgMSkgKHggLyAxMCkgaW5cbiAgbG9vcCAoLTEpIHhcblxubGV0IGlwb3cxMCBuID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChhY2MgKiAxMCkgKG4gLSAxKSBpblxuICBsb29wIDEgblxuXG5sZXQgc2lfc3ltYl9tYXggPSAxNlxubGV0IHNpX3N5bWIgPVxuICBbfCBcInlcIjsgXCJ6XCI7IFwiYVwiOyBcImZcIjsgXCJwXCI7IFwiblwiOyBcInVcIjsgXCJtXCI7IFwiXCI7IFwia1wiOyBcIk1cIjsgXCJHXCI7IFwiVFwiOyBcIlBcIjtcbiAgICAgXCJFXCI7IFwiWlwiOyBcIllcInxdXG5cbmxldCByZWMgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHN5bWIgZmFjdG9yIHBwZiBzID1cbiAgbGV0IG0gPSBzIC8gZmFjdG9yIGluXG4gIGxldCBuID0gcyBtb2QgZmFjdG9yIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBtID49IDEwMCAtPiAoKiBObyBmcmFjdGlvbmFsIGRpZ2l0ICopXG4gICAgICBsZXQgbV91cCA9IGlmIG4gPiAwIHRoZW4gbSArIDEgZWxzZSBtIGluXG4gICAgICBpZiBtX3VwID49IDEwMDAgdGhlbiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobV91cCAqIGZhY3RvcikgZWxzZVxuICAgICAgcGYgcHBmIFwiJWQlcyVzXCIgbV91cCBzeW1iIHVcbiAgfCBtIHdoZW4gbSA+PSAxMCAtPiAoKiBPbmUgZnJhY3Rpb25hbCBkaWdpdCB3Lm8uIHRyYWlsaW5nIDAgKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IGZhY3RvciAvIDEwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgYmVnaW4gbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMCAtPiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobSAqIGZhY3RvciArIGYgKiBmX2ZhY3RvcilcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lZCVzJXNcIiBtIGYgc3ltYiB1XG4gICAgICBlbmRcbiAgfCBtIC0+ICgqIFR3byBvciB6ZXJvIGZyYWN0aW9uYWwgZGlnaXRzIHcuby4gdHJhaWxpbmcgMCAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gZmFjdG9yIC8gMTAwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMDAgLT4gc2lfc2l6ZSB+c2NhbGUgdSBwcGYgKG0gKiBmYWN0b3IgKyBmICogZl9mYWN0b3IpXG4gICAgICB8IGYgd2hlbiBmIG1vZCAxMCA9IDAgLT4gcGYgcHBmIFwiJWQuJWQlcyVzXCIgbSAoZiAvIDEwKSBzeW1iIHVcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lMDJkJXMlc1wiIG0gZiBzeW1iIHVcblxuYW5kIHNpX3NpemUgfnNjYWxlIHUgcHBmIHMgPSBtYXRjaCBzY2FsZSA8IC04IHx8IHNjYWxlID4gOCB3aXRoXG58IHRydWUgLT4gaW52YWxpZF9hcmcgXCJ+c2NhbGUgaXMgJWQsIG11c3QgYmUgaW4gWy04OzhdXCIgc2NhbGVcbnwgZmFsc2UgLT5cbiAgICBsZXQgcG93X2Rpdl8zID0gaWYgcyA9IDAgdGhlbiAwIGVsc2UgKGlsb2cxMCBzIC8gMykgaW5cbiAgICBsZXQgc3ltYiA9IChzY2FsZSArIDgpICsgcG93X2Rpdl8zIGluXG4gICAgbGV0IHN5bWIsIGZhY3RvciA9IG1hdGNoIHN5bWIgPiBzaV9zeW1iX21heCB3aXRoXG4gICAgfCB0cnVlIC0+IHNpX3N5bWJfbWF4LCBpcG93MTAgKCg4IC0gc2NhbGUpICogMylcbiAgICB8IGZhbHNlIC0+IHN5bWIsIGlwb3cxMCAocG93X2Rpdl8zICogMylcbiAgICBpblxuICAgIGlmIGZhY3RvciA9IDFcbiAgICB0aGVuIHBmIHBwZiBcIiVkJXMlc1wiIHMgc2lfc3ltYi4oc3ltYikgdVxuICAgIGVsc2UgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHNpX3N5bWIuKHN5bWIpIGZhY3RvciBwcGYgc1xuXG5sZXQgYnl0ZV9zaXplIHBwZiBzID0gc2lfc2l6ZSB+c2NhbGU6MCBcIkJcIiBwcGYgc1xuXG5sZXQgYmlfYnl0ZV9zaXplIHBwZiBzID1cbiAgKCogWFhYIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMuICopXG4gIGxldCBfcHBfYnl0ZV9zaXplIGsgaSBwcGYgcyA9XG4gICAgbGV0IHBwX2ZyYWMgPSBmbG9hdF9kZnJhYyAxIGluXG4gICAgbGV0IGRpdl9yb3VuZF91cCBtIG4gPSAobSArIG4gLSAxKSAvIG4gaW5cbiAgICBsZXQgZmxvYXQgPSBmbG9hdF9vZl9pbnQgaW5cbiAgICBpZiBzIDwgayB0aGVuIHBmIHBwZiBcIiVkQlwiIHMgZWxzZVxuICAgIGxldCBtID0gayAqIGsgaW5cbiAgICBpZiBzIDwgbSB0aGVuIGJlZ2luXG4gICAgICBsZXQga3N0ciA9IGlmIGkgPSBcIlwiIHRoZW4gXCJrXCIgKCogU0kgKikgZWxzZSBcIktcIiAoKiBJRUMgKikgaW5cbiAgICAgIGxldCBzayA9IHMgLyBrIGluXG4gICAgICBpZiBzayA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhJXMlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IGspIGtzdHIgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZCVzJXNCXCIgKGRpdl9yb3VuZF91cCBzIGspIGtzdHIgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IGcgPSBrICogbSBpblxuICAgIGlmIHMgPCBnIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzbSA9IHMgLyBtIGluXG4gICAgICBpZiBzbSA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhTSVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgbSkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZE0lc0JcIiAoZGl2X3JvdW5kX3VwIHMgbSkgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHQgPSBrICogZyBpblxuICAgIGlmIHMgPCB0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBzZyA9IHMgLyBnIGluXG4gICAgICBpZiBzZyA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhRyVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgZykgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZEclc0JcIiAoZGl2X3JvdW5kX3VwIHMgZykgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHAgPSBrICogdCBpblxuICAgIGlmIHMgPCBwIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzdCA9IHMgLyB0IGluXG4gICAgICBpZiBzdCA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhVCVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgdCkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZFQlc0JcIiAoZGl2X3JvdW5kX3VwIHMgdCkgaVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3AgPSBzIC8gcCBpblxuICAgICAgaWYgc3AgPCAxMFxuICAgICAgdGhlbiBwZiBwcGYgXCIlYVAlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IHApIGlcbiAgICAgIGVsc2UgcGYgcHBmIFwiJWRQJXNCXCIgKGRpdl9yb3VuZF91cCBzIHApIGlcbiAgICBlbmRcbiAgaW5cbiAgX3BwX2J5dGVfc2l6ZSAxMDI0IFwiaVwiIHBwZiBzXG5cbigqIFhYWCBGcm9tIDQuMDggb24gdXNlIEludDY0LnVuc2lnbmVkXypcblxuICAgU2VlIEhhY2tlcidzIERlbGlnaHQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB1bnNpZ25lZF8qIGZ1bnMgKilcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgeDAgeDEgPSBJbnQ2NC4oY29tcGFyZSAoc3ViIHgwIG1pbl9pbnQpIChzdWIgeDEgbWluX2ludCkpXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9IG1hdGNoIGQgPCBJbnQ2NC56ZXJvIHdpdGhcbnwgdHJ1ZSAtPiBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiBJbnQ2NC56ZXJvIGVsc2UgSW50NjQub25lXG58IGZhbHNlIC0+XG4gICAgbGV0IHEgPSBJbnQ2NC4oc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSkgaW5cbiAgICBsZXQgciA9IEludDY0LihzdWIgbiAobXVsIHEgZCkpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIEludDY0LnN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPSBJbnQ2NC4oc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZCkpXG5cbmxldCB1c19zcGFuICAgPSAgICAgICAgICAgICAgICAgIDFfMDAwTFxubGV0IG1zX3NwYW4gICA9ICAgICAgICAgICAgICAxXzAwMF8wMDBMXG5sZXQgc2VjX3NwYW4gID0gICAgICAgICAgMV8wMDBfMDAwXzAwMExcbmxldCBtaW5fc3BhbiAgPSAgICAgICAgIDYwXzAwMF8wMDBfMDAwTFxubGV0IGhvdXJfc3BhbiA9ICAgICAgIDM2MDBfMDAwXzAwMF8wMDBMXG5sZXQgZGF5X3NwYW4gID0gICAgIDg2XzQwMF8wMDBfMDAwXzAwMExcbmxldCB5ZWFyX3NwYW4gPSAzMV81NTdfNjAwXzAwMF8wMDBfMDAwTFxuXG5sZXQgcmVjIHBwX3NpX3NwYW4gdW5pdF9zdHIgc2lfdW5pdCBzaV9oaWdoZXJfdW5pdCBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbSA9IHVuc2lnbmVkX2RpdiBzcGFuIHNpX3VuaXQgaW5cbiAgbGV0IG4gPSB1bnNpZ25lZF9yZW0gc3BhbiBzaV91bml0IGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBnZXEgbSAxMDBMIC0+ICgqIE5vIGZyYWN0aW9uYWwgZGlnaXQgKilcbiAgICAgIGxldCBtX3VwID0gaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIG0gZWxzZSBJbnQ2NC5zdWNjIG0gaW5cbiAgICAgIGxldCBzcGFuJyA9IEludDY0Lm11bCBtX3VwIHNpX3VuaXQgaW5cbiAgICAgIGlmIGdlcSBzcGFuJyBzaV9oaWdoZXJfdW5pdCB0aGVuIHVpbnQ2NF9uc19zcGFuIHBwZiBzcGFuJyBlbHNlXG4gICAgICBwZiBwcGYgXCIlTGQlc1wiIG1fdXAgdW5pdF9zdHJcbiAgfCBtIHdoZW4gZ2VxIG0gMTBMIC0+ICgqIE9uZSBmcmFjdGlvbmFsIGRpZ2l0IHcuby4gdHJhaWxpbmcgemVybyAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gdW5zaWduZWRfZGl2IHNpX3VuaXQgMTBMIGluXG4gICAgICBsZXQgZl9tID0gdW5zaWduZWRfZGl2IG4gZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX24gPSB1bnNpZ25lZF9yZW0gbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gICAgICBiZWdpbiBtYXRjaCBmX21fdXAgd2l0aFxuICAgICAgfCAwTCAtPiBwZiBwcGYgXCIlTGQlc1wiIG0gdW5pdF9zdHJcbiAgICAgIHwgZiB3aGVuIGdlcSBmIDEwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZC4lTGQlc1wiIG0gZiB1bml0X3N0clxuICAgICAgZW5kXG4gIHwgbSAtPiAoKiBUd28gb3IgemVybyBmcmFjdGlvbmFsIGRpZ2l0cyB3Lm8uIHRyYWlsaW5nIHplcm8gKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IHVuc2lnbmVkX2RpdiBzaV91bml0IDEwMEwgaW5cbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IDBMIC0+IHBmIHBwZiBcIiVMZCVzXCIgbSB1bml0X3N0clxuICAgICAgfCBmIHdoZW4gZ2VxIGYgMTAwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIHdoZW4gSW50NjQuZXF1YWwgKEludDY0LnJlbSBmIDEwTCkgMEwgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJUxkJXNcIiBtIChJbnQ2NC5kaXYgZiAxMEwpIHVuaXRfc3RyXG4gICAgICB8IGYgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJTAyTGQlc1wiIG0gZiB1bml0X3N0clxuXG5hbmQgcHBfbm9uX3NpIHVuaXRfc3RyIHVuaXQgdW5pdF9sb19zdHIgdW5pdF9sbyB1bml0X2xvX3NpemUgcHBmIHNwYW4gPVxuICBsZXQgZ2VxIHggeSA9IHVuc2lnbmVkX2NvbXBhcmUgeCB5ID49IDAgaW5cbiAgbGV0IG0gPSB1bnNpZ25lZF9kaXYgc3BhbiB1bml0IGluXG4gIGxldCBuID0gdW5zaWduZWRfcmVtIHNwYW4gdW5pdCBpblxuICBpZiBJbnQ2NC5lcXVhbCBuIDBMIHRoZW4gcGYgcHBmIFwiJUxkJXNcIiBtIHVuaXRfc3RyIGVsc2VcbiAgbGV0IGZfbSA9IHVuc2lnbmVkX2RpdiBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gIG1hdGNoIGZfbV91cCB3aXRoXG4gIHwgZiB3aGVuIGdlcSBmIHVuaXRfbG9fc2l6ZSAtPlxuICAgICAgdWludDY0X25zX3NwYW4gcHBmIEludDY0LihhZGQgKG11bCBtIHVuaXQpIChtdWwgZiB1bml0X2xvKSlcbiAgfCBmIC0+XG4gICAgICBwZiBwcGYgXCIlTGQlcyVMZCVzXCIgbSB1bml0X3N0ciBmIHVuaXRfbG9fc3RyXG5cbmFuZCB1aW50NjRfbnNfc3BhbiBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbHQgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPSAtMSBpblxuICBtYXRjaCBzcGFuIHdpdGhcbiAgfCBzIHdoZW4gbHQgcyB1c19zcGFuIC0+IHBmIHBwZiBcIiVMZG5zXCIgc1xuICB8IHMgd2hlbiBsdCBzIG1zX3NwYW4gLT4gcHBfc2lfc3BhbiBcInVzXCIgdXNfc3BhbiBtc19zcGFuIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgc2VjX3NwYW4gLT4gcHBfc2lfc3BhbiBcIm1zXCIgbXNfc3BhbiBzZWNfc3BhbiBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIG1pbl9zcGFuIC0+IHBwX3NpX3NwYW4gXCJzXCIgc2VjX3NwYW4gbWluX3NwYW4gcHBmIHNcbiAgfCBzIHdoZW4gbHQgcyBob3VyX3NwYW4gLT4gcHBfbm9uX3NpIFwibWluXCIgbWluX3NwYW4gXCJzXCIgc2VjX3NwYW4gNjBMIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgZGF5X3NwYW4gLT4gcHBfbm9uX3NpIFwiaFwiIGhvdXJfc3BhbiBcIm1pblwiIG1pbl9zcGFuIDYwTCBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIHllYXJfc3BhbiAtPiBwcF9ub25fc2kgXCJkXCIgZGF5X3NwYW4gXCJoXCIgaG91cl9zcGFuIDI0TCBwcGYgc1xuICB8IHMgLT5cbiAgICAgIGxldCBtID0gdW5zaWduZWRfZGl2IHMgeWVhcl9zcGFuIGluXG4gICAgICBsZXQgbiA9IHVuc2lnbmVkX3JlbSBzIHllYXJfc3BhbiBpblxuICAgICAgaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIHBmIHBwZiBcIiVMZGFcIiBtIGVsc2VcbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBkYXlfc3BhbiBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGRheV9zcGFuIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IGYgd2hlbiBnZXEgZiAzNjZMIC0+IHBmIHBwZiBcIiVMZGFcIiAoSW50NjQuc3VjYyBtKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZGElTGRkXCIgbSBmXG5cbigqIEJpbmFyeSBmb3JtYXR0aW5nICopXG5cbnR5cGUgJ2EgdmVjID0gaW50ICogKGludCAtPiAnYSlcblxubGV0IGl0ZXJfdmVjIGYgKG4sIGdldCkgPSBmb3IgaSA9IDAgdG8gbiAtIDEgZG8gZiBpIChnZXQgaSkgZG9uZVxubGV0IHZlYyA/c2VwID0gaXRlcl9iaW5kaW5ncyA/c2VwIGl0ZXJfdmVjXG5cbmxldCBvbl9zdHJpbmcgPSB1c2luZyBTdHJpbmcuKGZ1biBzIC0+IGxlbmd0aCBzLCBnZXQgcylcbmxldCBvbl9ieXRlcyA9IHVzaW5nIEJ5dGVzLihmdW4gYiAtPiBsZW5ndGggYiwgZ2V0IGIpXG5cbmxldCBzdWJfdmVjcyB3IChuLCBnZXQpID1cbiAgKG4gLSAxKSAvIHcgKyAxLFxuICBmdW4gaiAtPlxuICAgIGxldCBvZmYgPSB3ICogaiBpblxuICAgIG1pbiB3IChuIC0gb2ZmKSwgZnVuIGkgLT4gZ2V0IChpICsgb2ZmKVxuXG5sZXQgcHJlZml4MHggPSBbXG4gIDB4ZiAgICAgICAsIGZtdCBcIiUwMXhcIjtcbiAgMHhmZiAgICAgICwgZm10IFwiJTAyeFwiO1xuICAweGZmZiAgICAgLCBmbXQgXCIlMDN4XCI7XG4gIDB4ZmZmZiAgICAsIGZtdCBcIiUwNHhcIjtcbiAgMHhmZmZmZiAgICwgZm10IFwiJTA1eFwiO1xuICAweGZmZmZmZiAgLCBmbXQgXCIlMDZ4XCI7XG4gIDB4ZmZmZmZmZiAsIGZtdCBcIiUwN3hcIjsgXVxuXG5sZXQgcGFkZGVkMHggfm1heCA9IG1hdGNoIExpc3QuZmluZF9vcHQgKGZ1biAoeCwgXykgLT4gbWF4IDw9IHgpIHByZWZpeDB4IHdpdGhcbnwgU29tZSAoXywgcHApIC0+IHBwXG58IE5vbmUgLT4gZm10IFwiJTA4eFwiXG5cbmxldCBhc2NpaSA/KHcgPSAwKSA/KHN1YnN0ID0gY29uc3QgY2hhciAnLicpICgpIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBwcF9jaGFyIHBwZiAoXywgYykgPVxuICAgIGlmICdcXHgyMCcgPD0gYyAmJiBjIDwgJ1xceDdmJyB0aGVuIGNoYXIgcHBmIGMgZWxzZSBzdWJzdCBwcGYgKClcbiAgaW5cbiAgdmVjIHBwX2NoYXIgcHBmIHY7XG4gIGlmIG4gPCB3IHRoZW4gc3BzICh3IC0gbikgcHBmICgpXG5cbmxldCBvY3RldHMgPyh3ID0gMCkgPyhzZXAgPSBzcCkgKCkgcHBmIChuLCBfIGFzIHYpID1cbiAgbGV0IHBwX3NlcCBwcGYgaSA9IGlmIGkgPiAwICYmIGkgbW9kIDIgPSAwIHRoZW4gc2VwIHBwZiAoKSBpblxuICBsZXQgcHBfY2hhciBwcGYgKGksIGMpID0gcHBfc2VwIHBwZiBpOyBwZiBwcGYgXCIlMDJ4XCIgKENoYXIuY29kZSBjKSBpblxuICB2ZWMgfnNlcDpub3AgcHBfY2hhciBwcGYgdjtcbiAgZm9yIGkgPSBuIHRvIHcgLSAxIGRvIHBwX3NlcCBwcGYgaTsgc3BzIDIgcHBmICgpIGRvbmVcblxubGV0IGFkZHJlc3NlcyA/YWRkciA/KHcgPSAxNikgcHBfdmVjIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBhZGRyID0gbWF0Y2ggYWRkciB3aXRoXG4gIHwgU29tZSBwcCAtPiBwcFxuICB8IF8gLT4gcGFkZGVkMHggfm1heDooKChuIC0gMSkgLyB3KSAqIHcpICsrIGNvbnN0IHN0cmluZyBcIjogXCJcbiAgaW5cbiAgbGV0IHBwX3N1YiBwcGYgKGksIHN1YikgPSBhZGRyIHBwZiAoaSAqIHcpOyBib3ggcHBfdmVjIHBwZiBzdWIgaW5cbiAgdmJveCAodmVjIHBwX3N1YikgcHBmIChzdWJfdmVjcyB3IHYpXG5cbmxldCBoZXggPyh3ID0gMTYpICgpID1cbiAgYWRkcmVzc2VzIH53ICgob2N0ZXRzIH53ICgpIHw+IGJveCkgKysgc3BzIDIgKysgKGFzY2lpIH53ICgpIHw+IGJveCkpXG5cbigqIFRleHQgYW5kIGxpbmVzICopXG5cbmxldCBpc19ubCBjID0gYyA9ICdcXG4nXG5sZXQgaXNfbmxfb3Jfc3AgYyA9IGlzX25sIGMgfHwgYyA9ICcgJ1xubGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgbm90X3doaXRlIGMgPSBub3QgKGlzX3doaXRlIGMpXG5sZXQgbm90X3doaXRlX29yX25sIGMgPSBpc19ubCBjIHx8IG5vdF93aGl0ZSBjXG5cbmxldCByZWMgc3RvcF9hdCBzYXQgfnN0YXJ0IH5tYXggcyA9XG4gIGlmIHN0YXJ0ID4gbWF4IHRoZW4gc3RhcnQgZWxzZVxuICBpZiBzYXQgcy5bc3RhcnRdIHRoZW4gc3RhcnQgZWxzZVxuICBzdG9wX2F0IHNhdCB+c3RhcnQ6KHN0YXJ0ICsgMSkgfm1heCBzXG5cbmxldCBzdWIgcyBzdGFydCBzdG9wIH5tYXggPVxuICBpZiBzdGFydCA9IHN0b3AgdGhlbiBcIlwiIGVsc2VcbiAgaWYgc3RhcnQgPSAwICYmIHN0b3AgPiBtYXggdGhlbiBzIGVsc2VcbiAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpXG5cbmxldCB3b3JkcyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpOyBsb29wIHN0b3Agc1xuICBpblxuICBsZXQgc3RhcnQgPSBzdG9wX2F0IG5vdF93aGl0ZSB+c3RhcnQ6MCB+bWF4IHMgaW5cbiAgaWYgc3RhcnQgPiBtYXggdGhlbiAoKSBlbHNlIGxvb3Agc3RhcnQgc1xuXG5sZXQgcGFyYWdyYXBocyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGVfb3JfbmwgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPlxuICAgICAgICAgIGlmIHMuW3N0b3BdIDw+ICdcXG4nXG4gICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICBtYXRjaCBzdG9wX2F0IG5vdF93aGl0ZV9vcl9ubCB+c3RhcnQ6KHN0b3AgKyAxKSB+bWF4IHMgd2l0aFxuICAgICAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgaWYgcy5bc3RvcF0gPD4gJ1xcbidcbiAgICAgICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OihzdG9wICsgMSkgfm1heCBzIHdpdGhcbiAgICAgICAgICAgICAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiAoKVxuICAgICAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIGxvb3Agc3RvcCBzXG4gIGluXG4gIGxldCBzdGFydCA9IHN0b3BfYXQgbm90X3doaXRlIH5zdGFydDowIH5tYXggcyBpblxuICBpZiBzdGFydCA+IG1heCB0aGVuICgpIGVsc2UgbG9vcCBzdGFydCBzXG5cbmxldCB0ZXh0IHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sX29yX3NwIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBiZWdpbiBtYXRjaCBzLltzdG9wXSB3aXRoXG4gICAgICB8ICcgJyAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICB8ICdcXG4nIC0+IEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgZW5kO1xuICAgICAgbG9vcCAoc3RvcCArIDEpIHNcbiAgaW5cbiAgbG9vcCAwIHNcblxubGV0IGxpbmVzIHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICBsb29wIChzdG9wICsgMSkgc1xuICBpblxuICBsb29wIDAgc1xuXG5sZXQgdHJ1bmNhdGVkIH5tYXggcHBmIHMgPSBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgPD0gbWF4IHdpdGhcbnwgdHJ1ZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBzXG58IGZhbHNlIC0+XG4gICAgZm9yIGkgPSAwIHRvIG1heCAtIDQgZG8gRm9ybWF0LnBwX3ByaW50X2NoYXIgcHBmIHMuW2ldIGRvbmU7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgXCIuLi5cIlxuXG5sZXQgdGV4dF9sb2MgcHBmICgobDAsIGMwKSwgKGwxLCBjMSkpID1cbiAgaWYgKGwwIDogaW50KSA9PSAobDEgOiBpbnQpICYmIChjMCA6IGludCkgPT0gKGMxIDogaW50KVxuICB0aGVuIHBmIHBwZiBcIiVkLiVkXCIgbDAgYzBcbiAgZWxzZSBwZiBwcGYgXCIlZC4lZC0lZC4lZFwiIGwwIGMwIGwxIGMxXG5cbigqIEhDSSBmcmFnbWVudHMgKilcblxubGV0IG9uZV9vZiA/KGVtcHR5ID0gbm9wKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IFtdIC0+IGVtcHR5IHBwZiAoKVxufCBbdl0gLT4gcHBfdiBwcGYgdlxufCBbdjA7IHYxXSAtPiBwZiBwcGYgXCJAW2VpdGhlciAlYSBvckAgJWFAXVwiIHBwX3YgdjAgcHBfdiB2MVxufCBfIDo6IF8gYXMgdnMgLT5cbiAgICBsZXQgcmVjIGxvb3AgcHBmID0gZnVuY3Rpb25cbiAgICB8IFt2XSAtPiBwZiBwcGYgXCJvckAgJWFcIiBwcF92IHZcbiAgICB8IHYgOjogdnMgLT4gcGYgcHBmIFwiJWEsQCBcIiBwcF92IHY7IGxvb3AgcHBmIHZzXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIHBmIHBwZiBcIkBbb25lQCBvZkAgJWFAXVwiIGxvb3AgdnNcblxubGV0IGRpZF95b3VfbWVhblxuICAgID8ocHJlID0gYW55IFwiVW5rbm93blwiKSA/KHBvc3QgPSBub3ApIH5raW5kIHBwX3YgcHBmICh2LCBoaW50cylcbiAgPVxuICBtYXRjaCBoaW50cyB3aXRoXG4gIHwgW10gLT4gcGYgcHBmIFwiQFslYSAlcyAlYSVhLkBdXCIgcHJlICgpIGtpbmQgcHBfdiB2IHBvc3QgKClcbiAgfCBoaW50cyAtPlxuICAgICAgcGYgcHBmIFwiQFslYSAlcyAlYSVhLkAgRGlkIHlvdSBtZWFuICVhID9AXVwiXG4gICAgICAgIHByZSAoKSBraW5kIHBwX3YgdiBwb3N0ICgpIChvbmVfb2YgcHBfdikgaGludHNcblxubGV0IGNhcmRpbmFsID96ZXJvIH5vbmUgP290aGVyICgpID1cbiAgbGV0IG90aGVyID0gbWF0Y2ggb3RoZXIgd2l0aFxuICB8IFNvbWUgb3RoZXIgLT4gb3RoZXJcbiAgfCBOb25lIC0+IGZ1biBwcGYgaSAtPiBvbmUgcHBmIGk7IGNoYXIgcHBmICdzJ1xuICBpblxuICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gIGZ1biBwcGYgaSAtPiBtYXRjaCBJbnQuYWJzIGkgd2l0aFxuICB8IDAgLT4gemVybyBwcGYgMCB8IDEgLT4gb25lIHBwZiAxIHwgbiAtPiBvdGhlciBwcGYgaVxuXG5sZXQgb3JkaW5hbCA9XG4gIGxldCBvbmUgcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJzdFwiIGluXG4gIGxldCB0d28gcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJuZFwiIGluXG4gIGxldCB0aHJlZSBwcGYgaSA9IGludCBwcGYgaTsgc3RyaW5nIHBwZiBcInJkXCIgaW5cbiAgbGV0IG90aGVyIHBwZiBpID0gaW50IHBwZiBpOyBzdHJpbmcgcHBmIFwidGhcIiBpblxuICBmdW4gP3plcm8gPyhvbmUgPSBvbmUpID8odHdvID0gdHdvKSA/KHRocmVlID0gdGhyZWUpID8ob3RoZXIgPSBvdGhlcikgKCkgLT5cbiAgICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gICAgZnVuIHBwZiBpIC0+XG4gICAgICBpZiBpID0gMCB0aGVuIHplcm8gcHBmIGkgZWxzZVxuICAgICAgbGV0IG4gPSBJbnQuYWJzIGkgaW5cbiAgICAgIGxldCBtb2QxMCA9IG4gbW9kIDEwIGluXG4gICAgICBsZXQgbW9kMTAwID0gbiBtb2QgMTAwIGluXG4gICAgICBpZiBtb2QxMCA9IDEgJiYgbW9kMTAwIDw+IDExIHRoZW4gb25lIHBwZiBpIGVsc2VcbiAgICAgIGlmIG1vZDEwID0gMiAmJiBtb2QxMDAgPD4gMTIgdGhlbiB0d28gcHBmIGkgZWxzZVxuICAgICAgaWYgbW9kMTAgPSAzICYmIG1vZDEwMCA8PiAxMyB0aGVuIHRocmVlIHBwZiBpIGVsc2VcbiAgICAgIG90aGVyIHBwZiBpXG5cbigqIENvbmRpdGlvbmFsIFVURi04IGFuZCBzdHlsZWQgZm9ybWF0dGluZy4gKilcblxubW9kdWxlIEltYXAgPSBNYXAuTWFrZSAoSW50KVxuXG50eXBlICdhIGF0dHIgPSBpbnQgKiAoJ2EgLT4gc3RyaW5nKSAqIChzdHJpbmcgLT4gJ2EpXG5sZXQgaWQgPSByZWYgMFxubGV0IGF0dHIgKHR5cGUgYSkgZW5jIGRlYyA9IGluY3IgaWQ7ICghaWQsIGVuYywgZGVjKVxuXG50eXBlIEZvcm1hdC5zdGFnICs9XG58IEZtdF9zdG9yZV9nZXQgOiAnYSBhdHRyIC0+IEZvcm1hdC5zdGFnXG58IEZtdF9zdG9yZV9zZXQgOiAnYSBhdHRyICogJ2EgLT4gRm9ybWF0LnN0YWdcblxubGV0IHN0b3JlICgpID1cbiAgbGV0IHMgPSByZWYgSW1hcC5lbXB0eSBpblxuICBmdW4gfm90aGVyIC0+IGZ1bmN0aW9uXG4gIHwgRm10X3N0b3JlX2dldCAoaWQsIF8sIF8pIC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpcIlwiIChJbWFwLmZpbmRfb3B0IGlkICFzKVxuICB8IEZtdF9zdG9yZV9zZXQgKChpZCwgZW5jLCBfKSwgdikgLT4gcyA6PSBJbWFwLmFkZCBpZCAoZW5jIHYpICFzOyBcIm9rXCJcbiAgfCBzdGFnIC0+IG90aGVyIHN0YWdcblxubGV0IHNldHVwX3N0b3JlIHBwZiA9XG4gIGxldCBmdW5zID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgcHBmICgpIGluXG4gIGxldCBtYXJrX29wZW5fc3RhZyA9IHN0b3JlICgpIH5vdGhlcjpmdW5zLm1hcmtfb3Blbl9zdGFnIGluXG4gIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiB7IGZ1bnMgd2l0aCBtYXJrX29wZW5fc3RhZyB9XG5cbmxldCBzdG9yZV9vcCBvcCBwcGYgPVxuICBsZXQgZnVucyA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiAoKSBpblxuICBmdW5zLm1hcmtfb3Blbl9zdGFnIG9wXG5cbmxldCBnZXQgKF8sIF8sIGRlYyBhcyBhdHRyKSBwcGYgPSBtYXRjaCBzdG9yZV9vcCAoRm10X3N0b3JlX2dldCBhdHRyKSBwcGYgd2l0aFxufCBcIlwiIC0+IE5vbmUgfCBzIC0+IFNvbWUgKGRlYyBzKVxuXG5sZXQgcmVjIHNldCBhdHRyIHYgcHBmID0gbWF0Y2ggc3RvcmVfb3AgKEZtdF9zdG9yZV9zZXQgKGF0dHIsIHYpKSBwcGYgd2l0aFxufCBcIm9rXCIgLT4gKCkgfCBfIC0+IHNldHVwX3N0b3JlIHBwZjsgc2V0IGF0dHIgdiBwcGZcblxubGV0IGRlZiB4ID0gZnVuY3Rpb24gU29tZSB5IC0+IHkgfCBfIC0+IHhcblxubGV0IHV0Zl84X2F0dHIgPVxuICBsZXQgZW5jID0gZnVuY3Rpb24gdHJ1ZSAtPiBcInRcIiB8IGZhbHNlIC0+IFwiZlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcInRcIiAtPiB0cnVlIHwgXCJmXCIgLT4gZmFsc2UgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICBhdHRyIGVuYyBkZWNcblxubGV0IHV0Zl84IHBwZiA9IGdldCB1dGZfOF9hdHRyIHBwZiB8PiBkZWYgdHJ1ZVxubGV0IHNldF91dGZfOCBwcGYgeCA9IHNldCB1dGZfOF9hdHRyIHggcHBmXG5cbnR5cGUgc3R5bGVfcmVuZGVyZXIgPSBbIGBBbnNpX3R0eSB8IGBOb25lIF1cbmxldCBzdHlsZV9yZW5kZXJlcl9hdHRyID1cbiAgbGV0IGVuYyA9IGZ1bmN0aW9uIGBBbnNpX3R0eSAtPiBcIkFcIiB8IGBOb25lIC0+IFwiTlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcIkFcIiAtPiBgQW5zaV90dHkgfCBcIk5cIiAtPiBgTm9uZSB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGF0dHIgZW5jIGRlY1xuXG5sZXQgc3R5bGVfcmVuZGVyZXIgcHBmID0gZ2V0IHN0eWxlX3JlbmRlcmVyX2F0dHIgcHBmIHw+IGRlZiBgTm9uZVxubGV0IHNldF9zdHlsZV9yZW5kZXJlciBwcGYgeCA9IHNldCBzdHlsZV9yZW5kZXJlcl9hdHRyIHggcHBmXG5cbmxldCB3aXRoX2J1ZmZlciA/bGlrZSBidWYgPVxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICgqIE4uQi4gdGhpcyBkb2VzIHNsaWdodHkgbW9yZSBpdCBhbHNvIG1ha2VzIGJ1ZiB1c2Ugb3RoZXIgaW5zdGFsbGVkXG4gICAgIHNlbWFudGljIHRhZyBhY3Rpb25zLiAqKVxuICBtYXRjaCBsaWtlIHdpdGhcbiAgfCBOb25lIC0+IHBwZlxuICB8IFNvbWUgbGlrZSAtPlxuICAgICAgbGV0IGZ1bnMgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBsaWtlICgpIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBwcGYgZnVucztcbiAgICAgIHBwZlxuXG5sZXQgc3RyX2xpa2UgcHBmIGZtdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBicHBmID0gd2l0aF9idWZmZXIgfmxpa2U6cHBmIGJ1ZiBpblxuICBsZXQgZmx1c2ggcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5yZXNldCBidWY7IHNcbiAgaW5cbiAgRm9ybWF0LmtmcHJpbnRmIGZsdXNoIGJwcGYgZm10XG5cbigqIENvbmRpdGlvbmFsIFVURi04IGZvcm1hdHRpbmcgKilcblxubGV0IGlmX3V0Zl84IHBwX3UgcHAgPSBmdW4gcHBmIHYgLT4gKGlmIHV0Zl84IHBwZiB0aGVuIHBwX3UgZWxzZSBwcCkgcHBmIHZcblxuKCogU3R5bGVkIGZvcm1hdHRpbmcgKilcblxudHlwZSBjb2xvciA9XG4gIFsgYEJsYWNrIHwgYEJsdWUgfCBgQ3lhbiB8IGBHcmVlbiB8IGBNYWdlbnRhIHwgYFJlZCB8IGBXaGl0ZSB8IGBZZWxsb3cgXVxuXG50eXBlIHN0eWxlID1cbiAgWyBgTm9uZSB8ICBgQm9sZCB8IGBGYWludCB8IGBJdGFsaWMgfCBgVW5kZXJsaW5lIHwgYFJldmVyc2VcbiAgfCBgRmcgb2YgWyBjb2xvciB8IGBIaSBvZiBjb2xvciBdXG4gIHwgYEJnIG9mIFsgY29sb3IgfCBgSGkgb2YgY29sb3IgXVxuICB8IGNvbG9yICgqKiBkZXByZWNhdGVkICopIF1cblxubGV0IGFuc2lfc3R5bGVfY29kZSA9IGZ1bmN0aW9uXG58IGBCb2xkIC0+IFwiMVwiXG58IGBGYWludCAtPiBcIjJcIlxufCBgSXRhbGljIC0+IFwiM1wiXG58IGBVbmRlcmxpbmUgLT4gXCI0XCJcbnwgYFJldmVyc2UgLT4gXCI3XCJcbnwgYEZnIGBCbGFjayAtPiBcIjMwXCJcbnwgYEZnIGBSZWQgLT4gXCIzMVwiXG58IGBGZyBgR3JlZW4gLT4gXCIzMlwiXG58IGBGZyBgWWVsbG93IC0+IFwiMzNcIlxufCBgRmcgYEJsdWUgLT4gXCIzNFwiXG58IGBGZyBgTWFnZW50YSAtPiBcIjM1XCJcbnwgYEZnIGBDeWFuIC0+IFwiMzZcIlxufCBgRmcgYFdoaXRlIC0+IFwiMzdcIlxufCBgQmcgYEJsYWNrIC0+IFwiNDBcIlxufCBgQmcgYFJlZCAtPiBcIjQxXCJcbnwgYEJnIGBHcmVlbiAtPiBcIjQyXCJcbnwgYEJnIGBZZWxsb3cgLT4gXCI0M1wiXG58IGBCZyBgQmx1ZSAtPiBcIjQ0XCJcbnwgYEJnIGBNYWdlbnRhIC0+IFwiNDVcIlxufCBgQmcgYEN5YW4gLT4gXCI0NlwiXG58IGBCZyBgV2hpdGUgLT4gXCI0N1wiXG58IGBGZyAoYEhpIGBCbGFjaykgLT4gXCI5MFwiXG58IGBGZyAoYEhpIGBSZWQpIC0+IFwiOTFcIlxufCBgRmcgKGBIaSBgR3JlZW4pIC0+IFwiOTJcIlxufCBgRmcgKGBIaSBgWWVsbG93KSAtPiBcIjkzXCJcbnwgYEZnIChgSGkgYEJsdWUpIC0+IFwiOTRcIlxufCBgRmcgKGBIaSBgTWFnZW50YSkgLT4gXCI5NVwiXG58IGBGZyAoYEhpIGBDeWFuKSAtPiBcIjk2XCJcbnwgYEZnIChgSGkgYFdoaXRlKSAtPiBcIjk3XCJcbnwgYEJnIChgSGkgYEJsYWNrKSAtPiBcIjEwMFwiXG58IGBCZyAoYEhpIGBSZWQpIC0+IFwiMTAxXCJcbnwgYEJnIChgSGkgYEdyZWVuKSAtPiBcIjEwMlwiXG58IGBCZyAoYEhpIGBZZWxsb3cpIC0+IFwiMTAzXCJcbnwgYEJnIChgSGkgYEJsdWUpIC0+IFwiMTA0XCJcbnwgYEJnIChgSGkgYE1hZ2VudGEpIC0+IFwiMTA1XCJcbnwgYEJnIChgSGkgYEN5YW4pIC0+IFwiMTA2XCJcbnwgYEJnIChgSGkgYFdoaXRlKSAtPiBcIjEwN1wiXG58IGBOb25lIC0+IFwiMFwiXG4oKiBkZXByZWNhdGVkICopXG58IGBCbGFjayAtPiBcIjMwXCJcbnwgYFJlZCAtPiBcIjMxXCJcbnwgYEdyZWVuIC0+IFwiMzJcIlxufCBgWWVsbG93IC0+IFwiMzNcIlxufCBgQmx1ZSAtPiBcIjM0XCJcbnwgYE1hZ2VudGEgLT4gXCIzNVwiXG58IGBDeWFuIC0+IFwiMzZcIlxufCBgV2hpdGUgLT4gXCIzN1wiXG5cbmxldCBwcF9zZ3IgcHBmIHN0eWxlID1cbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwiXFwwMjdbXCI7XG4gIEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMCBzdHlsZTtcbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwibVwiXG5cbmxldCBjdXJyX3N0eWxlID0gYXR0ciBGdW4uaWQgRnVuLmlkXG5cbmxldCBzdHlsZWQgc3R5bGUgcHBfdiBwcGYgdiA9IG1hdGNoIHN0eWxlX3JlbmRlcmVyIHBwZiB3aXRoXG58IGBOb25lIC0+IHBwX3YgcHBmIHZcbnwgYEFuc2lfdHR5IC0+XG4gICAgbGV0IHByZXYgPSBtYXRjaCBnZXQgY3Vycl9zdHlsZSBwcGYgd2l0aFxuICAgIHwgTm9uZSAtPiBsZXQgemVybyA9IFwiMFwiIGluIHNldCBjdXJyX3N0eWxlIHplcm8gcHBmOyB6ZXJvXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGhlcmUgPSBhbnNpX3N0eWxlX2NvZGUgc3R5bGUgaW5cbiAgICBsZXQgY3VyciA9IG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBOb25lIC0+IGhlcmVcbiAgICB8IF8gLT4gU3RyaW5nLmNvbmNhdCBcIjtcIiBbcHJldjsgaGVyZV1cbiAgICBpblxuICAgIGxldCBmaW5hbGx5ICgpID0gc2V0IGN1cnJfc3R5bGUgcHJldiBwcGYgaW5cbiAgICBzZXQgY3Vycl9zdHlsZSBjdXJyIHBwZjtcbiAgICBGdW4ucHJvdGVjdCB+ZmluYWxseSBAQCBmdW4gKCkgLT5cbiAgICBwcF9zZ3IgcHBmIGhlcmU7IHBwX3YgcHBmIHY7IHBwX3NnciBwcGYgcHJldlxuXG4oKiBSZWNvcmRzICopXG5cbmxldCBpZCA9IEZ1bi5pZFxubGV0IGxhYmVsID0gc3R5bGVkIChgRmcgYFllbGxvdykgc3RyaW5nXG5sZXQgZmllbGQgPyhsYWJlbCA9IGxhYmVsKSA/KHNlcCA9IGFueSBcIjpAIFwiKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgcGYgcHBmIFwiQFs8MT4lYSVhJWFAXVwiIGxhYmVsIGwgc2VwICgpIHBwX3YgKHByaiB2KVxuXG5sZXQgcmVjb3JkID8oc2VwID0gY3V0KSBwcHMgPSB2Ym94IChjb25jYXQgfnNlcCBwcHMpXG5cbigqIENvbnZlcnRpbmcgd2l0aCBzdHJpbmcgY29udmVydGVycy4gKilcblxubGV0IG9mX3RvX3N0cmluZyBmIHBwZiB2ID0gc3RyaW5nIHBwZiAoZiB2KVxubGV0IHRvX3RvX3N0cmluZyBwcF92IHYgPSBzdHIgXCIlYVwiIHBwX3YgdlxuXG4oKiBEZXByZWNhdGVkICopXG5cbmxldCBzdHJmID0gc3RyXG5sZXQga3N0cmYgPSBrc3RyXG5sZXQgc3RyZl9saWtlID0gc3RyX2xpa2VcbmxldCBhbHdheXMgPSBhbnlcbmxldCB1bml0ID0gYW55XG5sZXQgcHJlZml4IHBwX3AgcHBfdiBwcGYgdiA9IHBwX3AgcHBmICgpOyBwcF92IHBwZiB2XG5sZXQgc3VmZml4IHBwX3MgcHBfdiBwcGYgdiA9IHBwX3YgcHBmIHY7IHBwX3MgcHBmICgpXG5sZXQgc3R5bGVkX3VuaXQgc3R5bGUgZm10ID0gc3R5bGVkIHN0eWxlIChhbnkgZm10KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9kaXYiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbW9kIiwiY2FtbF9tdWwiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiZ2xvYmFsX2RhdGEiLCJ5IiwidXNfc3BhbiIsIm1zX3NwYW4iLCJzZWNfc3BhbiIsIm1pbl9zcGFuIiwiaG91cl9zcGFuIiwiZGF5X3NwYW4iLCJ5ZWFyX3NwYW4iLCJTdGRsaWJfSW50NjQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0Z1biIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWJfQnVmZmVyIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0ludCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiU3RkbGliX1F1ZXVlIiwiU3RkbGliX1N0YWNrIiwiU3RkbGliX0hhc2h0YmwiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0FycmF5IiwiU3RkbGliX1ByaW50ZXhjIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9NYXAiLCJzdGRvdXQiLCJzdGRlcnIiLCJwZiIsInByIiwiZXByIiwic3RyIiwia3BmIiwia3N0ciIsImZhaWx3aXRoIiwiZm10IiwiZmFpbHdpdGhfbm90cmFjZSIsInMiLCJpbnZhbGlkX2FyZyIsImVycm9yIiwiZXJyb3JfbXNnIiwiZmx1c2giLCJwcGYiLCJwYXJhbSIsIm5vcCIsImFueSIsInVzaW5nIiwicHAiLCJ2IiwiY29uc3QkIiwicHBfdiIsImlmJCIsImJvb2wiLCJjdXQiLCJzcCIsInNwcyIsIm4iLCJjb21tYSIsImNzdCIsInNlbWkiLCJpdGVyIiwib3B0IiwicHBfZWx0IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJpdGVyX2JpbmRpbmdzIiwicHBfYmluZGluZyIsImsiLCJhcHBlbmQiLCJwcF92MCIsInBwX3YxIiwiY29uY2F0Iiwic2VwIiwicHBzIiwiYm94IiwiaW5kZW50IiwiaGJveCIsInZib3giLCJodmJveCIsImhvdmJveCIsInN1cnJvdW5kIiwiczEiLCJzMiIsInBhcmVucyIsImJyYWNrZXRzIiwiYnJhY2VzIiwicXVvdGUiLCJtYXJrIiwicHBfbWFyayIsImludCIsIm5hdGl2ZWludCIsImludDMyIiwiaW50NjQiLCJ1aW50IiwidWludDMyIiwidWludDY0IiwidW5hdGl2ZWludCIsImNoYXIiLCJzdHJpbmciLCJidWZmZXIiLCJiIiwiZXhuIiwiZSIsImNzdF92IiwiZXhuX2JhY2t0cmFjZSIsImJ0IiwicHBfYmFja3RyYWNlX3N0ciIsInN0b3AiLCJsZWZ0IiwicmlnaHQiLCJjc3RfZyIsImZsb2F0Iiwicm91bmRfZGZyYWMiLCJkIiwieCIsIm0iLCJmbG9hdF9kZnJhYyIsImZsb2F0X2RzaWciLCJwYWlyIiwicHBfZnN0IiwicHBfc25kIiwic25kIiwiZnN0Iiwib3B0aW9uIiwicHBfbm9uZSIsInJlc3VsdCIsIm9rIiwibGlzdCIsImFycmF5Iiwic2VxIiwiaGFzaHRibCIsInF1ZXVlIiwic3RhY2siLCJzaWdfbmFtZXMiLCJzaWduYWwiLCJtYXRjaCIsIm5hbWUiLCJ1Y2hhciIsInUiLCJjc3RfMiIsImNzdF9Ob25lIiwiaXRlcl9mIiwicHBfbmFtZSIsInBwX2siLCJjc3RfaGFzaHRibCIsImNzdF9zdGFjayIsImNzdF9xdWV1ZSIsImNzdF8xIiwiZmllbGQiLCJsIiwicHJqIiwibGFiZWwiLCJyZWNvcmQiLCJpcG93MTAiLCJhY2MiLCJjc3RfZiIsImNzdF9tIiwic2lfc3ltYiIsImNzdF9kX3NfcyIsImNzdF9kX2Rfc19zIiwic2lfc2l6ZSIsInNjYWxlIiwicG93X2Rpdl8zIiwicCIsInN5bWIiLCJmYWN0b3IiLCJtX3VwIiwiZl9mYWN0b3IiLCJmX20iLCJmX24iLCJmX21fdXAiLCJieXRlX3NpemUiLCJiaV9ieXRlX3NpemUiLCJwcF9mcmFjIiwiZGl2X3JvdW5kX3VwIiwiaSIsInNrIiwic20iLCJzZyIsInN0IiwidW5zaWduZWRfY29tcGFyZSIsIngwIiwieDEiLCJ1bnNpZ25lZF9kaXYiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsImNzdF9MZF9zIiwiY3N0X0xkX0xkX3MiLCJwcF9zaV9zcGFuIiwiY291bnRlciIsInVuaXRfc3RyIiwic2lfdW5pdCIsInNpX2hpZ2hlcl91bml0Iiwic3BhbiIsImdlcSIsInBwX25vbl9zaSIsInVuaXQiLCJ1bml0X2xvX3N0ciIsInVuaXRfbG8iLCJ1bml0X2xvX3NpemUiLCJjc3RfTGRhIiwidWludDY0X25zX3NwYW4iLCJsdCIsImNzdF91cyIsImNzdF9tcyIsImNzdF9zIiwiY3N0X21pbiIsImNzdF9oIiwiY3N0X2QiLCJpdGVyX3ZlYyIsImdldCIsInZlYyIsIm9uX3N0cmluZyIsIm9uX2J5dGVzIiwiY3N0XzAyeCIsInByZWZpeDB4IiwiYXNjaWkiLCJ3Iiwic3Vic3QiLCJwcF9jaGFyIiwiYyIsIm9jdGV0cyIsImFkZHJlc3NlcyIsImFkZHIiLCJwcF92ZWMiLCJtYXgiLCJwcF9zdWIiLCJzdWIiLCJqIiwib2ZmIiwiaGV4IiwiaXNfd2hpdGUiLCJub3Rfd2hpdGUiLCJub3Rfd2hpdGVfb3JfbmwiLCJzdG9wX2F0Iiwic2F0Iiwic3RhcnQiLCJ3b3JkcyIsInBhcmFncmFwaHMiLCJjc3Rfc3JjX2ZtdF9tbCIsInRleHQiLCJsaW5lcyIsInRydW5jYXRlZCIsInRleHRfbG9jIiwiYzEiLCJsMSIsImMwIiwibDAiLCJvbmVfb2YiLCJ2cyIsImVtcHR5IiwibG9vcCIsInYxIiwiY3N0X1Vua25vd24iLCJkaWRfeW91X21lYW4iLCJraW5kIiwicHJlIiwicG9zdCIsImhpbnRzIiwiY2FyZGluYWwiLCJ6ZXJvIiwib25lIiwib3RoZXIiLCJ0d28iLCJ0aHJlZSIsIm9yZGluYWwiLCJtb2QxMCIsIm1vZDEwMCIsIkltYXAiLCJpZCIsImF0dHIiLCJlbmMiLCJkZWMiLCJGbXRfc3RvcmVfZ2V0IiwiRm10X3N0b3JlX3NldCIsInN0b3JlX29wIiwib3AiLCJmdW5zIiwic2V0IiwiY3N0X29rIiwibWFya19vcGVuX3N0YWciLCJzdGFnIiwiZGVmIiwiY3N0X3QiLCJ1dGZfOF9hdHRyIiwidXRmXzgiLCJzZXRfdXRmXzgiLCJjc3RfQSIsImNzdF9OIiwic3R5bGVfcmVuZGVyZXJfYXR0ciIsInN0eWxlX3JlbmRlcmVyIiwic2V0X3N0eWxlX3JlbmRlcmVyIiwid2l0aF9idWZmZXIiLCJsaWtlIiwiYnVmIiwic3RyX2xpa2UiLCJicHBmIiwiaWZfdXRmXzgiLCJwcF91IiwicHBfc2dyIiwic3R5bGUiLCJjdXJyX3N0eWxlIiwic3R5bGVkIiwiY3N0XzAiLCJwcmV2IiwiY3N0XzMwIiwiY3N0XzMxIiwiY3N0XzMyIiwiY3N0XzMzIiwiY3N0XzM0IiwiY3N0XzM1IiwiY3N0XzM2IiwiY3N0XzM3IiwiaGVyZSIsInZhcmlhbnQiLCJjdXJyIiwiZmluYWxseSQiLCJvZl90b19zdHJpbmciLCJ0b190b19zdHJpbmciLCJwcmVmaXgiLCJwcF9wIiwic3VmZml4IiwicHBfcyIsInN0eWxlZF91bml0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQWIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFB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dW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIua2VwbGVyLm9ianMvanNvby9kZWZhdWx0L2tlcGxlci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWtlcGxlci9saWIvdmVjMy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiAzRCB2ZWN0b3Igb3BlcmF0aW9ucy4gKilcblxudHlwZSB0ID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cblxubGV0IHYgeCB5IHogPSB7IHg7IHk7IHogfVxubGV0IHplcm8gPSB7IHggPSAwLjsgeSA9IDAuOyB6ID0gMC4gfVxubGV0IGFkZCBhIGIgPSB7IHggPSBhLnggKy4gYi54OyB5ID0gYS55ICsuIGIueTsgeiA9IGEueiArLiBiLnogfVxubGV0IHNjYWxlIHMgdiA9IHsgeCA9IHMgKi4gdi54OyB5ID0gcyAqLiB2Lnk7IHogPSBzICouIHYueiB9XG5sZXQgc3ViIGEgYiA9IHsgeCA9IGEueCAtLiBiLng7IHkgPSBhLnkgLS4gYi55OyB6ID0gYS56IC0uIGIueiB9XG5sZXQgZG90IGEgYiA9IChhLnggKi4gYi54KSArLiAoYS55ICouIGIueSkgKy4gKGEueiAqLiBiLnopXG5cbmxldCBjcm9zcyBhIGIgPVxuICB7XG4gICAgeCA9IChhLnkgKi4gYi56KSAtLiAoYS56ICouIGIueSk7XG4gICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgeiA9IChhLnggKi4gYi55KSAtLiAoYS55ICouIGIueCk7XG4gIH1cblxubGV0IGxlbmd0aCB2ID0gc3FydCAoKHYueCAqLiB2LngpICsuICh2LnkgKi4gdi55KSArLiAodi56ICouIHYueikpXG5sZXQgcHAgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCVnLCAlZywgJWcpXCIgdi54IHYueSB2LnpcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMyIsImYiLCJhMCIsImExIiwiYTIiLCJGbXQiLCJ2IiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzY2FsZSIsInMiLCJzdWIiLCJkb3QiLCJjcm9zcyIsImxlbmd0aCIsImNzdCIsInBwIiwicHBmIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxNQUFBO0FBQUEsWUFBQUMsRUFBQUMsR0FBQUMsR0FBQUMsR0NTYyxzQkFBVztBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEdBRUssb0RBQWtDO0FBQUEsWUFBQUMsTUFBQUMsR0FBQVIsR0FDbEMsMkNBQThCO0FBQUEsWUFBQVMsSUFBQUosR0FBQUMsR0FDOUIsb0RBQWtDO0FBQUEsWUFBQUksSUFBQUwsR0FBQUMsR0FDTjtBQUFBLFlBQUFLLE1BQUFOLEdBQUFDO0FBQUFBLElBSXRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FHakM7QUFBQSxZQUFBTSxPQUFBWjtBQUFBQSxJQUUrRCxPQUFuRCxrREFBbUQ7QUFBQTtBQUFBO0FBQUEsSUFBQWEsTUR2QmxFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsR0FBQUMsS0FBQWY7QUFBQUEsUUFBQSxJQ3dCZTtBQUFBLHlEQUFxQztBQUFBO0FBQUEsR0R4QnBEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzA0MjksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmtlcGxlci5vYmpzL2pzb28vZGVmYXVsdC9rZXBsZXIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1rZXBsZXIvbGliL3Byb3BhZ2F0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBUd28tYm9keSAoS2VwbGVyaWFuKSBvcmJpdCBwcm9wYWdhdGlvbiB2aWEgUks0IGludGVncmF0aW9uLlxuXG4gICAgR2l2ZW4gcG9zaXRpb24gYW5kIHZlbG9jaXR5IGF0IGVwb2NoLCBwcm9wYWdhdGVzIGZvcndhcmQvYmFja3dhcmQgdXNpbmdcbiAgICBudW1lcmljYWwgaW50ZWdyYXRpb24uIFN1aXRhYmxlIGZvciBzaG9ydCBhcmNzICh+MSBvcmJpdCkuICopXG5cbmxldCBtdSA9IDM5ODYwMC40NDE4XG5cbmxldCBncmF2aXR5IChyIDogVmVjMy50KSA9XG4gIGxldCByX21hZyA9IFZlYzMubGVuZ3RoIHIgaW5cbiAgbGV0IHIzID0gcl9tYWcgKi4gcl9tYWcgKi4gcl9tYWcgaW5cbiAgaWYgcjMgPCAxZS0xMCB0aGVuIFZlYzMuemVybyBlbHNlIFZlYzMuc2NhbGUgKC0ubXUgLy4gcjMpIHJcblxubGV0IHJrNF9zdGVwIChwb3MgOiBWZWMzLnQpICh2ZWwgOiBWZWMzLnQpIGR0ID1cbiAgbGV0IG9wZW4gVmVjMyBpblxuICBsZXQgYTEgPSBncmF2aXR5IHBvcyBpblxuICBsZXQgcDIgPSBhZGQgcG9zIChzY2FsZSAoZHQgLy4gMi4pIHZlbCkgaW5cbiAgbGV0IHYyID0gYWRkIHZlbCAoc2NhbGUgKGR0IC8uIDIuKSBhMSkgaW5cbiAgbGV0IGEyID0gZ3Jhdml0eSBwMiBpblxuICBsZXQgcDMgPSBhZGQgcG9zIChzY2FsZSAoZHQgLy4gMi4pIHYyKSBpblxuICBsZXQgdjMgPSBhZGQgdmVsIChzY2FsZSAoZHQgLy4gMi4pIGEyKSBpblxuICBsZXQgYTMgPSBncmF2aXR5IHAzIGluXG4gIGxldCBwNCA9IGFkZCBwb3MgKHNjYWxlIGR0IHYzKSBpblxuICBsZXQgdjQgPSBhZGQgdmVsIChzY2FsZSBkdCBhMykgaW5cbiAgbGV0IGE0ID0gZ3Jhdml0eSBwNCBpblxuICBsZXQgbmV3X3BvcyA9XG4gICAgYWRkIHBvc1xuICAgICAgKHNjYWxlIChkdCAvLiA2LikgKGFkZCB2ZWwgKGFkZCAoc2NhbGUgMi4gdjIpIChhZGQgKHNjYWxlIDIuIHYzKSB2NCkpKSlcbiAgaW5cbiAgbGV0IG5ld192ZWwgPVxuICAgIGFkZCB2ZWxcbiAgICAgIChzY2FsZSAoZHQgLy4gNi4pIChhZGQgYTEgKGFkZCAoc2NhbGUgMi4gYTIpIChhZGQgKHNjYWxlIDIuIGEzKSBhNCkpKSlcbiAgaW5cbiAgKG5ld19wb3MsIG5ld192ZWwpXG5cbmxldCBhdCB+cG9zIH52ZWwgfmR0ID1cbiAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZHQpIHRoZW4gcG9zXG4gIGVsc2VcbiAgICAoKiBDbGFtcCB0byBtYXggMTAwMDAgc3RlcHMgdG8gcHJldmVudCBydW5hd2F5ICopXG4gICAgbGV0IG5fc3RlcHMgPSBtaW4gMTAwMDAgKEZsb2F0LnRvX2ludCAoYWJzX2Zsb2F0IGR0IC8uIDMwLikgKyAxKSBpblxuICAgIGxldCBzdGVwID0gZHQgLy4gRmxvYXQub2ZfaW50IG5fc3RlcHMgaW5cbiAgICBsZXQgcCA9IHJlZiBwb3MgYW5kIHYgPSByZWYgdmVsIGluXG4gICAgZm9yIF8gPSAxIHRvIG5fc3RlcHMgZG9cbiAgICAgIGxldCBwJywgdicgPSByazRfc3RlcCAhcCAhdiBzdGVwIGluXG4gICAgICAoKiBHdWFyZCBhZ2FpbnN0IE5hTiBwcm9wYWdhdGlvbiAqKVxuICAgICAgaWYgRmxvYXQuaXNfZmluaXRlIHAnLnggdGhlbiBiZWdpblxuICAgICAgICBwIDo9IHAnO1xuICAgICAgICB2IDo9IHYnXG4gICAgICBlbmRcbiAgICBkb25lO1xuICAgICFwXG5cbmxldCBhcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzID1cbiAgbGV0IGR0ID0gZHVyYXRpb25fcyAvLiBGbG9hdC5vZl9pbnQgbnVtX3BvaW50cyBpblxuICBsZXQgaGFsZiA9IG51bV9wb2ludHMgLyAyIGluXG4gIGxldCBwb3NpdGlvbnMgPSBBcnJheS5tYWtlIG51bV9wb2ludHMgVmVjMy56ZXJvIGluXG4gICgqIEZvcndhcmQgZnJvbSBlcG9jaCAqKVxuICBsZXQgcCA9IHJlZiBwb3MgYW5kIHYgPSByZWYgdmVsIGluXG4gIGZvciBpID0gaGFsZiB0byBudW1fcG9pbnRzIC0gMSBkb1xuICAgIHBvc2l0aW9ucy4oaSkgPC0gIXA7XG4gICAgbGV0IHAnLCB2JyA9IHJrNF9zdGVwICFwICF2IGR0IGluXG4gICAgcCA6PSBwJztcbiAgICB2IDo9IHYnXG4gIGRvbmU7XG4gICgqIEJhY2t3YXJkIGZyb20gZXBvY2ggKilcbiAgcCA6PSBwb3M7XG4gIHYgOj0gdmVsO1xuICBmb3IgaSA9IGhhbGYgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IHAnLCB2JyA9IHJrNF9zdGVwICFwICF2ICgtLmR0KSBpblxuICAgIHAgOj0gcCc7XG4gICAgdiA6PSB2JztcbiAgICBwb3NpdGlvbnMuKGkpIDwtICFwXG4gIGRvbmU7XG4gIHBvc2l0aW9uc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiZ2xvYmFsX2RhdGEiLCJLZXBsZXJfVmVjMyIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYiIsImdyYXZpdHkiLCJyIiwicl9tYWciLCJyMyIsInJrNF9zdGVwIiwicG9zIiwidmVsIiwiZHQiLCJhMSIsInAyIiwidjIiLCJhMiIsInAzIiwidjMiLCJhMyIsInA0IiwidjQiLCJhNCIsIm5ld19wb3MiLCJuZXdfdmVsIiwiYXQiLCJuX3N0ZXBzIiwic3RlcCIsInAiLCJ2IiwiZm9yJCIsIm1hdGNoIiwiYXJjIiwiZHVyYXRpb25fcyIsIm51bV9wb2ludHMiLCJoYWxmIiwicG9zaXRpb25zIiwiaSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxRQUFBQyxRQ2FjLDhCQUFBQyxLQUNIO0FBQUEsSUFDVDtBQUFBO0FBQUEsY0FBeUQsK0NBQUU7QUFBQTtBQUFBLFlBQUFDLFNBQUFDLEtBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBSWxEO0FBQUEsU0FDUTtBQUFBLEtBQUFDLEtBQVI7QUFBQSxTQUNRO0FBQUEsS0FBQUMsS0FBUjtBQUFBLEtBQUFDLEtBQ0E7QUFBQSxTQUNRO0FBQUEsS0FBQUMsS0FBUjtBQUFBLFNBQ1E7QUFBQSxLQUFBQyxLQUFSO0FBQUEsS0FBQUMsS0FDQTtBQUFBLFNBQ1E7QUFBQSxLQUFBQyxLQUFSO0FBQUEsU0FDUTtBQUFBLEtBQUFDLEtBQVI7QUFBQSxLQUFBQyxLQUNBO0FBQUEsU0FHOEM7QUFBQSxTQUFMO0FBQUEsU0FBZDtBQUFBLFNBQUw7QUFBQSxTQUFUO0FBQUEsU0FBbEI7QUFBQSxLQUFBQyxVQURGO0FBQUEsU0FLb0Q7QUFBQSxTQUFMO0FBQUEsU0FBZDtBQUFBLFNBQUw7QUFBQSxTQUFSO0FBQUEsU0FBbEI7QUFBQSxLQUFBQyxVQURGO0FBQUEsSUFHRjtBQUFBLEdBQWtCO0FBQUEsWUFBQUMsR0FBQWYsS0FBQUMsS0FBQUM7QUFBQUEsSUFHWCxzQ0FBMEI7QUFBQTtBQUFBLEtBQUFjLFVBR2pCLDhCQUF5QjtBQUFBLEtBQUFDLE9BQzVCO0FBQUEsSUFFWDtBQUFBLFNBQUFDLE1BQUE7QUFBQTtBQUFBLFNBQUFDLE1BQUEsS0FBQUQsTUFBQSxLQUFBRSxPQUFBO0FBQUE7QUFBQSxVQUFBQyxRQUNlLDBCQUFBRixJQUFtQixVQUFBRCxJQUFBO0FBQUEsTUFFN0I7QUFBQSxXQUFBQyxNQUFvQixHQUFBRCxNQUFBO0FBQUE7QUFBQSxXQUFBQyxNQUFBLEtBQUFELE1BQUE7QUFBQTtBQUFBLCtCQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS3pCO0FBQUEsR0FBRTtBQUFBLFlBQUFJLElBQUF0QixLQUFBQyxLQUFBc0IsWUFBQUM7QUFBQUE7QUFBQUEsS0FBQXRCLEtBR0s7QUFBQSxLQUFBdUIsT0FDVDtBQUFBLEtBQUFDLFlBQ2dCO0FBQUEsU0FHaEI7QUFBQTtBQUFBLFNBQUFQLE1BQUEsS0FBQUQsTUFBQSxLQUFBUyxNQUFBO0FBQUE7QUFBQSxNQUNFO0FBQUE7QUFBQSxPQUFBTixVQUNhO0FBQUEsT0FBQUYsTUFBaUI7QUFBQSxPQUFBRCxNQUFBO0FBQUEsV0FFOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUtGO0FBQUE7QUFBQSxTQUFBQyxNQUFBLEtBQUFELE1BQUEsS0FBQVMsSUFBQTtBQUFBO0FBQUEsVUFBQU4sUUFDZSwwQkFBQUYsSUFBcUIsVUFBQUQsSUFBQTtBQUFBLE1BR2xDO0FBQUEsY0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVyQjtBQUFBLEdBQVM7QUFBQSxHRDdFWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMwNTQ3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5rZXBsZXIub2Jqcy9qc29vL2RlZmF1bHQva2VwbGVyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwta2VwbGVyL2xpYi9hbmFseXRpYy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBbmFseXRpYyB0d28tYm9keSBLZXBsZXIgcHJvcGFnYXRpb24uXG5cbiAgICBDb252ZXJ0cyBzdGF0ZSB2ZWN0b3IgdG8gb3JiaXRhbCBlbGVtZW50cywgYWR2YW5jZXMgbWVhbiBhbm9tYWx5LCBzb2x2ZXNcbiAgICBLZXBsZXIncyBlcXVhdGlvbiwgYW5kIGNvbnZlcnRzIGJhY2suIDEwLTE1eCBmYXN0ZXIgdGhhbiBSSzQgZm9yIGVsbGlwdGljYWxcbiAgICBvcmJpdHMuXG5cbiAgICBSZWZlcmVuY2VzOlxuICAgIC0gVmFsbGFkbywgXCJGdW5kYW1lbnRhbHMgb2YgQXN0cm9keW5hbWljc1wiLCA0dGggZWQuLCBBbGcuIDQtNVxuICAgIC0gQmF0ZSwgTXVlbGxlciwgV2hpdGUsIFwiRnVuZGFtZW50YWxzIG9mIEFzdHJvZHluYW1pY3NcIiwgQ2guIDRcbiAgICAtIEN1cnRpcywgXCJPcmJpdGFsIE1lY2hhbmljcyBmb3IgRW5naW5lZXJpbmcgU3R1ZGVudHNcIiwgQ2guIDQgKilcblxubGV0IG11ID0gUHJvcGFnYXRlLm11XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiogezEgT3JiaXRhbCBlbGVtZW50c30gKilcblxudHlwZSBlbGVtZW50cyA9IHtcbiAgYSA6IGZsb2F0OyAgKCoqIFNlbWktbWFqb3IgYXhpcyAoa20pLiAqKVxuICBlIDogZmxvYXQ7ICAoKiogRWNjZW50cmljaXR5LiAqKVxuICBpIDogZmxvYXQ7ICAoKiogSW5jbGluYXRpb24gKHJhZCkuICopXG4gIHJhYW4gOiBmbG9hdDsgICgqKiBSaWdodCBhc2NlbnNpb24gb2YgYXNjZW5kaW5nIG5vZGUgKHJhZCkuICopXG4gIGFyZ3AgOiBmbG9hdDsgICgqKiBBcmd1bWVudCBvZiBwZXJpYXBzaXMgKHJhZCkuICopXG4gIG51IDogZmxvYXQ7ICAoKiogVHJ1ZSBhbm9tYWx5IChyYWQpLiAqKVxuICBuIDogZmxvYXQ7ICAoKiogTWVhbiBtb3Rpb24gKHJhZC9zKS4gKilcbiAgcG9zIDogVmVjMy50OyAgKCoqIE9yaWdpbmFsIHBvc2l0aW9uIChmb3IgUks0IGZhbGxiYWNrKS4gKilcbiAgdmVsIDogVmVjMy50OyAgKCoqIE9yaWdpbmFsIHZlbG9jaXR5IChmb3IgUks0IGZhbGxiYWNrKS4gKilcbn1cblxuKCoqIHsxIFN0YXRlIHZlY3RvciDihpQgb3JiaXRhbCBlbGVtZW50c30gKilcblxuKCoqIENvbnZlcnQgc3RhdGUgdmVjdG9yIHRvIGNsYXNzaWNhbCBvcmJpdGFsIGVsZW1lbnRzLiBWYWxsYWRvIEFsZ29yaXRobSA5LiAqKVxubGV0IGVsZW1lbnRzX29mX3N0YXRlIChwb3MgOiBWZWMzLnQpICh2ZWwgOiBWZWMzLnQpID1cbiAgbGV0IG9wZW4gVmVjMyBpblxuICBsZXQgcl9tYWcgPSBsZW5ndGggcG9zIGluXG4gIGxldCB2X21hZyA9IGxlbmd0aCB2ZWwgaW5cbiAgKCogR3VhcmQgZGVnZW5lcmF0ZSBpbnB1dHMgKilcbiAgaWYgcl9tYWcgPCAxZS0xMCB8fCB2X21hZyA8IDFlLTEwIHRoZW5cbiAgICB7XG4gICAgICBhID0gcl9tYWc7XG4gICAgICBlID0gMi47XG4gICAgICBpID0gMC47XG4gICAgICByYWFuID0gMC47XG4gICAgICBhcmdwID0gMC47XG4gICAgICBudSA9IDAuO1xuICAgICAgbiA9IDAuO1xuICAgICAgcG9zO1xuICAgICAgdmVsO1xuICAgIH1cbiAgZWxzZVxuICAgICgqIEFuZ3VsYXIgbW9tZW50dW0gdmVjdG9yIGggPSByIMOXIHYgKilcbiAgICBsZXQgaCA9IGNyb3NzIHBvcyB2ZWwgaW5cbiAgICBsZXQgaF9tYWcgPSBsZW5ndGggaCBpblxuICAgICgqIE5vZGUgdmVjdG9yIG4gPSBrIMOXIGggKGsgPSBbMCwwLDFdKSAqKVxuICAgIGxldCBuX3ZlYyA9IHsgeCA9IC0uaC55OyB5ID0gaC54OyB6ID0gMC4gfSBpblxuICAgIGxldCBuX21hZyA9IGxlbmd0aCBuX3ZlYyBpblxuICAgICgqIEVjY2VudHJpY2l0eSB2ZWN0b3I6IGUgPSAoMS/OvClbKHbCsi3OvC9yKXIgLSAocsK3dil2XSAqKVxuICAgIGxldCByZG90diA9IGRvdCBwb3MgdmVsIGluXG4gICAgbGV0IGVfdmVjID1cbiAgICAgIGxldCB0ZXJtMSA9IHNjYWxlICgodl9tYWcgKi4gdl9tYWcpIC0uIChtdSAvLiByX21hZykpIHBvcyBpblxuICAgICAgbGV0IHRlcm0yID0gc2NhbGUgcmRvdHYgdmVsIGluXG4gICAgICBzY2FsZSAoMS4gLy4gbXUpIChhZGQgdGVybTEgKHNjYWxlICgtMS4pIHRlcm0yKSlcbiAgICBpblxuICAgIGxldCBlID0gbGVuZ3RoIGVfdmVjIGluXG4gICAgKCogU2VtaS1tYWpvciBheGlzOiBhID0gLc68IC8gKDLOtSkgd2hlcmUgzrUgPSB2wrIvMiAtIM68L3IgKilcbiAgICBsZXQgZW5lcmd5ID0gKHZfbWFnICouIHZfbWFnIC8uIDIuKSAtLiAobXUgLy4gcl9tYWcpIGluXG4gICAgbGV0IGEgPVxuICAgICAgaWYgYWJzX2Zsb2F0IGVuZXJneSA8IDFlLTEwIHRoZW4gcl9tYWcgKCogcGFyYWJvbGljIGZhbGxiYWNrICopXG4gICAgICBlbHNlIC0ubXUgLy4gKDIuICouIGVuZXJneSlcbiAgICBpblxuICAgICgqIEluY2xpbmF0aW9uOiBjb3MoaSkgPSBoeiAvIHxofCAqKVxuICAgIGxldCBpID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gKGgueiAvLiBoX21hZykpKSBpblxuICAgICgqIFJBQU46IGNvcyjOqSkgPSBueCAvIHxufCAqKVxuICAgIGxldCByYWFuID1cbiAgICAgIGlmIG5fbWFnIDwgMWUtMTAgdGhlbiAwLlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29zX3JhYW4gPSBuX3ZlYy54IC8uIG5fbWFnIGluXG4gICAgICAgIGxldCByYWFuID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX3JhYW4pKSBpblxuICAgICAgICBpZiBuX3ZlYy55IDwgMC4gdGhlbiB0d29waSAtLiByYWFuIGVsc2UgcmFhblxuICAgIGluXG4gICAgKCogQXJndW1lbnQgb2YgcGVyaWFwc2lzOiBjb3Moz4kpID0gbsK3ZSAvICh8bnx8ZXwpICopXG4gICAgbGV0IGFyZ3AgPVxuICAgICAgaWYgbl9tYWcgPCAxZS0xMCB8fCBlIDwgMWUtMTAgdGhlbiAwLlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29zX2FyZ3AgPSBkb3Qgbl92ZWMgZV92ZWMgLy4gKG5fbWFnICouIGUpIGluXG4gICAgICAgIGxldCBhcmdwID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX2FyZ3ApKSBpblxuICAgICAgICBpZiBlX3ZlYy56IDwgMC4gdGhlbiB0d29waSAtLiBhcmdwIGVsc2UgYXJncFxuICAgIGluXG4gICAgKCogVHJ1ZSBhbm9tYWx5OiBjb3Mozr0pID0gZcK3ciAvICh8ZXx8cnwpICopXG4gICAgbGV0IG51ID1cbiAgICAgIGlmIGUgPCAxZS0xMCB0aGVuXG4gICAgICAgICgqIENpcmN1bGFyOiB1c2UgYXJndW1lbnQgb2YgbGF0aXR1ZGUgKilcbiAgICAgICAgbGV0IGNvc191ID0gZG90IG5fdmVjIHBvcyAvLiAobl9tYWcgKi4gcl9tYWcpIGluXG4gICAgICAgIGxldCB1ID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX3UpKSBpblxuICAgICAgICBpZiBwb3MueiA8IDAuIHRoZW4gdHdvcGkgLS4gdSBlbHNlIHVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvc19udSA9IGRvdCBlX3ZlYyBwb3MgLy4gKGUgKi4gcl9tYWcpIGluXG4gICAgICAgIGxldCBudSA9IGFjb3MgKEZsb2F0Lm1heCAoLTEuKSAoRmxvYXQubWluIDEuIGNvc19udSkpIGluXG4gICAgICAgIGlmIHJkb3R2IDwgMC4gdGhlbiB0d29waSAtLiBudSBlbHNlIG51XG4gICAgaW5cbiAgICAoKiBNZWFuIG1vdGlvbiAqKVxuICAgIGxldCBuID1cbiAgICAgIGlmIGEgPiAwLiB0aGVuIHNxcnQgKG11IC8uIChhICouIGEgKi4gYSkpXG4gICAgICBlbHNlIHNxcnQgKG11IC8uICgtLmEgKi4gLS5hICouIC0uYSkpXG4gICAgICAoKiBoeXBlcmJvbGljICopXG4gICAgaW5cbiAgICB7IGE7IGU7IGk7IHJhYW47IGFyZ3A7IG51OyBuOyBwb3M7IHZlbCB9XG5cbigqKiB7MSBLZXBsZXIncyBlcXVhdGlvbiBzb2x2ZXJ9ICopXG5cbigqKiBTb2x2ZSBNID0gRSAtIGXCt3NpbihFKSBmb3IgRSBnaXZlbiBNIGFuZCBlLiBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24sXG4gICAgY29udmVyZ2VzIGluIDMtNSBzdGVwcyBmb3IgZSA8IDAuOTcuIFZhbGxhZG8gQWxnb3JpdGhtIDIuICopXG5sZXQgc29sdmVfa2VwbGVyIH5tZWFuX2Fub21hbHkgfmVjY2VudHJpY2l0eSA9XG4gIGxldCBtID0gRmxvYXQucmVtIG1lYW5fYW5vbWFseSB0d29waSBpblxuICBsZXQgbSA9IGlmIG0gPCAwLiB0aGVuIG0gKy4gdHdvcGkgZWxzZSBtIGluXG4gIGxldCBlID0gZWNjZW50cmljaXR5IGluXG4gICgqIEluaXRpYWwgZ3Vlc3M6IEXigoAgPSBNICsgZcK3c2luKE0pIGZvciBsb3cgZWNjZW50cmljaXR5ICopXG4gIGxldCBlYSA9IHJlZiAobSArLiAoZSAqLiBzaW4gbSkpIGluXG4gIGZvciBfID0gMSB0byA4IGRvXG4gICAgbGV0IHNpbl9lID0gc2luICFlYSBpblxuICAgIGxldCBjb3NfZSA9IGNvcyAhZWEgaW5cbiAgICBsZXQgZiA9ICFlYSAtLiAoZSAqLiBzaW5fZSkgLS4gbSBpblxuICAgIGxldCBmcCA9IDEuIC0uIChlICouIGNvc19lKSBpblxuICAgIGlmIGFic19mbG9hdCBmcCA+IDFlLTEyIHRoZW4gZWEgOj0gIWVhIC0uIChmIC8uIGZwKVxuICBkb25lO1xuICAhZWFcblxuKCoqIHsxIFBvc2l0aW9uIGZyb20gZWxlbWVudHMgKyB0aW1lfSAqKVxuXG4oKiogQ29tcHV0ZSBwb3NpdGlvbiBhdCB0aW1lIGR0IChzZWNvbmRzKSBmcm9tIGVwb2NoLiBUaGUgb3JiaXRhbCBlbGVtZW50c1xuICAgIGRlc2NyaWJlIHRoZSBvcmJpdCBhdCBlcG9jaCAod2hlbiDOvSB3YXMgbWVhc3VyZWQpLiAqKVxubGV0IHBvc2l0aW9uX2F0X2R0IGVsZW1lbnRzIGR0ID1cbiAgbGV0IGVsID0gZWxlbWVudHMgaW5cbiAgKCogVHJ1ZSBhbm9tYWx5IOKGkiBlY2NlbnRyaWMgYW5vbWFseSBhdCBlcG9jaCAqKVxuICBsZXQgZSA9IGVsLmUgaW5cbiAgbGV0IGNvc19udSA9IGNvcyBlbC5udSBpblxuICBsZXQgZWEwID0gYXRhbjIgKHNxcnQgKDEuIC0uIChlICouIGUpKSAqLiBzaW4gZWwubnUpIChlICsuIGNvc19udSkgaW5cbiAgKCogTWVhbiBhbm9tYWx5IGF0IGVwb2NoICopXG4gIGxldCBtMCA9IGVhMCAtLiAoZSAqLiBzaW4gZWEwKSBpblxuICAoKiBNZWFuIGFub21hbHkgYXQgdCArIGR0ICopXG4gIGxldCBtID0gbTAgKy4gKGVsLm4gKi4gZHQpIGluXG4gICgqIFNvbHZlIEtlcGxlcidzIGVxdWF0aW9uICopXG4gIGxldCBlYSA9IHNvbHZlX2tlcGxlciB+bWVhbl9hbm9tYWx5Om0gfmVjY2VudHJpY2l0eTplIGluXG4gICgqIEVjY2VudHJpYyBhbm9tYWx5IOKGkiB0cnVlIGFub21hbHkgKilcbiAgbGV0IHNpbl9lYSA9IHNpbiBlYSBhbmQgY29zX2VhID0gY29zIGVhIGluXG4gIGxldCBudSA9IGF0YW4yIChzcXJ0ICgxLiAtLiAoZSAqLiBlKSkgKi4gc2luX2VhKSAoY29zX2VhIC0uIGUpIGluXG4gICgqIFJhZGl1cyAqKVxuICBsZXQgciA9IGVsLmEgKi4gKDEuIC0uIChlICouIGNvc19lYSkpIGluXG4gICgqIFBvc2l0aW9uIGluIG9yYml0YWwgcGxhbmUgKFBRVyBmcmFtZSkgKilcbiAgbGV0IGNvc19udSA9IGNvcyBudSBhbmQgc2luX251ID0gc2luIG51IGluXG4gIGxldCBweCA9IHIgKi4gY29zX251IGFuZCBweSA9IHIgKi4gc2luX251IGluXG4gICgqIFJvdGF0ZSBQUVcg4oaSIGluZXJ0aWFsIChJSkspIGZyYW1lICopXG4gIGxldCBjb3NfYXJncCA9IGNvcyBlbC5hcmdwIGFuZCBzaW5fYXJncCA9IHNpbiBlbC5hcmdwIGluXG4gIGxldCBjb3NfcmFhbiA9IGNvcyBlbC5yYWFuIGFuZCBzaW5fcmFhbiA9IHNpbiBlbC5yYWFuIGluXG4gIGxldCBjb3NfaSA9IGNvcyBlbC5pIGFuZCBzaW5faSA9IHNpbiBlbC5pIGluXG4gIGxldCB4ID1cbiAgICAocHggKi4gKChjb3NfcmFhbiAqLiBjb3NfYXJncCkgLS4gKHNpbl9yYWFuICouIHNpbl9hcmdwICouIGNvc19pKSkpXG4gICAgKy4gKHB5ICouICgtLihjb3NfcmFhbiAqLiBzaW5fYXJncCkgLS4gKHNpbl9yYWFuICouIGNvc19hcmdwICouIGNvc19pKSkpXG4gIGluXG4gIGxldCB5ID1cbiAgICAocHggKi4gKChzaW5fcmFhbiAqLiBjb3NfYXJncCkgKy4gKGNvc19yYWFuICouIHNpbl9hcmdwICouIGNvc19pKSkpXG4gICAgKy4gKHB5ICouICgtLihzaW5fcmFhbiAqLiBzaW5fYXJncCkgKy4gKGNvc19yYWFuICouIGNvc19hcmdwICouIGNvc19pKSkpXG4gIGluXG4gIGxldCB6ID0gKHB4ICouIChzaW5fYXJncCAqLiBzaW5faSkpICsuIChweSAqLiAoY29zX2FyZ3AgKi4gc2luX2kpKSBpblxuICBWZWMzLnYgeCB5IHpcblxuKCoqIHsxIEVsZW1lbnQgcXVlcmllc30gKilcblxubGV0IHBlcmlvZCBlbCA9IGlmIGVsLmEgPD0gMC4gdGhlbiBpbmZpbml0eSAoKiBoeXBlcmJvbGljICopIGVsc2UgdHdvcGkgLy4gZWwublxubGV0IGVjY2VudHJpY2l0eSBlbCA9IGVsLmVcblxuKCoqIHsxIFB1YmxpYyBBUEl9ICopXG5cbigqKiBQcm9wYWdhdGUgYSBzdGF0ZSB2ZWN0b3IgYnkgW2R0XSBzZWNvbmRzIHVzaW5nIGFuYWx5dGljIEtlcGxlci4gfjUwIEZMT1BzIHZzXG4gICAgfjcyMCBmb3IgUks0LiBFeGFjdCBmb3IgdHdvLWJvZHksIGFueSBlY2NlbnRyaWNpdHkgPCAxLiAqKVxubGV0IGF0IH5wb3MgfnZlbCB+ZHQgPVxuICBsZXQgZWwgPSBlbGVtZW50c19vZl9zdGF0ZSBwb3MgdmVsIGluXG4gIGlmIGVsLmUgPj0gMS4wIHRoZW5cbiAgICAoKiBIeXBlcmJvbGljL3BhcmFib2xpYzogZmFsbCBiYWNrIHRvIFJLNCAqKVxuICAgIFByb3BhZ2F0ZS5hdCB+cG9zIH52ZWwgfmR0XG4gIGVsc2UgcG9zaXRpb25fYXRfZHQgZWwgZHRcblxuKCoqIFByZWNvbXB1dGUgb3JiaXRhbCBlbGVtZW50cyBmb3IgcmVwZWF0ZWQgcHJvcGFnYXRpb24uIENhbGwgdGhpcyBvbmNlLCB0aGVuXG4gICAgdXNlIHshYXRfcHJlY29tcHV0ZWR9IGZvciBlYWNoIHRpbWUgc3RlcC4gKilcbmxldCBwcmVjb21wdXRlIH5wb3MgfnZlbCA9IGVsZW1lbnRzX29mX3N0YXRlIHBvcyB2ZWxcblxuKCoqIFByb3BhZ2F0ZSBmcm9tIHByZWNvbXB1dGVkIGVsZW1lbnRzLiBWZXJ5IGZhc3QgKH4yMCBGTE9QcykuIEZhbGxzIGJhY2sgdG9cbiAgICBSSzQgZm9yIGh5cGVyYm9saWMvcGFyYWJvbGljIG9yYml0cy4gKilcbmxldCBhdF9wcmVjb21wdXRlZCBlbGVtZW50cyB+ZHQgPVxuICBpZiBlbGVtZW50cy5lID49IDEuMCB0aGVuIFByb3BhZ2F0ZS5hdCB+cG9zOmVsZW1lbnRzLnBvcyB+dmVsOmVsZW1lbnRzLnZlbCB+ZHRcbiAgZWxzZVxuICAgIGxldCBwID0gcG9zaXRpb25fYXRfZHQgZWxlbWVudHMgZHQgaW5cbiAgICAoKiBHdWFyZCBhZ2FpbnN0IG51bWVyaWNhbCBpc3N1ZXMgbmVhciBzaW5ndWxhcml0aWVzICopXG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHAueCAmJiBGbG9hdC5pc19maW5pdGUgcC55ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnogdGhlbiBwXG4gICAgZWxzZSBQcm9wYWdhdGUuYXQgfnBvczplbGVtZW50cy5wb3MgfnZlbDplbGVtZW50cy52ZWwgfmR0XG5cbigqKiBHZW5lcmF0ZSBhbiBhcmMgb2YgW251bV9wb2ludHNdIHBvc2l0aW9ucyBjZW50ZXJlZCBvbiBlcG9jaC4gKilcbmxldCBhcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzID1cbiAgbGV0IGVsID0gZWxlbWVudHNfb2Zfc3RhdGUgcG9zIHZlbCBpblxuICBpZiBlbC5lID49IDEuMCB0aGVuIFByb3BhZ2F0ZS5hcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzXG4gIGVsc2VcbiAgICBsZXQgZHQgPSBkdXJhdGlvbl9zIC8uIEZsb2F0Lm9mX2ludCBudW1fcG9pbnRzIGluXG4gICAgbGV0IGhhbGYgPSBudW1fcG9pbnRzIC8gMiBpblxuICAgIEFycmF5LmluaXQgbnVtX3BvaW50cyAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHQgPSBGbG9hdC5vZl9pbnQgKGkgLSBoYWxmKSAqLiBkdCBpblxuICAgICAgICBwb3NpdGlvbl9hdF9kdCBlbCB0KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJnbG9iYWxfZGF0YSIsIktlcGxlcl9Qcm9wYWdhdGUiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfRmxvYXQiLCJTdGRsaWIiLCJLZXBsZXJfVmVjMyIsIm11IiwidHdvcGkiLCJlbGVtZW50c19vZl9zdGF0ZSIsInBvcyIsInZlbCIsInJfbWFnIiwidl9tYWciLCJoIiwiaF9tYWciLCJuX3ZlYyIsIm5fbWFnIiwicmRvdHYiLCJ0ZXJtMSIsInRlcm0yIiwiZV92ZWMiLCJlIiwiZW5lcmd5IiwiYSIsImkiLCJyYWFuIiwiY29zX3JhYW4iLCJjb3NfYXJncCIsImFyZ3AiLCJjb3NfdSIsInUiLCJudSIsImNvc19udSIsIm4iLCJzb2x2ZV9rZXBsZXIiLCJtZWFuX2Fub21hbHkiLCJlY2NlbnRyaWNpdHkiLCJtIiwiZWEiLCJmb3IkIiwic2luX2UiLCJjb3NfZSIsImYiLCJmcCIsInBvc2l0aW9uX2F0X2R0IiwiZWxlbWVudHMiLCJkdCIsImVhMCIsIm0wIiwic2luX2VhIiwiY29zX2VhIiwiciIsInNpbl9udSIsInB4IiwicHkiLCJzaW5fYXJncCIsInNpbl9yYWFuIiwiY29zX2kiLCJzaW5faSIsIngiLCJ5IiwieiIsInBlcmlvZCIsImVsIiwiYXQiLCJwcmVjb21wdXRlIiwiYXRfcHJlY29tcHV0ZWQiLCJwIiwiYXJjIiwiZHVyYXRpb25fcyIsIm51bV9wb2ludHMiLCJoYWxmIiwidCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFFDaUJZO0FBQUEsWUFBQUMsa0JBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFFBcUJFO0FBQUEsS0FBQUMsUUFDQTtBQUFBLElBRVo7QUFBQTtBQUFBLE1BQUFDLElB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QyxLQUFBMkQsWUFBQUM7QUFBQUEsUUFBQVAsS0FJbEQ7QUFBQSxJQUNUO0FBQUEsS0FBb0IsdUVBTU07QUFBQSxRQUFBakIsS0FKZix5QkFBQXlCLE9BQ1Q7QUFBQSxJQUNBO0FBQUE7QUFBQTtBQUFBLHNCQUFBL0M7QUFBQUEsa0JBQUFnRCxJQUNZO0FBQUEsY0FDUiw0QkFBbUI7QUFBQSxlQUFDO0FBQUE7QUFBQSxHQWhNRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGpCMUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMDcyNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJwdGltZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvcHRpbWUvcHRpbWUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBwdGltZSBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogSnVsaWFuIGRheSBhbmQgcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhciBkYXRlIGNvbnZlcnNpb24uXG5cbiAgIEZvcm11bGFlIGFyZSBmcm9tIHRoZSBjYWxlbmRhciBGQVE6XG4gICBodHRwOi8vd3d3LnRvbmRlcmluZy5kay9jbGF1cy9jYWwvanVscGVyaW9kLnBocCNmb3JtdWxhXG5cbiAgIFRoZXNlIGZvcm11bGFlIHdvcmsgZm9yIHBvc2l0aXZlIEp1bGlhbiBkYXlzLiBUaGV5IHJlcHJlc2VudFxuICAgR2Vnb3JpYW4gY2FsZW5kYXIgQkNFIHllYXIgYHlgIGJ5IGAtKHktMSlgLCBlLmcuIDIgQkNFIGlzIC0xLCB0aGlzXG4gICBmb2xsb3dzIHRoZSBjb252ZW50aW9uIG9mIElTTyA4NjAxLlxuXG4gICBBbGwgdGltZXN0YW1wcyBpbiBQdGltZSdzIFttaW47bWF4XSByYW5nZSBhcmUgcmVwcmVzZW50ZWQgYnlcbiAgIHBvc2l0aXZlIEp1bGlhbiBkYXlzIGFuZCB0aGUgZm9ybXVsYWUgZG8gbm90IG92ZXJmbG93IG9uIDMyLWJpdFxuICAgcGxhdGZvcm1zIGluIHRoaXMgcmVzdHJpY3RlZCByYW5nZS4gKilcblxubGV0IGpkX3RvX2RhdGUgamQgPVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIGxldCBkYXkgPSBlIC0gKCgxNTMgKiBtICsgMikgLyA1KSArIDEgaW5cbiAgbGV0IG1vbnRoID0gbSArIDMgLSAoMTIgKiAobSAvIDEwKSkgaW5cbiAgbGV0IHllYXIgPSAxMDAgKiBiICsgZCAtIDQ4MDAgKyAobSAvIDEwKSBpblxuICAoeWVhciwgbW9udGgsIGRheSlcblxubGV0IGpkX3RvX3llYXIgamQgPSAoKiBTYW1lIGFzIGFib3ZlIGJ1dCBvbmx5IGZvciB0aGUgeWVhciAqKVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIDEwMCAqIGIgKyBkIC0gNDgwMCArIChtIC8gMTApXG5cbmxldCBqZF9vZl9kYXRlICh5ZWFyLCBtb250aCwgZGF5KSA9XG4gIGxldCBhID0gKDE0IC0gbW9udGgpIC8gMTIgaW5cbiAgbGV0IHkgPSB5ZWFyICsgNDgwMCAtIGEgaW5cbiAgbGV0IG0gPSBtb250aCArIDEyICogYSAtIDMgaW5cbiAgZGF5ICsgKCgxNTMgKiBtKSArIDIpLyA1ICsgMzY1ICogeSArXG4gICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgLSAzMjA0NVxuXG5sZXQgamRfcG9zaXhfZXBvY2ggPSAyXzQ0MF81ODggICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgdGhlIFBPU0lYIGVwb2NoICopXG5sZXQgamRfcHRpbWVfbWluID0gMV83MjFfMDYwICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWluICopXG5sZXQgamRfcHRpbWVfbWF4ID0gNV8zNzNfNDg0ICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWF4ICopXG5cbigqIFBpY29zZWNvbmQgcHJlY2lzaW9uIFBPU0lYIHRpbWVzdGFtcHMgYW5kIHRpbWUgc3BhbiByZXByZXNlbnRhdGlvbi5cblxuICAgUE9TSVggdGltZXN0YW1wcyBhbmQgc3BhbnMgYXJlIHJlcHJlc2VudGVkIGJ5IGludCAqIGludDY0IHBhaXJzXG4gICB3aXRoIHRoZSBpbnQ2NCBpbiB0aGUgcmFuZ2UgWzBMOzg2XzM5OV85OTlfOTk5Xzk5OV85OTlMXS4gQSBwYWlyXG4gICBbKGQsIHBzKV0gZGVub3RlcyB0aGUgUE9TSVggcGljb3NlY29uZCBkdXJhdGlvbiBbZF0gKiA4Nl80MDBlMTIgK1xuICAgW3BzXS5cblxuICAgRm9yIGEgdGltZXN0YW1wIHRoaXMgY2FuIGJlIHNlZW4gYXMgYSBQT1NJWCBkYXkgY291bnQgZnJvbSB0aGVcbiAgIGVwb2NoIHBhaXJlZCB3aXRoIGEgcGljb3NlY29uZCBwcmVjaXNpb24gUE9TSVggdGltZSBwb2ludCBpbiB0aGF0XG4gICBkYXkgc3RhcnRpbmcgZnJvbSAwMDowMDowMC5cblxuICAgQnkgZGVmaW5pdGlvbiB3aXRoIGEgbmVnYXRpdmUgW2RdIHRoZSBbcHNdIGR1cmF0aW9uIGJyaW5ncyB1c1xuICAgdG93YXJkcyB6ZXJvLCAqbm90KiB0b3dhcmRzIGluZmluaXR5OlxuXG5cbiAgICAgICAgIChkICogODZfNDAwZTEyKSAoZCAqIDg2XzQwMGUxMiArIHBzKSAgICAgICAwXG4gICAgIC4uLiAtLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSAuLi5cbiAgICAgICAgICAgICAgWy0tLS0tLS0tLS0tLS0tLS0+fFxuICAgICAgICAgICAgICAgICAgIHBzXG5cbiAgIFtkXSBpcyBsYXJnZWx5IHN1ZmZpY2VudCB0byByZXByZXNlbnQgYWxsIHRoZSBkYXlzIGluIFB0aW1lJ3NcbiAgIFttaW47bWF4XSByYW5nZSBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IHBsYXRmb3Jtcy4gKilcblxudHlwZSB0ID0gaW50ICogaW50NjRcblxubGV0IHBzX2NvdW50X2luX3BzICAgID0gICAgICAgICAgICAgICAgICAgICAgMUxcbmxldCBwc19jb3VudF9pbl9ucyAgICA9ICAgICAgICAgICAgICAgICAgMV8wMDBMXG5sZXQgcHNfY291bnRfaW5fMTAwbnMgPSAgICAgICAgICAgICAgICAxMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX3VzICAgID0gICAgICAgICAgICAgIDFfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl8xMDB1cyA9ICAgICAgICAgICAgMTAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbXMgICAgPSAgICAgICAgICAxXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luXzEwMG1zID0gICAgICAgIDEwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9zICAgICA9ICAgICAgMV8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbWluICAgPSAgICAgNjBfMDAwXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX2hvdXIgID0gICAzNjAwXzAwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9kYXkgICA9IDg2XzQwMF8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfZGF5X21heCAgICAgICAgPSA4Nl8zOTlfOTk5Xzk5OV85OTlfOTk5TFxuXG5sZXQgZGF5X21pbiA9IGpkX3B0aW1lX21pbiAtIGpkX3Bvc2l4X2Vwb2NoXG5sZXQgZGF5X21heCA9IGpkX3B0aW1lX21heCAtIGpkX3Bvc2l4X2Vwb2NoXG5cbmxldCBlcG9jaCA9ICgwLCAwTCkgICAgICAgICAgICAgKCogMTk3MC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtaW4gPSAoZGF5X21pbiwgMEwpICAgICAgICAgKCogMDAwMC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtYXggPSAoZGF5X21heCwgcHNfZGF5X21heCkgKCogOTk5OS0xMi0zMSAyMzo1OTo1OSBVVEMgKilcblxuKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG50eXBlIHNwYW4gPSB0XG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG5cbiAgbGV0IHN0ZGxpYl9hYnMgPSBhYnNcblxuICAoKiBBcml0aG1ldGljICopXG5cbiAgbGV0IG5lZyA9IGZ1bmN0aW9uXG4gIHwgKGQsIDBMKSAgLT4gKC1kLCAwTClcbiAgfCAoZCwgcHMpIC0+ICgtKGQgKyAxKSwgSW50NjQuc3ViIHBzX2NvdW50X2luX2RheSBwcylcblxuICBsZXQgYWRkIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIGxldCBkID0gZDAgKyBkMSBpblxuICAgIGxldCBwcyA9IEludDY0LmFkZCBwczAgcHMxIGluXG4gICAgbGV0IHBzX2NsYW1wID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2RheSBpblxuICAgIGxldCBkID0gZCArIEludDY0LmNvbXBhcmUgcHMgcHNfY2xhbXAgaW5cbiAgICBkLCBwc19jbGFtcFxuXG4gIGxldCBzdWIgczAgczEgPSBhZGQgczAgKG5lZyBzMSlcbiAgbGV0IGFicyAoZCwgXyBhcyBzKSA9IGlmIGQgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG4gIHR5cGUgdCA9IHNwYW5cblxuICBsZXQgemVybyA9ICgwLCAwTClcbiAgbGV0IHYgKGQsIHBzIGFzIHMpID1cbiAgICBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heFxuICAgIHRoZW4gaW52YWxpZF9hcmcgKEZvcm1hdC5zcHJpbnRmIFwiaWxsZWdhbCBwdGltZSB0aW1lIHNwYW46ICglZCwlTGQpXCIgZCBwcylcbiAgICBlbHNlIHNcblxuICBsZXQgb2ZfZF9wcyAoZCwgcHMgYXMgcykgPSBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB0aGVuIE5vbmUgZWxzZSBTb21lIHNcbiAgbGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG4gIGxldCB1bnNhZmVfb2ZfZF9wc19vcHRpb24gcyA9IHNcbiAgbGV0IHRvX2RfcHMgcyA9IHNcblxuICBsZXQgb2ZfaW50X3Mgc2VjcyA9XG4gICAgbGV0IGQgPSBzdGRsaWJfYWJzIHNlY3MgaW5cbiAgICBsZXQgcyA9IChkIC8gODZfNDAwLCBJbnQ2NC4obXVsIChvZl9pbnQgKGQgbW9kIDg2XzQwMCkpIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGlmIHNlY3MgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgbGV0IGRheV9pbnRfbWluID0gbWluX2ludCAvIDg2XzQwMFxuICBsZXQgZGF5X2ludF9tYXggPSBtYXhfaW50IC8gODZfNDAwXG4gIGxldCB0b19pbnRfcyAoZCwgcHMpID1cbiAgICBpZiBkIDwgZGF5X2ludF9taW4gfHwgZCA+IGRheV9pbnRfbWF4IHRoZW4gTm9uZSBlbHNlXG4gICAgbGV0IGRheXNfcyA9IGQgKiA4Nl80MDAgaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9faW50IChkaXYgcHMgcHNfY291bnRfaW5fcykpICgqIGFsd2F5cyBwb3NpdGl2ZSAqKSBpblxuICAgIGxldCBzZWNzID0gZGF5c19zICsgZGF5X3MgaW5cbiAgICBpZiBzZWNzIDwgZGF5c19zICgqIHBvc2l0aXZlIG92ZXJmbG93ICopIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjc1xuXG4gIGxldCBtaW5faW50X2Zsb2F0ID0gZmxvYXQgbWluX2ludFxuICBsZXQgbWF4X2ludF9mbG9hdCA9IGZsb2F0IG1heF9pbnRcbiAgbGV0IG9mX2Zsb2F0X3Mgc2VjcyA9XG4gICAgaWYgc2VjcyA8PiBzZWNzICgqIG5hbiAqKSB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCBkYXlzID0gZmxvb3IgKHNlY3MgLy4gODZfNDAwLikgaW5cbiAgICBpZiBkYXlzIDwgbWluX2ludF9mbG9hdCB8fCBkYXlzID4gbWF4X2ludF9mbG9hdCB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCByZW1fcyA9IG1vZF9mbG9hdCBzZWNzIDg2XzQwMC4gaW5cbiAgICBsZXQgcmVtX3MgPSBpZiByZW1fcyA8IDAuIHRoZW4gODZfNDAwLiArLiByZW1fcyBlbHNlIHJlbV9zIGluXG4gICAgaWYgcmVtX3MgPj0gODZfNDAwLiB0aGVuXG4gICAgICAoKiBHdWFyZCBhZ2FpbnN0IGEgcG90ZW50aWFsIG92ZXJmbG93IGluIHRoZSBjb21wdXRhdGlvbiBvZiBbcmVtX3NdICopXG4gICAgICBsZXQgZGF5cyA9IGRheXMgKy4gMS4gaW5cbiAgICAgIGlmIGRheXMgPiBtYXhfaW50X2Zsb2F0IHRoZW4gTm9uZSBlbHNlXG4gICAgICBTb21lIChpbnRfb2ZfZmxvYXQgZGF5cywgMEwpXG4gICAgZWxzZVxuICAgIGxldCBmcmFjX3MsIHJlbV9zID0gbW9kZiByZW1fcyBpblxuICAgIGxldCByZW1fcHMgPSBJbnQ2NC4obXVsIChvZl9mbG9hdCByZW1fcykgcHNfY291bnRfaW5fcykgaW5cbiAgICBsZXQgZnJhY19wcyA9IEludDY0LihvZl9mbG9hdCAoZnJhY19zICouIDFlMTIpKSBpblxuICAgIFNvbWUgKGludF9vZl9mbG9hdCBkYXlzLCAoSW50NjQuYWRkIHJlbV9wcyBmcmFjX3BzKSlcblxuICBsZXQgdG9fZmxvYXRfcyAoZCwgcHMpID1cbiAgICBsZXQgZGF5c19zID0gKGZsb2F0IGQpICouIDg2XzQwMC4gaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9fZmxvYXQgKGRpdiBwcyBwc19jb3VudF9pbl9zKSkgaW5cbiAgICBsZXQgZGF5X3JlbV9wcyA9IEludDY0Lih0b19mbG9hdCAocmVtIHBzIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGRheXNfcyArLiBkYXlfcyArLiAoZGF5X3JlbV9wcyAqLiAxZS0xMilcblxuICAoKiBQcmVkaWNhdGVzICopXG5cbiAgbGV0IGVxdWFsIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxID0gMCAmJlxuICAgIEludDY0LmNvbXBhcmUgcHMwIHBzMSA9IDBcblxuICBsZXQgY29tcGFyZSAoZDAsIHBzMCkgKGQxLCBwczEpID1cbiAgICBsZXQgYyA9IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIChjb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KSBwczAgcHMxXG5cbiAgKCogUm91bmRpbmcgKilcblxuICBsZXQgcm91bmRfZGl2IGEgYiA9ICgqIGEgPj0gMCBhbmQgYiA+IDAgKilcbiAgICBpZiBhID0gMEwgdGhlbiAwTCBlbHNlXG4gICAgSW50NjQuKGRpdiAoYWRkIGEgKGRpdiBiIDJMKSkgYilcblxuICBsZXQgZnJhY19kaXYgPSBbfCAxXzAwMF8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgMTAwXzAwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgMTBfMDAwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgMV8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDEwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMUw7IHxdXG5cbiAgbGV0IHJvdW5kIH5mcmFjX3M6ZnJhYyAoc2lnbiwgXyBhcyB0KSA9XG4gICAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICAgIGxldCAoZCwgcHMpID0gaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHQgaW5cbiAgICBsZXQgcnBzID0gSW50NjQubXVsIChyb3VuZF9kaXYgcHMgZnJhY19kaXYuKGZyYWMpKSBmcmFjX2Rpdi4oZnJhYykgaW5cbiAgICBsZXQgdCA9IGlmIHJwcyA+IHBzX2RheV9tYXggdGhlbiAoZCArIDEsIDBMKSBlbHNlIChkLCBycHMpIGluXG4gICAgaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHRcblxuICBsZXQgdHJ1bmNhdGUgfmZyYWNfczpmcmFjIChzaWduLCBfIGFzIHQpID1cbiAgICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gICAgbGV0IChkLCBwcykgPSBpZiBzaWduIDwgMCB0aGVuIG5lZyB0IGVsc2UgdCBpblxuICAgIGxldCB0cHMgPSBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMpKSkgaW5cbiAgICBpZiBzaWduIDwgMCB0aGVuIG5lZyAoZCwgdHBzKSBlbHNlIChkLCB0cHMpXG5cbiAgbGV0IHRydW5jYXRlX2Rvd24gfmZyYWNfczpmcmFjIChkLCBwcykgPVxuICAgIChkLCBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMgKSkpKVxuXG4gICgqIFByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBkdW1wIHBwZiAoZCwgcHMpID0gRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8MT4oJWQsQCwlTGQpQF1cIiBkIHBzXG5cbiAgKCogV2FybmluZyBsYWJvcmlvdXMgY29kZSBmb2xsb3dzLiBJcyB0aGVyZSBhIGJldHRlciB3YXkgPyAqKVxuXG4gIGxldCBkaXZpZGVfcHMgfmNhcnJ5IHBzIGhpIGxvID1cbiAgICBsZXQgaGlfZCA9IEludDY0Lih0b19pbnQgKGRpdiBwcyBoaSkpIGluXG4gICAgbGV0IHJlbV9wcyA9IEludDY0LnJlbSBwcyBoaSBpblxuICAgIGxldCBsb19kID0gSW50NjQudG9faW50IChyb3VuZF9kaXYgcmVtX3BzIGxvKSBpblxuICAgIGlmIGxvX2QgPSBjYXJyeSB0aGVuIGhpX2QgKyAxLCAwIGVsc2UgaGlfZCwgbG9fZFxuXG4gIGxldCBwcF95X2QgcHBmIH5uZWcgZCBwcyA9ICgqIGFzc2VydCBkID49IDAgKilcbiAgICBsZXQgeSwgcmVtX2QgPVxuICAgICAgbGV0IG1heF9kID0gbWF4X2ludCAvIDQgaW5cbiAgICAgIGlmIGQgPiBtYXhfZCB0aGVuICgqIGQgKiA0IG92ZXJmbG93cyAqKSBkIC8gMzY1LCBkIG1vZCAzNjUgZWxzZVxuICAgICAgbGV0IHkgPSAoZCAqIDQpIC8gMTQ2MSAoKiAvIDM2NS4yNSAqKSBpblxuICAgICAgeSwgZCAtICh5ICogMTQ2MSkgLyA0XG4gICAgaW5cbiAgICBsZXQgZGF5cyA9IHJlbV9kICsgSW50NjQudG9faW50IChyb3VuZF9kaXYgcHMgcHNfY291bnRfaW5fZGF5KSBpblxuICAgIGxldCB5LCBkYXlzID0gaWYgZGF5cyA9IDM2NiB0aGVuIHkgKyAxLCAxIGVsc2UgeSwgZGF5cyBpblxuICAgIGxldCB5ID0gaWYgbmVnIHRoZW4gLXkgZWxzZSB5IGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgeTtcbiAgICBpZiBkYXlzIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGRcIiBkYXlzO1xuICAgICgpXG5cbiAgbGV0IHBwX2RfaCBwcGYgfm5lZyBkIHBzID1cbiAgICBsZXQgaCwgXyA9IGRpdmlkZV9wcyB+Y2Fycnk6MSBwcyBwc19jb3VudF9pbl9ob3VyIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgICBsZXQgZCwgaCA9IGlmIGggPSAyNCB0aGVuIGQgKyAxLCAwIGVsc2UgZCwgaCBpblxuICAgIGlmIGQgPSAzNjYgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHkxZFwiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGVsc2VcbiAgICBpZiBkID0gMzY1ICYmIGggPj0gNlxuICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBkID0gaWYgbmVnIHRoZW4gLWQgZWxzZSBkIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgZDtcbiAgICBpZiBoIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiBoO1xuICAgICgpXG5cbiAgbGV0IHBwX2hfbSBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IGgsIG0gPSBkaXZpZGVfcHMgfmNhcnJ5OjYwIHBzIHBzX2NvdW50X2luX2hvdXIgcHNfY291bnRfaW5fbWluIGluXG4gICAgaWYgaCA9IDI0IHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBoID0gaWYgbmVnIHRoZW4gLWggZWxzZSBoIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRoXCIgaDtcbiAgICBpZiBtIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgKClcblxuICBsZXQgcHBfbV9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgbSwgcyA9IGRpdmlkZV9wcyB+Y2Fycnk6NjAgcHMgcHNfY291bnRfaW5fbWluIHBzX2NvdW50X2luX3MgaW5cbiAgICBpZiBtID0gNjAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IG0gPSBpZiBuZWcgdGhlbiAtbSBlbHNlIG0gaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgaWYgcyA8PiAwIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgcztcbiAgICAoKVxuXG4gIGxldCBwcF9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgcywgbXMgPSBkaXZpZGVfcHMgfmNhcnJ5OjEwMDAgcHMgcHNfY291bnRfaW5fcyBwc19jb3VudF9pbl9tcyBpblxuICAgIGlmIHMgPSA2MCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkbWluXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBzID0gaWYgbmVnIHRoZW4gLXMgZWxzZSBzIGluXG4gICAgaWYgbXMgPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkLiUwM2RzXCIgcyBtcyBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgc1xuXG4gIGxldCBwcF91bml0IGhpZ2hlcl9zdHIgaGkgaGlfc3RyIGZyYWNfbGltaXQgbG8gcHBmIH5uZWcgcHMgPVxuICAgIGxldCBwcF91bml0X2ludGVncmFsIHBwZiB+bmVnIGggPVxuICAgICAgaWYgaCA9IDEwMDBcbiAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGhpZ2hlcl9zdHJcbiAgICAgIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtaCBlbHNlIGgpIGhpX3N0clxuICAgIGluXG4gICAgaWYgcHMgPCBmcmFjX2xpbWl0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBoLCBsID0gZGl2aWRlX3BzIH5jYXJyeToxMDAwIHBzIGhpIGxvIGluXG4gICAgICBpZiBoID49IDEwMCB8fCBsID0gMCB0aGVuIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgaCBlbHNlXG4gICAgICBsZXQgaCA9IGlmIG5lZyB0aGVuIC1oIGVsc2UgaCBpblxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQuJTAzZCVzXCIgaCBsIGhpX3N0clxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbXMsIF8gPSBkaXZpZGVfcHMgfmNhcnJ5OjEgcHMgaGkgaGkgaW5cbiAgICAgIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgbXNcbiAgICBlbmRcblxuICBsZXQgcHBfbXMgPVxuICAgIHBwX3VuaXQgXCJzXCIgcHNfY291bnRfaW5fbXMgXCJtc1wiIHBzX2NvdW50X2luXzEwMG1zIHBzX2NvdW50X2luX3VzXG5cbiAgbGV0IHBwX3VzID1cbiAgICBwcF91bml0IFwibXNcIiBwc19jb3VudF9pbl91cyBcInVzXCIgcHNfY291bnRfaW5fMTAwdXMgcHNfY291bnRfaW5fbnNcblxuICBsZXQgcHBfbnMgPVxuICAgIHBwX3VuaXQgXCJ1c1wiIHBzX2NvdW50X2luX25zIFwibnNcIiBwc19jb3VudF9pbl8xMDBucyBwc19jb3VudF9pbl9wc1xuXG4gIGxldCBwcF9wcyBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IHBzID0gSW50NjQudG9faW50IHBzIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRwc1wiIChpZiBuZWcgdGhlbiAtcHMgZWxzZSBwcylcblxuICBsZXQgcHAgcHBmIChzaWduLCBfIGFzIHMpID1cbiAgICBsZXQgbmVnID0gc2lnbiA8IDAgaW5cbiAgICBtYXRjaCAoYWJzIHMpIHdpdGhcbiAgICB8ICgwLCBwcykgLT5cbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5faG91ciB0aGVuIHBwX2hfbSBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX21pbiB0aGVuIHBwX21fcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3MgdGhlbiBwcF9zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fbXMgdGhlbiBwcF9tcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3VzIHRoZW4gcHBfdXMgcHBmIH5uZWcgcHMgZWxzZVxuICAgICAgICBpZiBwcyA+PSBwc19jb3VudF9pbl9ucyB0aGVuIHBwX25zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgcHBfcHMgcHBmIH5uZWcgcHNcbiAgICB8IChkLCBwcykgLT5cbiAgICAgICAgaWYgZCA+IDM2NSB0aGVuIHBwX3lfZCBwcGYgfm5lZyBkIHBzIGVsc2VcbiAgICAgICAgcHBfZF9oIHBwZiB+bmVnIGQgcHNcbmVuZFxuXG4oKiBQT1NJWCB0aW1lc3RhbXBzICopXG5cbmxldCB2IChkLCBwcyBhcyBzKSA9XG4gIGlmIChwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB8fCBkIDwgZGF5X21pbiB8fCBkID4gZGF5X21heClcbiAgdGhlbiBpbnZhbGlkX2FyZyAoRm9ybWF0LnNwcmludGYgXCJpbGxlZ2FsIHB0aW1lIHRpbWVzdGFtcDogKCVkLCVMZClcIiBkIHBzKVxuICBlbHNlIHNcblxubGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG5cbmxldCBvZl9zcGFuIChkLCBfIGFzIHNwYW4pID1cbiAgaWYgZCA8IGRheV9taW4gfHwgZCA+IGRheV9tYXggdGhlbiBOb25lIGVsc2UgU29tZSBzcGFuXG5cbmxldCB0b19zcGFuIHQgPSB0XG5cbmxldCBvZl9mbG9hdF9zIHNlY3MgPSBtYXRjaCBTcGFuLm9mX2Zsb2F0X3Mgc2VjcyB3aXRoXG58IE5vbmUgLT4gTm9uZVxufCBTb21lIGQgLT4gb2Zfc3BhbiBkXG5cbmxldCB0b19mbG9hdF9zID0gU3Bhbi50b19mbG9hdF9zXG5cbmxldCB0cnVuY2F0ZSA9IFNwYW4udHJ1bmNhdGVfZG93blxuXG5sZXQgZnJhY19zIChfLCBwcykgPSAoMCwgSW50NjQuKHJlbSBwcyBwc19jb3VudF9pbl9zKSlcblxuKCogUHJlZGljYXRlcyAqKVxuXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgY29tcGFyZSA9IFNwYW4uY29tcGFyZVxubGV0IGlzX2VhcmxpZXIgdCB+dGhhbiA9IGNvbXBhcmUgdCB0aGFuID0gLTFcbmxldCBpc19sYXRlciB0IH50aGFuID0gY29tcGFyZSB0IHRoYW4gPSAxXG5cbigqIFBPU0lYIGFyaXRobWV0aWMgKilcblxubGV0IGFkZF9zcGFuIHQgZCA9IG9mX3NwYW4gKFNwYW4uYWRkIHQgZClcbmxldCBzdWJfc3BhbiB0IGQgPSBvZl9zcGFuIChTcGFuLnN1YiB0IGQpXG5sZXQgZGlmZiB0MSB0MCA9IFNwYW4uc3ViIHQxIHQwXG5cbigqIFRpbWUgem9uZSBvZmZzZXRzIGJldHdlZW4gbG9jYWwgYW5kIFVUQyB0aW1lbGluZXMgKilcblxudHlwZSB0el9vZmZzZXRfcyA9IGludFxuXG4oKiBEYXRlLXRpbWUgY29udmVyc2lvblxuXG4gICBQT1NJWCB0aW1lIGNvdW50cyBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDIHdpdGhvdXRcbiAgIGNvdW50aW5nIGxlYXAgc2Vjb25kcyAtLSB3aGVuIGEgbGVhcCBzZWNvbmQgb2NjdXJzIGEgUE9TSVggc2Vjb25kXG4gICBjYW4gYmUgdHdvIFNJIHNlY29uZHMgb3IgemVybyBTSSBzZWNvbmQuIEhlbmNlIDg2NDAwIFBPU0lYIHNlY29uZHNcbiAgIGFsd2F5cyByZXByZXNlbnQgYW4gVVRDIGRheSBhbmQgdGhlIHRyYW5zbGF0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGVcbiAgIHdpdGhvdXQgaGF2aW5nIHRvIHJlZmVyIHRvIGEgbGVhcCBzZWNvbmRzIHRhYmxlLiAqKVxuXG50eXBlIGRhdGUgPSAoaW50ICogaW50ICogaW50KVxudHlwZSB0aW1lID0gKGludCAqIGludCAqIGludCkgKiB0el9vZmZzZXRfc1xuXG5sZXQgbWF4X21vbnRoX2RheSA9ICAgICAgICAgICAgICAgKCogbWF4IGRheSBudW1iZXIgaW4gYSBnaXZlbiB5ZWFyJ3MgbW9udGguICopXG4gIGxldCBpc19sZWFwX3llYXIgeSA9ICh5IG1vZCA0ID0gMCkgJiYgKHkgbW9kIDEwMCA8PiAwIHx8IHkgbW9kIDQwMCA9IDApIGluXG4gIGxldCBtbGVuID0gW3wzMTsgMjggKCogb3Igbm90ICopOyAzMTsgMzA7IDMxOyAzMDsgMzE7IDMxOyAzMDsgMzE7IDMwOyAzMXxdIGluXG4gIGZ1biB5IG0gLT4gaWYgKG0gPSAyICYmIGlzX2xlYXBfeWVhciB5KSB0aGVuIDI5IGVsc2UgbWxlbi4obSAtIDEpXG5cbmxldCBpc19kYXRlX3ZhbGlkICh5LCBtLCBkKSA9XG4gIDAgPD0geSAmJiB5IDw9IDk5OTkgJiZcbiAgMSA8PSBtICYmIG0gPD0gMTIgJiZcbiAgMSA8PSBkICYmIGQgPD0gbWF4X21vbnRoX2RheSB5IG1cblxubGV0IGlzX3RpbWVfdmFsaWQgKChoaCwgbW0sIHNzKSwgXykgPVxuICAwIDw9IGhoICYmIGhoIDw9IDIzICYmXG4gIDAgPD0gbW0gJiYgbW0gPD0gNTkgJiZcbiAgMCA8PSBzcyAmJiBzcyA8PSA2MFxuXG5sZXQgb2ZfZGF0ZV90aW1lIChkYXRlLCAoKGhoLCBtbSwgc3MpLCB0el9vZmZzZXRfcyBhcyB0KSkgPVxuICAoKiBXZSBmaXJzdCB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBhcmUgUHRpbWUtdmFsaWQuXG4gICAgIE9uY2UgdGhpcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCB3ZSBmaW5kIGZpbmQgdGhlIG51bWJlciBvZiBKdWxpYW5cbiAgICAgZGF5cyBzaW5jZSB0aGUgZXBvY2ggZm9yIHRoZSBnaXZlbiBwcm9sZXB0aWMgR2VvcmdpYW4gY2FsZW5kYXJcbiAgICAgZGF0ZS4gVGhpcyBnaXZlcyB1cyB0aGUgUE9TSVggZGF5IGNvbXBvbmVudCBvZiB0aGUgdGltZXN0YW1wLiBUaGVcbiAgICAgcmVtYWluaW5nIHRpbWUgZmllbGRzIGFyZSB1c2VkIHRvIGRlcml2ZSB0aGUgcGljb3NlY29uZCBwcmVjaXNpb25cbiAgICAgdGltZSBpbiB0aGF0IGRheSBjb21wZW5zYXRlZCBieSB0aGUgdGltZSB6b25lIG9mZnNldC4gVGhlIGZpbmFsXG4gICAgIHJlc3VsdCBpcyBjaGVja2VkIHRvIGJlIGluIFB0aW1lJ3MgW21pbjttYXhdIHJhbmdlLlxuXG4gICAgIEJ5IGRlZmluaXRpb24gUE9TSVggdGltZXN0YW1wcyBjYW5ub3QgcmVwcmVzZW50IGxlYXAgc2Vjb25kcy5cbiAgICAgV2l0aCB0aGUgY29kZSBiZWxvdyBhbnkgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzIHZhbHVlIG9mIDYwXG4gICAgIChsZWFwIHNlY29uZCBhZGRpdGlvbikgaXMgbWFwcGVkIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAgdGhhdFxuICAgICBoYXBwZW5zIDEgc2Vjb25kIGxhdGVyIHdoaWNoIGlzIHdoYXQgUE9TSVggbWt0aW1lIHdvdWxkIHRvLiBBbnlcbiAgICAgZm9ybWFsbHkgbm9uLWV4aXN0aW5nIFVUQyBkYXRlLXRpbWUgd2l0aCBhIHNlY29uZHMgdmFsdWUgb2YgNTlcbiAgICAgKGxlYXAgc2Vjb25kIHN1YnRyYWN0aW9uKSBpcyBtYXBwZWQgb24gdGhlIFBPU0lYIHRpbWVzdGFtcCB0aGF0XG4gICAgIHJlcHJlc2VudHMgdGhpcyBub24gZXhpc3RpbmcgaW5zdGFudC4gKilcbiAgaWYgbm90IChpc19kYXRlX3ZhbGlkIGRhdGUgJiYgaXNfdGltZV92YWxpZCB0KSB0aGVuIE5vbmUgZWxzZVxuICBsZXQgZCA9IGpkX29mX2RhdGUgZGF0ZSAtIGpkX3Bvc2l4X2Vwb2NoIGluXG4gIGxldCBoaF9wcyA9IEludDY0LihtdWwgKG9mX2ludCBoaCkgcHNfY291bnRfaW5faG91cikgaW5cbiAgbGV0IG1tX3BzID0gSW50NjQuKG11bCAob2ZfaW50IG1tKSBwc19jb3VudF9pbl9taW4pIGluXG4gIGxldCBzc19wcyA9IEludDY0LihtdWwgKG9mX2ludCBzcykgcHNfY291bnRfaW5fcykgaW5cbiAgbGV0IHBzID0gSW50NjQuKGFkZCBoaF9wcyAoYWRkIG1tX3BzIHNzX3BzKSkgaW5cbiAgc3ViX3NwYW4gKGQsIHBzKSAoU3Bhbi5vZl9pbnRfcyB0el9vZmZzZXRfcylcblxubGV0IHRvX2RhdGVfdGltZSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gICgqIFRvIHJlbmRlciB0aGUgdGltZXN0YW1wIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgb2Zmc2V0IHdlIGZpcnN0XG4gICAgIGV4cHJlc3MgdGhlIHRpbWVzdGFtcCBpbiBsb2NhbCB0aW1lIGFuZCB0aGVuIGNvbXB1dGUgdGhlIGRhdGVcbiAgICAgZmllbGRzIG9uIHRoYXQgc3RhbXAgYXMgaWYgaXQgd2VyZSBVVEMuIElmIHRoZSBsb2NhbCB0aW1lc3RhbXAgaXNcbiAgICAgbm90IGluIFttaW47bWF4XSB0aGVuIGl0cyBkYXRlIGZpZWxkcyBjYW5ub3QgYmUgdmFsaWQgYWNjb3JkaW5nXG4gICAgIHRvIHRoZSBjb25zdHJhaW50cyBndWFyYW50ZWVkIGJ5IFB0aW1lIGFuZCB3ZSBmYWxsYmFjayB0byBVVEMsXG4gICAgIGkuZS4gYSB0aW1lIHpvbmUgb2Zmc2V0IG9mIDAuXG5cbiAgICAgV2UgdGhlbiBhcHBseSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSB3aG9zZSBkZXNjcmlwdGlvbiBtYWtlc1xuICAgICBzZW5zZSBvbiBhIFBPU0lYIHRpbWVzdGFtcCAoaS5lLiBVVEMpIGJ1dCB3b3JrcyBlcXVhbGx5IHdlbGwgdG9cbiAgICAgcmVuZGVyIHRoZSBkYXRlLXRpbWUgZmllbGRzIG9mIGEgbG9jYWwgdGltZXN0YW1wLlxuXG4gICAgIFdlIGZpcnN0IHRha2UgdGFrZSB0aGUgUE9TSVggZGF5IGNvdW50IFtkXSAoZXF1aXZhbGVudCBieVxuICAgICBkZWZpbml0aW9uIHRvIGFuIFVUQyBkYXkgY291bnQpIGZyb20gdGhlIGVwb2NoLCBjb252ZXJ0IGl0IHRvIGFcbiAgICAgSnVsaWFuIGRheSBhbmQgdXNlIHRoaXMgdG8gZ2V0IHRoZSBwcm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyXG4gICAgIGRhdGUuIFRoZSBQT1NJWCBwaWNvc2Vjb25kcyBbcHNdIGluIHRoZSBkYXkgYXJlIGFyZSBjb252ZXJ0ZWQgdG9cbiAgICAgYSBkYXl0aW1lIGFjY29yZGluZyB0byB0byBpdHMgdmFyaW91cyB1bml0cy5cblxuICAgICBCeSBkZWZpbml0aW9uIG5vIFBPU0lYIHRpbWVzdGFtcCBjYW4gcmVwcmVzZW50IGEgZGF0ZS10aW1lIHdpdGggYVxuICAgICBzZWNvbmRzIHZhbHVlIG9mIDYwIChsZWFwIHNlY29uZCBhZGRpdGlvbikgYW5kIHRodXMgdGhlIGZ1bmN0aW9uXG4gICAgIHdpbGwgbmV2ZXIgcmV0dXJuIGEgZGF0ZS10aW1lIHdpdGggc3VjaCBhIHZhbHVlLiAgT24gdGhlIG90aGVyXG4gICAgIGhhbmQgaXQgd2lsbCByZXR1cm4gYW4gaW5leGlzdGluZyBVVEMgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzXG4gICAgIHZhbHVlIG9mIDU5IHdoZW5ldmVyIGEgbGVhcCBzZWNvbmQgaXMgc3VidHJhY3RlZCBzaW5jZSB0aGVyZSBpcyBhXG4gICAgIFBPU0lYIHRpbWVzdGFtcCB0aGF0IHJlcHJlc2VudHMgdGhpcyBpbnN0YW50LiAqKVxuICBsZXQgKGQsIHBzKSwgdHpfb2Zmc2V0X3MgPSBtYXRjaCBhZGRfc3BhbiB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSB3aXRoXG4gIHwgTm9uZSAtPiB0LCAwICgqIGZhbGxiYWNrIHRvIFVUQyAqKVxuICB8IFNvbWUgbG9jYWwgLT4gbG9jYWwsIHR6X29mZnNldF9zXG4gIGluXG4gIGxldCBqZCA9IGQgKyBqZF9wb3NpeF9lcG9jaCBpblxuICBsZXQgZGF0ZSA9IGpkX3RvX2RhdGUgamQgaW5cbiAgbGV0IGhoID0gSW50NjQuKHRvX2ludCAoZGl2IHBzIHBzX2NvdW50X2luX2hvdXIpKSBpblxuICBsZXQgaGhfcmVtID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgbGV0IG1tID0gSW50NjQuKHRvX2ludCAoZGl2IGhoX3JlbSBwc19jb3VudF9pbl9taW4pKSBpblxuICBsZXQgbW1fcmVtID0gSW50NjQucmVtIGhoX3JlbSBwc19jb3VudF9pbl9taW4gaW5cbiAgbGV0IHNzID0gSW50NjQuKHRvX2ludCAoZGl2IG1tX3JlbSBwc19jb3VudF9pbl9zKSkgaW5cbiAgZGF0ZSwgKChoaCwgbW0sIHNzKSwgdHpfb2Zmc2V0X3MpXG5cbmxldCBvZl9kYXRlID90el9vZmZzZXRfczoodHogPSAwKSBkYXRlID0gb2ZfZGF0ZV90aW1lIChkYXRlLCAoKDAwLCAwMCwgMDApLCB0eikpXG5sZXQgdG9fZGF0ZSA/dHpfb2Zmc2V0X3MgdCA9IGZzdCAodG9fZGF0ZV90aW1lID90el9vZmZzZXRfcyB0KVxubGV0IG9mX3llYXIgP3R6X29mZnNldF9zIHkgPSBvZl9kYXRlID90el9vZmZzZXRfcyAoeSwgMDEsIDAxKVxubGV0IHRvX3llYXIgPyh0el9vZmZzZXRfcyA9IDApIHQgPVxuICBsZXQgZCA9IG1hdGNoIGFkZF9zcGFuIHQgKFNwYW4ub2ZfaW50X3MgdHpfb2Zmc2V0X3MpIHdpdGhcbiAgfCBOb25lIC0+IGZzdCB0ICgqIGZhbGxiYWNrIHRvIFVUQyAqKSB8IFNvbWUgKGxvY2FsX2QsIF8pIC0+IGxvY2FsX2RcbiAgaW5cbiAgamRfdG9feWVhciAoZCArIGpkX3Bvc2l4X2Vwb2NoKVxuXG5cbnR5cGUgd2Vla2RheSA9IFsgYFN1biB8IGBNb24gfCBgVHVlIHwgYFdlZCB8IGBUaHUgfCBgRnJpIHwgYFNhdCBdXG5cbmxldCB3ZWVrZGF5X251bSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gIGxldCAoZCwgXykgPSBTcGFuLmFkZCB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSBpblxuICAoKiBOLkIuIGluIGNvbnRyYXN0IHRvIFt0b19kYXRlX3RpbWVdIHdlIGRvbid0IGNhcmUgaWYgd2UgZmFsbCBvdXRzaWRlXG4gICAgW21pbjttYXhdLiBFdmVuIGlmIGl0IGhhcHBlbnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcHV0YXRpb24gaXMgc3RpbGxcbiAgICAgY29ycmVjdCAqKVxuICBsZXQgaSA9IChkICsgNCAoKiBFcG9jaCwgZCA9IDAsIHdhcyBhIHRodSwgd2Ugd2FudCA0IGZvciB0aGF0IGRheSAqKSkgbW9kIDcgaW5cbiAgaWYgaSA8IDAgdGhlbiA3ICsgaSBlbHNlIGlcblxubGV0IHdlZWtkYXkgPVxuICBsZXQgd2RheSA9IFt8IGBTdW47IGBNb247IGBUdWU7IGBXZWQ7IGBUaHU7IGBGcmk7IGBTYXQ7IHxdIGluXG4gIGZ1biA/dHpfb2Zmc2V0X3MgdCAtPiB3ZGF5Lih3ZWVrZGF5X251bSA/dHpfb2Zmc2V0X3MgdClcblxuKCogUkZDIDMzMzkgdGltZXN0YW1wIGNvbnZlcnNpb25zICopXG5cbigqIFJGQyAzMzM5IHRpbWVzdGFtcCBwYXJzZXIgKilcblxudHlwZSBlcnJvcl9yYW5nZSA9IGludCAqIGludFxudHlwZSByZmMzMzM5X2Vycm9yID1cbiAgWyBgSW52YWxpZF9zdGFtcCB8IGBFb2kgfCBgRXhwX2NoYXJzIG9mIGNoYXIgbGlzdCB8IGBUcmFpbGluZ19pbnB1dCBdXG5cbmxldCBwcF9yZmMzMzM5X2Vycm9yIHBwZiA9IGZ1bmN0aW9uXG58IGBJbnZhbGlkX3N0YW1wIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbaW52YWxpZEAgdGltZUAgc3RhbXBAXVwiXG58IGBFb2kgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQFt1bmV4cGVjdGVkQCBlbmRAIG9mQCBpbnB1dEBdXCJcbnwgYFRyYWlsaW5nX2lucHV0IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbdHJhaWxpbmdAIGlucHV0QF1cIlxufCBgRXhwX2NoYXJzIGNzIC0+XG4gICAgbGV0IHJlYyBwcF9jaGFycyBwcGYgPSBmdW5jdGlvblxuICAgIHwgYyA6OiBjcyAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAICVDXCIgYzsgcHBfY2hhcnMgcHBmIGNzXG4gICAgfCBbXSAtPiAoKVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFtleHBlY3RlZEAgYUAgY2hhcmFjdGVyQCBpbjolYUBdXCIgcHBfY2hhcnMgY3NcblxubGV0IHBwX3JhbmdlIHBwZiAocywgZSkgPVxuICBpZiBzID0gZSAgdGhlbiBGb3JtYXQucHBfcHJpbnRfaW50IHBwZiBzIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQtJWRcIiBzIGVcblxubGV0IF9yZmMzMzM5X2Vycm9yX3RvX3N0cmluZyAociwgZXJyKSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWE6ICVhQF1cIiBwcF9yYW5nZSByIHBwX3JmYzMzMzlfZXJyb3IgZXJyXG5cbmxldCByZmMzMzM5X3N0cmluZ19lcnJvciA9IGZ1bmN0aW9uXG58IE9rIF8gYXMgdiAtPiB2IHwgRXJyb3IgKGBSRkMzMzM5IGUpIC0+IEVycm9yIChfcmZjMzMzOV9lcnJvcl90b19zdHJpbmcgZSlcblxubGV0IHJmYzMzMzlfZXJyb3JfdG9fbXNnID0gZnVuY3Rpb25cbnwgT2sgXyBhcyB2IC0+IHYgfCBFcnJvciAoYFJGQzMzMzkgZSkgLT5cbiAgICBFcnJvciAoYE1zZyAoX3JmYzMzMzlfZXJyb3JfdG9fc3RyaW5nIGUpKVxuXG5leGNlcHRpb24gUkZDMzMzOSBvZiAoaW50ICogaW50KSAqIHJmYzMzMzlfZXJyb3IgICAgICAgICAgICAgICAgICAoKiBJbnRlcm5hbCAqKVxuXG5sZXQgZXJyb3IgciBlID0gcmFpc2UgKFJGQzMzMzkgKHIsIGUpKVxubGV0IGVycm9yX3BvcyBwIGUgPSBlcnJvciAocCwgcCkgZVxubGV0IGVycm9yX2V4cF9kaWdpdCBwID1cbiAgZXJyb3JfcG9zIHAgKGBFeHBfY2hhcnMgWycwJzsgJzEnOyAnMic7ICczJzsgJzQnOyAnNSc7ICc2JzsgJzcnOyAnOCc7ICc5J10pXG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxubGV0IHBhcnNlX2RpZ2l0cyB+Y291bnQgcG9zIG1heCBzID1cbiAgbGV0IHN0b3AgPSBwb3MgKyBjb3VudCAtIDEgaW5cbiAgaWYgc3RvcCA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyA9XG4gICAgaWYgayA+IHN0b3AgdGhlbiBhY2MgZWxzZVxuICAgIGlmIGlzX2RpZ2l0IHMuW2tdIHRoZW4gbG9vcCAoaysxKSAoYWNjICogMTAgKyBDaGFyLmNvZGUgcy5ba10gLSAweDMwKSBlbHNlXG4gICAgZXJyb3JfZXhwX2RpZ2l0IGtcbiAgaW5cbiAgbG9vcCBwb3MgMFxuXG5sZXQgcGFyc2VfY2hhciBjIHBvcyBtYXggcyA9XG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGlmIHMuW3Bvc10gPSBjIHRoZW4gKCkgZWxzZSBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIFtjXSlcblxubGV0IHBhcnNlX2R0X3NlcCB+c3RyaWN0IHBvcyBtYXggcyA9XG4gIGxldCBpc19kdF9zZXAgPSBmdW5jdGlvblxuICB8ICdUJyAtPiB0cnVlXG4gIHwgJ3QnIHwgJyAnIHdoZW4gbm90IHN0cmljdCAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBpc19kdF9zZXAgcy5bcG9zXSB0aGVuICgpIGVsc2VcbiAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyAoWydUJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsndCc7ICcgJ10pKVxuXG5sZXQgZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgfCAnLicgLT4gYEZyYWNcbiAgfCAnKycgfCAnLScgfCAnWicgLT4gYFR6XG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAgLT4gYFR6XG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycuJzsgJysnOyAnLSc7ICdaJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsneiddIGluXG4gICAgICBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIGNoYXJzKVxuXG5sZXQgcGFyc2VfZnJhY19wcyBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBub3QgKGlzX2RpZ2l0IHMuW3Bvc10pIHRoZW4gZXJyb3JfZXhwX2RpZ2l0IHBvcyBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyBwb3cgPVxuICAgIGlmIGsgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICAgIGlmIG5vdCAoaXNfZGlnaXQgcy5ba10pIHRoZW4gKFNvbWUgYWNjKSwgayBlbHNlXG4gICAgbGV0IGNvdW50ID0gayAtIHBvcyArIDEgaW5cbiAgICBpZiBjb3VudCA+IDEyIHRoZW4gKCogdHJ1bmNhdGUgKikgbG9vcCAoayArIDEpIGFjYyBwb3cgZWxzZVxuICAgIGxldCBwb3cgPSBJbnQ2NC5kaXYgcG93IDEwTCBpblxuICAgIGxldCBhY2MgPSBJbnQ2NC4oYWRkIGFjYyAobXVsIChvZl9pbnQgKENoYXIuY29kZSBzLltrXSAtIDB4MzApKSBwb3cpKSBpblxuICAgIGxvb3AgKGsgKyAxKSBhY2MgcG93XG4gIGluXG4gIGxvb3AgcG9zIDBMIHBzX2NvdW50X2luX3NcblxubGV0IHBhcnNlX3R6X3MgfnN0cmljdCBwb3MgbWF4IHMgPVxuICBsZXQgcGFyc2VfdHpfbWFnIHNpZ24gcG9zID1cbiAgICBsZXQgaGhfcG9zID0gcG9zIGluXG4gICAgbGV0IGhoID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGhoX3BvcyBtYXggcyBpblxuICAgIGxldCBtbSwgbW1fcG9zID0gbWF0Y2ggc3RyaWN0IHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgICAgbGV0IG1tX3BvcyA9IGhoX3BvcyArIDMgaW5cbiAgICAgICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgICAgICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzLCBtbV9wb3NcbiAgICB8IGZhbHNlIC0+XG4gICAgICAgIGxldCBuZXh0ID0gaGhfcG9zICsgMiBpblxuICAgICAgICBpZiBuZXh0ID4gbWF4IHx8IG5vdCAocy5bbmV4dF0gPSAnOicgfHwgaXNfZGlnaXQgcy5bbmV4dF0pXG4gICAgICAgIHRoZW4gKDAsIGhoX3BvcyAoKiBlbmQgcG9zIG9mIHBhcnNlIC0gMSwgb25lIGlzIGFkZGVkIGF0IHRoZSBlbmQgKikpXG4gICAgICAgIGVsc2VcbiAgICAgICAgbGV0IG1tX3BvcyA9IGlmIHMuW25leHRdID0gJzonIHRoZW4gaGhfcG9zICsgMyBlbHNlIGhoX3BvcyArIDIgaW5cbiAgICAgICAgcGFyc2VfZGlnaXRzIH5jb3VudDoyIG1tX3BvcyBtYXggcywgbW1fcG9zXG4gICAgaW5cbiAgICBpZiBoaCA+IDIzIHRoZW4gZXJyb3IgKGhoX3BvcywgaGhfcG9zICsgMSkgYEludmFsaWRfc3RhbXAgZWxzZVxuICAgIGlmIG1tID4gNTkgdGhlbiBlcnJvciAobW1fcG9zLCBtbV9wb3MgKyAxKSBgSW52YWxpZF9zdGFtcCBlbHNlXG4gICAgbGV0IHNlY3MgPSBoaCAqIDM2MDAgKyBtbSAqIDYwIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCBzZWNzID0gMCAmJiBzaWduID0gLTEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lICgqIC0wMDowMCBjb252ZW50aW9uICopXG4gICAgfCBmYWxzZSAtPiBTb21lIChzaWduICogc2VjcylcbiAgICBpblxuICAgIHR6X3MsIG1tX3BvcyArIDFcbiAgaW5cbiAgaWYgcG9zID4gbWF4IHRoZW4gZXJyb3JfcG9zIG1heCBgRW9pIGVsc2VcbiAgbWF0Y2ggcy5bcG9zXSB3aXRoXG4gIHwgJ1onIC0+IFNvbWUgMCwgcG9zXG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAtPiBTb21lIDAsIHBvc1xuICB8ICcrJyAtPiBwYXJzZV90el9tYWcgKCAxKSAocG9zICsgMSlcbiAgfCAnLScgLT4gcGFyc2VfdHpfbWFnICgtMSkgKHBvcyArIDEpXG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycrJzsgJy0nOyAnWiddIEAgaWYgc3RyaWN0IHRoZW4gW10gZWxzZSBbJ3onXSBpblxuICAgICAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyBjaGFycylcblxubGV0IG9mX3JmYzMzMzkgPyhzdHJpY3QgPSBmYWxzZSkgPyhzdWIgPSBmYWxzZSkgPyhzdGFydCA9IDApIHMgPVxuICB0cnlcbiAgICBsZXQgc19sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbWF4ID0gc19sZW4gLSAxIGluXG4gICAgaWYgc19sZW4gPSAwIHx8IHN0YXJ0IDwgMCB8fCBzdGFydCA+IG1heCB0aGVuIGVycm9yX3BvcyBzdGFydCBgRW9pIGVsc2VcbiAgICBsZXQgeV9wb3MgPSBzdGFydCBpblxuICAgIGxldCBtX3BvcyA9IHlfcG9zICsgNSBpblxuICAgIGxldCBkX3BvcyA9IG1fcG9zICsgMyBpblxuICAgIGxldCBoaF9wb3MgPSBkX3BvcyArIDMgaW5cbiAgICBsZXQgbW1fcG9zID0gaGhfcG9zICsgMyBpblxuICAgIGxldCBzc19wb3MgPSBtbV9wb3MgKyAzIGluXG4gICAgbGV0IGRlY2lkZV9wb3MgPSBzc19wb3MgKyAyIGluXG4gICAgbGV0IHkgPSBwYXJzZV9kaWdpdHMgfmNvdW50OjQgeV9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9jaGFyICctJyAobV9wb3MgLSAxKSBtYXggcztcbiAgICBsZXQgbSA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBtX3BvcyBtYXggcyBpblxuICAgIHBhcnNlX2NoYXIgJy0nIChkX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBkID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGRfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfZHRfc2VwIH5zdHJpY3QgKGhoX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBoaCA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgaGhfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBtbSA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKHNzX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBzcyA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBzc19wb3MgbWF4IHMgaW5cbiAgICBsZXQgZnJhYywgdHpfcG9zID0gbWF0Y2ggZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBkZWNpZGVfcG9zIG1heCBzIHdpdGhcbiAgICB8IGBGcmFjIC0+IHBhcnNlX2ZyYWNfcHMgKGRlY2lkZV9wb3MgKyAxKSBtYXggc1xuICAgIHwgYFR6IC0+IE5vbmUsIGRlY2lkZV9wb3NcbiAgICBpblxuICAgIGxldCB0el9zX29wdCwgbGFzdF9wb3MgPSBwYXJzZV90el9zIH5zdHJpY3QgdHpfcG9zIG1heCBzIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCB0el9zX29wdCB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcyAtPiBzIGluXG4gICAgbWF0Y2ggb2ZfZGF0ZV90aW1lICgoeSwgbSwgZCksICgoaGgsIG1tLCBzcyksIHR6X3MpKSB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yIChzdGFydCwgbGFzdF9wb3MpIGBJbnZhbGlkX3N0YW1wXG4gICAgfCBTb21lIHQgLT5cbiAgICAgICAgbGV0IHQsIHR6X3MgPSBtYXRjaCBmcmFjIHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSAwTCAtPiB0LCB0el9zXG4gICAgICAgIHwgU29tZSBmcmFjIC0+XG4gICAgICAgICAgICBtYXRjaCBhZGRfc3BhbiB0ICgwLCBmcmFjKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IgKHN0YXJ0LCBsYXN0X3BvcykgYEludmFsaWRfc3RhbXBcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IHQsIHR6X3NcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IHN1YiAmJiBsYXN0X3BvcyA8PiBtYXhcbiAgICAgICAgdGhlbiBlcnJvcl9wb3MgKGxhc3RfcG9zICsgMSkgYFRyYWlsaW5nX2lucHV0XG4gICAgICAgIGVsc2UgT2sgKHQsIHR6X3Nfb3B0LCBsYXN0X3BvcyAtIHN0YXJ0ICsgMSlcbiAgd2l0aCBSRkMzMzM5IChyLCBlKSAtPiBFcnJvciAoYFJGQzMzMzkgKHIsIGUpKVxuXG4oKiBSRkMgMzMzOSB0aW1lc3RhbXAgZm9ybWF0dGVyICopXG5cbmxldCByZmMzMzM5X2FkanVzdF90el9vZmZzZXQgdHpfb2Zmc2V0X3MgPVxuICAoKiBUaGUgUkZDIDMzMzkgdGltZSB6b25lIG9mZnNldCBmaWVsZCBpcyBsaW1pdGVkIGluIGV4cHJlc3Npb24gdG9cbiAgICAgdGhlIGJvdW5kcyBiZWxvdyB3aXRoIG1pbnV0ZSBwcmVjaXNpb24uIElmIHRoZSByZXF1ZXN0ZWQgdGltZVxuICAgICB6b25lIG9mZnNldCBleGNlZWRzIHRoZXNlIGJvdW5kcyBvciBpcyBub3QgYW4gKmludGVncmFsKiBudW1iZXJcbiAgICAgb2YgbWludXRlcyB3ZSBzaW1wbHkgdXNlIFVUQy4gQW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG9cbiAgICAgY29tcGVuc2F0ZSB0aGUgb2Zmc2V0ICphbmQqIHRoZSB0aW1lc3RhbXAgYnV0IGl0J3MgbW9yZVxuICAgICBjb21wbGljYXRlZCB0byBleHBsYWluIGFuZCBtYXliZSBtb3JlIHN1cnByaXNpbmcgdG8gdGhlIHVzZXIuICopXG4gIGxldCBtaW4gPSAtODYzNDAgKCogLTIzaDU5IGluIHNlY3MgKikgaW5cbiAgbGV0IG1heCA9ICs4NjM0MCAoKiArMjNoNTkgaW4gc2VjcyAqKSBpblxuICBpZiBtaW4gPD0gdHpfb2Zmc2V0X3MgJiYgdHpfb2Zmc2V0X3MgPD0gbWF4ICYmIHR6X29mZnNldF9zIG1vZCA2MCA9IDBcbiAgdGhlbiB0el9vZmZzZXRfcywgZmFsc2VcbiAgZWxzZSAwICgqIFVUQyAqKSwgdHJ1ZVxuXG5sZXQgc19mcmFjX29mX3BzIGZyYWMgcHMgPVxuICBJbnQ2NC4oZGl2IChyZW0gcHMgcHNfY291bnRfaW5fcykgU3Bhbi5mcmFjX2Rpdi4oZnJhYykpXG5cbmxldCB0b19yZmMzMzM5ID8oc3BhY2UgPSBmYWxzZSkgP2ZyYWNfczooZnJhYyA9IDApID90el9vZmZzZXRfcyAoXywgcHMgYXMgdCkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTUgaW5cbiAgbGV0IHR6X29mZnNldF9zLCB0el91bmtub3duID0gbWF0Y2ggdHpfb2Zmc2V0X3Mgd2l0aFxuICB8IFNvbWUgdHogLT4gcmZjMzMzOV9hZGp1c3RfdHpfb2Zmc2V0IHR6XG4gIHwgTm9uZSAtPiAwLCB0cnVlXG4gIGluXG4gIGxldCAoeSwgbSwgZCksICgoaGgsIHNzLCBtbSksIHR6X29mZnNldF9zKSA9IHRvX2RhdGVfdGltZSB+dHpfb2Zmc2V0X3MgdCBpblxuICBsZXQgZHRfc2VwID0gaWYgc3BhY2UgdGhlbiAnICcgZWxzZSAnVCcgaW5cbiAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkXCIgeSBtIGQgZHRfc2VwIGhoIHNzIG1tO1xuICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gIGlmIGZyYWMgPD4gMCB0aGVuIFByaW50Zi5icHJpbnRmIGJ1ZiBcIi4lMCpMZFwiIGZyYWMgKHNfZnJhY19vZl9wcyBmcmFjIHBzKTtcbiAgaWYgdHpfb2Zmc2V0X3MgPSAwICYmIG5vdCB0el91bmtub3duIHRoZW4gUHJpbnRmLmJwcmludGYgYnVmIFwiWlwiIGVsc2VcbiAgYmVnaW5cbiAgICBsZXQgdHpfc2lnbiA9IGlmIHR6X29mZnNldF9zIDwgMCB8fCB0el91bmtub3duIHRoZW4gJy0nIGVsc2UgJysnIGluXG4gICAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgICBsZXQgdHpfaGggPSB0el9taW4gLyA2MCBpblxuICAgIGxldCB0el9tbSA9IHR6X21pbiBtb2QgNjAgaW5cbiAgICBQcmludGYuYnByaW50ZiBidWYgXCIlYyUwMmQ6JTAyZFwiIHR6X3NpZ24gdHpfaGggdHpfbW07XG4gIGVuZDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcHBfcmZjMzMzOSA/c3BhY2UgP2ZyYWNfcyA/dHpfb2Zmc2V0X3MgKCkgcHBmIHQgPVxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiICh0b19yZmMzMzM5ID9zcGFjZSA/ZnJhY19zID90el9vZmZzZXRfcyB0KVxuXG4oKiBQcmV0dHkgcHJpbnRpbmcgKilcblxubGV0IHBwX2h1bWFuID9mcmFjX3M6KGZyYWMgPSAwKSA/dHpfb2Zmc2V0X3MgKCkgcHBmIChfLCBwcyBhcyB0KSA9XG4gIGxldCB0el9vZmZzZXRfcywgdHpfdW5rbm93biA9IG1hdGNoIHR6X29mZnNldF9zIHdpdGhcbiAgfCBTb21lIHR6IC0+IHJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCB0elxuICB8IE5vbmUgLT4gMCwgdHJ1ZVxuICBpblxuICBsZXQgKHksIG0sIGQpLCAoKGhoLCBzcywgbW0pLCB0el9vZmZzZXRfcykgPSB0b19kYXRlX3RpbWUgfnR6X29mZnNldF9zIHQgaW5cbiAgRm9ybWF0LmZwcmludGYgcHBmIFwiJTA0ZC0lMDJkLSUwMmQgJTAyZDolMDJkOiUwMmRcIiB5IG0gZCBoaCBzcyBtbTtcbiAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICBpZiBmcmFjIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIuJTAqTGRcIiBmcmFjIChzX2ZyYWNfb2ZfcHMgZnJhYyBwcyk7XG4gIGxldCB0el9zaWduID0gaWYgdHpfb2Zmc2V0X3MgPCAwIHx8IHR6X3Vua25vd24gdGhlbiAnLScgZWxzZSAnKycgaW5cbiAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgbGV0IHR6X2hoID0gdHpfbWluIC8gNjAgaW5cbiAgbGV0IHR6X21tID0gdHpfbWluIG1vZCA2MCBpblxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIgJWMlMDJkOiUwMmRcIiB0el9zaWduIHR6X2hoIHR6X21tO1xuICAoKVxuXG5sZXQgcHAgPSBwcF9odW1hbiB+dHpfb2Zmc2V0X3M6MCAoKVxubGV0IGR1bXAgPSBTcGFuLmR1bXBcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfaW50NjRfbW9kIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludF9jb21wYXJlIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX29ial9kdXAiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiY2FtbF9jYWxsNyIsImE2IiwiZ2xvYmFsX2RhdGEiLCJhY2MiLCJwc19jb3VudF9pbl9wcyIsInBzX2NvdW50X2luX25zIiwicHNfY291bnRfaW5fMTAwbnMiLCJwc19jb3VudF9pbl91cyIsInBzX2NvdW50X2luXzEwMHVzIiwicHNfY291bnRfaW5fbXMiLCJwc19jb3VudF9pbl8xMDBtcyIsInBzX2NvdW50X2luX3MiLCJwc19jb3VudF9pbl9taW4iLCJwc19jb3VudF9pbl9ob3VyIiwicHNfY291bnRfaW5fZGF5IiwicHNfZGF5X21heCIsImVwb2NoIiwiemVybyIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWIiLCJTdGRsaWJfQnVmZmVyIiwiU3RkbGliX1ByaW50ZiIsIlN0ZGxpYl9JbnQ2NCIsIm1pbiIsInN0ZGxpYl9hYnMiLCJuZWciLCJwYXJhbSIsImQiLCJwcyIsImFkZCIsInBzMSIsImQxIiwicHMwIiwiZDAiLCJwc19jbGFtcCIsInN1YiIsInMwIiwiczEiLCJhYnMiLCJzIiwidiIsIm9mX2RfcHMiLCJ1bnNhZmVfb2ZfZF9wcyIsInVuc2FmZV9vZl9kX3BzX29wdGlvbiIsInRvX2RfcHMiLCJvZl9pbnRfcyIsInNlY3MiLCJkYXlfaW50X21pbiIsImRheV9pbnRfbWF4IiwidG9faW50X3MiLCJkYXlzX3MiLCJkYXlfcyIsIm1pbl9pbnRfZmxvYXQiLCJtYXhfaW50X2Zsb2F0Iiwib2ZfZmxvYXRfcyIsImRheXMiLCJyZW1fcyIsIm1hdGNoIiwiZnJhY19zIiwicmVtX3BzIiwiZnJhY19wcyIsInRvX2Zsb2F0X3MiLCJkYXlfcmVtX3BzIiwiZXF1YWwiLCJjb21wYXJlIiwiYyIsInJvdW5kX2RpdiIsImEiLCJiIiwiZnJhY19kaXYiLCJyb3VuZCIsImZyYWMiLCJ0Iiwic2lnbiIsInJwcyIsInRydW5jYXRlIiwidHBzIiwidHJ1bmNhdGVfZG93biIsImNzdF8xIiwiZHVtcCIsInBwZiIsImRpdmlkZV9wcyIsImNhcnJ5IiwiaGkiLCJsbyIsImhpX2QiLCJsb19kIiwiY3N0X2RfcyIsInBwX3VuaXQiLCJoaWdoZXJfc3RyIiwiaGlfc3RyIiwiZnJhY19saW1pdCIsInBwX3VuaXRfaW50ZWdyYWwiLCJoIiwibXMiLCJsIiwiY3N0X2RkIiwiY3N0X2RoIiwiY3N0X2RtaW4iLCJjc3RfZHMiLCJjc3RfZHkiLCJjc3RfbWluIiwicHAiLCJtIiwiY3N0X21zIiwiY3N0X3VzIiwibWF4X2QiLCJyZW1fZCIsInkiLCJvZl9zcGFuIiwic3BhbiIsInRvX3NwYW4iLCJpc19lYXJsaWVyIiwidGhhbiIsImlzX2xhdGVyIiwiYWRkX3NwYW4iLCJzdWJfc3BhbiIsImRpZmYiLCJ0MSIsInQwIiwibWxlbiIsIm9mX2RhdGVfdGltZSIsInR6X29mZnNldF9zIiwic3MiLCJtbSIsImhoIiwiZGF0ZSIsImRheSIsIm1vbnRoIiwieWVhciIsImhoX3BzIiwibW1fcHMiLCJzc19wcyIsInRvX2RhdGVfdGltZSIsIm9wdCIsImxvY2FsIiwiamQiLCJlIiwiaGhfcmVtIiwibW1fcmVtIiwib2ZfZGF0ZSIsInR6IiwidG9fZGF0ZSIsIm9mX3llYXIiLCJ0b195ZWFyIiwibG9jYWxfZCIsIndlZWtkYXlfbnVtIiwiaSIsIndkYXkiLCJ3ZWVrZGF5IiwiY3N0IiwiY3N0X2lucHV0IiwicHBfcmZjMzMzOV9lcnJvciIsImNzIiwicHBfY2hhcnMiLCJwcF9yYW5nZSIsImNzdF9oIiwicmZjMzMzOV9lcnJvcl90b19zdHJpbmciLCJlcnIiLCJyIiwicmZjMzMzOV9zdHJpbmdfZXJyb3IiLCJyZmMzMzM5X2Vycm9yX3RvX21zZyIsIlJGQzMzMzkiLCJkdW1teSIsImVycm9yIiwiZXJyb3JfcG9zIiwicCIsImlzX2RpZ2l0IiwicGFyc2VfZGlnaXRzIiwiY291bnQiLCJwb3MiLCJtYXgiLCJzdG9wIiwiayIsInBhcnNlX2NoYXIiLCJvZl9yZmMzMzM5Iiwic3RyaWN0Iiwic3RhcnQiLCJzX2xlbiIsIm1fcG9zIiwiZF9wb3MiLCJoaF9wb3MiLCJtbV9wb3MiLCJzc19wb3MiLCJkZWNpZGVfcG9zIiwic3dpdGNoZXIiLCJjaGFycyIsInBvdyIsInR6X3BvcyIsInBhcnNlX3R6X21hZyIsIm5leHQiLCJ0el9zIiwibGFzdF9wb3MiLCJ0el9zX29wdCIsImV4biIsInJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCIsInNfZnJhY19vZl9wcyIsImNzdF8wX0xkIiwidG9fcmZjMzMzOSIsInNwYWNlIiwiYnVmIiwidHpfdW5rbm93biIsImR0X3NlcCIsInR6X3NpZ24iLCJ0el9taW4iLCJ0el9oaCIsInR6X21tIiwicHBfcmZjMzMzOSIsInBwX2h1bWFuIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFB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O0FBQUE7QUFBQTtBQUFBLEVEanNCbkMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTk5OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuY29vcmRpbmF0ZS5vYmpzL2pzb28vZGVmYXVsdC9jb29yZGluYXRlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtY29vcmRpbmF0ZS9saWIvY29vcmRpbmF0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBc3Ryb2R5bmFtaWNzIGNvb3JkaW5hdGUgZnJhbWUgdHJhbnNmb3Jtcy4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSB2ZWMzID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cbnR5cGUgZ2VvZGV0aWMgPSB7IGxhdCA6IGZsb2F0OyBsb24gOiBmbG9hdDsgYWx0IDogZmxvYXQgfVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb25zdGFudHMgKFdHUy04NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgZWFydGhfcmFkaXVzID0gNjM3OC4xMzdcbmxldCBlYXJ0aF9mbGF0dGVuaW5nID0gMS4gLy4gMjk4LjI1NzIyMzU2M1xubGV0IGVhcnRoX211ID0gMzk4NjAwLjQ0MThcbmxldCBlYXJ0aF9qMiA9IDAuMDAxMDgyNjNcbmxldCBlYXJ0aF9yb3RhdGlvbl9yYXRlID0gNy4yOTIxMTUxNDY3ZS01XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVdGlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdmVjMyB4IHkgeiA9IHsgeDsgeTsgeiB9XG5sZXQgdmVjM19sZW5ndGggdiA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkgKy4gKHYueiAqLiB2LnopKVxuXG5sZXQgbm9ybWFsaXplX2FuZ2xlIGEgPVxuICBsZXQgYSA9IEZsb2F0LnJlbSBhIHR3b3BpIGluXG4gIGlmIGEgPCAwLiB0aGVuIGEgKy4gdHdvcGkgZWxzZSBhXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFRpbWUgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBqdWxpYW5fZGF0ZV9vZl91bml4IHQgPSAodCAvLiA4NjQwMC4pICsuIDI0NDA1ODcuNVxubGV0IHVuaXhfb2ZfanVsaWFuX2RhdGUgamQgPSAoamQgLS4gMjQ0MDU4Ny41KSAqLiA4NjQwMC5cblxubGV0IGp1bGlhbl9jZW50dXJpZXMgdW5peF90ID1cbiAgbGV0IGpkID0ganVsaWFuX2RhdGVfb2ZfdW5peCB1bml4X3QgaW5cbiAgKGpkIC0uIDI0NTE1NDUuMCkgLy4gMzY1MjUuMFxuXG4oKiogR01TVCB1c2luZyB0aGUgSUFVIDE5ODIgbW9kZWwuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8sIEVxLiAzLTQ3LiBHTVNUID0gNjczMTAuNTQ4NDEgKyAoODc2NjAwaCArXG4gICAgODY0MDE4NC44MTI4NjYpVFxuICAgICsgMC4wOTMxMDQgVF4yIC0gNi4yZS02IFReMyB3aGVyZSBUIGlzIEp1bGlhbiBjZW50dXJpZXMgZnJvbSBKMjAwMC4wLiAqKVxubGV0IGdtc3Rfb2ZfdW5peCB1bml4X3RpbWUgPVxuICBsZXQgdCA9IGp1bGlhbl9jZW50dXJpZXMgdW5peF90aW1lIGluXG4gIGxldCBnbXN0X3NlYyA9XG4gICAgNjczMTAuNTQ4NDFcbiAgICArLiAoKCg4NzY2MDAuMCAqLiAzNjAwLikgKy4gODY0MDE4NC44MTI4NjYpICouIHQpXG4gICAgKy4gKDAuMDkzMTA0ICouIHQgKi4gdClcbiAgICAtLiAoNi4yZS02ICouIHQgKi4gdCAqLiB0KVxuICBpblxuICBub3JtYWxpemVfYW5nbGUgKGdtc3Rfc2VjICouIHR3b3BpIC8uIDg2NDAwLilcblxubGV0IGdtc3QgcHRpbWUgPSBnbXN0X29mX3VuaXggKFB0aW1lLnRvX2Zsb2F0X3MgcHRpbWUpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIEZyYW1lIHRyYW5zZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqKiBaLWF4aXMgcm90YXRpb24gYnkgYW5nbGUgdGhldGEuIFJ6KM64KSA9XG4gICAgW1tjb3MgzrgsIHNpbiDOuCwgMF0sIFstc2luIM64LCBjb3MgzrgsIDBdLCBbMCwgMCwgMV1dICopXG5sZXQgcm90YXRlX3ogdGhldGEgdiA9XG4gIGxldCBjID0gY29zIHRoZXRhIGFuZCBzID0gc2luIHRoZXRhIGluXG4gIHsgeCA9IChjICouIHYueCkgKy4gKHMgKi4gdi55KTsgeSA9ICgtLnMgKi4gdi54KSArLiAoYyAqLiB2LnkpOyB6ID0gdi56IH1cblxubGV0IHRlbWVfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b190ZW1lIH5nbXN0IHYgPSByb3RhdGVfeiAoLS5nbXN0KSB2XG5sZXQgajIwMDBfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b19qMjAwMCB+Z21zdCB2ID0gcm90YXRlX3ogKC0uZ21zdCkgdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBHZW9kZXRpYyBjb252ZXJzaW9ucyAoV0dTLTg0IGVsbGlwc29pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiogQm93cmluZydzIGl0ZXJhdGl2ZSBtZXRob2QgZm9yIEVDRUYg4oaSIGdlb2RldGljLlxuXG4gICAgUmVmZXJlbmNlOiBWYWxsYWRvIEFsZ29yaXRobSAxMiwgTW9udGVuYnJ1Y2sgJiBHaWxsIMKnNS4zLiBDb252ZXJnZXMgaW4gMi0zXG4gICAgaXRlcmF0aW9ucyBmb3IgdHlwaWNhbCBwb3NpdGlvbnMuICopXG5sZXQgZWNlZl90b19nZW9kZXRpYyB2ID1cbiAgbGV0IGEgPSBlYXJ0aF9yYWRpdXMgaW5cbiAgbGV0IGYgPSBlYXJ0aF9mbGF0dGVuaW5nIGluXG4gIGxldCBlMiA9ICgyLiAqLiBmKSAtLiAoZiAqLiBmKSBpblxuICAoKiBmaXJzdCBlY2NlbnRyaWNpdHkgc3F1YXJlZCAqKVxuICBsZXQgcCA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkpIGluXG4gIGxldCBsb25fcmFkID0gYXRhbjIgdi55IHYueCBpblxuICAoKiBJbml0aWFsIGxhdGl0dWRlIGVzdGltYXRlICopXG4gIGxldCBsYXRfcmFkID0gcmVmIChhdGFuMiB2LnogcCkgaW5cbiAgKCogSXRlcmF0ZSBCb3dyaW5nJ3MgbWV0aG9kICopXG4gIGZvciBfID0gMSB0byA1IGRvXG4gICAgbGV0IHNpbl9sYXQgPSBzaW4gIWxhdF9yYWQgaW5cbiAgICBsZXQgbiA9IGEgLy4gc3FydCAoMS4gLS4gKGUyICouIHNpbl9sYXQgKi4gc2luX2xhdCkpIGluXG4gICAgbGF0X3JhZCA6PSBhdGFuMiAodi56ICsuIChlMiAqLiBuICouIHNpbl9sYXQpKSBwXG4gIGRvbmU7XG4gIGxldCBzaW5fbGF0ID0gc2luICFsYXRfcmFkIGluXG4gIGxldCBuID0gYSAvLiBzcXJ0ICgxLiAtLiAoZTIgKi4gc2luX2xhdCAqLiBzaW5fbGF0KSkgaW5cbiAgbGV0IGFsdCA9XG4gICAgaWYgYWJzX2Zsb2F0IChjb3MgIWxhdF9yYWQpID4gMWUtMTAgdGhlbiAocCAvLiBjb3MgIWxhdF9yYWQpIC0uIG5cbiAgICBlbHNlIChhYnNfZmxvYXQgdi56IC8uIHNpbl9sYXQpIC0uIChuICouICgxLiAtLiBlMikpXG4gIGluXG4gIHsgbGF0ID0gIWxhdF9yYWQgKi4gMTgwLiAvLiBGbG9hdC5waTsgbG9uID0gbG9uX3JhZCAqLiAxODAuIC8uIEZsb2F0LnBpOyBhbHQgfVxuXG4oKiogR2VvZGV0aWMg4oaSIEVDRUYuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8gQWxnb3JpdGhtIDExLiAqKVxubGV0IGdlb2RldGljX3RvX2VjZWYgZyA9XG4gIGxldCBhID0gZWFydGhfcmFkaXVzIGluXG4gIGxldCBmID0gZWFydGhfZmxhdHRlbmluZyBpblxuICBsZXQgZTIgPSAoMi4gKi4gZikgLS4gKGYgKi4gZikgaW5cbiAgbGV0IGxhdF9yYWQgPSBnLmxhdCAqLiBGbG9hdC5waSAvLiAxODAuIGluXG4gIGxldCBsb25fcmFkID0gZy5sb24gKi4gRmxvYXQucGkgLy4gMTgwLiBpblxuICBsZXQgc2luX2xhdCA9IHNpbiBsYXRfcmFkIGluXG4gIGxldCBjb3NfbGF0ID0gY29zIGxhdF9yYWQgaW5cbiAgbGV0IG4gPSBhIC8uIHNxcnQgKDEuIC0uIChlMiAqLiBzaW5fbGF0ICouIHNpbl9sYXQpKSBpblxuICB7XG4gICAgeCA9IChuICsuIGcuYWx0KSAqLiBjb3NfbGF0ICouIGNvcyBsb25fcmFkO1xuICAgIHkgPSAobiArLiBnLmFsdCkgKi4gY29zX2xhdCAqLiBzaW4gbG9uX3JhZDtcbiAgICB6ID0gKChuICouICgxLiAtLiBlMikpICsuIGcuYWx0KSAqLiBzaW5fbGF0O1xuICB9XG5cbmxldCB0ZW1lX3RvX2dlb2RldGljIH5nbXN0IHYgPSBlY2VmX3RvX2dlb2RldGljICh0ZW1lX3RvX2VjZWYgfmdtc3QgdilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUHJldHR5LXByaW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHBwX3ZlYzMgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCUuM2YsICUuM2YsICUuM2YpXCIgdi54IHYueSB2LnpcblxubGV0IHBwX2dlb2RldGljIHBwZiBnID1cbiAgRm10LnBmIHBwZiBcIiUuNGbCsCVzICUuNGbCsCVzICUuM2Yga21cIiAoYWJzX2Zsb2F0IGcubGF0KVxuICAgIChpZiBnLmxhdCA+PSAwLiB0aGVuIFwiTlwiIGVsc2UgXCJTXCIpXG4gICAgKGFic19mbG9hdCBnLmxvbilcbiAgICAoaWYgZy5sb24gPj0gMC4gdGhlbiBcIkVcIiBlbHNlIFwiV1wiKVxuICAgIGcuYWx0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIlB0aW1lIiwidHdvcGkiLCJ2ZWMzIiwieCIsInkiLCJ6IiwidmVjM19sZW5ndGgiLCJ2Iiwibm9ybWFsaXplX2FuZ2xlIiwiYSIsImp1bGlhbl9kYXRlX29mX3VuaXgiLCJ0IiwidW5peF9vZl9qdWxpYW5fZGF0ZSIsImpkIiwianVsaWFuX2NlbnR1cmllcyIsInVuaXhfdCIsImdtc3Rfb2ZfdW5peCIsInVuaXhfdGltZSIsImdtc3Rfc2VjIiwiZ21zdCIsInB0aW1lIiwicm90YXRlX3oiLCJ0aGV0YSIsImMiLCJzIiwidGVtZV90b19lY2VmIiwiZWNlZl90b190ZW1lIiwiajIwMDBfdG9fZWNlZiIsImVjZWZfdG9fajIwMDAiLCJlY2VmX3RvX2dlb2RldGljIiwicCIsImxvbl9yYWQiLCJsYXRfcmFkIiwiZm9yJCIsInNpbl9sYXQiLCJuIiwiYWx0IiwiZ2VvZGV0aWNfdG9fZWNlZiIsImciLCJjb3NfbGF0IiwidGVtZV90b19nZW9kZXRpYyIsImNzdCIsInBwX3ZlYzMiLCJwcGYiLCJwcF9nZW9kZXRpYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLFFDdUJZO0FBQUEsWUFBQUMsS0FBQUMsR0FBQUMsR0FBQUMsR0FNSyxzQkFBVztBQUFBLFlBQUFDLFlBQUFDO0FBQUFBLElBQzJDLE9BQW5ELGtEQUFtRDtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFDO0FBQUFBLFFBQUFBLE1BRzdEO0FBQUEsSUFDUixtQ0FBZ0M7QUFBQTtBQUFBLFlBQUFDLG9CQUFBQyxHQU1vQjtBQUFBLFlBQUFDLG9CQUFBQyxJQUNFO0FBQUEsWUFBQUMsaUJBQUFDO0FBQUFBLFFBQUFGLEtBRzdDO0FBQUEsSUFDbUI7QUFBQTtBQUFBLFlBQUFHLGFBQUFDO0FBQUFBO0FBQUFBLEtBQUFOLElBUXBCO0FBQUEsS0FBQU87QUFBQUEsT0FFTjtBQUFBO0FBQUEsSUFLMkM7QUFBQTtBQUFBLFlBQUFDLEtBQUFDLE9BRWpCLE9BQXdCLGFBQXhCLDRCQUF3QjtBQUFBLFlBQUFDLFNBQUFDLE9BQUFmO0FBQUFBLFFBQUFnQixJQVM1QyxpQkFBQUMsSUFBa0I7QUFBQSxJQUNJO0FBQUEsR0FBMkM7QUFBQSxZQUFBQyxhQUFBTixNQUFBWixHQUVoRCx3QkFBZTtBQUFBLFlBQUFtQixhQUFBUCxNQUFBWixHQUNFLDBCQUFFO0FBQUEsWUFBQW9CLGNBQUFSLE1BQUFaLEdBQ2xCLHdCQUFlO0FBQUEsWUFBQXFCLGNBQUFULE1BQUFaLEdBQ0UsMEJBQUU7QUFBQSxZQUFBc0IsaUJBQUF0QjtBQUFBQTtBQUFBQSxLQUFBdUIsSUFlckM7QUFBQSxLQUFBQyxVQUNNO0FBQUEsS0FBQUMsWUFFSTtBQUFBLEtBQUFDLE9BRWxCO0FBQUE7QUFBQTtBQUFBLE1BQUFDLFlBQ2dCO0FBQUEsTUFBQUM7QUFBQUEsUUFDTjtBQUFBLFVBQUs7QUFBQSxNQUFBSCxVQUNGO0FBQUEsVUFBcUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUUsVUFFcEM7QUFBQSxLQUFBQyxJQUNOLFdBQUs7QUFBQSxLQUFBQztBQUFBQSxPQUVnQixRQUF4QixTQUFVO0FBQUEsY0FBa0M7QUFBQSxVQUN6QztBQUFBLElBRTRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUE7QUFBQUEsS0FBQU4sVUFTaEU7QUFBQSxLQUFBRCxVQUNBO0FBQUEsS0FBQUcsVUFDQTtBQUFBLEtBQUFLLFVBQ0E7QUFBQSxLQUFBSixJQUNOLFdBQUs7QUFBQSxJQUUrQjtBQUFBLG1DQUFYO0FBQUEsbUNBQ0E7QUFBQSxzREFEVztBQUFBLEdBRzNDO0FBQUEsWUFBQUssaUJBQUFyQixNQUFBWjtBQUFBQSxJQXBEd0IsT0FzRDJDLGlCQXREM0Msa0JBc0QyQztBQUFBO0FBQUE7QUFBQSxJQUFBa0MsUURoSXRFO0FBQUE7QUFBQSxNQ3VCMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsS0FBQXBDO0FBQUFBLFFBQUEsSUErR047QUFBQSx5REFBMkM7QUFBQTtBQUFBO0FBQUEsSUFBQWtDLE1EdEkvRDtBQUFBO0FBQUEsTUN1QjBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUcsWUFBQUQsS0FBQUw7QUFBQUE7QUFBQUEsS0FBQSxJQWtIeEI7QUFBQTtBQUFBLFNBRUU7QUFBQSxTQUFpQjtBQUFBLFNBRm9CO0FBQUEsSUFBaUIsMkRBSWpEO0FBQUE7QUFBQSxHQXRIaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR2QjFCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzIxODAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL21hdGgubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGluZWFyIGFsZ2VicmEgcHJpbWl0aXZlcyBmb3IgM0QgcmVuZGVyaW5nOiBWZWMzIGFuZCBNYXQ0LiAqKVxuXG5tb2R1bGUgVmVjMyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHggOiBmbG9hdDsgeSA6IGZsb2F0OyB6IDogZmxvYXQgfVxuXG4gIGxldCBjcmVhdGUgeCB5IHogPSB7IHg7IHk7IHogfVxuICBsZXQgemVybyA9IHsgeCA9IDAuOyB5ID0gMC47IHogPSAwLiB9XG4gIGxldCBhZGQgYSBiID0geyB4ID0gYS54ICsuIGIueDsgeSA9IGEueSArLiBiLnk7IHogPSBhLnogKy4gYi56IH1cbiAgbGV0IHN1YiBhIGIgPSB7IHggPSBhLnggLS4gYi54OyB5ID0gYS55IC0uIGIueTsgeiA9IGEueiAtLiBiLnogfVxuICBsZXQgc2NhbGUgcyB2ID0geyB4ID0gcyAqLiB2Lng7IHkgPSBzICouIHYueTsgeiA9IHMgKi4gdi56IH1cbiAgbGV0IGRvdCBhIGIgPSAoYS54ICouIGIueCkgKy4gKGEueSAqLiBiLnkpICsuIChhLnogKi4gYi56KVxuXG4gIGxldCBjcm9zcyBhIGIgPVxuICAgIHtcbiAgICAgIHggPSAoYS55ICouIGIueikgLS4gKGEueiAqLiBiLnkpO1xuICAgICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgICB6ID0gKGEueCAqLiBiLnkpIC0uIChhLnkgKi4gYi54KTtcbiAgICB9XG5cbiAgbGV0IGxlbmd0aCB2ID0gc3FydCAoZG90IHYgdilcblxuICBsZXQgbm9ybWFsaXplIHYgPVxuICAgIGxldCBsID0gbGVuZ3RoIHYgaW5cbiAgICBpZiBsID4gMWUtMTAgdGhlbiBzY2FsZSAoMS4gLy4gbCkgdiBlbHNlIHplcm9cblxuICBsZXQgbmVnYXRlIHYgPSB7IHggPSAtLnYueDsgeSA9IC0udi55OyB6ID0gLS52LnogfVxuZW5kXG5cbm1vZHVsZSBNYXQ0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IGFycmF5XG4gICgqKiBDb2x1bW4tbWFqb3IgNHg0IG1hdHJpeCBzdG9yZWQgYXMgYSBmbGF0IDE2LWVsZW1lbnQgYXJyYXkuIExheW91dDpcbiAgICAgIFttMCBtMSBtMiBtMyB8IG00IG01IG02IG03IHwgbTggbTkgbTEwIG0xMSB8IG0xMiBtMTMgbTE0IG0xNV0gd2hlcmUgZWFjaFxuICAgICAgZ3JvdXAgb2YgNCBpcyBvbmUgY29sdW1uLiAqKVxuXG4gIGxldCBpZGVudGl0eSAoKSA9XG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyAxLjsgMC47IDAuOyAwLjsgMC47IDEuOyAwLjsgMC47IDAuOyAwLjsgMS4gfF1cblxuICBsZXQgbXVsdGlwbHkgKGEgOiB0KSAoYiA6IHQpIDogdCA9XG4gICAgbGV0IHIgPSBBcnJheS5tYWtlIDE2IDAuIGluXG4gICAgZm9yIGNvbCA9IDAgdG8gMyBkb1xuICAgICAgZm9yIHJvdyA9IDAgdG8gMyBkb1xuICAgICAgICBsZXQgdiA9IHJlZiAwLiBpblxuICAgICAgICBmb3IgayA9IDAgdG8gMyBkb1xuICAgICAgICAgIHYgOj0gIXYgKy4gKGEuKChrICogNCkgKyByb3cpICouIGIuKChjb2wgKiA0KSArIGspKVxuICAgICAgICBkb25lO1xuICAgICAgICByLigoY29sICogNCkgKyByb3cpIDwtICF2XG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IHBlcnNwZWN0aXZlIH5mb3Z5IH5hc3BlY3Qgfm5lYXIgfmZhciA9XG4gICAgbGV0IGYgPSAxLiAvLiB0YW4gKGZvdnkgLy4gMi4pIGluXG4gICAgbGV0IG5mID0gMS4gLy4gKG5lYXIgLS4gZmFyKSBpblxuICAgIFt8XG4gICAgICBmIC8uIGFzcGVjdDtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgZjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgKGZhciArLiBuZWFyKSAqLiBuZjtcbiAgICAgIC0xLjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAyLiAqLiBmYXIgKi4gbmVhciAqLiBuZjtcbiAgICAgIDAuO1xuICAgIHxdXG5cbiAgbGV0IGxvb2tfYXQgfmV5ZSB+Y2VudGVyIH51cCA9XG4gICAgbGV0IG9wZW4gVmVjMyBpblxuICAgIGxldCBmID0gbm9ybWFsaXplIChzdWIgY2VudGVyIGV5ZSkgaW5cbiAgICBsZXQgcyA9IG5vcm1hbGl6ZSAoY3Jvc3MgZiB1cCkgaW5cbiAgICBsZXQgdSA9IGNyb3NzIHMgZiBpblxuICAgIFt8XG4gICAgICBzLng7XG4gICAgICB1Lng7XG4gICAgICAtLmYueDtcbiAgICAgIDAuO1xuICAgICAgcy55O1xuICAgICAgdS55O1xuICAgICAgLS5mLnk7XG4gICAgICAwLjtcbiAgICAgIHMuejtcbiAgICAgIHUuejtcbiAgICAgIC0uZi56O1xuICAgICAgMC47XG4gICAgICAtLmRvdCBzIGV5ZTtcbiAgICAgIC0uZG90IHUgZXllO1xuICAgICAgZG90IGYgZXllO1xuICAgICAgMS47XG4gICAgfF1cblxuICBsZXQgcm90YXRlX3ggYW5nbGUgPVxuICAgIGxldCBjID0gY29zIGFuZ2xlIGFuZCBzID0gc2luIGFuZ2xlIGluXG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyBjOyBzOyAwLjsgMC47IC0uczsgYzsgMC47IDAuOyAwLjsgMC47IDEuIHxdXG5cbiAgbGV0IHJvdGF0ZV95IGFuZ2xlID1cbiAgICBsZXQgYyA9IGNvcyBhbmdsZSBhbmQgcyA9IHNpbiBhbmdsZSBpblxuICAgIFt8IGM7IDAuOyAtLnM7IDAuOyAwLjsgMS47IDAuOyAwLjsgczsgMC47IGM7IDAuOyAwLjsgMC47IDAuOyAxLiB8XVxuXG4gIGxldCB0b19mbG9hdF9hcnJheSAobSA6IHQpIDogZmxvYXQgYXJyYXkgPSBBcnJheS5jb3B5IG1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiU3RkbGliX0FycmF5IiwiY3JlYXRlIiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzdWIiLCJzY2FsZSIsInMiLCJ2IiwiZG90IiwiY3Jvc3MiLCJsZW5ndGgiLCJ6ZXJvIiwibm9ybWFsaXplIiwibCIsIm5lZ2F0ZSIsImlkZW50aXR5IiwicGFyYW0iLCJtdWx0aXBseSIsInIiLCJjb2wiLCJyb3ciLCJrIiwicGVyc3BlY3RpdmUiLCJmb3Z5IiwiYXNwZWN0IiwibmVhciIsImZhciIsImYiLCJuZiIsImxvb2tfYXQiLCJleWUiLCJjZW50ZXIiLCJ1cCIsInUiLCJyb3RhdGVfeCIsImFuZ2xlIiwiYyIsInJvdGF0ZV95IiwidG9fZmxvYXRfYXJyYXkiLCJtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdDVXFCLHNCQUFXO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FFQSxvREFBa0M7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxHQUNsQyxvREFBa0M7QUFBQSxZQUFBRSxNQUFBQyxHQUFBQyxHQUNsQywyQ0FBOEI7QUFBQSxZQUFBQyxJQUFBTixHQUFBQyxHQUNGO0FBQUEsWUFBQU0sTUFBQVAsR0FBQUM7QUFBQUEsSUFJdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdqQztBQUFBLFlBQUFPLE9BQUFILEdBRWlCLE9BQUwsVUFBSyxVQUFTO0FBQUEsT0FBQUksT0R4Qi9CO0FBQUEsWUFBQUMsVUFBQUw7QUFBQUEsUUFBQU0sSUMyQlk7QUFBQSxJQUNSLG1CQUFpQyx1QkFBWTtBQUFBO0FBQUEsWUFBQUMsT0FBQVAsR0FFckIscUNBQXdCO0FBQUE7QUFBQSxRRDlCcEQ7QUFBQSxZQUFBUSxTQUFBQyxPQ3dDSSw4QkFBb0U7QUFBQSxZQUFBQyxTQUFBZixHQUFBQztBQUFBQSxRQUFBZSxJQUc1RCxpQ0FBQUMsTUFDUjtBQUFBO0FBQUEsU0FBQUMsTUFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBYixNQUVFLElBQUFjLElBQUE7QUFBQTtBQUFBO0FBQUEsWUFDRTtBQUFBLFlBQWtEO0FBQUEsWUFBakI7QUFBQSxRQUFBZCxJQUFyQjtBQUFBLFlBQXVDO0FBQUE7QUFBQSxnQkFFckQ7QUFBQTtBQUFBLGdCQUF5QjtBQUFBO0FBQUE7QUFBQSxzQkFHN0I7QUFBQSxRQUg2QjtBQUFBO0FBQUE7QUFBQSxPQUY0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FLeEQ7QUFBQSxZQUFBZSxZQUFBQyxNQUFBQyxRQUFBQyxNQUFBQztBQUFBQSxRQUFBQyxJQUdPLEtBQU0scUJBQUFDLEtBQ0w7QUFBQSxJQUVJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWdCWDtBQUFBLFlBQUFDLFFBQUFDLEtBQUFDLFFBQUFDO0FBQUFBO0FBQUFBLEtBQUFMLElBSU0sVUFBVTtBQUFBLEtBQUFyQixJQUNWLFVBQVU7QUFBQSxLQUFBMkIsSUFDVjtBQUFBLFNBZ0JOO0FBQUEsU0FERTtBQUFBLFNBREE7QUFBQSxJQVZHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWNMO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHTSxpQkFBQTlCLElBQWtCO0FBQUEsSUFDYztBQUFBLEdBQTBCO0FBQUEsWUFBQStCLFNBQUFGO0FBQUFBLFFBQUFDLElBRzFELGlCQUFBOUIsSUFBa0I7QUFBQSxJQUNiO0FBQUEsR0FBcUQ7QUFBQSxZQUFBZ0MsZUFBQUMsR0FFekIsb0NBQVk7QUFBQSxHRDdHekQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMjMyMiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvdmlzaWJpbGl0eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBWaXNpYmlsaXR5IGN1bGxpbmcgYW5kIGxldmVsLW9mLWRldGFpbCBmb3Igc2F0ZWxsaXRlcyBvbiB0aGUgZ2xvYmUuXG5cbiAgICBEZXRlcm1pbmVzIHdoaWNoIHNhdGVsbGl0ZXMgYXJlIHZpc2libGUgZnJvbSB0aGUgY2FtZXJhJ3MgcGVyc3BlY3RpdmUgYW5kIGF0XG4gICAgd2hhdCBkZXRhaWwgbGV2ZWwgdGhleSBzaG91bGQgYmUgcmVuZGVyZWQuIFB1cmUgbWF0aC4gKilcblxuKCoqIHsxIEhvcml6b24gY3VsbGluZ30gKilcblxuKCoqIFRlc3QgaWYgYSBwb2ludCBvbi9hYm92ZSB0aGUgdW5pdCBzcGhlcmUgaXMgdmlzaWJsZSBmcm9tIHRoZSBjYW1lcmEuXG5cbiAgICBBIHBvaW50IGlzIHZpc2libGUgaWYgaXQncyBvbiB0aGUgY2FtZXJhLWZhY2luZyBoZW1pc3BoZXJlLiBGb3IgcG9pbnRzIGFib3ZlXG4gICAgdGhlIHN1cmZhY2UgKHNhdGVsbGl0ZXMpLCB3ZSB1c2UgYSBzbGlnaHRseSByZWxheGVkIHRlc3Q6IHRoZSBwb2ludCBpc1xuICAgIHZpc2libGUgaWYgdGhlIGFuZ2xlIGJldHdlZW4gdGhlIGNhbWVyYSBkaXJlY3Rpb24gYW5kIHRoZSBwb2ludCdzIHN1cmZhY2VcbiAgICBub3JtYWwgaXMgbGVzcyB0aGFuIH4xMDDCsCAodG8gaW5jbHVkZSBzYXRlbGxpdGVzIGp1c3QgcGFzdCB0aGUgaG9yaXpvbiB0aGF0XG4gICAgYXJlIGFib3ZlIHRoZSBzdXJmYWNlKS5cblxuICAgIFtjYW1lcmFfcG9zXTogY2FtZXJhIHBvc2l0aW9uIGluIEdMIGNvb3JkaW5hdGVzLiBbcG9pbnRdOiBzYXRlbGxpdGUgcG9zaXRpb25cbiAgICBpbiBHTCBjb29yZGluYXRlcy4gKilcbmxldCBpc192aXNpYmxlIH5jYW1lcmFfcG9zIHBvaW50ID1cbiAgbGV0IHRvX3BvaW50ID0gTWF0aC5WZWMzLnN1YiBwb2ludCBNYXRoLlZlYzMuemVybyBpblxuICBsZXQgdG9fY2FtZXJhID0gTWF0aC5WZWMzLnN1YiBjYW1lcmFfcG9zIE1hdGguVmVjMy56ZXJvIGluXG4gICgqIERvdCBwcm9kdWN0IG9mIHBvaW50IG5vcm1hbCAoPSBwb2ludCBkaXJlY3Rpb24gZnJvbSBvcmlnaW4pXG4gICAgIHdpdGggY2FtZXJhIGRpcmVjdGlvbiBmcm9tIG9yaWdpbiAqKVxuICBsZXQgZCA9XG4gICAgTWF0aC5WZWMzLmRvdCAoTWF0aC5WZWMzLm5vcm1hbGl6ZSB0b19wb2ludCkgKE1hdGguVmVjMy5ub3JtYWxpemUgdG9fY2FtZXJhKVxuICBpblxuICAoKiBWaXNpYmxlIGlmIG9uIHRoZSBzYW1lIGhlbWlzcGhlcmUgYXMgY2FtZXJhLlxuICAgICBUaHJlc2hvbGQgLTAuMiBhbGxvd3Mgc2F0ZWxsaXRlcyBzbGlnaHRseSBwYXN0IHRoZSBob3Jpem9uXG4gICAgICh0aGV5J3JlIGFib3ZlIHRoZSBzdXJmYWNlIHNvIHN0aWxsIGdlb21ldHJpY2FsbHkgdmlzaWJsZSkuICopXG4gIGQgPiAtMC4yXG5cbigqKiBGaWx0ZXIgYSBsaXN0IGtlZXBpbmcgb25seSB2aXNpYmxlIGVsZW1lbnRzLiAqKVxubGV0IGZpbHRlcl92aXNpYmxlIH5jYW1lcmFfcG9zIHBvc2l0aW9ucyA9XG4gIExpc3QuZmlsdGVyIChpc192aXNpYmxlIH5jYW1lcmFfcG9zKSBwb3NpdGlvbnNcblxuKCoqIEZpbHRlciB3aXRoIGluZGljZXMgcHJlc2VydmVkLiBSZXR1cm5zIFsoaW5kZXgsIHBvc2l0aW9uKV0gcGFpcnMuICopXG5sZXQgZmlsdGVyX3Zpc2libGVfaW5kZXhlZCB+Y2FtZXJhX3BvcyBwb3NpdGlvbnMgPVxuICBMaXN0LmZpbHRlcmkgKGZ1biBfaSBwb3MgLT4gaXNfdmlzaWJsZSB+Y2FtZXJhX3BvcyBwb3MpIHBvc2l0aW9uc1xuXG4oKiogezEgTGV2ZWwgb2YgZGV0YWlsfSAqKVxuXG50eXBlIGxvZCA9IEZ1bGwgfCBEb3Rfb25seSB8IEhpZGRlblxuXG4oKiogRGV0ZXJtaW5lIExPRCBmb3IgYSBzYXRlbGxpdGUgYmFzZWQgb24gZGlzdGFuY2UgZnJvbSBjYW1lcmEuXG5cbiAgICAtIFtGdWxsXTogdHJhaWxzICsgZG90ICsgY292ZXJhZ2UgKGRpc3RhbmNlIDwgW25lYXJdKVxuICAgIC0gW0RvdF9vbmx5XToganVzdCB0aGUgcG9zaXRpb24gZG90IChkaXN0YW5jZSA8IFtmYXJdKVxuICAgIC0gW0hpZGRlbl06IG5vdCByZW5kZXJlZCAoZGlzdGFuY2UgPj0gW2Zhcl0gb3IgYmVoaW5kIGhvcml6b24pICopXG5sZXQgbG9kX29mX2Rpc3RhbmNlIH5uZWFyIH5mYXIgZGlzdGFuY2UgPVxuICBpZiBkaXN0YW5jZSA8IG5lYXIgdGhlbiBGdWxsIGVsc2UgaWYgZGlzdGFuY2UgPCBmYXIgdGhlbiBEb3Rfb25seSBlbHNlIEhpZGRlblxuXG4oKiogQ29tcHV0ZSBMT0QgZm9yIGEgc2F0ZWxsaXRlIHBvc2l0aW9uLlxuXG4gICAgW2NhbWVyYV9wb3NdOiBjYW1lcmEgcG9zaXRpb24gaW4gR0wgY29vcmRpbmF0ZXMuIFtwb2ludF06IHNhdGVsbGl0ZSBwb3NpdGlvblxuICAgIGluIEdMIGNvb3JkaW5hdGVzLiBbbmVhcl06IGRpc3RhbmNlIHRocmVzaG9sZCBmb3IgZnVsbCBkZXRhaWwgKGRlZmF1bHQgMi4wKS5cbiAgICBbZmFyXTogZGlzdGFuY2UgdGhyZXNob2xkIGZvciBkb3Qtb25seSAoZGVmYXVsdCA2LjApLiAqKVxubGV0IGxvZCA/KG5lYXIgPSAyLjApID8oZmFyID0gNi4wKSB+Y2FtZXJhX3BvcyBwb2ludCA9XG4gIGlmIG5vdCAoaXNfdmlzaWJsZSB+Y2FtZXJhX3BvcyBwb2ludCkgdGhlbiBIaWRkZW5cbiAgZWxzZVxuICAgIGxldCBkID0gTWF0aC5WZWMzLmxlbmd0aCAoTWF0aC5WZWMzLnN1YiBjYW1lcmFfcG9zIHBvaW50KSBpblxuICAgIGxvZF9vZl9kaXN0YW5jZSB+bmVhciB+ZmFyIGRcblxuKCoqIFBhcnRpdGlvbiBzYXRlbGxpdGVzIGJ5IExPRC4gUmV0dXJucyBbKGZ1bGwsIGRvdF9vbmx5LCBoaWRkZW4pXS4gKilcbmxldCBwYXJ0aXRpb25fYnlfbG9kID8obmVhciA9IDIuMCkgPyhmYXIgPSA2LjApIH5jYW1lcmFfcG9zIHBvc2l0aW9ucyA9XG4gIGxldCBmdWxsID0gcmVmIFtdIGFuZCBkb3RzID0gcmVmIFtdIGFuZCBoaWRkZW4gPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyaVxuICAgIChmdW4gaSBwb3MgLT5cbiAgICAgIG1hdGNoIGxvZCB+bmVhciB+ZmFyIH5jYW1lcmFfcG9zIHBvcyB3aXRoXG4gICAgICB8IEZ1bGwgLT4gZnVsbCA6PSAoaSwgcG9zKSA6OiAhZnVsbFxuICAgICAgfCBEb3Rfb25seSAtPiBkb3RzIDo9IChpLCBwb3MpIDo6ICFkb3RzXG4gICAgICB8IEhpZGRlbiAtPiBoaWRkZW4gOj0gKGksIHBvcykgOjogIWhpZGRlbilcbiAgICBwb3NpdGlvbnM7XG4gIChMaXN0LnJldiAhZnVsbCwgTGlzdC5yZXYgIWRvdHMsIExpc3QucmV2ICFoaWRkZW4pXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbGVzc3RoYW4iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiR2xvYmVfTWF0aCIsImlzX3Zpc2libGUiLCJjYW1lcmFfcG9zIiwicG9pbnQiLCJ0b19wb2ludCIsInRvX2NhbWVyYSIsImQiLCJmaWx0ZXJfdmlzaWJsZSIsInBvc2l0aW9ucyIsImxvZCIsIm9wdCIsIm5lYXIiLCJmYXIiLCJkaXN0YW5jZSIsInBhcnRpdGlvbl9ieV9sb2QiLCJmdWxsIiwiZG90cyIsImhpZGRlbiIsImkiLCJwb3MiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxXQUFBQyxZQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxXQ3VCaUI7QUFBQSxLQUFBQyxZQUNDO0FBQUEsU0FJK0I7QUFBQSxTQUEvQjtBQUFBLEtBQUFDLElBQWQ7QUFBQSxJQUtGO0FBQUEsR0FBUTtBQUFBLFlBQUFDLGVBQUFMLFlBQUFNO0FBQUFBLElBSTRCO0FBQUEsK0JBQXhCLDhDQUFrQztBQUFBO0FBQUEsWUFBQUMsSUFBQSxHQUFBQyxLQUFBUixZQUFBQztBQUFBQSxRQUFBUSxPQXVCeEMsZUFBQUMsTUFBQTtBQUFBLElBQ0Msb0NBQW9DO0FBQUE7QUFBQSxTQUVoQjtBQUFBLEtBQUFDLFdBQWpCO0FBQUEsSUFWUDtBQUFBO0FBQUEsY0FBa0Msb0NBV1A7QUFBQTtBQUFBLFlBQUFDLGlCQUFBLEdBQUFKLEtBQUFSLFlBQUFNO0FBQUFBO0FBQUFBLEtBQUFHLE9BR1g7QUFBQSxLQUFBQyxNQUFBO0FBQUEsS0FBQUcsT0FDbkI7QUFBQSxLQUFBQyxPQUFBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLElBQ0E7QUFBQTtBQUFBLGVBQUFDLEdBQUFDO0FBQUFBLE9BRVU7QUFBQTtBQUFBLFVBQ0k7QUFBQTtBQUFBLFVBQ0k7QUFBQSxrQkFDRjtBQUFBO0FBQUEsTUFBNkI7QUFBQTtBQUFBO0FBQUEsU0FFWjtBQUFBLFNBQWhCO0FBQUEsSUFBaEIscURBQWM7QUFBQSxHQUFtQztBQUFBLEdENUVwRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyMzg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZS5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL2xpYi9zcGhlcmUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogUG9pbnQgY2xvdWQgZ2VuZXJhdGlvbiBmb3IgdGhlIGRvdC1jbG91ZCBnbG9iZS5cblxuICAgIFVzZXMgZ29sZGVuIHNwaXJhbCBkaXN0cmlidXRpb24gZm9yIGV2ZW4gc3BhY2luZywgd2l0aCBicmlnaHRuZXNzIGJhc2VkIG9uXG4gICAgcG9seWdvbi10cmFjZWQgY29udGluZW50IG91dGxpbmVzLiBQb2ludHMgbmVhciBjb2FzdGxpbmVzIGdsb3cgYnJpZ2h0ZXN0LFxuICAgIGNyZWF0aW5nIGEgcmVjb2duaXphYmxlIEVhcnRoIHNpbGhvdWV0dGUuICopXG5cbnR5cGUgcG9pbnQgPSB7IHBvcyA6IE1hdGguVmVjMy50OyBicmlnaHRuZXNzIDogZmxvYXQgfVxuXG4oKiAtLS0gUmF5LWNhc3RpbmcgcG9pbnQtaW4tcG9seWdvbiB0ZXN0IC0tLSAqKVxuXG5sZXQgcG9pbnRfaW5fcG9seWdvbiBsYXQgbG9uICh2ZXJ0aWNlcyA6IChmbG9hdCAqIGZsb2F0KSBhcnJheSkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB2ZXJ0aWNlcyBpblxuICBpZiBuIDwgMyB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaW5zaWRlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGogPSByZWYgKG4gLSAxKSBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgbGV0IGxhdF9pLCBsb25faSA9IHZlcnRpY2VzLihpKSBpblxuICAgICAgbGV0IGxhdF9qLCBsb25faiA9IHZlcnRpY2VzLighaikgaW5cbiAgICAgIGlmIGxhdF9pID4gbGF0IDw+IChsYXRfaiA+IGxhdCkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgeCA9XG4gICAgICAgICAgbG9uX2kgKy4gKChsYXQgLS4gbGF0X2kpICouIChsb25faiAtLiBsb25faSkgLy4gKGxhdF9qIC0uIGxhdF9pKSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbG9uIDwgeCB0aGVuIGluc2lkZSA6PSBub3QgIWluc2lkZVxuICAgICAgZW5kO1xuICAgICAgaiA6PSBpXG4gICAgZG9uZTtcbiAgICAhaW5zaWRlXG5cbigqIC0tLSBTcXVhcmVkIGRpc3RhbmNlIGZyb20gcG9pbnQgdG8gbGluZSBzZWdtZW50IC0tLSAqKVxuXG5sZXQgcG9pbnRfdG9fc2VnX2Rpc3Rfc3EgcHggcHkgYXggYXkgYnggYnkgPVxuICBsZXQgZHggPSBieCAtLiBheCBhbmQgZHkgPSBieSAtLiBheSBpblxuICBsZXQgbGVuX3NxID0gKGR4ICouIGR4KSArLiAoZHkgKi4gZHkpIGluXG4gIGlmIGxlbl9zcSA8IDFlLTEwIHRoZW5cbiAgICBsZXQgZXggPSBweCAtLiBheCBhbmQgZXkgPSBweSAtLiBheSBpblxuICAgIChleCAqLiBleCkgKy4gKGV5ICouIGV5KVxuICBlbHNlXG4gICAgbGV0IHQgPSAoKChweCAtLiBheCkgKi4gZHgpICsuICgocHkgLS4gYXkpICouIGR5KSkgLy4gbGVuX3NxIGluXG4gICAgbGV0IHQgPSBGbG9hdC5tYXggMC4gKEZsb2F0Lm1pbiAxLiB0KSBpblxuICAgIGxldCBjeCA9IGF4ICsuICh0ICouIGR4KSBhbmQgY3kgPSBheSArLiAodCAqLiBkeSkgaW5cbiAgICBsZXQgZXggPSBweCAtLiBjeCBhbmQgZXkgPSBweSAtLiBjeSBpblxuICAgIChleCAqLiBleCkgKy4gKGV5ICouIGV5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb250aW5lbnQgcG9seWdvbnMg4oCUIChsYXRpdHVkZSwgbG9uZ2l0dWRlKSB2ZXJ0ZXggYXJyYXlzICAgICAgICAgICAqKVxuKCogIFRyYWNlZCB0byB+NcKwIGFjY3VyYWN5OyBlbm91Z2ggZm9yIDMway1wb2ludCBjbG91ZCByZWNvZ25pdGlvbi4gICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBhZnJpY2EgPVxuICBbfFxuICAgICgzNS4sIC01Lik7XG4gICAgKDM3LiwgMTAuKTtcbiAgICAoMzIuLCAxMy4pO1xuICAgICgzMS4sIDI1Lik7XG4gICAgKDMwLiwgMzMuKTtcbiAgICAoMjIuLCAzNy4pO1xuICAgICgxMi4sIDQ0Lik7XG4gICAgKDIuLCA1MS4pO1xuICAgICgtMi4sIDQyLik7XG4gICAgKC03LiwgNDAuKTtcbiAgICAoLTExLiwgNDAuKTtcbiAgICAoLTE2LiwgNDEuKTtcbiAgICAoLTI1LiwgMzUuKTtcbiAgICAoLTI3LiwgMzMuKTtcbiAgICAoLTM1LiwgMjYuKTtcbiAgICAoLTM0LiwgMTguKTtcbiAgICAoLTI5LiwgMTcuKTtcbiAgICAoLTIyLiwgMTQuKTtcbiAgICAoLTE3LiwgMTIuKTtcbiAgICAoLTYuLCAxMi4pO1xuICAgICg0LiwgMTAuKTtcbiAgICAoNi4sIDMuKTtcbiAgICAoNS4sIC0zLik7XG4gICAgKDUuLCAtOC4pO1xuICAgICg4LiwgLTE0Lik7XG4gICAgKDEyLiwgLTE3Lik7XG4gICAgKDE1LiwgLTE3Lik7XG4gICAgKDIxLiwgLTE3Lik7XG4gICAgKDI4LiwgLTEzLik7XG4gICAgKDMzLiwgLTguKTtcbiAgfF1cblxubGV0IGV1cmFzaWEgPVxuICBbfFxuICAgICgqIEliZXJpYSDihpIgTlcgRXVyb3BlICopXG4gICAgKDM2LiwgLTEwLik7XG4gICAgKDM5LiwgLTkuKTtcbiAgICAoNDQuLCAtOS4pO1xuICAgICg0NC4sIC0yLik7XG4gICAgKDQ4LiwgLTUuKTtcbiAgICAoNTEuLCAyLik7XG4gICAgKDU0LiwgOC4pO1xuICAgICg1Ny4sIDEwLik7XG4gICAgKCogU2NhbmRpbmF2aWEgKilcbiAgICAoNTguLCA2Lik7XG4gICAgKDYyLiwgNS4pO1xuICAgICg2Ni4sIDE0Lik7XG4gICAgKDcxLiwgMjcuKTtcbiAgICAoKiBBcmN0aWMgUnVzc2lhICopXG4gICAgKDY5LiwgMzQuKTtcbiAgICAoNjYuLCA0NC4pO1xuICAgICg2OS4sIDU4Lik7XG4gICAgKDczLiwgODAuKTtcbiAgICAoNzYuLCA5Ny4pO1xuICAgICg3My4sIDExNS4pO1xuICAgICg3Mi4sIDEzNS4pO1xuICAgICg3MC4sIDE1MC4pO1xuICAgICg2Ni4sIDE3MC4pO1xuICAgICgqIFJ1c3NpYW4gRmFyIEVhc3QgKilcbiAgICAoNjAuLCAxNjUuKTtcbiAgICAoNTYuLCAxNjIuKTtcbiAgICAoNTMuLCAxNTkuKTtcbiAgICAoNTAuLCAxNDAuKTtcbiAgICAoKiBORSBBc2lhICopXG4gICAgKDQ1LiwgMTQyLik7XG4gICAgKDQzLiwgMTM1Lik7XG4gICAgKDM5LiwgMTI1Lik7XG4gICAgKDM1LiwgMTI2Lik7XG4gICAgKDMxLiwgMTIyLik7XG4gICAgKCogU0UgQ2hpbmEgKilcbiAgICAoMjUuLCAxMTkuKTtcbiAgICAoMjIuLCAxMTMuKTtcbiAgICAoMjIuLCAxMDguKTtcbiAgICAoKiBTRSBBc2lhIG1haW5sYW5kICopXG4gICAgKDE2LiwgMTA4Lik7XG4gICAgKDEwLiwgMTA3Lik7XG4gICAgKDguLCAxMDUuKTtcbiAgICAoMS4sIDEwNC4pO1xuICAgICgqIE1hbGF5IFBlbmluc3VsYSDihpIgTXlhbm1hciAqKVxuICAgICg3LiwgMTAwLik7XG4gICAgKDE0LiwgOTkuKTtcbiAgICAoMTYuLCA5Ny4pO1xuICAgICgyMS4sIDkyLik7XG4gICAgKCogSW5kaWEgKilcbiAgICAoMjIuLCA4OC4pO1xuICAgICgxOC4sIDg0Lik7XG4gICAgKDEzLiwgODAuKTtcbiAgICAoOC4sIDc3Lik7XG4gICAgKDEwLiwgNzYuKTtcbiAgICAoMTUuLCA3NC4pO1xuICAgICgyMS4sIDczLik7XG4gICAgKDI0LiwgNjguKTtcbiAgICAoKiBQYWtpc3RhbiDihpIgSXJhbiAqKVxuICAgICgyNS4sIDYyLik7XG4gICAgKDI2LiwgNTcuKTtcbiAgICAoKiBQZXJzaWFuIEd1bGYg4oaSIElyYXEgKilcbiAgICAoMzAuLCA0OC4pO1xuICAgICgzMy4sIDQ0Lik7XG4gICAgKDM3LiwgMzYuKTtcbiAgICAoKiBUdXJrZXkg4oaSIE1lZGl0ZXJyYW5lYW4gKilcbiAgICAoMzcuLCAzMC4pO1xuICAgICgzNi4sIDI4Lik7XG4gICAgKDM4LiwgMjQuKTtcbiAgICAoNDAuLCAyMC4pO1xuICAgICg0Mi4sIDE5Lik7XG4gICAgKCogQWRyaWF0aWMg4oaSIEl0YWx5ICopXG4gICAgKDQ2LiwgMTQuKTtcbiAgICAoNDQuLCAxMy4pO1xuICAgICg0MS4sIDE3Lik7XG4gICAgKDM4LiwgMTYuKTtcbiAgICAoMzcuLCAxNS4pO1xuICAgICgqIFcgTWVkaXRlcnJhbmVhbiAqKVxuICAgICgzOS4sIDkuKTtcbiAgICAoNDMuLCA1Lik7XG4gICAgKDQwLiwgMC4pO1xuICAgICgzNy4sIC0yLik7XG4gICAgKDM2LiwgLTYuKTtcbiAgfF1cblxubGV0IGFyYWJpYSA9XG4gIFt8XG4gICAgKDMwLiwgNDguKTtcbiAgICAoMjkuLCA0OC4pO1xuICAgICgyNi4sIDUwLik7XG4gICAgKDI0LiwgNTQuKTtcbiAgICAoMjIuLCA1OS4pO1xuICAgICgxNy4sIDU1Lik7XG4gICAgKDE0LiwgNDkuKTtcbiAgICAoMTMuLCA0NC4pO1xuICAgICgxNi4sIDQzLik7XG4gICAgKDIwLiwgNDAuKTtcbiAgICAoMjQuLCAzOC4pO1xuICAgICgyOC4sIDM1Lik7XG4gICAgKDMwLiwgMzUuKTtcbiAgICAoMzMuLCAzNi4pO1xuICAgICgzMy4sIDQ0Lik7XG4gIHxdXG5cbmxldCBub3J0aF9hbWVyaWNhID1cbiAgW3xcbiAgICAoKiBBbGFza2Eg4oaSIEFyY3RpYyAqKVxuICAgICg2NS4sIC0xNjguKTtcbiAgICAoNzEuLCAtMTU3Lik7XG4gICAgKDcyLiwgLTEyOC4pO1xuICAgICg3NC4sIC05NS4pO1xuICAgICg3My4sIC04MC4pO1xuICAgICg2OS4sIC02OC4pO1xuICAgICgqIEVhc3QgY29hc3QgKilcbiAgICAoNjAuLCAtNjQuKTtcbiAgICAoNTMuLCAtNTYuKTtcbiAgICAoNDcuLCAtNjAuKTtcbiAgICAoNDQuLCAtNjcuKTtcbiAgICAoNDAuLCAtNzQuKTtcbiAgICAoMzUuLCAtNzYuKTtcbiAgICAoMzAuLCAtODEuKTtcbiAgICAoMjUuLCAtODAuKTtcbiAgICAoKiBHdWxmIOKGkiBNZXhpY28gKilcbiAgICAoMzAuLCAtODYuKTtcbiAgICAoMjkuLCAtOTUuKTtcbiAgICAoMjYuLCAtOTcuKTtcbiAgICAoMjAuLCAtOTcuKTtcbiAgICAoKiBDZW50cmFsIEFtZXJpY2EgKilcbiAgICAoMTcuLCAtOTIuKTtcbiAgICAoMTUuLCAtODcuKTtcbiAgICAoMTAuLCAtODQuKTtcbiAgICAoOC4sIC03OC4pO1xuICAgICgqIFdlc3QgY29hc3QgKilcbiAgICAoMTYuLCAtOTUuKTtcbiAgICAoMTkuLCAtMTA1Lik7XG4gICAgKDIzLiwgLTExMC4pO1xuICAgICgzMC4sIC0xMTUuKTtcbiAgICAoMzIuLCAtMTE3Lik7XG4gICAgKDM4LiwgLTEyMy4pO1xuICAgICg0Ni4sIC0xMjQuKTtcbiAgICAoNDkuLCAtMTI1Lik7XG4gICAgKDU0LiwgLTEzMS4pO1xuICAgICg1OC4sIC0xMzcuKTtcbiAgICAoNjAuLCAtMTQ3Lik7XG4gICAgKDYzLiwgLTE2NS4pO1xuICB8XVxuXG5sZXQgc291dGhfYW1lcmljYSA9XG4gIFt8XG4gICAgKDEyLiwgLTcyLik7XG4gICAgKDEwLiwgLTY3Lik7XG4gICAgKDcuLCAtNjAuKTtcbiAgICAoNS4sIC01Mi4pO1xuICAgICgwLiwgLTUwLik7XG4gICAgKC01LiwgLTM1Lik7XG4gICAgKC0xMi4sIC0zNy4pO1xuICAgICgtMjMuLCAtNDIuKTtcbiAgICAoLTMzLiwgLTUyLik7XG4gICAgKC0zNS4sIC01Ny4pO1xuICAgICgtNDIuLCAtNjQuKTtcbiAgICAoLTUyLiwgLTY4Lik7XG4gICAgKC01NS4sIC02OS4pO1xuICAgICgtNTUuLCAtNjYuKTtcbiAgICAoLTUwLiwgLTczLik7XG4gICAgKC00NS4sIC03NC4pO1xuICAgICgtMzQuLCAtNzIuKTtcbiAgICAoLTIzLiwgLTcwLik7XG4gICAgKC0xNi4sIC03NS4pO1xuICAgICgtNS4sIC04MS4pO1xuICAgICgwLiwgLTgwLik7XG4gICAgKDcuLCAtNzguKTtcbiAgICAoMTEuLCAtNzUuKTtcbiAgfF1cblxubGV0IGF1c3RyYWxpYSA9XG4gIFt8XG4gICAgKC0xMi4sIDEzMS4pO1xuICAgICgtMTEuLCAxMzYuKTtcbiAgICAoLTE0LiwgMTQyLik7XG4gICAgKC0xOS4sIDE0Ni4pO1xuICAgICgtMjQuLCAxNTMuKTtcbiAgICAoLTI4LiwgMTUzLik7XG4gICAgKC0zNC4sIDE1MS4pO1xuICAgICgtMzguLCAxNDUuKTtcbiAgICAoLTM2LiwgMTM3Lik7XG4gICAgKC0zNC4sIDEzNi4pO1xuICAgICgtMzIuLCAxMzMuKTtcbiAgICAoLTMyLiwgMTE1Lik7XG4gICAgKC0yMi4sIDExNC4pO1xuICAgICgtMTQuLCAxMjcuKTtcbiAgfF1cblxubGV0IGdyZWVubGFuZCA9XG4gIFt8XG4gICAgKDYwLiwgLTQzLik7XG4gICAgKDYzLiwgLTQwLik7XG4gICAgKDY2LiwgLTM2Lik7XG4gICAgKDcyLiwgLTIyLik7XG4gICAgKDc4LiwgLTE4Lik7XG4gICAgKDg0LiwgLTMwLik7XG4gICAgKDgzLiwgLTU4Lik7XG4gICAgKDc4LiwgLTcyLik7XG4gICAgKDc2LiwgLTY4Lik7XG4gICAgKDcwLiwgLTU1Lik7XG4gICAgKDY0LiwgLTUwLik7XG4gIHxdXG5cbmxldCB1ayA9XG4gIFt8XG4gICAgKDUwLiwgLTUuKTtcbiAgICAoNTEuLCAxLik7XG4gICAgKDUzLiwgMC4pO1xuICAgICg1NS4sIC0yLik7XG4gICAgKDU4LiwgLTMuKTtcbiAgICAoNTkuLCAtNS4pO1xuICAgICg1Ny4sIC03Lik7XG4gICAgKDU1LiwgLTYuKTtcbiAgICAoNTQuLCAtMy4pO1xuICAgICg1Mi4sIC01Lik7XG4gIHxdXG5cbmxldCBpcmVsYW5kID1cbiAgW3xcbiAgICAoNTIuLCAtNi4pO1xuICAgICg1My4sIC02Lik7XG4gICAgKDU1LiwgLTYuKTtcbiAgICAoNTUuLCAtOC4pO1xuICAgICg1NC4sIC0xMC4pO1xuICAgICg1Mi4sIC0xMC4pO1xuICAgICg1MS4sIC05Lik7XG4gIHxdXG5cbmxldCBpY2VsYW5kID0gW3wgKDY0LiwgLTIyLik7ICg2NC4sIC0xNC4pOyAoNjYuLCAtMTQuKTsgKDY2LiwgLTI0LikgfF1cblxubGV0IGphcGFuID1cbiAgW3xcbiAgICAoMzEuLCAxMzEuKTtcbiAgICAoMzMuLCAxMzAuKTtcbiAgICAoMzUuLCAxMzMuKTtcbiAgICAoMzYuLCAxMzcuKTtcbiAgICAoMzguLCAxMzkuKTtcbiAgICAoNDAuLCAxNDAuKTtcbiAgICAoNDIuLCAxNDEuKTtcbiAgICAoNDQuLCAxNDUuKTtcbiAgICAoNDUuLCAxNDIuKTtcbiAgICAoNDMuLCAxNDEuKTtcbiAgICAoMzguLCAxNDEuKTtcbiAgICAoMzUuLCAxNDAuKTtcbiAgICAoMzQuLCAxMzUuKTtcbiAgICAoMzMuLCAxMzEuKTtcbiAgfF1cblxubGV0IG1hZGFnYXNjYXIgPVxuICBbfFxuICAgICgtMTIuLCA0OS4pO1xuICAgICgtMTYuLCA1MC4pO1xuICAgICgtMjIuLCA0OC4pO1xuICAgICgtMjYuLCA0Ny4pO1xuICAgICgtMjQuLCA0NC4pO1xuICAgICgtMTYuLCA0NC4pO1xuICAgICgtMTMuLCA0OC4pO1xuICB8XVxuXG5sZXQgc3JpX2xhbmthID0gW3wgKDEwLiwgODAuKTsgKDguLCA4Mi4pOyAoNi4sIDgxLik7ICg3LiwgODAuKTsgKDkuLCA4MC4pIHxdXG5cbmxldCBzdW1hdHJhID1cbiAgW3xcbiAgICAoNS4sIDk1Lik7XG4gICAgKDIuLCA5OS4pO1xuICAgICgtMi4sIDEwNC4pO1xuICAgICgtNS4sIDEwNS4pO1xuICAgICgtNi4sIDEwNC4pO1xuICAgICgtMy4sIDEwMC4pO1xuICAgICgxLiwgOTcuKTtcbiAgfF1cblxubGV0IGJvcm5lbyA9XG4gIFt8XG4gICAgKDcuLCAxMTcuKTtcbiAgICAoNS4sIDExOS4pO1xuICAgICgyLiwgMTE4Lik7XG4gICAgKC0xLiwgMTE3Lik7XG4gICAgKC00LiwgMTE1Lik7XG4gICAgKC0zLiwgMTExLik7XG4gICAgKDAuLCAxMDkuKTtcbiAgICAoMy4sIDExMC4pO1xuICB8XVxuXG5sZXQgamF2YSA9XG4gIFt8XG4gICAgKC02LiwgMTA2Lik7ICgtNy4sIDExMC4pOyAoLTguLCAxMTQuKTsgKC04LiwgMTE1Lik7ICgtOC4sIDExMC4pOyAoLTcuLCAxMDYuKTtcbiAgfF1cblxubGV0IHBhcHVhID1cbiAgW3xcbiAgICAoLTEuLCAxMzMuKTtcbiAgICAoLTIuLCAxMzguKTtcbiAgICAoLTQuLCAxNDEuKTtcbiAgICAoLTguLCAxNDEuKTtcbiAgICAoLTkuLCAxMzguKTtcbiAgICAoLTguLCAxMzQuKTtcbiAgICAoLTUuLCAxMzMuKTtcbiAgfF1cblxubGV0IHBoaWxpcHBpbmVzID1cbiAgW3xcbiAgICAoMTguLCAxMjEuKTtcbiAgICAoMTUuLCAxMjIuKTtcbiAgICAoMTIuLCAxMjQuKTtcbiAgICAoOC4sIDEyNi4pO1xuICAgICg3LiwgMTI0Lik7XG4gICAgKDEwLiwgMTIwLik7XG4gICAgKDE0LiwgMTIwLik7XG4gIHxdXG5cbmxldCBuZXdfemVhbGFuZF9uID1cbiAgW3xcbiAgICAoLTM1LiwgMTczLik7XG4gICAgKC0zNy4sIDE3Ni4pO1xuICAgICgtMzkuLCAxNzguKTtcbiAgICAoLTQyLiwgMTc1Lik7XG4gICAgKC0zOS4sIDE3NC4pO1xuICAgICgtMzcuLCAxNzQuKTtcbiAgfF1cblxubGV0IG5ld196ZWFsYW5kX3MgPVxuICBbfFxuICAgICgtNDIuLCAxNzIuKTtcbiAgICAoLTQ0LiwgMTcxLik7XG4gICAgKC00Ni4sIDE2OC4pO1xuICAgICgtNDYuLCAxNjYuKTtcbiAgICAoLTQ0LiwgMTY4Lik7XG4gICAgKC00Mi4sIDE3MC4pO1xuICB8XVxuXG5sZXQgYWxsX3BvbHlnb25zID1cbiAgW3xcbiAgICBhZnJpY2E7XG4gICAgZXVyYXNpYTtcbiAgICBhcmFiaWE7XG4gICAgbm9ydGhfYW1lcmljYTtcbiAgICBzb3V0aF9hbWVyaWNhO1xuICAgIGF1c3RyYWxpYTtcbiAgICBncmVlbmxhbmQ7XG4gICAgdWs7XG4gICAgaXJlbGFuZDtcbiAgICBpY2VsYW5kO1xuICAgIGphcGFuO1xuICAgIG1hZGFnYXNjYXI7XG4gICAgc3JpX2xhbmthO1xuICAgIHN1bWF0cmE7XG4gICAgYm9ybmVvO1xuICAgIGphdmE7XG4gICAgcGFwdWE7XG4gICAgcGhpbGlwcGluZXM7XG4gICAgbmV3X3plYWxhbmRfbjtcbiAgICBuZXdfemVhbGFuZF9zO1xuICB8XVxuXG4oKiAtLS0gTGFuZCBkZXRlY3Rpb24gYW5kIGNvYXN0IHByb3hpbWl0eSAtLS0gKilcblxubGV0IGlzX2xhbmQgbGF0IGxvbiA9XG4gIGxhdCA8IC02NS4gKCogQW50YXJjdGljYSAqKVxuICB8fCBBcnJheS5leGlzdHMgKGZ1biBwb2x5IC0+IHBvaW50X2luX3BvbHlnb24gbGF0IGxvbiBwb2x5KSBhbGxfcG9seWdvbnNcblxubGV0IG1pbl9jb2FzdF9kaXN0X3NxIGxhdCBsb24gPVxuICBsZXQgYmVzdCA9IHJlZiBpbmZpbml0eSBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBwb2x5Z29uIC0+XG4gICAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwb2x5Z29uIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbGV0IGxhdF9pLCBsb25faSA9IHBvbHlnb24uKGkpIGluXG4gICAgICAgIGxldCBsYXRfaiwgbG9uX2ogPSBwb2x5Z29uLigoaSArIDEpIG1vZCBuKSBpblxuICAgICAgICBsZXQgZCA9IHBvaW50X3RvX3NlZ19kaXN0X3NxIGxhdCBsb24gbGF0X2kgbG9uX2kgbGF0X2ogbG9uX2ogaW5cbiAgICAgICAgaWYgZCA8ICFiZXN0IHRoZW4gYmVzdCA6PSBkXG4gICAgICBkb25lKVxuICAgIGFsbF9wb2x5Z29ucztcbiAgIWJlc3RcblxuKCogLS0tIFBvaW50IGNsb3VkIGdlbmVyYXRpb24gLS0tICopXG5cbmxldCBnZW5lcmF0ZV9jbG91ZCB+bnVtX3BvaW50cyA9XG4gIGxldCBwaSA9IEZsb2F0LnBpIGluXG4gIGxldCBnb2xkZW5fcmF0aW8gPSAoMS4gKy4gc3FydCA1LikgLy4gMi4gaW5cbiAgQXJyYXkuaW5pdCBudW1fcG9pbnRzIChmdW4gaSAtPlxuICAgICAgbGV0IGZpID0gRmxvYXQub2ZfaW50IGkgaW5cbiAgICAgIGxldCBuID0gRmxvYXQub2ZfaW50IG51bV9wb2ludHMgaW5cbiAgICAgIGxldCB0aGV0YSA9IGFjb3MgKDEuIC0uICgyLiAqLiAoZmkgKy4gMC41KSAvLiBuKSkgaW5cbiAgICAgIGxldCBwaGkgPSAyLiAqLiBwaSAqLiBmaSAvLiBnb2xkZW5fcmF0aW8gaW5cbiAgICAgIGxldCB4ID0gc2luIHRoZXRhICouIGNvcyBwaGkgaW5cbiAgICAgIGxldCB5ID0gY29zIHRoZXRhIGluXG4gICAgICBsZXQgeiA9IHNpbiB0aGV0YSAqLiBzaW4gcGhpIGluXG4gICAgICBsZXQgbGF0ID0gOTAuIC0uICh0aGV0YSAqLiAxODAuIC8uIHBpKSBpblxuICAgICAgbGV0IGxvbl9yYXcgPSBwaGkgKi4gMTgwLiAvLiBwaSBpblxuICAgICAgbGV0IGxvbiA9IEZsb2F0LnJlbSBsb25fcmF3IDM2MC4gaW5cbiAgICAgIGxldCBsb24gPSBpZiBsb24gPiAxODAuIHRoZW4gbG9uIC0uIDM2MC4gZWxzZSBsb24gaW5cbiAgICAgIGxldCBvbl9sYW5kID0gaXNfbGFuZCBsYXQgbG9uIGluXG4gICAgICBsZXQgY29hc3RfZCA9IHNxcnQgKG1pbl9jb2FzdF9kaXN0X3NxIGxhdCBsb24pIGluXG4gICAgICBsZXQgY29hc3RfZ2xvdyA9IEZsb2F0Lm1heCAwLiAoMS4gLS4gKGNvYXN0X2QgLy4gOC4pKSBpblxuICAgICAgbGV0IGJyaWdodG5lc3MgPVxuICAgICAgICBpZiBvbl9sYW5kIHRoZW4gMC41NSArLiAoMC40NSAqLiBjb2FzdF9nbG93KVxuICAgICAgICBlbHNlIDAuMTAgKy4gKDAuMjUgKi4gY29hc3RfZ2xvdylcbiAgICAgIGluXG4gICAgICB7IHBvcyA9IE1hdGguVmVjMy5jcmVhdGUgeCB5IHo7IGJyaWdodG5lc3MgfSlcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX2R1cCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0Zsb2F0IiwiR2xvYmVfTWF0aCIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYiIsImFmcmljYSIsImV1cmFzaWEiLCJhcmFiaWEiLCJub3J0aF9hbWVyaWNhIiwic291dGhfYW1lcmljYSIsImF1c3RyYWxpYSIsImdyZWVubGFuZCIsInVrIiwiaXJlbGFuZCIsImphcGFuIiwibWFkYWdhc2NhciIsInNyaV9sYW5rYSIsInN1bWF0cmEiLCJib3JuZW8iLCJqYXZhIiwicGFwdWEiLCJwaGlsaXBwaW5lcyIsIm5ld196ZWFsYW5kX24iLCJuZXdfemVhbGFuZF9zIiwiYWxsX3BvbHlnb25zIiwiaXNfbGFuZCIsImxhdCIsImxvbiIsInZlcnRpY2VzIiwibiIsImluc2lkZSIsImoiLCJpIiwibWF0Y2giLCJsb25faSIsImxhdF9pIiwibG9uX2oiLCJsYXRfaiIsIngiLCJtaW5fY29hc3RfZGlzdF9zcSIsImJlc3QiLCJwb2x5Z29uIiwiZHgiLCJkeSIsImxlbl9zcSIsImV4IiwiZXkiLCJkIiwidCIsImN4IiwiY3kiLCJnZW5lcmF0ZV9jbG91ZCIsIm51bV9wb2ludHMiLCJwaSIsImZpIiwidGhldGEiLCJwaGkiLCJ5IiwieiIsImxvbl9yYXciLCJvbl9sYW5kIiwiY29hc3RfZCIsImNvYXN0X2dsb3ciLCJicmlnaHRuZXNzIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FB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QUMsVUFDQSxVQUFLO0FBQUEsZUFBQUMsYUFDRjtBQUFBLGVBQUFDO0FBQUFBLGlCQUNqQjtBQUFBLGNBSVEsNERBQXNCO0FBQUEsYUFBYyxFQUFDO0FBQUE7QUFBQSxHRDdlbkQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMjg4MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvY29sb3IubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogQ29sb3IgdXRpbGl0aWVzIGZvciBnbG9iZSByZW5kZXJpbmcuICopXG5cbnR5cGUgdCA9IGZsb2F0ICogZmxvYXQgKiBmbG9hdFxuXG5sZXQgcmdiIHIgZyBiID0gKHIsIGcsIGIpXG5cbigqKiBHZW5lcmF0ZSBhIGNvbG9yIGZyb20gYSBodWUgdmFsdWUgaW4gWzAsIDFdLiBNYXBzIHRocm91Z2ggYSBjeWFuLW9yYW5nZS1waW5rXG4gICAgcGFsZXR0ZSBzdWl0YWJsZSBmb3IgZGFyayBiYWNrZ3JvdW5kcy4gKilcbmxldCBvZl9odWUgaCA9ICgwLjMgKy4gKDAuNyAqLiBoKSwgMC44IC0uICgwLjMgKi4gaCksIDEuMCAtLiAoMC41ICouIGgpKVxuXG4oKiogR2VuZXJhdGUgW25dIGRpc3RpbmN0IGNvbG9ycyBldmVubHkgc3BhY2VkIGluIGh1ZS4gKilcbmxldCBwYWxldHRlIG4gPVxuICBMaXN0LmluaXQgbiAoZnVuIGkgLT4gb2ZfaHVlIChGbG9hdC5vZl9pbnQgaSAvLiBGbG9hdC5vZl9pbnQgKG1heCAxIG4pKSlcblxuKCoqIE1hcCBhIHByb2JhYmlsaXR5IHZhbHVlIHRvIGdyZWVuIOKGkiB5ZWxsb3cg4oaSIHJlZC4gKilcbmxldCBvZl9wcm9iYWJpbGl0eSBwID1cbiAgaWYgcCA8IDFlLTcgdGhlbiAoMC4xLCAwLjksIDAuMilcbiAgZWxzZSBpZiBwIDwgMWUtNSB0aGVuXG4gICAgbGV0IHQgPSAobG9nMTAgcCArLiA3LikgLy4gMi4gaW5cbiAgICAoMC4xICsuICgwLjkgKi4gdCksIDAuOSAtLiAoMC40ICouIHQpLCAwLjIgLS4gKDAuMSAqLiB0KSlcbiAgZWxzZSAoMS4wLCAwLjIsIDAuMSlcblxubGV0IGdob3N0ID0gKDAuMTUsIDAuMiwgMC4yNSlcbmxldCB3aGl0ZSA9ICgxLiwgMS4sIDEuKVxubGV0IGN5YW4gPSAoMC4zLCAwLjg1LCAxLjApXG5sZXQgZ3JpZF9kZWZhdWx0ID0gKDAuMTUsIDAuMzUsIDAuNSlcbmxldCBwcCBwcGYgKHIsIGcsIGIpID0gRm10LnBmIHBwZiBcIiglLjJmLCAlLjJmLCAlLjJmKVwiIHIgZyBiXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiZ2xvYmFsX2RhdGEiLCJGbXQiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsInJnYiIsInIiLCJnIiwiYiIsIm9mX2h1ZSIsImgiLCJwYWxldHRlIiwibiIsImkiLCJvZl9wcm9iYWJpbGl0eSIsInAiLCJ0IiwiY3N0IiwicHAiLCJwcGYiLCJwYXJhbSJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FBQUMsR0NTZ0Isb0JBQVM7QUFBQSxZQUFBQyxPQUFBQyxHQUlRLHVEQUF1QztBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLElBSXRFO0FBQUE7QUFBQTtBQUFBLHNCQUFBQyxHQUE2RCxPQUFVLFdBQVYsNEJBQVUsR0FBQztBQUFBO0FBQUEsV0RqQjFFO0FBQUEsWUFBQUMsZUFBQUM7QUFBQUEsSUNxQkUsYUFBaUI7QUFBQSxJQUNaLGlCQUdBO0FBQUEsUUFBQUMsSUFGTTtBQUFBLElBQ1M7QUFBQSxHQUNBO0FBQUE7QUFBQSxJQUFBQyxNRHpCdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLFFBQUFaLElDK0JPLFVBQUFELElBQUEsVUFBQUQsSUFBQTtBQUFBLElBQWdCLHFEQUFxQztBQUFBO0FBQUEsR0QvQjVEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI5NTIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2dsX2Nvb3JkLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMIGNvb3JkaW5hdGUgbWFwcGluZyBmb3IgRWFydGgtY2VudGVyZWQgZnJhbWVzLlxuXG4gICAgTWFwcyBhc3Ryb2R5bmFtaWNzIGNvbnZlbnRpb25zIChYLFkgPSBlcXVhdG9yaWFsLCBaID0gbm9ydGggcG9sZSkgdG8gV2ViR0xcbiAgICBjb252ZW50aW9ucyAoWCxaID0gZXF1YXRvcmlhbCwgWSA9IHVwL25vcnRoIHBvbGUpLCBzY2FsZWQgc28gRWFydGggcmFkaXVzID1cbiAgICAxLjAuICopXG5cbmxldCBzY2FsZSA9IDEuIC8uIENvb3JkaW5hdGUuZWFydGhfcmFkaXVzXG5sZXQgb2ZfYXN0cm8geCB5IHogPSBNYXRoLlZlYzMuY3JlYXRlICh4ICouIHNjYWxlKSAoeiAqLiBzY2FsZSkgKHkgKi4gc2NhbGUpXG5sZXQgb2ZfY29vcmRpbmF0ZSAodiA6IENvb3JkaW5hdGUudmVjMykgPSBvZl9hc3RybyB2Lnggdi55IHYuelxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJnbG9iYWxfZGF0YSIsIkdsb2JlX01hdGgiLCJDb29yZGluYXRlIiwic2NhbGUiLCJvZl9hc3RybyIsIngiLCJ5IiwieiIsIm9mX2Nvb3JkaW5hdGUiLCJ2Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFFDV1k7QUFBQSxZQUFBQyxTQUFBQyxHQUFBQyxHQUFBQztBQUFBQSxJQUNzQyxtRUFBMEI7QUFBQTtBQUFBLFlBQUFDLGNBQUFDLEdBQ2xDLGlDQUFvQjtBQUFBLEdBRnJCO0FBQUE7QUFBQTtBQUFBLEVEWHpDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI5NzIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3NhdGVsbGl0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBTYXRlbGxpdGUgc3RhdGUgbWFuYWdlbWVudCBmb3IgZ2xvYmUgcmVuZGVyaW5nLlxuXG4gICAgQ2FjaGVzIHByZWNvbXB1dGVkIEtlcGxlciBlbGVtZW50cywgZ2VuZXJhdGVzIGdob3N0IG9yYml0cyBhbmQgcGVyLWZyYW1lXG4gICAgdHJhaWwgcG9zaXRpb25zLiBQdXJlIE9DYW1sLCBubyBXZWJHTCBkZXBlbmRlbmN5LiAqKVxuXG50eXBlIHQgPSB7XG4gIGVsZW1lbnRzIDogS2VwbGVyLkFuYWx5dGljLmVsZW1lbnRzO1xuICBwb3MgOiBLZXBsZXIuVmVjMy50O1xuICB2ZWwgOiBLZXBsZXIuVmVjMy50O1xuICBjb2xvciA6IENvbG9yLnQ7XG4gIHBlcmlvZCA6IGZsb2F0O1xuICBlcG9jaF91bml4IDogZmxvYXQ7XG4gIGdob3N0X3BvaW50cyA6IE1hdGguVmVjMy50IG9wdGlvbiBhcnJheTtcbiAgdHJhaWxfbGVuZ3RoIDogaW50O1xufVxuXG5sZXQgdiB+cG9zIH52ZWwgfmNvbG9yID8oZXBvY2hfdW5peCA9IDAuKSA/KHRyYWlsX2xlbmd0aCA9IDUwKSAoKSA9XG4gIGxldCBlbGVtZW50cyA9IEtlcGxlci5BbmFseXRpYy5wcmVjb21wdXRlIH5wb3MgfnZlbCBpblxuICBsZXQgcGVyaW9kID0gS2VwbGVyLkFuYWx5dGljLnBlcmlvZCBlbGVtZW50cyBpblxuICBsZXQgZ2hvc3RfcG9pbnRzID1cbiAgICBsZXQgbiA9IDEyMCBpblxuICAgICgqIFVzZSBwZXJpb2QgZm9yIGJvdW5kIG9yYml0cywgNTQwMHMgYXJjIGZvciB1bmJvdW5kICopXG4gICAgbGV0IGR1ciA9IGlmIEZsb2F0LmlzX2Zpbml0ZSBwZXJpb2QgJiYgcGVyaW9kID4gMC4gdGhlbiBwZXJpb2QgZWxzZSA1NDAwLiBpblxuICAgIGxldCBmYWxsYmFjayA9IEdsX2Nvb3JkLm9mX2FzdHJvIHBvcy54IHBvcy55IHBvcy56IGluXG4gICAgQXJyYXkuaW5pdCBuIChmdW4gaSAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0Lm9mX2ludCBpICouIGR1ciAvLiBGbG9hdC5vZl9pbnQgbiBpblxuICAgICAgICBsZXQgcCA9IEtlcGxlci5BbmFseXRpYy5hdF9wcmVjb21wdXRlZCBlbGVtZW50cyB+ZHQ6dCBpblxuICAgICAgICBpZiBGbG9hdC5pc19maW5pdGUgcC54ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnkgJiYgRmxvYXQuaXNfZmluaXRlIHAuelxuICAgICAgICB0aGVuIFNvbWUgKEdsX2Nvb3JkLm9mX2FzdHJvIHAueCBwLnkgcC56KVxuICAgICAgICBlbHNlIFNvbWUgZmFsbGJhY2spXG4gIGluXG4gIHsgZWxlbWVudHM7IHBvczsgdmVsOyBjb2xvcjsgcGVyaW9kOyBlcG9jaF91bml4OyBnaG9zdF9wb2ludHM7IHRyYWlsX2xlbmd0aCB9XG5cbmxldCBjb2xvciB0ID0gdC5jb2xvclxubGV0IHBlcmlvZCB0ID0gdC5wZXJpb2RcbmxldCBlcG9jaF91bml4IHQgPSB0LmVwb2NoX3VuaXhcbmxldCBnaG9zdF9wb2ludHMgdCA9IHQuZ2hvc3RfcG9pbnRzXG5sZXQgZXBvY2hfcG9zaXRpb24gdCA9IEdsX2Nvb3JkLm9mX2FzdHJvIHQucG9zLnggdC5wb3MueSB0LnBvcy56XG5cbmxldCBwb3NpdGlvbl9hdCB0IH5kdCA9XG4gIGxldCBwID0gS2VwbGVyLkFuYWx5dGljLmF0X3ByZWNvbXB1dGVkIHQuZWxlbWVudHMgfmR0IGluXG4gIGlmIEZsb2F0LmlzX2Zpbml0ZSBwLnggJiYgRmxvYXQuaXNfZmluaXRlIHAueSAmJiBGbG9hdC5pc19maW5pdGUgcC56IHRoZW5cbiAgICBHbF9jb29yZC5vZl9hc3RybyBwLnggcC55IHAuelxuICBlbHNlIGVwb2NoX3Bvc2l0aW9uIHRcblxubGV0IHRyYWlsX3Bvc2l0aW9ucyB0IH5kdCA9XG4gIGxldCBuID0gdC50cmFpbF9sZW5ndGggaW5cbiAgKCogRm9yIHVuYm91bmQgb3JiaXRzLCB1c2UgMzBzIHN0ZXBzOyBmb3IgYm91bmQsIDEvMTUwIG9mIHBlcmlvZCAqKVxuICBsZXQgc3RlcCA9XG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHQucGVyaW9kICYmIHQucGVyaW9kID4gMC4gdGhlblxuICAgICAgdC5wZXJpb2QgLy4gRmxvYXQub2ZfaW50IChuICogMylcbiAgICBlbHNlIDMwLlxuICBpblxuICBsZXQgZmFsbGJhY2sgPSBlcG9jaF9wb3NpdGlvbiB0IGluXG4gIEFycmF5LmluaXQgbiAoZnVuIGkgLT5cbiAgICAgIGxldCB0X29mZnNldCA9IGR0IC0uIChGbG9hdC5vZl9pbnQgKG4gLSAxIC0gaSkgKi4gc3RlcCkgaW5cbiAgICAgIGxldCBwID0gS2VwbGVyLkFuYWx5dGljLmF0X3ByZWNvbXB1dGVkIHQuZWxlbWVudHMgfmR0OnRfb2Zmc2V0IGluXG4gICAgICBpZiBGbG9hdC5pc19maW5pdGUgcC54ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnkgJiYgRmxvYXQuaXNfZmluaXRlIHAueiB0aGVuXG4gICAgICAgIFNvbWUgKEdsX2Nvb3JkLm9mX2FzdHJvIHAueCBwLnkgcC56KVxuICAgICAgZWxzZSBTb21lIGZhbGxiYWNrKVxuXG5sZXQgZG90IHQgfmR0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uX2F0IHQgfmR0IGluXG4gIChwb3MsIHQuY29sb3IpXG5cbmxldCBwcCBwcGYgdCA9XG4gIEZtdC5wZiBwcGYgXCJzYXQocGVyaW9kPSUuMGZzIGU9JS40ZiBjb2xvcj0lYSlcIiB0LnBlcmlvZFxuICAgIChLZXBsZXIuQW5hbHl0aWMuZWNjZW50cmljaXR5IHQuZWxlbWVudHMpXG4gICAgQ29sb3IucHAgdC5jb2xvclxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw0IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9Db2xvciIsIktlcGxlcl9BbmFseXRpYyIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX0dsX2Nvb3JkIiwiU3RkbGliX0FycmF5IiwidiIsInBvcyIsInZlbCIsImNvbG9yIiwib3B0IiwicGFyYW0iLCJlcG9jaF91bml4IiwidHJhaWxfbGVuZ3RoIiwiZWxlbWVudHMiLCJwZXJpb2QiLCJuIiwiZHVyIiwiZmFsbGJhY2siLCJnaG9zdF9wb2ludHMiLCJpIiwidCIsInAiLCJlcG9jaF9wb3NpdGlvbiIsInBvc2l0aW9uX2F0IiwiZHQiLCJ0cmFpbF9wb3NpdGlvbnMiLCJzdGVwIiwidF9vZmZzZXQiLCJkb3QiLCJwcCIsInBwZiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxFQUFBQyxLQUFBQyxLQUFBQyxPQUFBLEdBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLGFDcUJNO0FBQUEsS0FBQUMsZUFBQTtBQUFBLEtBQUFDLFdBQ1c7QUFBQSxLQUFBQyxTQUNGO0FBQUE7QUFBQTtBQUFBLFNBQUFDLElBSUU7QUFBQSxnRUFBQUMsTUFBc0I7QUFBQSxTQUFBQSxNQUFpQztBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUNyRDtBQUFBLEtBQUFDO0FBQUFBLE9BQ2Y7QUFBQTtBQUFBO0FBQUEsa0JBQUFDO0FBQUFBO0FBQUFBLFdBQUFDLElBQ1k7QUFBQSxXQUFBQyxJQUNBO0FBQUEsVUFDTDtBQUFBO0FBQUE7QUFBQSxhQUF1QjtBQUFBLGdCQUF1QjtBQUFBLFdBQ3ZDLDBEQUErQjtBQUFBLFVBQ3BDO0FBQUEsU0FBYTtBQUFBLElBRXhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTZFO0FBQUEsWUFBQWIsTUFBQVksR0FFakUsWUFBTztBQUFBLFlBQUFOLE9BQUFNLEdBQ04sWUFBUTtBQUFBLFlBQUFULFdBQUFTLEdBQ0osWUFBWTtBQUFBLFlBQUFGLGFBQUFFLEdBQ1YsWUFBYztBQUFBLFlBQUFFLGVBQUFGO0FBQUFBLElBQ1osOERBQXlDO0FBQUE7QUFBQSxZQUFBRyxZQUFBSCxHQUFBSTtBQUFBQSxRQUFBSCxJQUd0RDtBQUFBLElBQ0w7QUFBQTtBQUFBO0FBQUEsT0FBdUIscUNBQXVCO0FBQUEsS0FDL0MscURBQ21CO0FBQUEsSUFBaEIsd0JBQWdCO0FBQUE7QUFBQSxZQUFBSSxnQkFBQUwsR0FBQUk7QUFBQUEsUUFBQVQsSUFHckI7QUFBQTtBQUFBO0FBQUEsS0FHSyx1REFBQVcsT0FDK0I7QUFBQSxTQUFBQSxPQUM3QjtBQUFBO0FBQUEsUUFBQVQsV0FFUTtBQUFBLElBQ2Y7QUFBQTtBQUFBO0FBQUEsc0JBQUFFO0FBQUFBO0FBQUFBLGVBQUFRLFdBQ21CO0FBQUEsZUFBQU4sSUFDUDtBQUFBLGNBQ0w7QUFBQTtBQUFBO0FBQUEsaUJBQXVCO0FBQUEsb0JBQXVCO0FBQUEsZUFDMUMsMERBQStCO0FBQUEsY0FDakM7QUFBQSxhQUFhLEVBQUM7QUFBQTtBQUFBLFlBQUFPLElBQUFSLEdBQUFJLFFBQUFsQixNQUdiLG9CQUNWLHNCQUFjO0FBQUE7QUFBQTtBQUFBLE1EcEVoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXVCLEdBQUFDLEtBQUFWO0FBQUFBO0FBQUFBLEtBQUEsSUN3RUk7QUFBQTtBQUFBO0FBQUEsU0FBeUM7QUFBQSw0REFDekI7QUFBQTtBQUFBLEdEekVwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzMTExLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZS5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL2xpYi9yYXljYXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFJheWNhc3RpbmcgZm9yIDNEIHBpY2tpbmcgb24gdGhlIGdsb2JlLiAqKVxuXG50eXBlIHJheSA9IHsgb3JpZ2luIDogTWF0aC5WZWMzLnQ7IGRpcmVjdGlvbiA6IE1hdGguVmVjMy50IH1cbnR5cGUgaGl0ID0geyBkaXN0YW5jZSA6IGZsb2F0OyBwb3NpdGlvbiA6IE1hdGguVmVjMy50OyBpbmRleCA6IGludCB9XG5cbigqKiB7MSBNYXRyaXggaW52ZXJzaW9ufVxuXG4gICAgNHg0IGludmVyc2UgdmlhIGNvZmFjdG9yIGV4cGFuc2lvbi4gRGVjb21wb3NlZCB1c2luZyBhIDN4MyBkZXRlcm1pbmFudFxuICAgIGhlbHBlciBzbyBlYWNoIGNvZmFjdG9yIGlzIG9uZSByZWFkYWJsZSBsaW5lLiAqKVxuXG5sZXQgZGV0MyBhIGIgYyBkIGUgZiBnIGggaSA9XG4gIChhICouIGUgKi4gaSlcbiAgKy4gKGIgKi4gZiAqLiBnKVxuICArLiAoYyAqLiBkICouIGgpXG4gIC0uIChjICouIGUgKi4gZylcbiAgLS4gKGIgKi4gZCAqLiBpKVxuICAtLiAoYSAqLiBmICouIGgpXG5cbmxldCBjb2ZhY3RvcnMgbSBpbnYgPVxuICBpbnYuKDApIDwtIGRldDMgbS4oNSkgbS4oOSkgbS4oMTMpIG0uKDYpIG0uKDEwKSBtLigxNCkgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig0KSA8LSAtLmRldDMgbS4oNCkgbS4oOCkgbS4oMTIpIG0uKDYpIG0uKDEwKSBtLigxNCkgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig4KSA8LSBkZXQzIG0uKDQpIG0uKDgpIG0uKDEyKSBtLig1KSBtLig5KSBtLigxMykgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52LigxMikgPC0gLS5kZXQzIG0uKDQpIG0uKDgpIG0uKDEyKSBtLig1KSBtLig5KSBtLigxMykgbS4oNikgbS4oMTApIG0uKDE0KTtcbiAgaW52LigxKSA8LSAtLmRldDMgbS4oMSkgbS4oOSkgbS4oMTMpIG0uKDIpIG0uKDEwKSBtLigxNCkgbS4oMykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig1KSA8LSBkZXQzIG0uKDApIG0uKDgpIG0uKDEyKSBtLigyKSBtLigxMCkgbS4oMTQpIG0uKDMpIG0uKDExKSBtLigxNSk7XG4gIGludi4oOSkgPC0gLS5kZXQzIG0uKDApIG0uKDgpIG0uKDEyKSBtLigxKSBtLig5KSBtLigxMykgbS4oMykgbS4oMTEpIG0uKDE1KTtcbiAgaW52LigxMykgPC0gZGV0MyBtLigwKSBtLig4KSBtLigxMikgbS4oMSkgbS4oOSkgbS4oMTMpIG0uKDIpIG0uKDEwKSBtLigxNCk7XG4gIGludi4oMikgPC0gZGV0MyBtLigxKSBtLig1KSBtLigxMykgbS4oMikgbS4oNikgbS4oMTQpIG0uKDMpIG0uKDcpIG0uKDE1KTtcbiAgaW52Lig2KSA8LSAtLmRldDMgbS4oMCkgbS4oNCkgbS4oMTIpIG0uKDIpIG0uKDYpIG0uKDE0KSBtLigzKSBtLig3KSBtLigxNSk7XG4gIGludi4oMTApIDwtIGRldDMgbS4oMCkgbS4oNCkgbS4oMTIpIG0uKDEpIG0uKDUpIG0uKDEzKSBtLigzKSBtLig3KSBtLigxNSk7XG4gIGludi4oMTQpIDwtIC0uZGV0MyBtLigwKSBtLig0KSBtLigxMikgbS4oMSkgbS4oNSkgbS4oMTMpIG0uKDIpIG0uKDYpIG0uKDE0KTtcbiAgaW52LigzKSA8LSAtLmRldDMgbS4oMSkgbS4oNSkgbS4oOSkgbS4oMikgbS4oNikgbS4oMTApIG0uKDMpIG0uKDcpIG0uKDExKTtcbiAgaW52Lig3KSA8LSBkZXQzIG0uKDApIG0uKDQpIG0uKDgpIG0uKDIpIG0uKDYpIG0uKDEwKSBtLigzKSBtLig3KSBtLigxMSk7XG4gIGludi4oMTEpIDwtIC0uZGV0MyBtLigwKSBtLig0KSBtLig4KSBtLigxKSBtLig1KSBtLig5KSBtLigzKSBtLig3KSBtLigxMSk7XG4gIGludi4oMTUpIDwtIGRldDMgbS4oMCkgbS4oNCkgbS4oOCkgbS4oMSkgbS4oNSkgbS4oOSkgbS4oMikgbS4oNikgbS4oMTApXG5cbmxldCBpbnZlcnRfbWF0NCBtID1cbiAgbGV0IGludiA9IEFycmF5Lm1ha2UgMTYgMC4gaW5cbiAgY29mYWN0b3JzIG0gaW52O1xuICBsZXQgZGV0ID1cbiAgICAobS4oMCkgKi4gaW52LigwKSlcbiAgICArLiAobS4oMSkgKi4gaW52Lig0KSlcbiAgICArLiAobS4oMikgKi4gaW52Lig4KSlcbiAgICArLiAobS4oMykgKi4gaW52LigxMikpXG4gIGluXG4gIGlmIGFic19mbG9hdCBkZXQgPCAxZS0xMiB0aGVuIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBpbnZfZGV0ID0gMS4gLy4gZGV0IGluXG4gICAgQXJyYXkuaXRlcmkgKGZ1biBpIHYgLT4gaW52LihpKSA8LSB2ICouIGludl9kZXQpIGludjtcbiAgICBTb21lIGludlxuICBlbmRcblxuKCoqIHsxIFJheSBjb25zdHJ1Y3Rpb259ICopXG5cbmxldCBtYXQ0X211bF92ZWM0IG0geCB5IHogdyA9XG4gICggKG0uKDApICouIHgpICsuIChtLig0KSAqLiB5KSArLiAobS4oOCkgKi4geikgKy4gKG0uKDEyKSAqLiB3KSxcbiAgICAobS4oMSkgKi4geCkgKy4gKG0uKDUpICouIHkpICsuIChtLig5KSAqLiB6KSArLiAobS4oMTMpICouIHcpLFxuICAgIChtLigyKSAqLiB4KSArLiAobS4oNikgKi4geSkgKy4gKG0uKDEwKSAqLiB6KSArLiAobS4oMTQpICouIHcpLFxuICAgIChtLigzKSAqLiB4KSArLiAobS4oNykgKi4geSkgKy4gKG0uKDExKSAqLiB6KSArLiAobS4oMTUpICouIHcpIClcblxubGV0IHJheV9mcm9tX3NjcmVlbiB+c2NyZWVuX3ggfnNjcmVlbl95IH53aWR0aCB+aGVpZ2h0IH5wcm9qZWN0aW9uIH52aWV3ID1cbiAgbGV0IG5kY194ID0gKDIuICouIHNjcmVlbl94IC8uIEZsb2F0Lm9mX2ludCB3aWR0aCkgLS4gMS4gaW5cbiAgbGV0IG5kY195ID0gMS4gLS4gKDIuICouIHNjcmVlbl95IC8uIEZsb2F0Lm9mX2ludCBoZWlnaHQpIGluXG4gIGxldCB2cCA9IE1hdGguTWF0NC5tdWx0aXBseSBwcm9qZWN0aW9uIHZpZXcgaW5cbiAgbWF0Y2ggaW52ZXJ0X21hdDQgdnAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaW52X3ZwIC0+XG4gICAgICBsZXQgbngsIG55LCBueiwgbncgPSBtYXQ0X211bF92ZWM0IGludl92cCBuZGNfeCBuZGNfeSAoLTEuKSAxLiBpblxuICAgICAgbGV0IGZ4LCBmeSwgZnosIGZ3ID0gbWF0NF9tdWxfdmVjNCBpbnZfdnAgbmRjX3ggbmRjX3kgMS4gMS4gaW5cbiAgICAgIGlmIGFic19mbG9hdCBudyA8IDFlLTEwIHx8IGFic19mbG9hdCBmdyA8IDFlLTEwIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbmVhciA9IE1hdGguVmVjMy5jcmVhdGUgKG54IC8uIG53KSAobnkgLy4gbncpIChueiAvLiBudykgaW5cbiAgICAgICAgbGV0IGZhciA9IE1hdGguVmVjMy5jcmVhdGUgKGZ4IC8uIGZ3KSAoZnkgLy4gZncpIChmeiAvLiBmdykgaW5cbiAgICAgICAgbGV0IGRpciA9IE1hdGguVmVjMy5ub3JtYWxpemUgKE1hdGguVmVjMy5zdWIgZmFyIG5lYXIpIGluXG4gICAgICAgIFNvbWUgeyBvcmlnaW4gPSBuZWFyOyBkaXJlY3Rpb24gPSBkaXIgfVxuXG4oKiogezEgSW50ZXJzZWN0aW9uIHRlc3RzfSAqKVxuXG5sZXQgaW50ZXJzZWN0X3NwaGVyZSByYXkgfmNlbnRlciB+cmFkaXVzID1cbiAgbGV0IG9jID0gTWF0aC5WZWMzLnN1YiByYXkub3JpZ2luIGNlbnRlciBpblxuICBsZXQgYSA9IE1hdGguVmVjMy5kb3QgcmF5LmRpcmVjdGlvbiByYXkuZGlyZWN0aW9uIGluXG4gIGxldCBiID0gMi4gKi4gTWF0aC5WZWMzLmRvdCBvYyByYXkuZGlyZWN0aW9uIGluXG4gIGxldCBjID0gTWF0aC5WZWMzLmRvdCBvYyBvYyAtLiAocmFkaXVzICouIHJhZGl1cykgaW5cbiAgbGV0IGRpc2NyaW1pbmFudCA9IChiICouIGIpIC0uICg0LiAqLiBhICouIGMpIGluXG4gIGlmIGRpc2NyaW1pbmFudCA8IDAuIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgbGV0IHNxcnRfZCA9IHNxcnQgZGlzY3JpbWluYW50IGluXG4gICAgbGV0IHQxID0gKC0uYiAtLiBzcXJ0X2QpIC8uICgyLiAqLiBhKSBpblxuICAgIGxldCB0MiA9ICgtLmIgKy4gc3FydF9kKSAvLiAoMi4gKi4gYSkgaW5cbiAgICBpZiB0MSA+IDAuIHRoZW4gU29tZSB0MSBlbHNlIGlmIHQyID4gMC4gdGhlbiBTb21lIHQyIGVsc2UgTm9uZVxuXG5sZXQgaW50ZXJzZWN0X3BvaW50IHJheSBwb2ludCB+dGhyZXNob2xkID1cbiAgbGV0IG9jID0gTWF0aC5WZWMzLnN1YiBwb2ludCByYXkub3JpZ2luIGluXG4gIGxldCB0ID0gTWF0aC5WZWMzLmRvdCBvYyByYXkuZGlyZWN0aW9uIGluXG4gIGlmIHQgPCAwLiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIGxldCBjbG9zZXN0ID0gTWF0aC5WZWMzLmFkZCByYXkub3JpZ2luIChNYXRoLlZlYzMuc2NhbGUgdCByYXkuZGlyZWN0aW9uKSBpblxuICAgIGxldCBkaXN0ID0gTWF0aC5WZWMzLmxlbmd0aCAoTWF0aC5WZWMzLnN1YiBjbG9zZXN0IHBvaW50KSBpblxuICAgIGlmIGRpc3QgPD0gdGhyZXNob2xkIHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuXG4oKiogezEgUGlja2luZ30gKilcblxubGV0IHBpY2tfbmVhcmVzdCByYXkgcG9pbnRzIH50aHJlc2hvbGQgPVxuICBsZXQgYmVzdCA9IHJlZiBOb25lIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHBvcyA6IE1hdGguVmVjMy50KSAtPlxuICAgICAgbWF0Y2ggaW50ZXJzZWN0X3BvaW50IHJheSBwb3MgfnRocmVzaG9sZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgbGV0IGJldHRlciA9XG4gICAgICAgICAgICBtYXRjaCAhYmVzdCB3aXRoIFNvbWUgaCAtPiB0IDwgaC5kaXN0YW5jZSB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYmV0dGVyIHRoZW5cbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgIE1hdGguVmVjMy5hZGQgcmF5Lm9yaWdpbiAoTWF0aC5WZWMzLnNjYWxlIHQgcmF5LmRpcmVjdGlvbilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBiZXN0IDo9IFNvbWUgeyBkaXN0YW5jZSA9IHQ7IHBvc2l0aW9uOyBpbmRleCA9IGkgfSlcbiAgICBwb2ludHM7XG4gICFiZXN0XG5cbmxldCBwaWNrX2VhcnRoIHJheSA9XG4gIG1hdGNoIGludGVyc2VjdF9zcGhlcmUgcmF5IH5jZW50ZXI6TWF0aC5WZWMzLnplcm8gfnJhZGl1czoxLjAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdCAtPiBTb21lIChNYXRoLlZlYzMuYWRkIHJheS5vcmlnaW4gKE1hdGguVmVjMy5zY2FsZSB0IHJheS5kaXJlY3Rpb24pKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9NYXRoIiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfQXJyYXkiLCJkdW1teSIsImRldDMiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJjb2ZhY3RvcnMiLCJtIiwiaW52IiwiaW52ZXJ0X21hdDQiLCJkZXQiLCJpbnZfZGV0IiwidiIsIm1hdDRfbXVsX3ZlYzQiLCJ4IiwieSIsInoiLCJ3IiwicmF5X2Zyb21fc2NyZWVuIiwic2NyZWVuX3giLCJzY3JlZW5feSIsIndpZHRoIiwiaGVpZ2h0IiwicHJvamVjdGlvbiIsInZpZXciLCJuZGNfeCIsIm5kY195IiwidnAiLCJtYXRjaCIsImludl92cCIsIm53IiwibnoiLCJueSIsIm54IiwiZnciLCJmeiIsImZ5IiwiZngiLCJuZWFyIiwiZmFyIiwiZGlyIiwiaW50ZXJzZWN0X3NwaGVyZSIsInJheSIsImNlbnRlciIsInJhZGl1cyIsIm9jIiwiZGlzY3JpbWluYW50Iiwic3FydF9kIiwidDEiLCJ0MiIsImludGVyc2VjdF9wb2ludCIsInBvaW50IiwidGhyZXNob2xkIiwidCIsImNsb3Nlc3QiLCJkaXN0IiwicGlja19uZWFyZXN0IiwicG9pbnRzIiwiYmVzdCIsInBvcyIsImJldHRlciIsInBvc2l0aW9uIiwicGlja19lYXJ0aCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsSUNxQmtCO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFVBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLEtBQUEsSUFHb0Q7QUFBQSxTQUFQO0FBQUEsU0FBTjtBQUFBLFNBQVA7QUFBQSxTQUFQO0FBQUEsU0FBTjtBQUFBLFNBQVA7QUFBQSxTQUFOO0FBQUEsU0FBWCxLQUFLO0FBQUEsSUFBaEI7QUFBQTtBQUFBLFNBQzhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBTjtBQUFBLFNBQU4sRUFBTCxLQUFLO0FBQUEsSUFBbEI7QUFBQSxZQUNXO0FBQUEsSUFBWDtBQUFBLFlBQ2M7QUFBQSxJQUFkO0FBQUE7QUFBQSxTQUN5RDtBQUFBO0FBQUE7QUFBQSxTQUFwQjtBQUFBO0FBQUE7QUFBQSxTQUFuQjtBQUFBO0FBQUEsV0FBTCxLQUFLO0FBQUEsSUFBbEI7QUFBQTtBQUFBLFNBQ2dCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFMLEtBQUs7QUFBQSxJQUFoQjtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDWTtBQUFBLElBQVo7QUFBQSxZQUNXO0FBQUEsSUFBWDtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDWTtBQUFBLElBQVo7QUFBQSxZQUNjO0FBQUEsSUFBZDtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDVztBQUFBLElBQVg7QUFBQSxZQUNjO0FBQUEsSUFBZDtBQUFBLFlBQ1k7QUFBQSxJQUFaO0FBQUEsR0FBdUU7QUFBQSxZQUFBQyxZQUFBRjtBQUFBQSxRQUFBQyxNQUc3RDtBQUFBLElBQ1Y7QUFBQTtBQUFBLFNBS2U7QUFBQSxTQUFUO0FBQUEsU0FEUztBQUFBLFNBQVQ7QUFBQSxTQURTO0FBQUEsU0FBVDtBQUFBLFNBRE07QUFBQSxLQUFBRSxNQUFUO0FBQUEsSUFLYSxHQUFiLHVCQUEyQjtBQUFBLFFBQUFDLFVBRWQ7QUFBQSxJQUNkO0FBQUE7QUFBQSxlQUFBTixHQUFBTyxHQUF3QiwrQ0FBdUI7QUFBQTtBQUFBLElBQUs7QUFBQSxHQUVuRDtBQUFBLFlBQUFDLGNBQUFOLEdBQUFPLEdBQUFDLEdBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLEtBQUEsSUFRaUQ7QUFBQSxTQUFqQjtBQUFBLFNBQWhCO0FBQUEsU0FBaEI7QUFBQSxTQURpRDtBQUFBLFNBQWpCO0FBQUEsU0FBaEI7QUFBQSxTQUFoQjtBQUFBLFNBRGdEO0FBQUEsU0FBaEI7QUFBQSxTQUFoQjtBQUFBLFNBQWhCO0FBQUEsU0FEZ0Q7QUFBQSxTQUFoQjtBQUFBLFNBQWhCO0FBQUEsSUFBaEIsOERBQTREO0FBQUEsR0FHRztBQUFBLFlBQUFDO0FBQUFBLElBQUFDLFVBQUFDLFVBQUFDLE9BQUFDLFFBQUFDLFlBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFFBR3REO0FBQUEsS0FBQUMsUUFDQTtBQUFBLEtBQUFDLEtBQ0g7QUFBQSxLQUFBQyxRQUNIO0FBQUEsSUFBYyxZQUNWO0FBQUE7QUFBQSxLQUFBQyxTQURVO0FBQUEsS0FBQUQsVUFHSztBQUFBLEtBQUFFLEtBQXlDO0FBQUEsS0FBQUMsS0FBQTtBQUFBLEtBQUFDLEtBQUE7QUFBQSxLQUFBQyxLQUFBO0FBQUEsS0FBQUwsVUFDekM7QUFBQSxLQUFBTSxLQUFzQztBQUFBLEtBQUFDLEtBQUE7QUFBQSxLQUFBQyxLQUFBO0FBQUEsS0FBQUMsS0FBQTtBQUFBLElBQzVDLE1BQVosNEJBQXdCO0FBQUE7QUFBQSxNQUFBQyxPQUVkO0FBQUEsTUFBQUMsTUFDRDtBQUFBLFVBQ29CO0FBQUEsTUFBQUMsTUFBcEI7QUFBQSxLQUNWO0FBQUE7QUFBQSxJQUxtRDtBQUFBLEdBS1o7QUFBQSxZQUFBQyxpQkFBQUMsS0FBQUMsUUFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsS0FLcEM7QUFBQSxLQUFBaEQsSUFDRDtBQUFBLEtBQUFDLElBQ007QUFBQSxLQUFBQyxJQUNOO0FBQUEsS0FBQStDLGVBQ1c7QUFBQSxJQUNuQixzQkFBMEI7QUFBQTtBQUFBLEtBQUFDLFNBRVg7QUFBQSxLQUFBQyxLQUNKO0FBQUEsS0FBQUMsS0FDQTtBQUFBLElBQ1QsZ0RBQThEO0FBQUE7QUFBQSxZQUFBQyxnQkFBQVIsS0FBQVMsT0FBQUM7QUFBQUE7QUFBQUEsS0FBQVAsS0FHdkQ7QUFBQSxLQUFBUSxJQUNEO0FBQUEsSUFDUixXQUFlO0FBQUE7QUFBQSxTQUUwQjtBQUFBLEtBQUFDLFVBQXpCO0FBQUEsU0FDYztBQUFBLEtBQUFDLE9BQWpCO0FBQUEsSUFDWCxxQ0FBMEM7QUFBQTtBQUFBLFlBQUFDLGFBQUFkLEtBQUFlLFFBQUFMO0FBQUFBLFFBQUFNLE9BSzVDO0FBQUEsSUFDQTtBQUFBO0FBQUEsZUFBQXJELEdBQUFzRDtBQUFBQSxXQUFBL0IsUUFFVTtBQUFBLE9BQWtDLFlBQzlCO0FBQUEsV0FBQXlCLElBRDhCLFVBQUF6QixVQUdwQztBQUFBO0FBQUEsWUFBQXhCLElBQUEsWUFBQXdELFNBQzZCO0FBQUE7QUFBQSxZQUFBQSxTQUF5QjtBQUFBLE9BRXREO0FBQUE7QUFBQSxhQUU2QjtBQUFBLFNBQUFDLFdBQXpCO0FBQUEsUUFFRjtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUpGO0FBQUE7QUFBQSxNQUlvRDtBQUFBO0FBQUEsSUFDcEQ7QUFBQSxHQUNIO0FBQUEsWUFBQUMsV0FBQXBCO0FBQUFBLFFBQUFkLFFBR0M7QUFBQSxJQUF1RCxZQUNuRDtBQUFBLFFBQUF5QixJQURtRCxjQUVsQjtBQUFBLElBQTFCLGtEQUE0RDtBQUFBO0FBQUEsR0RoSS9FIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzMzNDAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2dlb21ldHJ5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdsb2JlIGdlb21ldHJ5IGNvbXB1dGF0aW9ucyAocHVyZSBtYXRoLCBubyBXZWJHTCkuICopXG5cbmxldCBwaSA9IEZsb2F0LnBpXG5cbigqKiBTYXRlbGxpdGUgZ3JvdW5kIGZvb3RwcmludCBoYWxmLWFuZ2xlIChyYWRpYW5zKS5cblxuICAgIEdpdmVuIGEgc2F0ZWxsaXRlIGF0IFthbHRpdHVkZV0ga20gYW5kIGEgbWluaW11bSBlbGV2YXRpb24gYW5nbGVcbiAgICBbbWluX2VsZXZhdGlvbl0gcmFkaWFucywgcmV0dXJucyB0aGUgYW5ndWxhciByYWRpdXMgb2YgdGhlIGdyb3VuZCBmb290cHJpbnRcbiAgICBjaXJjbGUuXG5cbiAgICBGcm9tIGdlb21ldHJ5OiByaG8gPSBhc2luKFIgLyAoUiArIGgpKSwgaGFsZl9hbmdsZSA9IHBpLzIgLSBlbGV2YXRpb24gLSByaG8uXG4qKVxubGV0IGZvb3RwcmludF9hbmdsZSB+YWx0aXR1ZGUgfm1pbl9lbGV2YXRpb24gPVxuICBsZXQgciA9IENvb3JkaW5hdGUuZWFydGhfcmFkaXVzIGluXG4gIGxldCByaG8gPSBhc2luIChyIC8uIChyICsuIGFsdGl0dWRlKSkgaW5cbiAgKHBpIC8uIDIuKSAtLiBtaW5fZWxldmF0aW9uIC0uIHJob1xuXG4oKiogR2VuZXJhdGUgbGF0L2xvbiBncmlkIGxpbmUgdmVydGljZXMgb24gdGhlIHVuaXQgc3BoZXJlLlxuXG4gICAgUmV0dXJucyBwYWlycyBvZiAoeCx5LHopIGVuZHBvaW50cyBpbiBHTCBjb29yZGluYXRlcyAoWT11cCkuIFtzcGFjaW5nXSBpc1xuICAgIGRlZ3JlZXMgYmV0d2VlbiBsaW5lcy4gKilcbmxldCBncmlkX2xpbmVzID8oc3BhY2luZyA9IDMwLikgPyhzZWdtZW50cyA9IDcyKSAoKSA9XG4gIGxldCBkZWdfdG9fcmFkIGQgPSBkICouIHBpIC8uIDE4MC4gaW5cbiAgbGV0IHZlcnRpY2VzID0gcmVmIFtdIGluXG4gIGxldCByID0gMS4wMDIgaW5cbiAgbGV0IGxhdCA9IHJlZiAoLTkwLiArLiBzcGFjaW5nKSBpblxuICB3aGlsZSAhbGF0IDwgOTAuIGRvXG4gICAgbGV0IGxhdF9yYWQgPSBkZWdfdG9fcmFkICFsYXQgaW5cbiAgICBsZXQgY29zX2xhdCA9IGNvcyBsYXRfcmFkIGFuZCBzaW5fbGF0ID0gc2luIGxhdF9yYWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbG9uMCA9IEZsb2F0Lm9mX2ludCBpICouIDIuICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cyBpblxuICAgICAgbGV0IGxvbjEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICAgIHZlcnRpY2VzIDo9XG4gICAgICAgIE1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgICAociAqLiBjb3NfbGF0ICouIGNvcyBsb24wKVxuICAgICAgICAgIChyICouIHNpbl9sYXQpXG4gICAgICAgICAgKHIgKi4gY29zX2xhdCAqLiBzaW4gbG9uMClcbiAgICAgICAgOjogTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgICAgIChyICouIGNvc19sYXQgKi4gY29zIGxvbjEpXG4gICAgICAgICAgICAgKHIgKi4gc2luX2xhdClcbiAgICAgICAgICAgICAociAqLiBjb3NfbGF0ICouIHNpbiBsb24xKVxuICAgICAgICA6OiAhdmVydGljZXNcbiAgICBkb25lO1xuICAgIGxhdCA6PSAhbGF0ICsuIHNwYWNpbmdcbiAgZG9uZTtcbiAgbGV0IGxvbiA9IHJlZiAoLTE4MC4pIGluXG4gIHdoaWxlICFsb24gPCAxODAuIGRvXG4gICAgbGV0IGxvbl9yYWQgPSBkZWdfdG9fcmFkICFsb24gaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbGF0MCA9XG4gICAgICAgICgtLnBpIC8uIDIuKSArLiAoRmxvYXQub2ZfaW50IGkgKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzKVxuICAgICAgaW5cbiAgICAgIGxldCBsYXQxID1cbiAgICAgICAgKC0ucGkgLy4gMi4pICsuIChGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMpXG4gICAgICBpblxuICAgICAgdmVydGljZXMgOj1cbiAgICAgICAgTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIGNvcyBsb25fcmFkKVxuICAgICAgICAgIChyICouIHNpbiBsYXQwKVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIHNpbiBsb25fcmFkKVxuICAgICAgICA6OiBNYXRoLlZlYzMuY3JlYXRlXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gY29zIGxvbl9yYWQpXG4gICAgICAgICAgICAgKHIgKi4gc2luIGxhdDEpXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gc2luIGxvbl9yYWQpXG4gICAgICAgIDo6ICF2ZXJ0aWNlc1xuICAgIGRvbmU7XG4gICAgbG9uIDo9ICFsb24gKy4gc3BhY2luZ1xuICBkb25lO1xuICBMaXN0LnJldiAhdmVydGljZXNcblxuKCoqIEdlbmVyYXRlIGEgY2lyY2xlIG9mIHBvaW50cyBvbiB0aGUgdW5pdCBzcGhlcmUgYXJvdW5kIFtjZW50ZXJdLlxuXG4gICAgW2NlbnRlcl0gaXMgYSBHTC1jb29yZGluYXRlIHVuaXQgdmVjdG9yLiBbaGFsZl9hbmdsZV0gaXMgdGhlIGFuZ3VsYXIgcmFkaXVzXG4gICAgaW4gcmFkaWFucy4gUmV0dXJucyBbc2VnbWVudHNdIHBhaXJzIG9mIGxpbmUgZW5kcG9pbnRzLiAqKVxubGV0IGNpcmNsZV9vbl9zcGhlcmUgY2VudGVyIH5oYWxmX2FuZ2xlIH5zZWdtZW50cyA9XG4gIGxldCBvcGVuIE1hdGguVmVjMyBpblxuICBsZXQgbiA9IG5vcm1hbGl6ZSBjZW50ZXIgaW5cbiAgbGV0IGFyYml0cmFyeSA9XG4gICAgaWYgYWJzX2Zsb2F0IG4ueSA8IDAuOSB0aGVuIGNyZWF0ZSAwLiAxLiAwLiBlbHNlIGNyZWF0ZSAxLiAwLiAwLlxuICBpblxuICBsZXQgdSA9IG5vcm1hbGl6ZSAoY3Jvc3MgbiBhcmJpdHJhcnkpIGluXG4gIGxldCB2ID0gY3Jvc3MgbiB1IGluXG4gIGxldCBjb3NfYSA9IGNvcyBoYWxmX2FuZ2xlIGFuZCBzaW5fYSA9IHNpbiBoYWxmX2FuZ2xlIGluXG4gIGxldCByID0gMS4wMDMgaW5cbiAgbGV0IHZlcnRzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBzZWdtZW50cyAtIDEgZG9cbiAgICBsZXQgdDAgPSBGbG9hdC5vZl9pbnQgaSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgdDEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgcG9pbnQgdCA9XG4gICAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi54KSArLiAoc2luX2EgKi4gY3QgKi4gdS54KSArLiAoc2luX2EgKi4gc3QgKi4gdi54KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi56KSArLiAoc2luX2EgKi4gY3QgKi4gdS56KSArLiAoc2luX2EgKi4gc3QgKi4gdi56KSkpXG4gICAgaW5cbiAgICB2ZXJ0cyA6PSBwb2ludCB0MCA6OiBwb2ludCB0MSA6OiAhdmVydHNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXZlcnRzXG5cbmxldCBmaWxsZWRfY2lyY2xlX29uX3NwaGVyZSBjZW50ZXIgfmhhbGZfYW5nbGUgfnNlZ21lbnRzID1cbiAgbGV0IG9wZW4gTWF0aC5WZWMzIGluXG4gIGxldCBuID0gbm9ybWFsaXplIGNlbnRlciBpblxuICBsZXQgYXJiaXRyYXJ5ID1cbiAgICBpZiBhYnNfZmxvYXQgbi55IDwgMC45IHRoZW4gY3JlYXRlIDAuIDEuIDAuIGVsc2UgY3JlYXRlIDEuIDAuIDAuXG4gIGluXG4gIGxldCB1ID0gbm9ybWFsaXplIChjcm9zcyBuIGFyYml0cmFyeSkgaW5cbiAgbGV0IHYgPSBjcm9zcyBuIHUgaW5cbiAgbGV0IGNvc19hID0gY29zIGhhbGZfYW5nbGUgYW5kIHNpbl9hID0gc2luIGhhbGZfYW5nbGUgaW5cbiAgbGV0IHIgPSAxLjAwMyBpblxuICBsZXQgY2VudGVyX3B0ID0gc2NhbGUgciBuIGluXG4gIGxldCBwb2ludCB0ID1cbiAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgIGNyZWF0ZVxuICAgICAgKHIgKi4gKChjb3NfYSAqLiBuLngpICsuIChzaW5fYSAqLiBjdCAqLiB1LngpICsuIChzaW5fYSAqLiBzdCAqLiB2LngpKSlcbiAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAociAqLiAoKGNvc19hICouIG4ueikgKy4gKHNpbl9hICouIGN0ICouIHUueikgKy4gKHNpbl9hICouIHN0ICouIHYueikpKVxuICBpblxuICBsZXQgdHJpcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgbGV0IHQwID0gRmxvYXQub2ZfaW50IGkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgbGV0IHQxID0gRmxvYXQub2ZfaW50IChpICsgMSkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgdHJpcyA6PSBjZW50ZXJfcHQgOjogcG9pbnQgdDAgOjogcG9pbnQgdDEgOjogIXRyaXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXRyaXNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9NYXRoIiwiU3RkbGliX0xpc3QiLCJDb29yZGluYXRlIiwiU3RkbGliX0Zsb2F0IiwicGkiLCJmb290cHJpbnRfYW5nbGUiLCJhbHRpdHVkZSIsIm1pbl9lbGV2YXRpb24iLCJyIiwicmhvIiwiZ3JpZF9saW5lcyIsIm9wdCIsInBhcmFtIiwic3BhY2luZyIsInNlZ21lbnRzIiwiZGVnX3RvX3JhZCIsImQiLCJsYXQiLCJ2ZXJ0aWNlcyIsImxhdF9yYWQiLCJjb3NfbGF0Iiwic2luX2xhdCIsImkiLCJsb24wIiwibG9uMSIsImxvbiIsImxvbl9yYWQiLCJsYXQwIiwibGF0MSIsImNpcmNsZV9vbl9zcGhlcmUiLCJjZW50ZXIiLCJoYWxmX2FuZ2xlIiwibiIsImFyYml0cmFyeSIsInUiLCJ2IiwiY29zX2EiLCJzaW5fYSIsInZlcnRzIiwidDAiLCJ0MSIsInBvaW50IiwidCIsImN0Iiwic3QiLCJmaWxsZWRfY2lyY2xlX29uX3Nw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RUwsYUFBQUMsS0FBZTtBQUFBLEtBRWlEO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkVBRUE7QUFBQTtBQUFBLFlBRzNFLHNCQVJBO0FBQUEsSUFRQTtBQUFBLFNBQUFHLFNBQUE7QUFBQTtBQUFBLFNBQUFBLE9BQUEsR0FBQXpCLElBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQWlCLEtBQ1c7QUFBQSxPQUFBQyxLQUNBO0FBQUEsV0FDd0I7QUFBQSxXQUFaO0FBQUEsV0FBUTtBQUFBLHNCQUFBTyxTQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUUvQix5Q0FBYztBQUFBO0FBQUEsR0RoSWhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM1MzQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvb19ydW50aW1lLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiXSwibmFtZXMiOlsicnVudGltZSIsImNzdF82XzNfMiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUEseUJBQUFDLFlBQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMzU0NywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJqc29vX3J1bnRpbWUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHJ1bnRpbWVfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNvb19ydW50aW1lX3ZhbHVlXCJcbiAgKCoqIFtydW50aW1lX3ZhbHVlIFwiRk9PXCJdIHJldHVybnMgdGhlIEphdmFTY3JpcHQgdmFsdWUgRk9PIHByb3ZpZGVkIGJ5IHRoZSBKYXZhU2NyaXB0IHJ1bnRpbWUgKHdpdGggJy8vUHJvdmlkZXM6IEZPTycpLiBUaGUgc3RyaW5nIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbC4gKilcblxuICBleHRlcm5hbCBjdXN0b21faWRlbnRpZmllciA6IE9iai50IC0+IHN0cmluZyA9IFwiY2FtbF9jdXN0b21faWRlbnRpZmllclwiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICB0eXBlIGVmZmVjdHNfYmFja2VuZCA9XG4gICAgICBbIGBEaXNhYmxlZFxuICAgICAgfCBgQ3BzXG4gICAgICB8IGBEb3VibGVfdHJhbnNsYXRpb25cbiAgICAgIF1cblxuICAgIGV4dGVybmFsIGVmZmVjdHNfIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcblxuICAgIGxldCBlZmZlY3RzICgpID1cbiAgICAgIG1hdGNoIGVmZmVjdHNfICgpIHdpdGhcbiAgICAgIHwgXCJkaXNhYmxlZFwiIC0+IGBEaXNhYmxlZFxuICAgICAgfCBcImNwc1wiIC0+IGBDcHNcbiAgICAgIHwgXCJkb3VibGUtdHJhbnNsYXRpb25cIiAtPiBgRG91YmxlX3RyYW5zbGF0aW9uXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YVNjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YVNjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgZXh0ZXJuYWwgcmFpc2VfIDogdCAtPiAnYSA9IFwiY2FtbF90aHJvd19qc19leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb24ndCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZSBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcblxuICBleHRlcm5hbCBjYW1sX3N0cmluZ19vZl9hcnJheSA6ICdhIGFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIHN0cmluZ19vZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XCJcblxuICBleHRlcm5hbCBieXRlc19vZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBieXRlcyA9IFwiY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdWludDhBcnJheV9vZl9ieXRlcyA6IGJ5dGVzIC0+IHVpbnQ4QXJyYXkgPSBcImNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuXG5tb2R1bGUgRWZmZWN0IDogc2lnXG4gIGV4dGVybmFsIGFzc3VtZV9ub19wZXJmb3JtIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2Fzc3VtZV9ub19wZXJmb3JtXCJcbiAgKCoqIFBhc3NpbmcgYSBmdW5jdGlvbiBbZl0gYXMgYXJndW1lbnQgb2YgYGFzc3VtZV9ub19wZXJmb3JtYCBndWFyYW50ZWVzIHRoYXQsXG4gICAgICB3aGVuIGNvbXBpbGluZyB3aXRoIGAtLWVmZmVjdHM9ZG91YmxlLXRyYW5zbGF0aW9uYCwgdGhlIGRpcmVjdC1zdHlsZVxuICAgICAgdmVyc2lvbiBvZiBbZl0gaXMgY2FsbGVkLCB3aGljaCBpcyBmYXN0ZXIgdGhhbiB0aGUgQ1BTIHZlcnNpb24uIEFzIGFcbiAgICAgIGNvbnNlcXVlbmNlLCBwZXJmb3JtaW5nIGFuIGVmZmVjdCBpbiBhIHRyYW5zaXRpdmUgY2FsbGVlIG9mIFtmXSB3aWxsXG4gICAgICByYWlzZSBgRWZmZWN0LlVuaGFuZGxlZGAsIHJlZ2FyZGxlc3Mgb2YgYW55IGVmZmVjdCBoYW5kbGVycyBpbnN0YWxsZWRcbiAgICAgIGJlZm9yZSB0aGUgY2FsbCB0byBgYXNzdW1lX25vX3BlcmZvcm1gLCB1bmxlc3MgYSBuZXcgZWZmZWN0IGhhbmRsZXIgd2FzXG4gICAgICBpbnN0YWxsZWQgaW4gdGhlIG1lYW50aW1lLlxuXG4gICAgICBUaGlzIGJlaGF2aW91ciBpcyB0aGUgc2FtZSB3aGVuIGRvdWJsZSB0cmFuc2xhdGlvbiBpcyBkaXNhYmxlZC4gKilcbmVuZCA9IHN0cnVjdFxuICBleHRlcm5hbCBhc3N1bWVfbm9fcGVyZm9ybSA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9hc3N1bWVfbm9fcGVyZm9ybVwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiZ2xvYmFsX2RhdGEiLCJBc3NlcnRfZmFpbHVyZSIsIkpzb29fcnVudGltZV9SdW50aW1lX3ZlcnNpb24iLCJTdGRsaWJfQ2FsbGJhY2siLCJlZmZlY3RzIiwicGFyYW0iLCJtYXRjaCIsInZlcnNpb24iLCJnaXRfdmVyc2lvbiIsIkV4biIsIkVycm9yIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsK0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUM7QUFBQUEsUUFBQUMsUUNpS1k7QUFBQSxJQUFXLG9CQUVOO0FBQUEsSUFGTSx5QkFDRDtBQUFBLElBREM7QUFBQSxLQUlWO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBQyxVRHJLekI7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLEdDd01VO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUE0RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR4TXRFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM1OTUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvanN0ci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogTWluaSBKdiwgdGhpcyBhbGxvd3MgdXMgdG8gdXNlIEpzdHIgaW4gSnYgKilcblxudHlwZSBqdlxuZXh0ZXJuYWwganZfY2FsbCA6IGp2IC0+IHN0cmluZyAtPiBqdiBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuZXh0ZXJuYWwganZfYXBwbHkgOiBqdiAtPiBqdiBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5leHRlcm5hbCBqdl9nZXQgOiBqdiAtPiBzdHJpbmcgLT4ganYgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIGp2X29mX2ludCA6IGludCAtPiBqdiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGp2X3RvX2ludCA6IGp2IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGp2X29mX2Zsb2F0IDogZmxvYXQgLT4ganYgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5leHRlcm5hbCBqdl90b19mbG9hdCA6IGp2IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcbmV4dGVybmFsIGp2X3RvX2Jvb2wgOiBqdiAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwganZfcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5sZXQganZfZ2xvYmFsID0ganZfcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbigqIFN0cmluZ3MgKilcblxudHlwZSB0ID0ganZcbmV4dGVybmFsIGp2X3RvX2pzdHJfbGlzdCA6IGp2IC0+IHQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcbmV4dGVybmFsIGp2X29mX2pzdHJfbGlzdCA6IHQgbGlzdCAtPiBqdiA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcbmV4dGVybmFsIHYgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxubGV0IGxlbmd0aCBzID0ganZfdG9faW50IChqdl9nZXQgcyBcImxlbmd0aFwiKVxuXG5leHRlcm5hbCBqc3RyX3RvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5sZXQganN0cl9vZl9pbnQgPyhiYXNlID0gMTApIGkgPVxuICBqdl9jYWxsIChqdl9vZl9pbnQgaSkgXCJ0b1N0cmluZ1wiIFt8IGp2X29mX2ludCBiYXNlIHxdXG5cbmxldCBlcnJfYm91bmRzIGkgbGVuID1cbiAgbGV0ICggKyApIHMwIHMxID0ganZfY2FsbCBzMCBcImNvbmNhdFwiIFt8IHMxIHxdIGluXG4gIGpzdHJfdG9fc3RyaW5nIEBAXG4gIHYgXCJpbmRleCBcIiArIGpzdHJfb2ZfaW50IGkgKyB2IFwiIG5vdCBpbiBib3VuZHMgWzA7XCIgK1xuICBqc3RyX29mX2ludCAobGVuIC0gMSkgKyB2IFwiXVwiXG5cbmxldCBnZXQgcyBpID1cbiAgaWYgaSA+PSBsZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIChlcnJfYm91bmRzIGkgKGxlbmd0aCBzKSkgZWxzZVxuICBsZXQgdSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwiY29kZVBvaW50QXRcIiBbfGp2X29mX2ludCBpfF0pIGluXG4gIGxldCB1ID0gaWYgdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIHRoZW4gdSBlbHNlIDB4RkZGRCAoKiBVY2hhci5yZXAgKikgaW5cbiAgVWNoYXIudW5zYWZlX29mX2ludCB1XG5cbmxldCBqc3RyX29mX3VjaGFyX2ludCBpID1cbiAganZfY2FsbCAoanZfZ2V0IGp2X2dsb2JhbCBcIlN0cmluZ1wiKSBcImZyb21Db2RlUG9pbnRcIiBbfCBqdl9vZl9pbnQgaSB8XVxuXG5sZXQgZ2V0X2pzdHIgcyBpID0ganN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCAoZ2V0IHMgaSkpXG5cbigqIENvbnN0YW50cyAqKVxuXG5sZXQgZW1wdHkgPSB2IFwiXCJcbmxldCBzcCA9IHYgXCIgXCJcbmxldCBubCA9IHYgXCJcXG5cIlxuXG4oKiBBc3NlbWJsaW5nICopXG5cbmxldCBhcHBlbmQgczAgczEgPSBqdl9jYWxsIHMwIFwiY29uY2F0XCIgW3wgczEgfF1cbmxldCAoICsgKSA9IGFwcGVuZFxubGV0IGNvbmNhdCA/KHNlcCA9IGVtcHR5KSBzcyA9IGp2X2NhbGwgKGp2X29mX2pzdHJfbGlzdCBzcykgXCJqb2luXCIgW3wgc2VwIHxdXG5sZXQgcGFkX3N0YXJ0ID8ocGFkID0gc3ApIGxlbiBzID0ganZfY2FsbCBzIFwicGFkU3RhcnRcIiBbfCBqdl9vZl9pbnQgbGVuOyBwYWQgfF1cbmxldCBwYWRfZW5kID8ocGFkID0gc3ApIGxlbiBzID0ganZfY2FsbCBzIFwicGFkRW5kXCIgW3wganZfb2ZfaW50IGxlbjsgcGFkIHxdXG5sZXQgcmVwZWF0IG4gcyA9IGp2X2NhbGwgcyBcInJlcGVhdFwiIFt8IGp2X29mX2ludCBuIHxdXG5cbigqIEZpbmRpbmcgKilcblxubGV0IGZpbmRfc3ViID8oc3RhcnQgPSAwKSB+c3ViIHMgPVxuICBsZXQgaSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwiaW5kZXhPZlwiIFt8IHN1YjsganZfb2ZfaW50IHN0YXJ0IHxdKSBpblxuICBpZiBpID0gLTEgdGhlbiBOb25lIGVsc2UgU29tZSBpXG5cbmxldCBmaW5kX2xhc3Rfc3ViID9iZWZvcmUgfnN1YiBzID1cbiAgbGV0IGJlZm9yZSA9IG1hdGNoIGJlZm9yZSB3aXRoIE5vbmUgLT4gbGVuZ3RoIHMgfCBTb21lIGIgLT4gYiBpblxuICBsZXQgcG9zID0gYmVmb3JlIC0gbGVuZ3RoIHN1YiBpblxuICBpZiBwb3MgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGxldCBpID0ganZfdG9faW50IChqdl9jYWxsIHMgXCJsYXN0SW5kZXhPZlwiIFt8c3ViOyBqdl9vZl9pbnQgcG9zfF0pIGluXG4gIGlmIGkgPSAtMSB0aGVuIE5vbmUgZWxzZSBTb21lIGlcblxuKCogQnJlYWtpbmcgKilcblxubGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCBzID1cbiAgbGV0IGFyZ3MgPSBtYXRjaCBzdG9wIHdpdGhcbiAgfCBOb25lIC0+IFt8IGp2X29mX2ludCBzdGFydCB8XVxuICB8IFNvbWUgc3RvcCAtPiBbfCBqdl9vZl9pbnQgc3RhcnQ7IGp2X29mX2ludCBzdG9wIHxdXG4gIGluXG4gIGp2X2NhbGwgcyBcInNsaWNlXCIgYXJnc1xuXG5sZXQgc3ViID8oc3RhcnQgPSAwKSA/bGVuIHMgPVxuICBsZXQgYXJncyA9IG1hdGNoIGxlbiB3aXRoXG4gIHwgTm9uZSAtPiBbfCBqdl9vZl9pbnQgc3RhcnQgfF1cbiAgfCBTb21lIGxlbiAtPiBbfCBqdl9vZl9pbnQgc3RhcnQ7IGp2X29mX2ludCBsZW4gfF1cbiAgaW5cbiAganZfY2FsbCBzIFwic3Vic3RyXCIgYXJnc1xuXG5sZXQgY3V0cyB+c2VwIHMgPSBqdl90b19qc3RyX2xpc3QgKGp2X2NhbGwgcyBcInNwbGl0XCIgW3wgc2VwIHxdKVxuXG4oKiBUcmF2ZXJzaW5nIGFuZCB0cmFuc2Zvcm1pbmcgKilcblxubGV0IGl0ZXJhdG9yIDoganYgPSBqdl9wdXJlX2pzX2V4cHIgXCJTeW1ib2wuaXRlcmF0b3JcIlxuZXh0ZXJuYWwgZ2V0X3N5bWJvbCA6IGp2IC0+IGp2IC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5cbmxldCBmb2xkX3VjaGFycyBmIHMgYWNjID1cbiAgbGV0IHJlYyBsb29wIGl0IGFjYyA9XG4gICAgbGV0IHIgPSBqdl9jYWxsIGl0IFwibmV4dFwiIFt8fF0gaW5cbiAgICBpZiBqdl90b19ib29sIChqdl9nZXQgciBcImRvbmVcIikgdGhlbiBhY2MgZWxzZVxuICAgIGxldCB1ID0ganZfY2FsbCAoanZfZ2V0IHIgXCJ2YWx1ZVwiKSBcImNvZGVQb2ludEF0XCIgW3wganZfb2ZfaW50IDAgfF0gaW5cbiAgICBsZXQgdSA9IGlmIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiB0aGVuIHUgZWxzZSAweEZGRkQgKCogVWNoYXIucmVwICopIGluXG4gICAgbG9vcCBpdCAoZiAoVWNoYXIudW5zYWZlX29mX2ludCB1KSBhY2MpXG4gIGluXG4gIGxvb3AgKGp2X2FwcGx5IChnZXRfc3ltYm9sIHMgaXRlcmF0b3IpIFt8fF0pIGFjY1xuXG5sZXQgZm9sZF9qc3RyX3VjaGFycyBmIHMgYWNjID1cbiAgbGV0IGYnIHUgYWNjID0gZiAoanN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCB1KSkgYWNjIGluXG4gIGZvbGRfdWNoYXJzIGYnIHMgYWNjXG5cbmxldCB0cmltIHMgPSBqdl9jYWxsIHMgXCJ0cmltXCIgW3x8XVxuXG4oKiBOb3JtYWxpemF0aW9uICopXG5cbnR5cGUgbm9ybWFsaXphdGlvbiA9IFsgYE5GRCB8IGBORkMgfCBgTkZLRCB8IGBORktDIF1cblxubGV0IG5vcm1hbGl6ZWQgbmYgcyA9XG4gIGxldCBuZiA9IG1hdGNoIG5mIHdpdGhcbiAgfCBgTkZEIC0+IHYgXCJORkRcIiB8IGBORkMgLT4gdiBcIk5GQ1wiIHwgYE5GS0QgLT4gdiBcIk5GS0RcIiB8IGBORktDIC0+IHYgXCJORktDXCJcbiAgaW5cbiAganZfY2FsbCBzIFwibm9ybWFsaXplXCIgW3wgbmYgfF1cblxuKCogQ2FzZSBtYXBwaW5nICopXG5cbmxldCBsb3dlcmNhc2VkIHMgPSBqdl9jYWxsIHMgXCJ0b0xvd2VyQ2FzZVwiIFt8fF1cbmxldCB1cHBlcmNhc2VkIHMgPSBqdl9jYWxsIHMgXCJ0b1VwcGVyQ2FzZVwiIFt8fF1cblxuKCogUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnMgKilcblxubGV0IGlzX2VtcHR5IHMgPSBsZW5ndGggcyA9IDBcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcInN0YXJ0c1dpdGhcIiBbfCBwcmVmaXggfF1cbmxldCBpbmNsdWRlcyB+YWZmaXggcyA9IGp2X3RvX2Jvb2wgQEAganZfY2FsbCBzIFwiaW5jbHVkZXNcIiBbfCBhZmZpeCB8XVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcImVuZHNXaXRoXCIgW3wgc3VmZml4IHxdXG5sZXQgZXF1YWwgPSAoID0gKVxubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbigqIENvbnZlcnNpb25zICopXG5cbmxldCBvZl91Y2hhciB1ID0ganN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCB1KVxubGV0IG9mX2NoYXIgYyA9IGpzdHJfb2ZfdWNoYXJfaW50IChDaGFyLmNvZGUgYylcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5leHRlcm5hbCBiaW5hcnlfdG9fb2N0ZXRzIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuZXh0ZXJuYWwgYmluYXJ5X29mX29jdGV0cyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxubGV0IG51bWJlciA9IGp2X2dldCBqdl9nbG9iYWwgXCJOdW1iZXJcIlxuXG5sZXQgb2ZfaW50ID0ganN0cl9vZl9pbnRcbmxldCB0b19pbnQgP2Jhc2UgcyA9XG4gIGxldCBhcmdzID0gbWF0Y2ggYmFzZSB3aXRoIE5vbmUgLT4gW3wgcyB8XSB8IFNvbWUgYiAtPiBbfCBzOyBqdl9vZl9pbnQgYiB8XSBpblxuICBsZXQgbiA9IGp2X2NhbGwgbnVtYmVyIFwicGFyc2VJbnRcIiBhcmdzIGluXG4gIGlmIG5vdCAobiA9IG4pIHRoZW4gKCogTmFOICopIE5vbmUgZWxzZSBTb21lIChqdl90b19pbnQgbilcblxubGV0IHRvX2Zsb2F0IHMgPSBqdl90b19mbG9hdCBAQCBqdl9jYWxsIG51bWJlciBcInBhcnNlRmxvYXRcIiBbfCBzIHxdXG5sZXQgb2ZfZmxvYXQgP2ZyYWMgbiA9IG1hdGNoIGZyYWMgd2l0aFxufCBOb25lIC0+IGp2X2NhbGwgKGp2X29mX2Zsb2F0IG4pIFwidG9TdHJpbmdcIiBbfHxdXG58IFNvbWUgZnJhYyAtPiBqdl9jYWxsIChqdl9vZl9mbG9hdCBuKSBcInRvRml4ZWRcIiBbfGp2X29mX2ludCBmcmFjfF1cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9lcXVhbCIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9jYWxsMiIsImYiLCJhMCIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWIiLCJqdl9nbG9iYWwiLCJsZW5ndGgiLCJzIiwianN0cl9vZl9pbnQiLCJvcHQiLCJpIiwiYmFzZSIsImdldCIsImxlbiIsInMxIiwiczAiLCJ1IiwianN0cl9vZl91Y2hhcl9pbnQiLCJnZXRfanN0ciIsImFwcGVuZCIsImVtcHR5IiwiY29uY2F0Iiwic3MiLCJzZXAiLCJzcCIsInBhZF9zdGFydCIsInBhZCIsInBhZF9lbmQiLCJyZXBlYXQiLCJuIiwiZmluZF9zdWIiLCJzdWIiLCJzdGFydCIsImZpbmRfbGFzdF9zdWIiLCJiZWZvcmUiLCJiIiwicG9zIiwic2xpY2UiLCJzdG9wIiwiYXJncyIsImN1dHMiLCJpdGVyYXRvciIsImZvbGRfdWNoYXJzIiwiYWNjIiwiaXQiLCJyIiwiZm9sZF9qc3RyX3VjaGFycyIsInRyaW0iLCJub3JtYWxpemVkIiwibmYiLCJsb3dlcmNhc2VkIiwidXBwZXJjYXNlZCIsImlzX2VtcHR5Iiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJpbmNsdWRlcyIsImFmZml4IiwiZW5kc193aXRoIiwic3VmZml4IiwiY29tcGFyZSIsIm9mX3VjaGFyIiwib2ZfY2hhciIsImMiLCJudW1iZXIiLCJ0b19pbnQiLCJ0b19mbG9hdCIsIm9mX2Zsb2F0IiwiZnJhYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFlDaUJnQjtBQUFBLFlBQUFDLE9BQUFDLEdBUTRCO0FBQUEsWUFBQUMsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQUMsT0FHNUI7QUFBQSxJQUNkLHVCQUFxRDtBQUFBO0FBQUEsWUFBQUMsSUFBQUwsR0FBQUc7QUFBQUEsSUFTckM7QUFBQTtBQUFBLE1BQUFHLE1BYk87QUFBQSxNQUFBQyxLQVV2QjtBQUFBLE1BQUFBLE9BRGE7QUFBQSxNQUFBQyxLQUZLO0FBQUEsTUFBQUEsT0FBQTtBQUFBLE1BQUFBLE9BQUE7QUFBQSxVQUNsQixnQ0FEa0I7QUFBQSxLQU15Qyw4QkFHdEM7QUFBQTtBQUFBLFFBQUFDLElBRkgsa0JBQUFBLE1BQ2xCO0FBQUEsSUFDQSxzQ0FBcUI7QUFBQTtBQUFBLFlBQUFDLGtCQUFBUCxHQUdyQix3Q0FBcUU7QUFBQSxZQUFBUSxTQUFBWCxHQUFBRztBQUFBQSxRQUFBLElBRXBCO0FBQUEsSUFBZCxPQUF3QixrQkFBeEIsK0JBQXdCO0FBQUE7QUFBQSxZQUFBUyxPQUFBSixJQUFBRCxJQVUxQyxvQkFBNEI7QUFBQSxPQUFBTSxRQU5uQztBQUFBLFlBQUFDLE9BQUFaLEtBQUFhO0FBQUFBLFFBQUFDLE1BUUQ7QUFBQSxJQUE0QixPQUFBLHNDQUFSLEtBQTZDO0FBQUE7QUFBQSxPQUFBQyxLQVBuRTtBQUFBLFlBQUFDLFVBQUFoQixLQUFBSSxLQUFBTjtBQUFBQSxRQUFBbUIsTUFRSztBQUFBLElBQW9CLDJCQUE2QztBQUFBO0FBQUEsWUFBQUMsUUFBQWxCLEtBQUFJLEtBQUFOO0FBQUFBLFFBQUFtQixNQUNuRTtBQUFBLElBQW9CLHlCQUEyQztBQUFBO0FBQUEsWUFBQUUsT0FBQUMsR0FBQXRCLEdBQzFELGtCQUFvQztBQUFBLFlBQUF1QixTQUFBckIsS0FBQXNCLEtBQUF4QjtBQUFBQSxRQUFBeUIsUUFJeEMsa0JBQUF0QixJQUNPO0FBQUEsSUFDbEIsNEJBQStCO0FBQUE7QUFBQSxZQUFBdUIsY0FBQUMsUUFBQUgsS0FBQXhCO0FBQUFBLElBRy9CLGVBQUE0QixJQUFBLFdBQUFELFdBQTRELFlBQUFBLFdBQWI7QUFBQSxRQUFBRSxNQUNsQjtBQUFBLElBQzdCLFlBQWdCO0FBQUEsUUFBQTFCLElBQ0U7QUFBQSxJQUNsQiw0QkFBK0I7QUFBQTtBQUFBLFlBQUEyQixNQUFBNUIsS0FBQTZCLE1BQUEvQjtBQUFBQSxRQUFBeUIsUUFJdkI7QUFBQSxJQUNSO0FBQUEsU0FBQU0sU0FBQSxTQUFBQyxPQUVlO0FBQUE7QUFBQSxTQUFBQSxPQURMO0FBQUEsSUFHViwwQ0FBc0I7QUFBQTtBQUFBLFlBQUFSLElBQUF0QixLQUFBSSxLQUFBTjtBQUFBQSxRQUFBeUIsUUFFaEI7QUFBQSxJQUNOO0FBQUEsU0FBQW5CLFFBQUEsUUFBQTBCLE9BRWM7QUFBQTtBQUFBLFNBQUFBLE9BREo7QUFBQSxJQUdWLDJDQUF1QjtBQUFBO0FBQUEsWUFBQUMsS0FBQWpCLEtBQUFoQixHQUVTLE9BQWhCLHNCQUFnQixhQUE2QjtBQUFBLE9BQUFrQyxXQUkzQztBQUFBLFlBQUFDLFlBQUEzQyxHQUFBUSxHQUFBb0M7QUFBQUEsUUFBQUMsS0FXYixlQUFBRCxRQUF1QztBQUFBO0FBQUEsU0FBQUUsSUFObEM7QUFBQSxLQUN1QixlQUFNO0FBQUE7QUFBQSxNQUFBN0IsSUFDN0I7QUFBQSxNQUFBQSxNQUNSO0FBQUEsTUFBQTJCLFFBQ1EsY0FBRztBQUFBLEtBQTRCO0FBQUE7QUFBQSxHQUVPO0FBQUEsWUFBQUcsaUJBQUEvQyxHQUFBUSxHQUFBb0M7QUFBQUEsYUFBQTVDLElBQUFpQixHQUFBMkI7QUFBQUEsS0FHWixPQUFpQjtBQUFBLGlCQUFwQyxrQkFBbUIscUNBQXFCO0FBQUE7QUFBQSxJQUN6RCwrQkFBb0I7QUFBQTtBQUFBLFlBQUFJLEtBQUF4QyxHQUVULGVBQXFCO0FBQUEsWUFBQXlDLFdBQUFDLElBQUExQztBQUFBQTtBQUFBQSxLQUFBMEM7QUFBQUEsT0FPaEM7QUFBQTtBQUFBO0FBQUEsSUFHQSx3QkFBOEI7QUFBQTtBQUFBLFlBQUFDLFdBQUEzQyxHQUliLHNCQUE0QjtBQUFBLFlBQUE0QyxXQUFBNUMsR0FDNUIsc0JBQTRCO0FBQUEsWUFBQTZDLFNBQUE3QyxHQUl0Qiw4QkFBSTtBQUFBLFlBQUE4QyxZQUFBQyxRQUFBL0MsR0FDYSwrQkFBbUM7QUFBQSxZQUFBZ0QsU0FBQUMsT0FBQWpELEdBQ3ZDLDRCQUFnQztBQUFBLFlBQUFrRCxVQUFBQyxRQUFBbkQsR0FDOUIsNkJBQWlDO0FBQUEsT0FBQW9ELFVBdkNwQjtBQUFBLFlBQUFDLFNBQUE1QztBQUFBQSxJQTZDbEIsT0FBZ0Isa0JBQWhCLCtCQUFnQjtBQUFBO0FBQUEsWUFBQTZDLFFBQUFDLEdBQ25DLDJCQUErQjtBQUFBLE9BQUFDLFNBT2xDO0FBQUEsWUFBQUMsT0FBQXJELE1BQUFKO0FBQUFBLElBSVgsYUFBQTRCLElBQUEsU0FBQUksT0FBdUQsb0JBQUFBLE9BQXBCO0FBQUEsUUFBQVYsSUFDM0I7QUFBQSxJQUNELG9DQUFtRDtBQUFBO0FBQUEsWUFBQW9DLFNBQUExRCxHQUU1QiwyQkFBbUM7QUFBQSxZQUFBMkQsU0FBQUMsTUFBQXRDO0FBQUFBLElBQzVDLFdBQ2IsbUJBQ3lEO0FBQUEsUUFBQXNDLFNBRjVDO0FBQUEsSUFFUix3QkFBb0Q7QUFBQTtBQUFBLEdBWDdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURySnRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM3NzksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvanYubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbmV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuKCogVmFsdWVzICopXG5cbnR5cGUgdFxudHlwZSBqdiA9IHRcblxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuZXh0ZXJuYWwgc3RyaWN0X2VxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5leHRlcm5hbCB0eXBlb2YgOiB0IC0+IEpzdHIudCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gY29uczp0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogTnVsbCBhbmQgdW5kZWZpbmVkICopXG5cbmxldCBudWxsID0gcHVyZV9qc19leHByIFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbmxldCBpc19udWxsIHYgPSBzdHJpY3RfZXF1YWwgdiBudWxsXG5sZXQgaXNfdW5kZWZpbmVkIHYgPSBzdHJpY3RfZXF1YWwgdiB1bmRlZmluZWRcbmxldCBpc19ub25lIHYgPSBpc19udWxsIHYgfHwgaXNfdW5kZWZpbmVkIHZcbmxldCBpc19zb21lIHYgPSBub3QgKGlzX25vbmUgdilcbmxldCB0b19vcHRpb24gY29udiB2ID0gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNvbnYgdilcbmxldCBvZl9vcHRpb24gfm5vbmUgY29udiA9IGZ1bmN0aW9uIE5vbmUgLT4gbm9uZSB8IFNvbWUgdiAtPiBjb252IHZcblxuKCogT2JqZWN0cyAqKVxuXG5sZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbigqIFByb3BlcnRpZXMgKilcblxudHlwZSBwcm9wID0gc3RyaW5nXG5cbmV4dGVybmFsIGdldCA6IHQgLT4gcHJvcCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IHByb3AgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGUgOiB0IC0+IHByb3AgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxubGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIHYgLT4gc2V0IG8gcCB2XG5sZXQgZmluZCBvIHAgPSBsZXQgdiA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgdlxubGV0IGZpbmRfbWFwIGYgbyBwID0gbGV0IHYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIChmIHYpXG5sZXQgcmVjIGZpbmRfcGF0aCBvID0gZnVuY3Rpb25cbnwgW10gLT4gU29tZSBvXG58IHAgOjogcHMgLT4gbWF0Y2ggZmluZCBvIHAgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIG8gLT4gZmluZF9wYXRoIG8gcHNcblxuKCogQ3JlYXRpbmcgKilcblxuZXh0ZXJuYWwgb2JqIDogKHByb3AgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5leHRlcm5hbCBuZXcnIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuKCogTWV0aG9kcyAqKVxuXG5leHRlcm5hbCBjYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4oKiBCb29sZWFucyAqKVxuXG5sZXQgdHJ1ZScgPSBwdXJlX2pzX2V4cHIgXCJ0cnVlXCJcbmxldCBmYWxzZScgPSBwdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5leHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgb2ZfYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGIgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgYiB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19ib29sIGIpXG4gIGxldCBnZXQgbyBwID0gdG9fYm9vbCAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2Jvb2wgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGIgLT4gc2V0IG8gcCBiXG5lbmRcblxuKCogSW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGkgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgaSB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19pbnQgaSlcbiAgbGV0IGdldCBvIHAgPSB0b19pbnQgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGkgPSBzZXQgbyBwIChvZl9pbnQgaSlcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGkgLT4gc2V0IG8gcCBpXG5lbmRcblxuKCogRmxvYXRzICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgZiB0aGVuIE5vbmUgZWxzZSBTb21lKHRvX2Zsb2F0IGYpXG4gIGxldCBnZXQgbyBwID0gdG9fZmxvYXQgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGIgPSBzZXQgbyBwIChvZl9mbG9hdCBiKVxuICBsZXQgc2V0X2lmX3NvbWUgbyBwID0gZnVuY3Rpb24gTm9uZSAtPiAoKSB8IFNvbWUgZiAtPiBzZXQgbyBwIGZcbmVuZFxuXG4oKiBJbnQzMiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxubW9kdWxlIEludDMyID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBmID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGYgdGhlbiBOb25lIGVsc2UgU29tZSh0b19pbnQzMiBmKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2ludDMyIChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfaW50MzIgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5lbmRcblxuKCogSnN0ciAqKVxuXG5leHRlcm5hbCB0b19qc3RyIDogdCAtPiBKc3RyLnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9qc3RyIDogSnN0ci50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5tb2R1bGUgSnN0ciA9IHN0cnVjdFxuICBsZXQgZmluZCBvIHAgPSBsZXQgcyA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSBzIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX2pzdHIgcylcbiAgbGV0IGdldCBvIHAgPSB0b19qc3RyIChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfanN0ciBiKVxuICBsZXQgc2V0X2lmX3NvbWUgbyBwID0gZnVuY3Rpb24gTm9uZSAtPiAoKSB8IFNvbWUgZiAtPiBzZXQgbyBwIGZcblxuICAoKiBXaGVuIGRvIHdlIGdldCAuLi8gPyAqKVxuICB0eXBlIHQgPSBKc3RyLnRcbiAgbGV0IHRvX3N0cmluZyA9IEpzdHIudG9fc3RyaW5nXG5lbmRcblxuKCogU3RyaW5nICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5leHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4oKiBBcnJheXMgKilcblxubGV0IGlzX2FycmF5IGp2ID0gdG9fYm9vbCAoY2FsbCAoZ2V0IGdsb2JhbCBcIkFycmF5XCIpIFwiaXNBcnJheVwiIFt8IGp2IHxdKVxuXG5tb2R1bGUgSmFycmF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIGxldCBjcmVhdGUgbiA9IG5ldycgKGdldCBnbG9iYWwgXCJBcnJheVwiKSBbfCBvZl9pbnQgbiB8XVxuICBsZXQgbGVuZ3RoIGEgPSB0b19pbnQgKGdldCBhIFwibGVuZ3RoXCIpXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5lbmRcblxubGV0IHRvX2FycmF5IGNvbnYgdiA9XG4gIGxldCBsZW4gPSBKYXJyYXkubGVuZ3RoIHYgaW5cbiAgQXJyYXkuaW5pdCBsZW4gKGZ1biBpIC0+IGNvbnYgKEphcnJheS5nZXQgdiBpKSlcblxubGV0IG9mX2FycmF5IGNvbnYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgamEgPSBKYXJyYXkuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBKYXJyYXkuc2V0IGphIGkgKGNvbnYgKEFycmF5LmdldCBhIGkpKSBkb25lO1xuICBqYVxuXG5sZXQgdG9fbGlzdCBjb252IHYgPVxuICBsZXQgbGVuID0gSmFycmF5Lmxlbmd0aCB2IGluXG4gIExpc3QuaW5pdCBsZW4gKGZ1biBpIC0+IGNvbnYgKEphcnJheS5nZXQgdiBpKSlcblxubGV0IG9mX2xpc3QgY29udiBsID1cbiAgKCogU2hvdWxkIGJlIGJlbmNobWFya2VkIGNoZWNraW5nIGxlbmd0aCBvZiBbbF0gZmlyc3QgbWF5IGJlIGZhc3RlclxuICAgICAgIHRoYW4gZXh0ZW5kaW5nIHRoZSBhcnJheSByZXBlYXRlZGx5ICopXG4gIGxldCByZWMgbG9vcCBpIGphID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBqYVxuICB8IHYgOjogdnMgLT4gSmFycmF5LnNldCBqYSBpIChjb252IHYpOyBsb29wIChpICsgMSkgamEgdnNcbiAgaW5cbiAgbG9vcCAwIChKYXJyYXkuY3JlYXRlIDApIGxcblxuZXh0ZXJuYWwgdG9fanZfYXJyYXkgOiB0IC0+IHQgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanZfYXJyYXkgOiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5leHRlcm5hbCB0b19qdl9saXN0IDogdCAtPiB0IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBvZl9qdl9saXN0IDogdCBsaXN0IC0+IHQgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5leHRlcm5hbCB0b19qc3RyX2FycmF5IDogdCAtPiBKc3RyLnQgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanN0cl9hcnJheSA6IEpzdHIudCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanN0cl9saXN0IDogdCAtPiBKc3RyLnQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcbmV4dGVybmFsIG9mX2pzdHJfbGlzdCA6IEpzdHIudCBsaXN0IC0+IHQgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbigqIEZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBhcHBseSA6IHQgLT4gdCBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5leHRlcm5hbCBjYWxsYmFjayA6IGFyaXR5OmludCAtPiAoXyAtPiBfKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuKCogRXJyb3JzICopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICB0eXBlIGVudW0gPVxuICBbIGBBYm9ydF9lcnJvciB8IGBDb25zdHJhaW50X2Vycm9yIHwgYERhdGFfY2xvbmVfZXJyb3IgfCBgRGF0YV9lcnJvclxuICB8IGBFbmNvZGluZ19lcnJvciB8IGBIaWVyYXJjaHlfcmVxdWVzdF9lcnJvciB8IGBJbmRleF9zaXplX2Vycm9yXG4gIHwgYEludmFsaWRfYWNjZXNzX2Vycm9yIHwgYEludmFsaWRfY2hhcmFjdGVyX2Vycm9yXG4gIHwgYEludmFsaWRfbW9kaWZpY2F0aW9uX2Vycm9yIHwgYEludmFsaWRfbm9kZV90eXBlX2Vycm9yXG4gIHwgYEludmFsaWRfc3RhdGVfZXJyb3IgfCBgTmFtZXNwYWNlX2Vycm9yIHwgYE5ldHdvcmtfZXJyb3JcbiAgfCBgTm9fbW9kaWZpY2F0aW9uX2FsbG93ZWRfZXJyb3IgfCBgTm90X2FsbG93ZWRfZXJyb3IgfCBgTm90X2ZvdW5kX2Vycm9yXG4gIHwgYE5vdF9yZWFkYWJsZV9lcnJvciB8IGBOb3Rfc3VwcG9ydGVkX2Vycm9yIHwgYE9wZXJhdGlvbl9lcnJvclxuICB8IGBRdW90YV9leGNlZWRlZF9lcnJvciB8IGBSZWFkX29ubHlfZXJyb3IgfCBgU2VjdXJpdHlfZXJyb3JcbiAgfCBgU3ludGF4X2Vycm9yIHwgYFRpbWVvdXRfZXJyb3IgfCBgVHJhbnNhY3Rpb25faW5hY3RpdmVfZXJyb3IgfCBgVHlwZV9lcnJvclxuICB8IGBUeXBlX21pc21hdGNoX2Vycm9yIHwgYFVybF9taXNtYXRjaF9lcnJvciB8IGBVbmtub3duX2Vycm9yXG4gIHwgYFZlcnNpb25fZXJyb3IgfCBgV3JvbmdfZG9jdW1lbnRfZXJyb3IgfCBgT3RoZXIgXVxuXG4gIHR5cGUgdCA9IEpzb29fcnVudGltZS5FcnJvci50XG4gIGxldCB2ID9uYW1lIG1zZyA6IHQgPVxuICAgIGxldCBlID0gbmV3JyAoZ2V0IGdsb2JhbCBcIkVycm9yXCIpIFt8IG9mX2pzdHIgbXNnIHxdIGluXG4gICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+IE9iai5tYWdpYyBlXG4gICAgfCBTb21lIG4gLT4gc2V0IGUgXCJuYW1lXCIgKG9mX2pzdHIgbik7IE9iai5tYWdpYyBlXG5cbiAgbGV0IG5hbWUgKGUgOiB0KSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwibmFtZVwiKVxuICBsZXQgZW51bSBlID0gbWF0Y2ggdG9fc3RyaW5nIChnZXQgKE9iai5tYWdpYyBlKSBcIm5hbWVcIikgd2l0aFxuICB8IFwiQWJvcnRFcnJvclwiIC0+IGBBYm9ydF9lcnJvclxuICB8IFwiQ29uc3RyYWludEVycm9yXCIgLT4gYENvbnN0cmFpbnRfZXJyb3JcbiAgfCBcIkRhdGFDbG9uZUVycm9yXCIgLT4gYERhdGFfY2xvbmVfZXJyb3JcbiAgfCBcIkRhdGFFcnJvclwiIC0+IGBEYXRhX2Vycm9yXG4gIHwgXCJFbmNvZGluZ0Vycm9yXCIgLT4gYEVuY29kaW5nX2Vycm9yXG4gIHwgXCJIaWVyYXJjaHlSZXF1ZXN0RXJyb3JcIiAtPiBgSGllcmFyY2h5X3JlcXVlc3RfZXJyb3JcbiAgfCBcIkluZGV4U2l6ZUVycm9yXCIgLT4gYEluZGV4X3NpemVfZXJyb3JcbiAgfCBcIkludmFsaWRBY2Nlc3NFcnJvclwiIC0+IGBJbnZhbGlkX2FjY2Vzc19lcnJvclxuICB8IFwiSW52YWxpZENoYXJhY3RlckVycm9yXCIgLT4gYEludmFsaWRfY2hhcmFjdGVyX2Vycm9yXG4gIHwgXCJJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3JcIiAtPiBgSW52YWxpZF9tb2RpZmljYXRpb25fZXJyb3JcbiAgfCBcIkludmFsaWROb2RlVHlwZUVycm9yXCIgLT4gYEludmFsaWRfbm9kZV90eXBlX2Vycm9yXG4gIHwgXCJJbnZhbGlkU3RhdGVFcnJvclwiIC0+IGBJbnZhbGlkX3N0YXRlX2Vycm9yXG4gIHwgXCJOYW1lc3BhY2VFcnJvclwiIC0+IGBOYW1lc3BhY2VfZXJyb3JcbiAgfCBcIk5ldHdvcmtFcnJvclwiIC0+IGBOZXR3b3JrX2Vycm9yXG4gIHwgXCJOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvclwiIC0+IGBOb19tb2RpZmljYXRpb25fYWxsb3dlZF9lcnJvclxuICB8IFwiTm90QWxsb3dlZEVycm9yXCIgLT4gYE5vdF9hbGxvd2VkX2Vycm9yXG4gIHwgXCJOb3RGb3VuZEVycm9yXCIgLT4gYE5vdF9mb3VuZF9lcnJvclxuICB8IFwiTm90UmVhZGFibGVFcnJvclwiIC0+IGBOb3RfcmVhZGFibGVfZXJyb3JcbiAgfCBcIk5vdFN1cHBvcnRlZEVycm9yXCIgLT4gYE5vdF9zdXBwb3J0ZWRfZXJyb3JcbiAgfCBcIk9wZXJhdGlvbkVycm9yXCIgLT4gYE9wZXJhdGlvbl9lcnJvclxuICB8IFwiUXVvdGFFeGNlZWRlZEVycm9yXCIgLT4gYFF1b3RhX2V4Y2VlZGVkX2Vycm9yXG4gIHwgXCJSZWFkT25seUVycm9yXCIgLT4gYFJlYWRfb25seV9lcnJvclxuICB8IFwiU2VjdXJpdHlFcnJvclwiIC0+IGBTZWN1cml0eV9lcnJvclxuICB8IFwiU3ludGF4RXJyb3JcIiAtPiBgU3ludGF4X2Vycm9yXG4gIHwgXCJUaW1lb3V0RXJyb3JcIiAtPiBgVGltZW91dF9lcnJvclxuICB8IFwiVHlwZUVycm9yXCIgLT4gYFR5cGVfZXJyb3JcbiAgfCBcIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvclwiIC0+IGBUcmFuc2FjdGlvbl9pbmFjdGl2ZV9lcnJvclxuICB8IFwiVHlwZU1pc21hdGNoRXJyb3JcIiAtPiBgVHlwZV9taXNtYXRjaF9lcnJvclxuICB8IFwiVVJMTWlzbWF0Y2hFcnJvclwiIC0+IGBVcmxfbWlzbWF0Y2hfZXJyb3JcbiAgfCBcIlVua25vd25FcnJvclwiIC0+IGBVbmtub3duX2Vycm9yXG4gIHwgXCJWZXJzaW9uRXJyb3JcIiAtPiBgVmVyc2lvbl9lcnJvclxuICB8IFwiV3JvbmdEb2N1bWVudEVycm9yXCIgLT4gYFdyb25nX2RvY3VtZW50X2Vycm9yXG4gIHwgXyAtPiBgT3RoZXJcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fanN0ciAoZ2V0IChPYmoubWFnaWMgZSkgXCJtZXNzYWdlXCIpXG4gIGxldCBzdGFjayBlID0gdG9fanN0ciAoZ2V0IChPYmoubWFnaWMgZSkgXCJzdGFja1wiKVxuICBsZXQgdG9fcmVzdWx0IGUgPSBFcnJvciBlXG5lbmRcblxuZXh0ZXJuYWwgb2ZfZXJyb3IgOiBFcnJvci50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19lcnJvciA6IHQgLT4gRXJyb3IudCA9IFwiJWlkZW50aXR5XCJcblxubGV0IHRocm93ID9uYW1lIG1zZyA9XG4gIGxldCBlID0gRXJyb3IudiA/bmFtZSBtc2cgaW5cbiAgKGpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIiA6IEVycm9yLnQgLT4gJ2EpIGVcblxuZXhjZXB0aW9uIEVycm9yID0gSnNvb19ydW50aW1lLkVycm9yLkV4blxuXG4oKiBJdGVyYWJsZSBhbmQgaXRlcmF0b3IgKilcblxubW9kdWxlIEl0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIHR5cGUgcmVzdWx0ID0ganZcblxuICBsZXQgc3ltYm9sIDoganYgPSBwdXJlX2pzX2V4cHIgXCJTeW1ib2wuaXRlcmF0b3JcIlxuICBleHRlcm5hbCBnZXRfc3ltYm9sIDoganYgLT4ganYgLT4ganYgPSBcImNhbWxfanNfZ2V0XCJcblxuICBsZXQgaXRlcmFibGUgbyA9IG1hdGNoIHRvX29wdGlvbiBGdW4uaWQgKGdldF9zeW1ib2wgbyBzeW1ib2wpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmUgfCBTb21lIGZ1bmMgLT4gYXBwbHkgZnVuYyBbfHxdXG5cbiAgbGV0IGl0ZXJhdG9yIG8gPSBhcHBseSAoZ2V0X3N5bWJvbCBvIHN5bWJvbCkgW3x8XVxuXG4gIGxldCBuZXh0IGl0ID0gY2FsbCBpdCBcIm5leHRcIiBbfHxdXG5cbiAgbGV0IHJlc3VsdF9kb25lIG8gPSBtYXRjaCB0b19vcHRpb24gdG9fYm9vbCAoZ2V0IG8gXCJkb25lXCIpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBkIC0+IGRcblxuICBsZXQgcmVzdWx0X3ZhbHVlIG8gPSB0b19vcHRpb24gRnVuLmlkIChnZXQgbyBcInZhbHVlXCIpXG4gIGxldCBnZXRfcmVzdWx0X3ZhbHVlIG8gPSBnZXQgbyBcInZhbHVlXCJcblxuICBsZXQgZm9sZCBvZl9qdiBmIGl0IGFjYyA9XG4gICAgbGV0IHJlYyBsb29wIGl0IGFjYyA9XG4gICAgICBsZXQgciA9IG5leHQgaXQgaW5cbiAgICAgIGlmIHJlc3VsdF9kb25lIHIgdGhlbiBhY2MgZWxzZVxuICAgICAgbG9vcCBpdCAoZiAob2ZfanYgKGdldF9yZXN1bHRfdmFsdWUgcikpIGFjYylcbiAgICBpblxuICAgIGxvb3AgaXQgYWNjXG5cbiAgbGV0IGZvbGRfYmluZGluZ3MgfmtleSB+dmFsdWUgZiBpdCBhY2MgPVxuICAgIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgICAgbGV0IHIgPSBuZXh0IGl0IGluXG4gICAgICBpZiByZXN1bHRfZG9uZSByIHRoZW4gYWNjIGVsc2VcbiAgICAgIGxldCBhcnIgPSBnZXRfcmVzdWx0X3ZhbHVlIHIgaW5cbiAgICAgIGxvb3AgaXQgKGYgKGtleSAoSmFycmF5LmdldCBhcnIgMCkpICh2YWx1ZSAoSmFycmF5LmdldCBhcnIgMSkpIGFjYylcbiAgICBpblxuICAgIGxvb3AgaXQgYWNjXG5lbmRcblxuKCogUHJvbWlzZXMgKilcblxubW9kdWxlIFByb21pc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ganZcbiAgbGV0IHByb21pc2UgPSBnZXQgZ2xvYmFsIFwiUHJvbWlzZVwiXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGcgcmVzIHJlaiA9XG4gICAgICBmIChmdW4geCAtPiBhcHBseSByZXMgW3xyZXByIHh8XSkgKGZ1biB4IC0+IGFwcGx5IHJlaiBbfHJlcHIgeHxdKSBpblxuICAgIG5ldycgcHJvbWlzZSBbfCBjYWxsYmFjayB+YXJpdHk6MiBnIHxdXG4gIGxldCByZXNvbHZlIHYgPSBjYWxsIHByb21pc2UgXCJyZXNvbHZlXCIgW3wgcmVwciB2IHxdXG4gIGxldCByZWplY3QgdiA9IGNhbGwgcHJvbWlzZSBcInJlamVjdFwiIFt8IHJlcHIgdiB8XVxuICBsZXQgYXdhaXQgcCBrID0gaWdub3JlIChjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgayB8XSlcbiAgbGV0IGJpbmQgcCByZXMgPSBjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzIHxdXG4gIGxldCB0aGVuJyBwIHJlcyByZWogPVxuICAgIGNhbGwgcCBcInRoZW5cIiBbfCBjYWxsYmFjayB+YXJpdHk6MSByZXM7IGNhbGxiYWNrIH5hcml0eToxIHJlanxdXG5cbiAgbGV0IGFsbCBhcnIgPSBjYWxsIHByb21pc2UgXCJhbGxcIiBbfCByZXByIGFyciB8XVxuZW5kXG5cbigqIFVuaWNvZGUgaWRlbnRpZmllcnMgKilcblxudHlwZSBwcm9wJyA9IEpzdHIudFxuZXh0ZXJuYWwgZ2V0JyA6IHQgLT4gcHJvcCcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0JyA6IHQgLT4gcHJvcCcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGUnIDogdCAtPiBwcm9wJyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5sZXQgZmluZCcgbyBwID0gbGV0IHYgPSBnZXQnIG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSB2XG5sZXQgZmluZF9tYXAnIGYgbyBwID0gbGV0IHYgPSBnZXQnIG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB2KVxuXG4oKiBYWFggdGhlIGZvbGxvd2luZyB3ZXJlIHN1cHBvc2VkIHRvIGJlIGRpcmVjdCBjYWxsIHRvIGV4dGVybmFscyBsaWtlIGZvclxuICAgdGhlIGFib3ZlIGJ1dCB0aGV5IGFyZSBub3QgaW1wbGVtZW50ZWQgdGhhdCB3YXkgZm9yIG5vdy4gU2VlIGRpc2N1c3Npb24gaGVyZTpcbiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2pzX29mX29jYW1sL3B1bGwvOTk3I2lzc3VlY29tbWVudC02OTQ5MjU3NjUuXG4gICBJdCB3b3VsZCBsaWtlbHkgbmVlZCBhIGJpdCBvZiB1cHN0cmVhbSBjYWpvbGluZyB0byBtb3ZlIG9uIOKAkyBPVE9IXG4gICB0aGVzZSBzaG91bGQgZW5kIHVwIGJlaW5nIHVzZWQgcGVydmFzaXZlbHkuICopXG5cbmxldCBvYmonIHByb3BzID0gb2JqIChBcnJheS5tYXAgKGZ1biAocCwgdikgLT4gSnN0ci50b19zdHJpbmcgcCwgdikgcHJvcHMpXG5sZXQgY2FsbCcgbyBtIGFyZ3MgPSBjYWxsIG8gKEpzdHIudG9fc3RyaW5nIG0pIGFyZ3NcblxuKCogRGVidWdnZXIgKilcblxuZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuKCogRmVhdHVyZSBkZXRlY3Rpb24gKilcblxubGV0IGhhcyBwIHYgPSBpc19zb21lIChnZXQgKHJlcHIgdikgcClcbmxldCBkZWZpbmVkIHYgPSBpc19zb21lIChyZXByIHYpXG5cbigqIENvbnZlcnNpb24gaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIENPTlYgPSBzaWdcbiAgdHlwZSB0XG4gIGV4dGVybmFsIHRvX2p2IDogdCAtPiBqdiA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgb2ZfanYgOiBqdiAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZW5kXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBleHRlcm5hbCB0b19qdiA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2pzX2dldCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfc3RyaW5nX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiSnNvb19ydW50aW1lIiwibnVsbCQiLCJ1bmRlZmluZWQkIiwiaXNfbnVsbCIsInYiLCJpc191bmRlZmluZWQiLCJpc19ub25lIiwiaXNfc29tZSIsInRvX29wdGlvbiIsImNvbnYiLCJvZl9vcHRpb24iLCJub25lIiwicGFyYW0iLCJnbG9iYWwiLCJzZXRfaWZfc29tZSIsIm8iLCJwIiwiZmluZCIsImZpbmRfbWFwIiwiZmluZF9wYXRoIiwicHMiLCJtYXRjaCIsImIiLCJnZXQiLCJzZXQiLCJpIiwicyIsImlzX2FycmF5IiwianYiLCJjcmVhdGUiLCJuIiwibGVuZ3RoIiwiYSIsInRvX2FycmF5IiwibGVuIiwib2ZfYXJyYXkiLCJqYSIsInRvX2xpc3QiLCJvZl9saXN0IiwibCIsInZzIiwibmFtZSIsIm1zZyIsImUiLCJlbnVtJCIsInN3aXRjaCQiLCJtZXNzYWdlIiwic3RhY2siLCJ0aHJvdyQiLCJFcnJvciIsInN5bWJvbCIsIml0ZXJhYmxlIiwiZnVuYyIsIml0ZXJhdG9yIiwibmV4dCIsIml0IiwicmVzdWx0X2RvbmUiLCJkIiwicmVzdWx0X3ZhbHVlIiwiZ2V0X3Jlc3VsdF92YWx1ZSIsImZvbGQiLCJvZl9qdiIsImFjYyIsInIiLCJmb2xkX2JpbmRpbmdzIiwia2V5IiwidmFsdWUiLCJhcnIiLCJwcm9taXNlIiwiZyIsInJlcyIsInJlaiIsIngiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXdhaXQkIiwiayIsImJpbmQiLCJ0aGVuIiwiYWxsIiwib2JqIiwicHJvcHMiLCJjYWxsIiwibSIsImFyZ3MiLCJoYXMiLCJkZWZpbmVkIiwiSnYiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLFlBQUFDLFdB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QVosSUFDeEM7QUFBQSxJQUFlLDRCQUE4QixpQkFBSztBQUFBO0FBQUEsWUFBQTRFLElBQUFDO0FBQUFBLElBUTNELE9BQUo7QUFBQSxhQUFJO0FBQUE7QUFBQSx3QkFBQXJFO0FBQUFBLG9CQUFBUixJQUFXLFVBQUFZLElBQUE7QUFBQSxnQkFBZSx5Q0FBZ0I7QUFBQSxlQUFJO0FBQUEsc0JBQU87QUFBQTtBQUFBLFlBQUFrRSxLQUFBbkUsR0FBQW9FLEdBQUFDO0FBQUFBLElBQzlDLE9BQVAsNkJBQU8saUNBQXVCO0FBQUE7QUFBQSxZQUFBQyxJQUFBckUsR0FBQVosR0FRYjtBQUFBLFlBQUFrRixRQUFBbEYsR0FDdEIsaUJBQWdCO0FBQUE7QUFBQSxJQUFBbUY7QUFBQUEsTUF4Q0k7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURqU3BDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzQxMjUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvZnV0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiBXZSByZXByZXNlbnQgZnV0dXJlcyBieSBhbiBvYmplY3QgeyBmdXQgOiA8cHJvbWlzZT4gfSB3aXRoIGEgc2luZ2xlXG4gICBbZnV0XSBKYXZhU2NyaXB0IFByb21pc2Ugb2JqZWN0IHdoaWNoLCBieSBjb25zdHJ1Y3Rpb24sICpuZXZlcipcbiAgIHJlamVjdHMuIFRoZSBwcm9taXNlIGlzIHdyYXBwZWQgaW4gYW4gb2JqZWN0IGJlY2F1c2UgSmF2YVNjcmlwdCdzXG4gICBbcmVzb2x2ZV0gd2hpY2ggc2hvdWxkIGJlIG1vbmFkaWMgW3JldHVybl0gdW5mb3J0dW5hdGVseSBhbHNvXG4gICBtb25hZGljYWxseSBbam9pbl1zLiBUaGlzIEphdmFTY3JpcHQgZXhwcmVzc2lvbjpcblxuICAgICBQcm9taXNlLnJlc29sdmUgKFByb21pc2UucmVzb2x2ZSAoXCJOb29vb29vIVwiKSlcblxuICAgZXZhbHVhdGVzIHRvOiAgUHJvbWlzZSB7PGZ1bGZpbGxlZD46IFwiTm9vb29vbyFcIn1cbiAgICAgaW5zdGVhZCBvZjogIFByb21pc2UgezxmdWxmaWxsZWQ+OiBQcm9taXNlIHs8ZnVsZmlsbGVkPjogXCJcIk5vb29vb28hXCJcIn19XG5cbiAgIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB0eXBlIFtyZXNvbHZlXSBjb3JyZWN0bHkgaW4gT0NhbWwgc2luY2UgaXRcbiAgIHdvdWxkIG5lZWQgdG8gaGF2ZSB0aGVzZSB0d28gdHlwZXM6XG5cbiAgICAgdmFsIHJlc29sdmUgOiAnYSAtPiAnYSBQcm9taXNlLnRcbiAgICAgdmFsIHJlc29sdmUgOiAnYSBQcm9taXNlLnQgLT4gJ2EgUHJvbWlzZS50XG5cbiAgIEluIGdlbmVyYWwgdGhpcyBicmVha3MgdHlwZSBzYWZldHkgZm9yIGV4YW1wbGUgW2JpbmRdaW5nIGEgWydhXG4gICBGdXQudCBGdXQudF0gdmFsdWUgeW91ciBmdW5jdGlvbiBjb3VsZCBlbmQgdXAgd2l0aCBhIGdyb3VuZCB2YWx1ZVxuICAgb2YgdHlwZSBbJ2FdIG5vdCB0aGUgZXhwZWN0ZWQgWydhIEZ1dC50XSB2YWx1ZSBhcyBhcmd1bWVudC4gQnlcbiAgIHdyYXBwaW5nIHRoZSBwcm9taXNlIGluIGFuIG9iamVjdCB3ZSBjYW4gY29udHJvbCB0aGF0LiAqKVxuXG50eXBlICdhIHQgPSBKdi50ICgqIGEgSmF2YVNjcmlwdCBvYmplY3Qgb2YgdGhlIGZvcm06IHsgZnV0IDogPHByb21pc2U+IH0gKilcblxubGV0IGZ1dCBwID0gSnYub2JqIFt8IFwiZnV0XCIsIHAgfF1cbmxldCBwcm9taXNlIGYgPSBKdi5nZXQgZiBcImZ1dFwiXG5sZXQgcHJvbWlzZScgZiA9IEp2LmdldCBmIFwiZnV0XCJcbmxldCBjcmVhdGUgKCkgPSAoKiBVZ2x5IGFzIHNoaXQgYnV0IHRoYXQncyB3aGF0IG5ldyBQcm9taXNlIGdpdmVzIHVzLiAgKilcbiAgbGV0IG5vdF9zZXQgPSBmdW4gXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgbGV0IGlzX3NldCA9IGZ1biBfIC0+IEp2LnRocm93IChKc3RyLnYgXCJUaGUgZnV0dXJlIGlzIGFscmVhZHkgc2V0XCIpIGluXG4gIGxldCBzZXR0ZXIgPSByZWYgbm90X3NldCBpblxuICBsZXQgc2V0X3NldHRlciByZXNvbHZlIF9yZWplY3QgPSBzZXR0ZXIgOj0gcmVzb2x2ZSBpblxuICBsZXQgcCA9IEp2LlByb21pc2UuY3JlYXRlIHNldF9zZXR0ZXIgaW5cbiAgbGV0IHNldCB2ID0gIXNldHRlciB2OyBzZXR0ZXIgOj0gaXNfc2V0IGluXG4gIGZ1dCBwLCBzZXRcblxubGV0IGF3YWl0IGYgayA9IEp2LlByb21pc2UuYXdhaXQgKHByb21pc2UgZikga1xubGV0IHJldHVybiB2ID0gZnV0IEBAIEp2LlByb21pc2UucmVzb2x2ZSB2XG5sZXQgYmluZCBmIGZuID0gZnV0IEBAIEp2LlByb21pc2UuYmluZCAocHJvbWlzZSBmKSAoZnVuIHYgLT4gcHJvbWlzZSAoZm4gdikpXG5sZXQgbWFwIGZuIGYgPSBiaW5kIGYgKGZ1biB2IC0+IHJldHVybiAoZm4gdikpXG5sZXQgcGFpciBmMCBmMSA9XG4gIGZ1dCBAQFxuICBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZjApIEBAIGZ1biB2MCAtPlxuICBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZjEpIEBAIGZ1biB2MSAtPlxuICBKdi5Qcm9taXNlLnJlc29sdmUgKHYwLCB2MSlcblxubGV0IG9mX2xpc3QgZnMgPVxuICBsZXQgYXJyID0gSnYub2ZfbGlzdCBwcm9taXNlJyBmcyBpblxuICBsZXQgYWxsID0gSnYuUHJvbWlzZS5hbGwgYXJyIGluXG4gIGxldCB0b19saXN0IGwgPSBKdi5Qcm9taXNlLnJlc29sdmUgKEp2LnRvX2xpc3QgT2JqLm1hZ2ljIGwpIGluXG4gIGZ1dCBAQCBKdi5Qcm9taXNlLmJpbmQgYWxsIHRvX2xpc3RcblxubGV0IHRpY2sgfm1zID1cbiAgZnV0IEBAIEp2LlByb21pc2UuY3JlYXRlIEBAIGZ1biByZXMgX3JlaiAtPlxuICBpZ25vcmUgKEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwic2V0VGltZW91dFwiKVxuICAgICAgICAgICAgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzOyBvZl9pbnQgbXMgfF0pXG5cbigqIENvbnZlcnRpbmcgd2l0aCBKYXZhU2NyaXB0IHByb21pc2VzICopXG5cbnR5cGUgbm9ucmVjICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHJlc3VsdCB0XG50eXBlICdhIG9yX2Vycm9yID0gKCdhLCBKdi5FcnJvci50KSByZXN1bHRcblxubGV0IG9rIHYgPSByZXR1cm4gKE9rIHYpXG5sZXQgZXJyb3IgZSA9IHJldHVybiAoRXJyb3IgZSlcblxubGV0IG9mX3Byb21pc2UnIH5vayB+ZXJyb3IgcCA9XG4gIGxldCBvayB2ID0gSnYuUHJvbWlzZS5yZXNvbHZlIChPayAob2sgdikpIGluXG4gIGxldCBlcnJvciBlID0gSnYuUHJvbWlzZS5yZXNvbHZlIChFcnJvciAoZXJyb3IgZSkpIGluXG4gIGZ1dCBAQCBKdi5Qcm9taXNlLnRoZW4nIHAgb2sgZXJyb3JcblxubGV0IHRvX3Byb21pc2UnIH5vayB+ZXJyb3IgZiA9XG4gIEp2LlByb21pc2UuY3JlYXRlIEBAIGZ1biByZXMgcmVqIC0+XG4gIGF3YWl0IGYgQEAgZnVuY3Rpb25cbiAgfCBPayB2IC0+IHJlcyAob2sgdilcbiAgfCBFcnJvciBlIC0+IHJlaiAoZXJyb3IgZSlcblxubGV0IG9mX3Byb21pc2Ugfm9rIHYgPSBvZl9wcm9taXNlJyB+b2sgfmVycm9yOkp2LnRvX2Vycm9yIHZcbmxldCB0b19wcm9taXNlIH5vayB2ID0gdG9fcHJvbWlzZScgfm9rIH5lcnJvcjpKdi5vZl9lcnJvciB2XG5cbigqIEZ1dHVyZSBzeW50YXhlcyAqKVxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCogKSA9IGJpbmRcbiAgbGV0ICggYW5kKiApID0gcGFpclxuICBsZXQgKCBsZXQrICkgZiBmbiA9IG1hcCBmbiBmXG4gIGxldCAoIGFuZCsgKSA9ICggYW5kKiApXG5lbmRcblxubW9kdWxlIFJlc3VsdF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJlc3VsdF9wYWlyIHIgPSBtYXRjaCByIHdpdGhcbiAgfCAoRXJyb3IgXyBhcyByKSwgXyB8IF8sIChFcnJvciBfIGFzIHIpIC0+IHJcbiAgfCBPayB2MCwgT2sgdjEgLT4gT2sgKHYwLCB2MSlcblxuICBsZXQgKCBsZXQqICkgZiBmbiA9IGJpbmQgZiBAQCBmdW5jdGlvblxuICB8IE9rIHYgLT4gZm4gdlxuICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZVxuXG4gIGxldCAoIGFuZCogKSBmMCBmMSA9IG1hcCByZXN1bHRfcGFpciAocGFpciBmMCBmMSlcbiAgbGV0ICggbGV0KyApIGYgZm4gPSBtYXAgKFJlc3VsdC5tYXAgZm4pIGZcbiAgbGV0ICggYW5kKyApID0gKCBhbmQqIClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUmVzdWx0IiwiSnYiLCJBc3NlcnRfZmFpbHVyZSIsInByb21pc2UiLCJjcmVhdGUiLCJwYXJhbSIsIm5vdF9zZXQiLCJpc19zZXQiLCJzZXR0ZXIiLCJzZXRfc2V0dGVyIiwicmVzb2x2ZSIsInJlamVjdCIsInAiLCJzZXQiLCJ2IiwiYXdhaXQkIiwiayIsInJldHVybiQiLCJiaW5kIiwiZm4iLCJtYXAiLCJwYWlyIiwiZjAiLCJmMSIsInYwIiwidjEiLCJvZl9saXN0IiwiZnMiLCJhcnIiLCJhbGwiLCJ0b19saXN0IiwibCIsInRpY2siLCJtcyIsInJlcyIsInJlaiIsIm9rIiwiZXJyb3IiLCJlIiwib2ZfcHJvbWlzZSIsInRvX3Byb21pc2UiLCJsZXQkIiwicmVzdWx0X3BhaXIiLCJyIiwibWF0Y2giLCJhbmQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLFlBQUFDLFFBQUFWLEdDK0IrQjtBQUFBLFdEL0IvQjtBQUFBLFlBQUFXLE9BQUFD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QTtBQUFBO0FBQUEsWUFBQStCLElBQUF2QixJQUFBQyxJQUVXLE9BQVksaUJBQVosYUFBWTtBQUFBLFlBQUFrQixNQUFBaEQsR0FBQTBCO0FBQUFBLFFBQUEsSUFDekI7QUFBQSxJQUFlLHVCQUFmLHFCQUFpQjtBQUFBO0FBQUEsR0R2RzNDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzQzMDIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvYnJyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiBET00gZXZlbnRzLlxuXG4gICBXZSBuZWVkIHRoYXQgdW5kZXJuZWF0aCBzb21lIG9mIHRoZSBBUElzIGJlbG93LCBzb1xuICAgdGhhdCBjb21lcyBmaXJzdC4gKilcblxubW9kdWxlIEV2ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwZScgPSBKc3RyLnRcbiAgbW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHZvaWRcbiAgICB0eXBlICdhIHQgPSAnYSB0eXBlJ1xuICAgIGV4dGVybmFsIGNyZWF0ZSA6IEpzdHIudCAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICAgIGV4dGVybmFsIG5hbWUgOiAnYSB0IC0+IEpzdHIudCA9IFwiJWlkZW50aXR5XCJcbiAgICBleHRlcm5hbCB2b2lkIDogSnN0ci50IC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGVuZFxuICB0eXBlIHZvaWQgPSBUeXBlLnZvaWQgdHlwZSdcblxuICAoKiBFdmVudHMgKilcblxuICB0eXBlIGluaXQgPSBKdi50XG4gIGxldCBpbml0ID9idWJibGVzID9jYW5jZWxhYmxlID9jb21wb3NlZCAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImJ1YmJsZXNcIiBidWJibGVzO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNhbmNlbGFibGVcIiBjYW5jZWxhYmxlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNvbXBvc2VkXCIgY29tcG9zZWQ7XG4gICAgb1xuXG4gIHR5cGUgdGFyZ2V0ID0gSnYudFxuICBleHRlcm5hbCB0YXJnZXRfdG9fanYgOiB0YXJnZXQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHRhcmdldF9vZl9qdiA6ICdhIC0+IHRhcmdldCA9IFwiJWlkZW50aXR5XCJcblxuICB0eXBlICdhIHQgPSBKdi50XG4gIHR5cGUgJ2EgZXZlbnQgPSAnYSB0XG4gIGV4dGVybmFsIHRvX2p2IDogJ2EgdCAtPiBKdi50ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IEp2LnQgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IGV2ZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkV2ZW50XCJcbiAgbGV0IGNyZWF0ZSA/KGluaXQgPSBKdi5vYmogW3x8XSkgdCA9IEp2Lm5ldycgZXZlbnQgSnYuW3wgb2ZfanN0ciB0OyBpbml0fF1cbiAgZXh0ZXJuYWwgYXNfdHlwZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcInR5cGVcIlxuICBsZXQgdGFyZ2V0IGUgPSBKdi5nZXQgZSBcInRhcmdldFwiXG4gIGxldCBjdXJyZW50X3RhcmdldCBlID0gSnYuZ2V0IGUgXCJjdXJyZW50VGFyZ2V0XCJcbiAgbGV0IGNvbXBvc2VkX3BhdGggZSA9IEp2LnRvX2xpc3QgdGFyZ2V0X29mX2p2IChKdi5jYWxsIGUgXCJjb21wb3NlZFBhdGhcIiBbfHxdKVxuICBsZXQgZXZlbnRfcGhhc2UgZSA9XG4gICAgbWF0Y2ggSnYuSW50LmdldCBlIFwiZXZlbnRQaGFzZVwiIHdpdGhcbiAgICB8IDEgLT4gYENhcHR1cmluZyB8IDIgLT4gYEF0X3RhcmdldCB8IDMgLT4gYEJ1YmJsaW5nIHwgXyAtPiBgTm9uZVxuXG4gIGxldCBidWJibGVzIGUgPSBKdi5Cb29sLmdldCBlIFwiYnViYmxlc1wiXG4gIGxldCBzdG9wX3Byb3BhZ2F0aW9uIGUgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwic3RvcFByb3BhZ2F0aW9uXCIgW3x8XVxuICBsZXQgc3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiIFt8fF1cblxuICBsZXQgY2FuY2VsYWJsZSBlID0gSnYuQm9vbC5nZXQgZSBcImNhbmNlbGFibGVcIlxuICBsZXQgcHJldmVudF9kZWZhdWx0IGUgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwicHJldmVudERlZmF1bHRcIiBbfHxdXG4gIGxldCBkZWZhdWx0X3ByZXZlbnRlZCBlID0gSnYuQm9vbC5nZXQgZSBcImRlZmF1bHRQcmV2ZW50ZWRcIlxuICBsZXQgY29tcG9zZWQgZSA9IEp2LkJvb2wuZ2V0IGUgXCJjb21wb3NlZFwiXG4gIGxldCBpc190cnVzdGVkIGUgPSBKdi5Cb29sLmdldCBlIFwiaXNUcnVzdGVkXCJcbiAgbGV0IHRpbWVzdGFtcF9tcyBlID0gSnYuRmxvYXQuZ2V0IGUgXCJ0aW1lU3RhbXBcIlxuICBsZXQgZGlzcGF0Y2ggZSB0ID0gSnYudG9fYm9vbCBAQCBKdi5jYWxsIHQgXCJkaXNwYXRjaEV2ZW50XCIgW3wgZSB8XVxuXG4gICgqIExpc3RlbmluZyAqKVxuXG4gIHR5cGUgbGlzdGVuX29wdHMgPSBKdi50XG4gIGxldCBsaXN0ZW5fb3B0cyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNhcHR1cmVcIiBjYXB0dXJlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcIm9uY2VcIiBvbmNlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInBhc3NpdmVcIiBwYXNzaXZlO1xuICAgIG9cblxuICB0eXBlIGxpc3RlbmVyID0gdW5pdCAtPiB1bml0XG5cbiAgbGV0IGxpc3RlbiA/KG9wdHMgPSBKdi5vYmogW3x8XSkgdHlwZScgZiB0ID1cbiAgICBsZXQgdHlwZScgPSBKdi5vZl9qc3RyIHR5cGUnIGluXG4gICAgbGV0IGYgPSBKdi5jYWxsYmFjayB+YXJpdHk6MSBmIGluXG4gICAgbGV0IHVubGlzdGVuICgpID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHQgXCJyZW1vdmVFdmVudExpc3RlbmVyXCIgW3x0eXBlJzsgZjsgb3B0cyB8XVxuICAgIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgdCBcImFkZEV2ZW50TGlzdGVuZXJcIiBbfHR5cGUnOyBmOyBvcHRzIHxdO1xuICAgIHVubGlzdGVuXG5cbiAgbGV0IHVubGlzdGVuIHVubGlzdGVuID0gdW5saXN0ZW4gKClcblxuICBsZXQgbmV4dCA/Y2FwdHVyZSB0eXBlJyB0ID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IG9wdHMgPSBsaXN0ZW5fb3B0cyA/Y2FwdHVyZSB+b25jZTp0cnVlICgpIGluXG4gICAgaWdub3JlIChsaXN0ZW4gfm9wdHMgdHlwZScgc2V0IHQgOiBsaXN0ZW5lcik7XG4gICAgZnV0XG5cbiAgKCogRXZlbnQgb2JqZWN0cyAqKVxuXG4gIG1vZHVsZSBEYXRhX3RyYW5zZmVyID0gc3RydWN0XG4gICAgbW9kdWxlIEVmZmVjdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgbm9uZSA9IEpzdHIudiBcIm5vbmVcIlxuICAgICAgbGV0IGNvcHkgPSBKc3RyLnYgXCJjb3B5XCJcbiAgICAgIGxldCBjb3B5X2xpbmsgPSBKc3RyLnYgXCJjb3B5TGlua1wiXG4gICAgICBsZXQgY29weV9tb3ZlID0gSnN0ci52IFwiY29weU1vdmVcIlxuICAgICAgbGV0IGxpbmsgPSBKc3RyLnYgXCJsaW5rXCJcbiAgICAgIGxldCBsaW5rX21vdmUgPSBKc3RyLnYgXCJsaW5rTW92ZVwiXG4gICAgICBsZXQgbW92ZSA9IEpzdHIudiBcIm1vdmVcIlxuICAgICAgbGV0IGFsbCA9IEpzdHIudiBcImFsbFwiXG4gICAgICBsZXQgdW5pbml0aWFsaXplZCA9IEpzdHIudiBcInVuaW5pdGlhbGl6ZWRcIlxuICAgIGVuZFxuICAgIG1vZHVsZSBJdGVtID0gc3RydWN0XG4gICAgICBtb2R1bGUgS2luZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgICAgbGV0IGZpbGUgPSBKc3RyLnYgXCJmaWxlXCJcbiAgICAgICAgbGV0IHN0cmluZyA9IEpzdHIudiBcInN0cmluZ1wiXG4gICAgICBlbmRcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgbGV0IGtpbmQgaSA9IEp2LkpzdHIuZ2V0IGkgXCJraW5kXCJcbiAgICAgIGxldCB0eXBlJyBpID0gSnYuSnN0ci5nZXQgaSBcInR5cGVcIlxuICAgICAgbGV0IGdldF9maWxlIGkgPSBKdi50b19vcHRpb24gRnVuLmlkIChKdi5jYWxsIGkgXCJnZXRBc0ZpbGVcIiBbfHxdKVxuICAgICAgbGV0IGdldF9qc3RyIGkgPVxuICAgICAgICBsZXQgc3RyLCBzZXRfc3RyID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgc2V0X3N0ciA9IEp2LmNhbGxiYWNrIH5hcml0eToxIHNldF9zdHIgaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGkgXCJnZXRBc1N0cmluZ1wiIFt8IHNldF9zdHIgfF0pO1xuICAgICAgICBzdHJcbiAgICBlbmRcbiAgICBtb2R1bGUgSXRlbV9saXN0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgbGV0IGxlbmd0aCBsID0gSnYuSW50LmdldCBsIFwibGVuZ3RoXCJcblxuICAgICAgbGV0IGFkZF9qc3RyIGwgfnR5cGUnIHN0ciA9XG4gICAgICAgIEp2LnRvX29wdGlvbiBJdGVtLm9mX2p2IEBAXG4gICAgICAgIEp2LmNhbGwgbCBcImFkZFwiIEp2Llt8IG9mX2pzdHIgc3RyOyBvZl9qc3RyIHR5cGUnIHxdXG5cbiAgICAgIGxldCBhZGRfZmlsZSB0IGZpbGUgPVxuICAgICAgICBKdi50b19vcHRpb24gSXRlbS5vZl9qdiBAQFxuICAgICAgICBKdi5jYWxsIHQgXCJhZGRcIiBKdi5bfCBmaWxlIHxdXG5cbiAgICAgIGxldCByZW1vdmUgbCBpID0gaWdub3JlIChKdi5jYWxsIGwgXCJyZW1vdmVcIiBKdi5bfG9mX2ludCBpfF0pXG4gICAgICBsZXQgY2xlYXIgbCA9IGlnbm9yZSAoSnYuY2FsbCBsIFwiY2xlYXJcIiBbfHxdKVxuICAgICAgZXh0ZXJuYWwgaXRlbSA6IHQgLT4gaW50IC0+IEl0ZW0udCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgICBsZXQgaXRlbXMgbCA9XG4gICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgZm9yIGkgPSBsZW5ndGggbCAtIDEgZG93bnRvIDAgZG8gYWNjIDo9IGl0ZW0gbCBpIDo6ICFhY2MgZG9uZTtcbiAgICAgICAgIWFjY1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGxldCBkcm9wX2VmZmVjdCBkID0gSnYuSnN0ci5nZXQgZCBcImRyb3BFZmZlY3RcIlxuICAgIGxldCBzZXRfZHJvcF9lZmZlY3QgZCBlID0gSnYuSnN0ci5zZXQgZCBcImRyb3BFZmZlY3RcIiBlXG4gICAgbGV0IGVmZmVjdF9hbGxvd2VkIGQgPSBKdi5Kc3RyLmdldCBkIFwiZWZmZWN0QWxsb3dlZFwiXG4gICAgbGV0IHNldF9lZmZlY3RfYWxsb3dlZCBkIGUgPSBKdi5Kc3RyLnNldCBkIFwiZWZmZWN0QWxsb3dlZFwiIGVcbiAgICBsZXQgaXRlbXMgZCA9IEl0ZW1fbGlzdC5vZl9qdiBAQCBKdi5nZXQgZCBcIml0ZW1zXCJcbiAgZW5kXG4gIG1vZHVsZSBDbGlwYm9hcmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IGRhdGEgYyA9IEp2LmZpbmRfbWFwIERhdGFfdHJhbnNmZXIub2ZfanYgYyBcImNsaXBib2FyZERhdGFcIlxuICBlbmRcbiAgbW9kdWxlIENvbXBvc2l0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGkgPSBKdi5Kc3RyLmdldCBpIFwiZGF0YVwiXG4gIGVuZFxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG1lc3NhZ2UgZSA9IEp2LkpzdHIuZ2V0IGUgXCJtZXNzYWdlXCJcbiAgICBsZXQgZmlsZW5hbWUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJmaWxlbmFtZVwiXG4gICAgbGV0IGxpbmVubyBlID0gSnYuSW50LmdldCBlIFwibGluZW5vXCJcbiAgICBsZXQgY29sbm8gZSA9IEp2LkludC5nZXQgZSBcImNvbG5vXCJcbiAgICBsZXQgZXJyb3IgZSA9IEp2LmdldCBlIFwiZXJyb3JcIlxuICBlbmRcbiAgbW9kdWxlIEV4dGVuZGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHdhaXRfdW50aWwgZSBmdXQgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcIndhaXRVbnRpbFwiIFt8IEZ1dC50b19wcm9taXNlIH5vazpKdi5yZXByIGZ1dCB8XVxuICBlbmRcbiAgbW9kdWxlIEZvY3VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByZWxhdGVkX3RhcmdldCBtID0gSnYuZmluZF9tYXAgdGFyZ2V0X29mX2p2IG0gXCJyZWxhdGVkVGFyZ2V0XCJcbiAgZW5kXG4gIG1vZHVsZSBIYXNoX2NoYW5nZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgb2xkX3VybCBlID0gSnYuSnN0ci5nZXQgZSBcIm9sZFVSTFwiXG4gICAgbGV0IG5ld191cmwgZSA9IEp2LkpzdHIuZ2V0IGUgXCJuZXdVUkxcIlxuICBlbmRcbiAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGkgPSBKdi5Kc3RyLmdldCBpIFwiZGF0YVwiXG4gICAgbGV0IGRhdGFfdHJhbnNmZXIgaSA9IEp2LmZpbmQgaSBcImRhdGFUcmFuc2ZlclwiXG4gICAgbGV0IGlucHV0X3R5cGUgaSA9IEp2LkpzdHIuZ2V0IGkgXCJpbnB1dFR5cGVcIlxuICAgIGxldCBpc19jb21wb3NpbmcgaSA9IEp2LkJvb2wuZ2V0IGkgXCJpc0NvbXBvc2luZ1wiXG4gIGVuZFxuICBtb2R1bGUgS2V5Ym9hcmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludFxuICAgICAgbGV0IHN0YW5kYXJkID0gMHgwMFxuICAgICAgbGV0IGxlZnQgPSAweDAxXG4gICAgICBsZXQgcmlnaHQgPSAweDAyXG4gICAgICBsZXQgbnVtcGFkID0gMHgwM1xuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQga2V5IGsgPSBKdi5Kc3RyLmdldCBrIFwia2V5XCJcbiAgICBsZXQgY29kZSBrID0gSnYuSnN0ci5nZXQgayBcImNvZGVcIlxuICAgIGxldCBsb2NhdGlvbiBrID0gSnYuSW50LmdldCBrIFwibG9jYXRpb25cIlxuICAgIGxldCByZXBlYXQgayA9IEp2LkJvb2wuZ2V0IGsgXCJyZXBlYXRcIlxuICAgIGxldCBpc19jb21wb3NpbmcgayA9IEp2LkJvb2wuZ2V0IGsgXCJpc0NvbXBvc2luZ1wiXG4gICAgbGV0IGFsdF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJhbHRLZXlcIlxuICAgIGxldCBjdHJsX2tleSBrID0gSnYuQm9vbC5nZXQgayBcImN0cmxLZXlcIlxuICAgIGxldCBzaGlmdF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJzaGlmdEtleVwiXG4gICAgbGV0IG1ldGFfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwibWV0YUtleVwiXG4gICAgbGV0IGdldF9tb2RpZmllcl9zdGF0ZSBrIGtleSA9XG4gICAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgayBcImdldE1vZGlmaWVyU3RhdGVcIiBKdi5bfCBvZl9qc3RyIGtleSB8XVxuICBlbmRcbiAgbW9kdWxlIE1vdXNlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByZWxhdGVkX3RhcmdldCBtID0gSnYuZmluZF9tYXAgdGFyZ2V0X29mX2p2IG0gXCJyZWxhdGVkVGFyZ2V0XCJcbiAgICBsZXQgb2Zmc2V0X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwib2Zmc2V0WFwiXG4gICAgbGV0IG9mZnNldF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm9mZnNldFlcIlxuICAgIGxldCBjbGllbnRfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJjbGllbnRYXCJcbiAgICBsZXQgY2xpZW50X3kgbSA9IEp2LkZsb2F0LmdldCBtIFwiY2xpZW50WVwiXG4gICAgbGV0IHBhZ2VfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJwYWdlWFwiXG4gICAgbGV0IHBhZ2VfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJwYWdlWVwiXG4gICAgbGV0IHNjcmVlbl94IG0gPSBKdi5GbG9hdC5nZXQgbSBcInNjcmVlblhcIlxuICAgIGxldCBzY3JlZW5feSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJzY3JlZW5ZXCJcbiAgICBsZXQgbW92ZW1lbnRfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtb3ZlbWVudFhcIlxuICAgIGxldCBtb3ZlbWVudF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm1vdmVtZW50WVwiXG4gICAgbGV0IGJ1dHRvbiBtID0gSnYuSW50LmdldCBtIFwiYnV0dG9uXCJcbiAgICBsZXQgYnV0dG9ucyBtID0gSnYuSW50LmdldCBtIFwiYnV0dG9uc1wiXG4gICAgbGV0IGFsdF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJhbHRLZXlcIlxuICAgIGxldCBjdHJsX2tleSBtID0gSnYuQm9vbC5nZXQgbSBcImN0cmxLZXlcIlxuICAgIGxldCBzaGlmdF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJzaGlmdEtleVwiXG4gICAgbGV0IG1ldGFfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwibWV0YUtleVwiXG4gICAgbGV0IGdldF9tb2RpZmllcl9zdGF0ZSBtIGtleSA9XG4gICAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgbSBcImdldE1vZGlmaWVyU3RhdGVcIiBKdi5bfCBvZl9qc3RyIGtleSB8XVxuICBlbmRcbiAgbW9kdWxlIERyYWcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgZXh0ZXJuYWwgYXNfbW91c2UgOiB0IC0+IE1vdXNlLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGRhdGFfdHJhbnNmZXIgZCA9IEp2LmZpbmRfbWFwIEZ1bi5pZCBkIFwiZGF0YVRyYW5zZmVyXCJcbiAgZW5kXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnYSBldmVudCA9ICdhIHRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgZXh0ZXJuYWwgYXNfbW91c2UgOiB0IC0+IE1vdXNlLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGlkIHAgPSBKdi5JbnQuZ2V0IHAgXCJwb2ludGVySWRcIlxuICAgIGxldCB3aWR0aCBwID0gSnYuRmxvYXQuZ2V0IHAgXCJ3aWR0aFwiXG4gICAgbGV0IGhlaWdodCBwID0gSnYuRmxvYXQuZ2V0IHAgXCJoZWlnaHRcIlxuICAgIGxldCBwcmVzc3VyZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJwcmVzc3VyZVwiXG4gICAgbGV0IHRhbmdlbnRpYWxfcHJlc3N1cmUgcCA9IEp2LkZsb2F0LmdldCBwIFwidGFuZ2VudGlhbFByZXNzdXJlXCJcbiAgICBsZXQgdGlsdF94IHAgPSBKdi5JbnQuZ2V0IHAgXCJ0aWx0WFwiXG4gICAgbGV0IHRpbHRfeSBwID0gSnYuSW50LmdldCBwIFwidGlsdFlcIlxuICAgIGxldCB0d2lzdCBwID0gSnYuSW50LmdldCBwIFwidHdpc3RcIlxuICAgIGxldCBhbHRpdHVkZV9hbmdsZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJhbHRpdHVkZUFuZ2xlXCJcbiAgICBsZXQgYXppbXV0aF9hbmdsZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJhemltdXRoQW5nbGVcIlxuICAgIGxldCB0eXBlJyBwID0gSnYuSnN0ci5nZXQgcCBcInBvaW50ZXJUeXBlXCJcbiAgICBsZXQgaXNfcHJpbWFyeSBwID0gSnYuQm9vbC5nZXQgcCBcImlzUHJpbWFyeVwiXG4gICAgbGV0IGdldF9jb2FsZXNjZWRfZXZlbnRzIHAgPVxuICAgICAgSnYudG9fbGlzdCBGdW4uaWQgKEp2LmNhbGwgcCBcImdldENvYWxlc2NlZEV2ZW50c1wiIFt8fF0pXG5cbiAgICBsZXQgZ2V0X3ByZWRpY3RlZF9ldmVudHMgcCA9XG4gICAgICBKdi50b19saXN0IEZ1bi5pZCAoSnYuY2FsbCBwIFwiZ2V0UHJlZGljdGVkRXZlbnRzXCIgW3x8XSlcbiAgZW5kXG4gIG1vZHVsZSBXaGVlbCA9IHN0cnVjdFxuICAgIG1vZHVsZSBEZWx0YV9tb2RlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBwaXhlbCA9IDB4MDBcbiAgICAgIGxldCBsaW5lID0gMHgwMVxuICAgICAgbGV0IHBhZ2UgPSAweDAyXG4gICAgZW5kXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBkZWx0YV94IHcgPSBKdi5GbG9hdC5nZXQgdyBcImRlbHRhWFwiXG4gICAgbGV0IGRlbHRhX3kgdyA9IEp2LkZsb2F0LmdldCB3IFwiZGVsdGFZXCJcbiAgICBsZXQgZGVsdGFfeiB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZWx0YVpcIlxuICAgIGxldCBkZWx0YV9tb2RlIHcgPSBKdi5JbnQuZ2V0IHcgXCJkZWx0YU1vZGVcIlxuICBlbmRcblxuICAoKiBFdmVudCB0eXBlcyAqKVxuXG4gIGxldCBhYm9ydCA9IFR5cGUudm9pZCAoSnN0ci52IFwiYWJvcnRcIilcbiAgbGV0IGFjdGl2YXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImFjdGl2YXRlXCIpXG4gIGxldCBhdXhjbGljayA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkYmxjbGlja1wiKVxuICBsZXQgYmVmb3JlaW5wdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmVmb3JlaW5wdXRcIilcbiAgbGV0IGJlZm9yZXVubG9hZCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJiZWZvcmV1bmxvYWRcIilcbiAgbGV0IGJsdXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmx1clwiKVxuICBsZXQgY2FucGxheSA9IFR5cGUudm9pZCAoSnN0ci52IFwiY2FucGxheVwiKVxuICBsZXQgY2FucGxheXRocm91Z2ggPSBUeXBlLnZvaWQgKEpzdHIudiBcImNhbnBsYXl0aHJvdWdoXCIpXG4gIGxldCBjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcImNoYW5nZVwiKVxuICBsZXQgY2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY2xpY2tcIilcbiAgbGV0IGNsaXBib2FyZGNoYW5nZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJjbGlwYm9hcmRjaGFuZ2VcIilcbiAgbGV0IGNsb3NlID0gVHlwZS52b2lkIChKc3RyLnYgXCJjbG9zZVwiKVxuICBsZXQgY29tcG9zaXRpb25lbmQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb25lbmRcIilcbiAgbGV0IGNvbXBvc2l0aW9uc3RhcnQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb25zdGFydFwiKVxuICBsZXQgY29tcG9zaXRpb251ZHBhdGUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb251cGRhdGVcIilcbiAgbGV0IGNvbnRyb2xsZXJjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29udHJvbGxlcmNoYW5nZVwiKVxuICBsZXQgY29weSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJjb3B5XCIpXG4gIGxldCBjdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY3V0XCIpXG4gIGxldCBkYmxjbGljayA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkYmxjbGlja1wiKVxuICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJET01Db250ZW50TG9hZGVkXCIpXG4gIGxldCBkcmFnID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdcIilcbiAgbGV0IGRyYWdlbmQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2VuZFwiKVxuICBsZXQgZHJhZ2VudGVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdlbnRlclwiKVxuICBsZXQgZHJhZ2V4aXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2V4aXRcIilcbiAgbGV0IGRyYWdsZWF2ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnbGVhdmVcIilcbiAgbGV0IGRyYWdvdmVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdvdmVyXCIpXG4gIGxldCBkcmFnc3RhcnQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ3N0YXJ0XCIpXG4gIGxldCBkcm9wID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyb3BcIilcbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJkdXJhdGlvbmNoYW5nZVwiKVxuICBsZXQgZW1wdGllZCA9IFR5cGUudm9pZCAoSnN0ci52IFwiZW1wdGllZFwiKVxuICBsZXQgZW5kZWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImVuZGVkXCIpXG4gIGxldCBlcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJlcnJvclwiKVxuICBsZXQgZm9jdXMgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNcIilcbiAgbGV0IGZvY3VzaW4gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNpblwiKVxuICBsZXQgZm9jdXNvdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNvdXRcIilcbiAgbGV0IGZ1bGxzY3JlZW5jaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZnVsbHNjcmVlbmNoYW5nZVwiKVxuICBsZXQgZnVsbHNjcmVlbmVycm9yID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZ1bGxzY3JlZW5lcnJvclwiKVxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZ290cG9pbnRlcmNhcHR1cmVcIilcbiAgbGV0IGhhc2hjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaGFzaGNoYW5nZVwiKVxuICBsZXQgaW5wdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaW5wdXRcIilcbiAgbGV0IGluc3RhbGwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaW5zdGFsbFwiKVxuICBsZXQga2V5ZG93biA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJrZXlkb3duXCIpXG4gIGxldCBrZXl1cCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJrZXl1cFwiKVxuICBsZXQgbGFuZ3VhZ2VjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxhbmd1YWdlY2hhbmdlXCIpXG4gIGxldCBsb2FkID0gVHlwZS52b2lkIChKc3RyLnYgXCJsb2FkXCIpXG4gIGxldCBsb2FkZWRkYXRhID0gVHlwZS52b2lkIChKc3RyLnYgXCJsb2FkZWRkYXRhXCIpXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZGVkbWV0YWRhdGFcIilcbiAgbGV0IGxvYWRzdGFydCA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZHN0YXJ0XCIpXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibG9zdHBvaW50ZXJjYXB0dXJlXCIpXG4gIGxldCBtb3VzZWRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2Vkb3duXCIpXG4gIGxldCBtb3VzZWVudGVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlZW50ZXJcIilcbiAgbGV0IG1vdXNlbGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VsZWF2ZVwiKVxuICBsZXQgbW91c2Vtb3ZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlbW92ZVwiKVxuICBsZXQgbW91c2VvdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VvdXRcIilcbiAgbGV0IG1vdXNlb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZW92ZXJcIilcbiAgbGV0IG1vdXNldXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2V1cFwiKVxuICBsZXQgb3BlbicgPSBUeXBlLnZvaWQgKEpzdHIudiBcIm9wZW5cIilcbiAgbGV0IHBhc3RlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBhc3RlXCIpXG4gIGxldCBwYXVzZSA9IFR5cGUudm9pZCAoSnN0ci52IFwicGF1c2VcIilcbiAgbGV0IHBsYXkgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBsYXlcIilcbiAgbGV0IHBsYXlpbmcgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBsYXlpbmdcIilcbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmNhbmNlbFwiKVxuICBsZXQgcG9pbnRlcmRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmRvd25cIilcbiAgbGV0IHBvaW50ZXJlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyZW50ZXJcIilcbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybGVhdmVcIilcbiAgbGV0IHBvaW50ZXJsb2NrY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJsb2NrY2hhbmdlXCIpXG4gIGxldCBwb2ludGVybG9ja2Vycm9yID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJsb2NrZXJyb3JcIilcbiAgbGV0IHBvaW50ZXJtb3ZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJtb3ZlXCIpXG4gIGxldCBwb2ludGVyb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJvdXRcIilcbiAgbGV0IHBvaW50ZXJvdmVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJvdmVyXCIpXG4gIGxldCBwb2ludGVycmF3dXBkYXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJyYXd1cGRhdGVcIilcbiAgbGV0IHBvaW50ZXJ1cCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVydXBcIilcbiAgbGV0IHByb2dyZXNzID0gVHlwZS52b2lkIChKc3RyLnYgXCJwcm9ncmVzc1wiKVxuICBsZXQgcmF0ZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwicmF0ZWNoYW5nZVwiKVxuICBsZXQgcmVzZXQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJlc2V0XCIpXG4gIGxldCByZXNpemUgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJlc2l6ZVwiKVxuICBsZXQgc2Nyb2xsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInNjcm9sbFwiKVxuICBsZXQgc2Vla2VkID0gVHlwZS52b2lkIChKc3RyLnYgXCJzZWVrZWRcIilcbiAgbGV0IHNlZWtpbmcgPSBUeXBlLnZvaWQgKEpzdHIudiBcInNlZWtpbmdcIilcbiAgbGV0IHNlbGVjdCA9IFR5cGUudm9pZCAoSnN0ci52IFwic2VsZWN0XCIpXG4gIGxldCBzdGFsbGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJzdGFsbGVkXCIpXG4gIGxldCBzdGF0ZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwic3RhdGVjaGFuZ2VcIilcbiAgbGV0IHN1c3BlbmQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInN1c3BlbmRcIilcbiAgbGV0IHRpbWV1cGRhdGUgPSBUeXBlLnZvaWQgKEpzdHIudiBcInRpbWV1cGRhdGVcIilcbiAgbGV0IHVubG9hZCA9IFR5cGUudm9pZCAoSnN0ci52IFwidW5sb2FkXCIpXG4gIGxldCB1cGRhdGVmb3VuZCA9IFR5cGUudm9pZCAoSnN0ci52IFwidXBkYXRlZm91bmRcIilcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInZpc2liaWxpdHljaGFuZ2VcIilcbiAgbGV0IHZvbHVtZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwidm9sdW1lY2hhbmdlXCIpXG4gIGxldCB3YWl0aW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJ3YWl0aW5nXCIpXG4gIGxldCB3aGVlbCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJ3aGVlbFwiKVxuZW5kXG5cbigqIERhdGEgY29udGFpbmVycyBhbmQgZW5jb2RpbmdzICopXG5cbm1vZHVsZSBUYXJyYXkgPSBzdHJ1Y3RcblxuICAoKiBBcnJheSBidWZmZXJzICopXG5cbiAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBhcnJheV9idWZmZXIgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiQXJyYXlCdWZmZXJcIlxuICAgIGxldCBjcmVhdGUgbiA9IEp2Lm5ldycgYXJyYXlfYnVmZmVyIEp2Llt8IG9mX2ludCBuIHxdXG4gICAgbGV0IGJ5dGVfbGVuZ3RoIGEgPSBKdi5JbnQuZ2V0IGEgXCJieXRlTGVuZ3RoXCJcbiAgICBsZXQgc2xpY2UgPyhzdGFydCA9IDApID9zdG9wICBhID1cbiAgICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgICBKdi5jYWxsIGEgXCJzbGljZVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cbiAgZW5kXG5cbiAgKCogQ29tbW9uIHRvIHR5cGVkIGFycmF5cyBhbmQgRGF0YVZpZXdzICopXG5cbiAgbGV0IGJ1ZmZlciBvID0gQnVmZmVyLm9mX2p2IEBAIEp2LmdldCBvIFwiYnVmZmVyXCJcbiAgbGV0IGJ5dGVfb2Zmc2V0IG8gPSBKdi5JbnQuZ2V0IG8gXCJieXRlT2Zmc2V0XCJcbiAgbGV0IGJ5dGVfbGVuZ3RoIG8gPSBKdi5JbnQuZ2V0IG8gXCJieXRlTGVuZ3RoXCJcblxuICAoKiBCeXRlLWxldmVsIGRhdGEgYWNjZXNzICopXG5cbiAgbW9kdWxlIERhdGFfdmlldyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnQgKCogRGF0YVZpZXcgb2JqZWN0ICopXG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgZGF0YXZpZXcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRGF0YVZpZXdcIlxuICAgIGxldCBvZl9idWZmZXIgPyhieXRlX29mZnNldCA9IDApID9ieXRlX2xlbmd0aCBiID1cbiAgICAgIGxldCBieXRlX2xlbmd0aCA9IG1hdGNoIGJ5dGVfbGVuZ3RoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYnl0ZV9sZW5ndGggYlxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgaW5cbiAgICAgIEp2Lm5ldycgZGF0YXZpZXdcbiAgICAgICAgSnYuW3xCdWZmZXIudG9fanYgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0OyBvZl9pbnQgYnl0ZV9sZW5ndGh8XVxuXG4gICAgbGV0IGJ1ZmZlciA9IGJ1ZmZlclxuICAgIGxldCBieXRlX29mZnNldCA9IGJ5dGVfb2Zmc2V0XG4gICAgbGV0IGJ5dGVfbGVuZ3RoID0gYnl0ZV9sZW5ndGhcblxuICAgIGxldCBnZXRfaW50OCBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldEludDhcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldEludDE2XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfdWludDggYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50OFwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF91aW50MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0VWludDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X2Zsb2F0MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYiBcImdldEZsb2F0MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDMyX2xlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X2Zsb2F0NjRfYmUgYiBpID1cbiAgICAgIEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYiBcImdldEZsb2F0NjRcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDY0X2xlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X2ludDggYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDhcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfaW50MTZfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDE2XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludCB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDE2X2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfaW50MzJfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHYgfF1cblxuICAgIGxldCBzZXRfaW50MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X3VpbnQ4IGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50OFwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MTZfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MTZfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfdWludDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50MzIgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9mbG9hdDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2Zsb2F0IHYgfF1cblxuICAgIGxldCBzZXRfZmxvYXQzMl9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9mbG9hdDY0X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2Zsb2F0IHYgfF1cblxuICAgIGxldCBzZXRfZmxvYXQ2NF9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2OyBKdi50cnVlJyB8XVxuICBlbmRcblxuICAoKiBBcnJheSB0eXBlcyAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdHlwZScgPVxuICB8IEludDggOiAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGUnXG4gIHwgSW50MTYgOiAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlJ1xuICB8IEludDMyIDogKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGUnXG4gIHwgVWludDggOiAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBVaW50OF9jbGFtcGVkIDogKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGUnXG4gIHwgVWludDE2IDogKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlJ1xuICB8IFVpbnQzMiA6IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlJ1xuICB8IEZsb2F0MzIgOiAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlJ1xuICB8IEZsb2F0NjQgOiAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlJ1xuXG4gIGxldCB0eXBlX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgSW50OCB8IFVpbnQ4IHwgVWludDhfY2xhbXBlZCAtPiAxIHwgSW50MTYgfCBVaW50MTYgLT4gMlxuICB8IEludDMyIHwgVWludDMyIHwgRmxvYXQzMiAtPiA0IHwgRmxvYXQ2NCAgLT4gOFxuXG4gICgqIFR5cGVkIGFycmF5cyAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IEp2LnRcbiAgZXh0ZXJuYWwgdG9fanYgOiAoJ2EsICdiKSB0IC0+IEp2LnQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDogSnYudCAtPiAoJ2EsICdiKSB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBjb25zX29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IEp2LnQgPSBmdW5jdGlvblxuICB8IEludDggLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkludDhBcnJheVwiXG4gIHwgSW50MTYgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkludDE2QXJyYXlcIlxuICB8IEludDMyIC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQzMkFycmF5XCJcbiAgfCBVaW50OCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDhBcnJheVwiXG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDhDbGFtcGVkQXJyYXlcIlxuICB8IFVpbnQxNiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDE2QXJyYXlcIlxuICB8IFVpbnQzMiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDMyQXJyYXlcIlxuICB8IEZsb2F0MzIgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkZsb2F0MzJBcnJheVwiXG4gIHwgRmxvYXQ2NCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiRmxvYXQ2NEFycmF5XCJcblxuICBsZXQgY3JlYXRlIHQgbiA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBKdi5bfCBvZl9pbnQgbiB8XVxuICBsZXQgb2ZfYnVmZmVyIHQgPyhieXRlX29mZnNldCA9IDApID9sZW5ndGggYiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgTm9uZSAtPiBKdi5bfCBiOyBvZl9pbnQgYnl0ZV9vZmZzZXQgfF1cbiAgICB8IFNvbWUgbCAtPiBKdi5bfCBiOyBvZl9pbnQgYnl0ZV9vZmZzZXQ7IG9mX2ludCBsIHxdXG4gICAgaW5cbiAgICBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgYXJnc1xuXG4gIGxldCBsZW5ndGggYSA9IEp2LkludC5nZXQgYSBcImxlbmd0aFwiXG4gIGxldCB0eXBlJyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoYSwgYikgdHlwZScgPSBmdW4gYSAtPlxuICAgIGxldCBtID0gT2JqLm1hZ2ljIGluXG4gICAgbWF0Y2ggSnN0ci50b19zdHJpbmcgKEp2LkpzdHIuZ2V0IChKdi5nZXQgYSBcImNvbnN0cnVjdG9yXCIpIFwibmFtZVwiKSB3aXRoXG4gICAgfCBcIkludDhBcnJheVwiIC0+IG0gSW50OFxuICAgIHwgXCJJbnQxNkFycmF5XCIgLT4gbSBJbnQxNlxuICAgIHwgXCJJbnQzMkFycmF5XCIgLT4gbSBJbnQzMlxuICAgIHwgXCJVaW50OEFycmF5XCIgLT4gbSBVaW50OFxuICAgIHwgXCJVaW50OENsYW1wZWRBcnJheVwiIC0+IG0gVWludDhfY2xhbXBlZFxuICAgIHwgXCJVaW50MTZBcnJheVwiIC0+IG0gVWludDE2XG4gICAgfCBcIlVpbnQzMkFycmF5XCIgLT4gbSBVaW50MzJcbiAgICB8IFwiRmxvYXQzMkFycmF5XCIgLT4gbSBGbG9hdDMyXG4gICAgfCBcIkZsb2F0NjRBcnJheVwiIC0+IG0gRmxvYXQ2NFxuICAgIHwgcyAtPlxuICAgICAgICBsZXQgdCA9IEpzdHIub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgSnYudGhyb3cgKEpzdHIuYXBwZW5kIChKc3RyLnYgXCJVbmtub3duIHR5cGVkIGFycmF5OiBcIikgdClcblxuICBsZXQgdG9fanZfb2ZfdHlwZSA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gYSAtPiBKdi50ID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2Lm9mX2ludFxuICB8IEludDE2IC0+IEp2Lm9mX2ludFxuICB8IEludDMyIC0+IEp2Lm9mX2ludDMyXG4gIHwgVWludDggLT4gSnYub2ZfaW50XG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi5vZl9pbnRcbiAgfCBVaW50MTYgLT4gSnYub2ZfaW50XG4gIHwgVWludDMyIC0+IEp2Lm9mX2ludDMyXG4gIHwgRmxvYXQzMiAtPiBKdi5vZl9mbG9hdFxuICB8IEZsb2F0NjQgLT4gSnYub2ZfZmxvYXRcblxuICBsZXQgb2ZfanZfb2ZfdHlwZSA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gSnYudCAtPiBhID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2LnRvX2ludFxuICB8IEludDE2IC0+IEp2LnRvX2ludFxuICB8IEludDMyIC0+IEp2LnRvX2ludDMyXG4gIHwgVWludDggLT4gSnYudG9faW50XG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi50b19pbnRcbiAgfCBVaW50MTYgLT4gSnYudG9faW50XG4gIHwgVWludDMyIC0+IEp2LnRvX2ludDMyXG4gIHwgRmxvYXQzMiAtPiBKdi50b19mbG9hdFxuICB8IEZsb2F0NjQgLT4gSnYudG9fZmxvYXRcblxuICBsZXQgZWx0X3RvX2p2IGEgPSB0b19qdl9vZl90eXBlICh0eXBlJyBhKVxuICBsZXQgZWx0X29mX2p2IGEgPSBvZl9qdl9vZl90eXBlICh0eXBlJyBhKVxuXG4gICgqIFNldHRpbmcsIGNvcHlpbmcgYW5kIHNsaWNpbmcgKilcblxuICBsZXQgY29tcGlsZWRfdG9fd2FzbSA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE90aGVyIFwid2FzbV9vZl9vY2FtbFwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfanNfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGxldCBnZXQgPVxuICAgIGlmIGNvbXBpbGVkX3RvX3dhc21cbiAgICB0aGVuIGZ1biBhIGkgLT4gZWx0X29mX2p2IGEgKEp2LkphcnJheS5nZXQgKEp2LnJlcHIgYSkgaSlcbiAgICBlbHNlIGdldFxuXG4gIGxldCBzZXQgPVxuICAgIGlmIGNvbXBpbGVkX3RvX3dhc21cbiAgICB0aGVuIGZ1biBhIGkgdiAtPiBKdi5KYXJyYXkuc2V0IChKdi5yZXByIGEpIGkgKGVsdF90b19qdiBhIHYpXG4gICAgZWxzZSBzZXRcblxuICBsZXQgc2V0X3RhcnJheSBhIH5kc3QgYiA9IGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJzZXRcIiBKdi5bfCBiOyBvZl9pbnQgZHN0IHxdXG5cbiAgbGV0IGZpbGwgPyhzdGFydCA9IDApID9zdG9wIHYgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBsZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYSBcImZpbGxcIiBKdi5bfCBlbHRfdG9fanYgYSB2OyBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IGNvcHlfd2l0aGluID8oc3RhcnQgPSAwKSA/c3RvcCB+ZHN0IGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIGlnbm9yZSBAQFxuICAgIEp2LmNhbGwgYSBcImNvcHlXaXRoaW5cIiBKdi5bfCBvZl9pbnQgZHN0OyBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBieXRlX2xlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBKdi5jYWxsIGEgXCJzbGljZVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cblxuICBsZXQgc3ViID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBieXRlX2xlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBKdi5jYWxsIGEgXCJzdWJhcnJheVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cblxuICAoKiBQcmVkaWNhdGVzICopXG5cbiAgbGV0IGZpbmQgc2F0IGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IHNhdCB2IGkgPSBKdi5vZl9ib29sIChzYXQgaSAob2ZfanYgdikpIGluXG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IChKdi5jYWxsIGEgXCJmaW5kXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdKVxuXG4gIGxldCBmaW5kX2luZGV4IHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIGxldCBpID0gSnYudG9faW50IChKdi5jYWxsIGEgXCJmaW5kSW5kZXhcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF0pIGluXG4gICAgaWYgaSA9IC0xIHRoZW4gTm9uZSBlbHNlIFNvbWUgaVxuXG4gIGxldCBmb3JfYWxsIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBhIFwiZXZlcnlcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICBsZXQgZXhpc3RzIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBhIFwiZXZlcnlcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICAoKiBUcmF2ZXJzYWxzICopXG5cbiAgbGV0IGZpbHRlciBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi5jYWxsIGEgXCJmaWx0ZXJcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICBsZXQgaXRlciBmIGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgdiBpID0gZiBpIChvZl9qdiB2KSBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJmb3JFYWNoXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgZiB8XVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIHYgPSBmIChvZl9qdiB2KSBpblxuICAgIEp2LmNhbGwgYSBcIm1hcFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToxIGYgfF1cblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgYWNjIHYgPSBmIGFjYyAob2ZfanYgdikgaW5cbiAgICBPYmoubWFnaWMgQEAgSnYuY2FsbCBhIFwicmVkdWNlXCIgW3xKdi5jYWxsYmFjayB+YXJpdHk6MiBmOyBKdi5yZXByIGFjY3xdXG5cbiAgbGV0IGZvbGRfcmlnaHQgZiBhIGFjYyA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgZiBhY2MgdiA9IGYgKG9mX2p2IHYpIGFjYyBpblxuICAgIE9iai5tYWdpYyBAQCBKdi5jYWxsIGEgXCJyZWR1Y2VSaWdodFwiIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjIgZjsgSnYucmVwciBhY2N8XVxuXG4gIGxldCByZXZlcnNlIGEgPSBKdi5jYWxsIGEgXCJyZXZlcnNlXCIgSnYuW3x8XVxuXG4gICgqIFR5cGUgYWxpYXNlcyAqKVxuXG4gIHR5cGUgaW50OCA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdFxuICB0eXBlIGludDE2ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdFxuICB0eXBlIGludDMyID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHRcbiAgdHlwZSB1aW50OCA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDhfY2xhbXBlZCA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDE2ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDMyID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHRcbiAgdHlwZSBmbG9hdDMyID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdFxuICB0eXBlIGZsb2F0NjQgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0XG5cbiAgKCogQ29udmVydGluZyAqKVxuXG4gIGxldCBvZl90YXJyYXkgdCBhID0gSnYubmV3JyAoY29uc19vZl90eXBlIHQpIFt8IGEgfF1cbiAgbGV0IG9mX2ludF9hcnJheSB0IGEgPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfYXJyYXkgSnYub2ZfaW50IGEgfF1cbiAgbGV0IG9mX2Zsb2F0X2FycmF5IHQgYSA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBKdi5bfCBvZl9hcnJheSBvZl9mbG9hdCBhfF1cbiAgbGV0IHRvX2ludF9qc3RyID8oc2VwID0gSnN0ci5zcCkgYiA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGIgXCJqb2luXCIgSnYuW3wgb2ZfanN0ciBzZXAgfF1cblxuICBsZXQgdG9faGV4X2pzdHIgPyhzZXAgPSBKc3RyLmVtcHR5KSBhID1cbiAgICBsZXQgaGV4ID0gSnN0ci52IFwiMDEyMzQ1Njc4OWFiY2RlZlwiIGluXG4gICAgbGV0IGQgPSBEYXRhX3ZpZXcub2ZfYnVmZmVyIChidWZmZXIgYSkgaW5cbiAgICBsZXQgcyA9IHJlZiBKc3RyLmVtcHR5IGluXG4gICAgZm9yIGkgPSAwIHRvIERhdGFfdmlldy5ieXRlX2xlbmd0aCBkIC0gMSBkb1xuICAgICAgbGV0IGIgPSBEYXRhX3ZpZXcuZ2V0X3VpbnQ4IGQgaSBpblxuICAgICAgbGV0IHNlcCA9IGlmIGkgPSAwIHRoZW4gSnN0ci5lbXB0eSBlbHNlIHNlcCBpblxuICAgICAgcyA6PSBKc3RyLighcyArIHNlcCArIGdldF9qc3RyIGhleCAoYiBsc3IgNCkgKyBnZXRfanN0ciBoZXggKGIgbGFuZCAweEYpKVxuICAgIGRvbmU7XG4gICAgIXNcblxuICBsZXQgdWludDhfb2ZfYnVmZmVyIGIgPSBvZl9idWZmZXIgVWludDggYlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHVpbnQ4IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcIlxuXG4gIGxldCBvZl9qc3RyIHMgPVxuICAgIGxldCBlbmMgPSBKdi5uZXcnIChKdi5nZXQgSnYuZ2xvYmFsIFwiVGV4dEVuY29kZXJcIikgW3x8XSBpblxuICAgIEp2LmNhbGwgZW5jIFwiZW5jb2RlXCIgW3wgSnYub2ZfanN0ciBzIHxdXG5cbiAgbGV0IHRvX2pzdHIgYSA9XG4gICAgbGV0IGFyZ3MgPSBbfCBKdi5vZl9zdHJpbmcgXCJ1dGYtOFwiOyBKdi5vYmogW3wgXCJmYXRhbFwiLCBKdi50cnVlJyB8XXxdIGluXG4gICAgbGV0IGRlYyA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJUZXh0RGVjb2RlclwiKSBhcmdzIGluXG4gICAgbWF0Y2ggSnYuY2FsbCBkZWMgXCJkZWNvZGVcIiBbfCBhIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGUgfCBzIC0+IE9rIChKdi50b19qc3RyIHMpXG5cbiAgbGV0IG9mX2JpbmFyeV9qc3RyIHMgPVxuICAgIGxldCBjb2RlIHMgaSA9XG4gICAgICBsZXQgYyA9IEp2LnRvX2ludCBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwiY2hhckNvZGVBdFwiIFt8SnYub2ZfaW50IGl8XWluXG4gICAgICBpZiBjIDw9IDI1NSB0aGVuIGMgZWxzZVxuICAgICAgSnYudGhyb3cgSnN0ci4ob2ZfaW50IGkgKyB2IFwiOiBjaGFyIGNvZGUgXCIgKyBvZl9pbnQgYyArIHYgXCJleGNlZWRzIDI1NVwiKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKEpzdHIubGVuZ3RoIHMpIGluXG4gICAgICBsZXQgZCA9IERhdGFfdmlldy5vZl9idWZmZXIgYiBpblxuICAgICAgZm9yIGkgPSAwIHRvIEpzdHIubGVuZ3RoIHMgLSAxIGRvIERhdGFfdmlldy5zZXRfaW50OCBkIGkgKGNvZGUgcyBpKSBkb25lO1xuICAgICAgT2sgKG9mX2J1ZmZlciBJbnQ4IGIpXG4gICAgd2l0aFxuICAgIHwgSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgbGV0IHRvX2JpbmFyeV9qc3RyIGEgPVxuICAgIGxldCBjaHIgYiA9XG4gICAgICBKdi50b19qc3RyIEBAXG4gICAgICBKdi5jYWxsIChKdi5nZXQgSnYuZ2xvYmFsIFwiU3RyaW5nXCIpIFwiZnJvbUNoYXJDb2RlXCIgW3wgSnYub2ZfaW50IGIgfF1cbiAgICBpblxuICAgIGxldCBkID0gRGF0YV92aWV3Lm9mX2J1ZmZlciAoYnVmZmVyIGEpIGluXG4gICAgbGV0IHMgPSByZWYgSnN0ci5lbXB0eSBpblxuICAgIGZvciBpID0gMCB0byBEYXRhX3ZpZXcuYnl0ZV9sZW5ndGggZCAtIDEgZG9cbiAgICAgIGxldCBiID0gRGF0YV92aWV3LmdldF91aW50OCBkIGkgaW5cbiAgICAgIHMgOj0gSnN0ci4oIXMgKyBjaHIgYik7XG4gICAgZG9uZTtcbiAgICAhc1xuXG4gICgqIEJpZ2FycmF5ICopXG5cbiAgbGV0IHR5cGVfdG9fYmlnYXJyYXlfa2luZCA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gKGEsIGIpIEJpZ2FycmF5LmtpbmQgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnQ4IC0+IEJpZ2FycmF5LmludDhfc2lnbmVkXG4gICAgfCBJbnQxNiAtPiBCaWdhcnJheS5pbnQxNl9zaWduZWRcbiAgICB8IEludDMyIC0+IEJpZ2FycmF5LmludDMyXG4gICAgfCBVaW50OCAtPiBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkXG4gICAgfCBVaW50OF9jbGFtcGVkIC0+IEJpZ2FycmF5LmludDhfdW5zaWduZWRcbiAgICB8IFVpbnQxNiAtPiBCaWdhcnJheS5pbnQxNl91bnNpZ25lZFxuICAgIHwgVWludDMyIC0+IEJpZ2FycmF5LmludDMyXG4gICAgfCBGbG9hdDMyIC0+IEJpZ2FycmF5LmZsb2F0MzJcbiAgICB8IEZsb2F0NjQgLT4gQmlnYXJyYXkuZmxvYXQ2NFxuXG4gIGxldCB0eXBlX29mX2JpZ2FycmF5X2tpbmQgOlxuICAgIHR5cGUgYSBiLiAoYSwgYikgQmlnYXJyYXkua2luZCAtPiAoYSwgYikgdHlwZScgb3B0aW9uID1cbiAgICBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuSW50OF9zaWduZWQgLT4gU29tZSBJbnQ4XG4gICAgfCBCaWdhcnJheS5JbnQxNl9zaWduZWQgLT4gU29tZSBJbnQxNlxuICAgIHwgQmlnYXJyYXkuSW50MzIgLT4gU29tZSBJbnQzMlxuICAgIHwgQmlnYXJyYXkuSW50OF91bnNpZ25lZCAtPiBTb21lIFVpbnQ4XG4gICAgfCBCaWdhcnJheS5JbnQxNl91bnNpZ25lZCAtPiBTb21lIFVpbnQxNlxuICAgIHwgQmlnYXJyYXkuRmxvYXQzMiAtPiBTb21lIEZsb2F0MzJcbiAgICB8IEJpZ2FycmF5LkZsb2F0NjQgLT4gU29tZSBGbG9hdDY0XG4gICAgfCBfIC0+IE5vbmVcblxuICBleHRlcm5hbCBiaWdhcnJheV9raW5kIDogKCdhLCAnYikgdCAtPiAoJ2EsJ2IpIEJpZ2FycmF5LmtpbmQgPVxuICAgIFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9iaWdhcnJheTEgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudCAtPiAoJ2EsICdiKSB0ID1cbiAgICBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2JpZ2FycmF5MSA6XG4gICAgKCdhLCAnYikgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnQgPVxuICAgIFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9iaWdhcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdCA9XG4gICAgXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgQmxvYiA9IHN0cnVjdFxuXG4gICgqIEVudW1lcmF0aW9ucyAqKVxuXG4gIG1vZHVsZSBFbmRpbmdfdHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCB0cmFuc3BhcmVudCA9IEpzdHIudiBcInRyYW5zcGFyZW50XCJcbiAgICBsZXQgbmF0aXZlID0gSnN0ci52IFwibmF0aXZlXCJcbiAgZW5kXG5cbiAgKCogSW5pdGlhbGlzYXRpb24gb2JqZWN0cyAqKVxuXG4gIHR5cGUgaW5pdCA9IEp2LnRcbiAgbGV0IGluaXQgP3R5cGUnID9lbmRpbmdzICgpID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwidHlwZVwiIHR5cGUnO1xuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcImVuZGluZ3NcIiBlbmRpbmdzO1xuICAgIG9cblxuICAoKiBCbG9icyAqKVxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBibG9iID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkJsb2JcIlxuICBsZXQgb2ZfanN0ciA/KGluaXQgPSBKdi51bmRlZmluZWQpIHMgPVxuICAgIGxldCBhID0gSnYuSmFycmF5LmNyZWF0ZSAxIGluXG4gICAgSnYuSmFycmF5LnNldCBhIDAgKEp2Lm9mX2pzdHIgcyk7XG4gICAgSnYubmV3JyBibG9iIFt8IGE7IGluaXQgfF1cblxuICBsZXQgb2ZfamFycmF5ID8oaW5pdCA9IEp2LnVuZGVmaW5lZCkgYSA9IEp2Lm5ldycgYmxvYiBbfCBhOyBpbml0IHxdXG4gIGxldCBvZl9hcnJheV9idWZmZXIgPyhpbml0ID0gSnYudW5kZWZpbmVkKSBiID1cbiAgICBKdi5uZXcnIGJsb2IgW3wgSnYub2ZfanZfYXJyYXkgW3wgVGFycmF5LkJ1ZmZlci50b19qdiBiIHxdOyBpbml0IHxdXG5cbiAgbGV0IGJ5dGVfbGVuZ3RoIGIgPSBKdi5JbnQuZ2V0IGIgXCJzaXplXCJcbiAgbGV0IHR5cGUnIGIgPSBKdi5Kc3RyLmdldCBiIFwidHlwZVwiXG4gIGxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgPyh0eXBlJyA9IEpzdHIuZW1wdHkpIGIgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYiB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBiIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wOyBvZl9qc3RyIHR5cGUnIHxdXG5cbiAgbGV0IHN0cmVhbSBiID0gSnYuZ2V0IGIgXCJzdHJlYW1cIlxuXG4gICgqIExvYWRpbmcgKilcblxuICB0eXBlIHByb2dyZXNzID0gKGZsb2F0ICogZmxvYXQpIG9wdGlvbiAtPiB1bml0XG5cbiAgKCogSWYgd2Ugd2FudCBwcm9ncmVzcyB3ZSBuZWVkIGEgRmlsZVJlYWRlciAqKVxuXG4gIGxldCBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgY29udiA9XG4gICAgbGV0IHByb2dyZXNzX2RhdGEgZSA9XG4gICAgICBsZXQgZSA9IEV2LnRvX2p2IGUgaW5cbiAgICAgIGlmIG5vdCAoSnYuQm9vbC5nZXQgZSBcImxlbmd0aENvbXB1dGFibGVcIikgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBsb2FkZWQgPSBKdi5GbG9hdC5nZXQgZSBcImxvYWRlZFwiIGluXG4gICAgICBsZXQgdG90YWwgPSBKdi5GbG9hdC5nZXQgZSBcInRvdGFsXCIgaW5cbiAgICAgIFNvbWUgKGxvYWRlZCwgdG90YWwpXG4gICAgaW5cbiAgICBsZXQgcmVhZGVyID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIkZpbGVSZWFkZXJcIikgW3x8XSBpblxuICAgIGxldCBmdXQsIHNldF9mdXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IG9rIGUgPVxuICAgICAgYmVnaW4gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgcHJvZ3Jlc3MgLT4gcHJvZ3Jlc3MgKHByb2dyZXNzX2RhdGEgZSlcbiAgICAgIGVuZDtcbiAgICAgIHNldF9mdXQgKE9rIChjb252IChKdi5nZXQgcmVhZGVyIFwicmVzdWx0XCIpKSlcbiAgICBpblxuICAgIGxldCBlcnJvciBfZSA9IHNldF9mdXQgKEVycm9yIChKdi50b19lcnJvciAoSnYuZ2V0IHJlYWRlciBcImVycm9yXCIpKSkgaW5cbiAgICBsZXQgdCA9IEV2LnRhcmdldF9vZl9qdiByZWFkZXIgaW5cbiAgICBsZXQgb3B0cyA9IEV2Lmxpc3Rlbl9vcHRzIH5vbmNlOnRydWUgKCkgaW5cbiAgICBpZ25vcmUgKEV2Lmxpc3RlbiB+b3B0cyBFdi5sb2FkIG9rIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgaWdub3JlIChFdi5saXN0ZW4gfm9wdHMgRXYuZXJyb3IgZXJyb3IgdCA6IEV2Lmxpc3RlbmVyKTtcbiAgICBiZWdpbiBtYXRjaCBwcm9ncmVzcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHByb2dyZXNzIC0+XG4gICAgICAgIGxldCBwcm9ncmVzcyBlID0gcHJvZ3Jlc3MgKHByb2dyZXNzX2RhdGEgZSkgaW5cbiAgICAgICAgaWdub3JlIChFdi5saXN0ZW4gRXYucHJvZ3Jlc3MgcHJvZ3Jlc3MgdCA6IEV2Lmxpc3RlbmVyKTtcbiAgICBlbmQ7XG4gICAgZnV0LCByZWFkZXJcblxuICBsZXQgYXJyYXlfYnVmZmVyID9wcm9ncmVzcyBiID0gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIEZ1dC5vZl9wcm9taXNlIH5vazpUYXJyYXkuQnVmZmVyLm9mX2p2IChKdi5jYWxsIGIgXCJhcnJheUJ1ZmZlclwiIFt8fF0pXG4gIHwgU29tZSBfIC0+XG4gICAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgVGFycmF5LkJ1ZmZlci5vZl9qdiBpblxuICAgICAgaWdub3JlIChKdi5jYWxsIHJlYWRlciBcInJlYWRBc0FycmF5QnVmZmVyXCIgW3wgYiB8XSk7XG4gICAgICBmdXRcblxuICBsZXQgdGV4dCA/cHJvZ3Jlc3MgYiA9IG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgfCBOb25lIC0+IEZ1dC5vZl9wcm9taXNlIH5vazpKdi50b19qc3RyIChKdi5jYWxsIGIgXCJ0ZXh0XCIgW3x8XSlcbiAgfCBTb21lIF8gLT5cbiAgICAgIGxldCBmdXQsIHJlYWRlciA9IGZpbGVfcmVhZGVyID9wcm9ncmVzcyBKdi50b19qc3RyIGluXG4gICAgICBpZ25vcmUgKEp2LmNhbGwgcmVhZGVyIFwicmVhZEFzVGV4dFwiIFt8IGIgfF0pO1xuICAgICAgZnV0XG5cbiAgbGV0IGRhdGFfdXJpID9wcm9ncmVzcyBiID1cbiAgICAoKiBUaGVyZSdzIG5vIGRpcmVjdCBzdXBwb3J0IGZvciBkYXRhIHVybHMgaW4gYmxvYiBvYmplY3RzLlxuICAgICAgIFdlIGRvIHRoaXMgdmlhIHRoZSBGaWxlUmVhZGVyIEFQSS4gKilcbiAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgSnYudG9fanN0ciBpblxuICAgIGlnbm9yZSAoSnYuY2FsbCByZWFkZXIgXCJyZWFkQXNEYXRhVVJMXCIgW3wgYiB8XSk7XG4gICAgZnV0XG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAoKiBJbml0aWFsaXNhdGlvbiBvYmplY3RzICopXG5cbiAgdHlwZSBpbml0ID0gSnYudFxuICBsZXQgaW5pdCA/YmxvYl9pbml0ID9sYXN0X21vZGlmaWVkX21zICgpID1cbiAgICBsZXQgbyA9IG1hdGNoIGJsb2JfaW5pdCB3aXRoIE5vbmUgLT4gSnYub2JqIFt8fF0gfCBTb21lIGIgLT4gSnYucmVwciBiIGluXG4gICAgSnYuSW50LnNldF9pZl9zb21lIG8gXCJsYXN0TW9kaWZpZWRcIiBsYXN0X21vZGlmaWVkX21zO1xuICAgIG9cblxuICBsZXQgZmlsZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJGaWxlXCJcbiAgbGV0IG9mX2Jsb2IgPyhpbml0ID0gSnYub2JqIFt8fF0pIG5hbWUgYiA9XG4gICAgSnYubmV3JyBmaWxlIFt8QmxvYi50b19qdiBiOyBKdi5vZl9qc3RyIG5hbWU7IGluaXR8XVxuXG4gIGxldCBuYW1lIGYgPSBKdi5Kc3RyLmdldCBmIFwibmFtZVwiXG4gIGxldCByZWxhdGl2ZV9wYXRoIGYgPVxuICAgIGxldCBwID0gSnYuZmluZF9tYXAgSnYudG9fanN0ciBmIFwid2Via2l0UmVsYXRpdmVQYXRoXCIgaW5cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SnN0ci5lbXB0eSBwXG5cbiAgbGV0IGxhc3RfbW9kaWZpZWRfbXMgZiA9IEp2LkludC5nZXQgZiBcImxhc3RNb2RpZmllZFwiXG4gIGV4dGVybmFsIGFzX2Jsb2IgOiB0IC0+IEJsb2IudCA9IFwiJWlkZW50aXR5XCJcbmVuZFxuXG5tb2R1bGUgQmFzZTY0ID0gc3RydWN0XG5cbiAgdHlwZSBkYXRhID0gSnN0ci50XG5cbiAgbGV0IGRhdGFfdXRmXzhfb2ZfanN0ciBzID0gVGFycmF5LnRvX2JpbmFyeV9qc3RyIChUYXJyYXkub2ZfanN0ciBzKVxuICBsZXQgZGF0YV91dGZfOF90b19qc3RyIGQgPSBtYXRjaCBUYXJyYXkub2ZfYmluYXJ5X2pzdHIgZCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGUgfCBPayB0IC0+IFRhcnJheS50b19qc3RyIHRcblxuICBsZXQgZGF0YV9vZl9iaW5hcnlfanN0ciA9IEZ1bi5pZFxuICBsZXQgZGF0YV90b19iaW5hcnlfanN0ciA9IEZ1bi5pZFxuXG4gIGxldCBlbmNvZGUgYnMgPVxuICAgIG1hdGNoIEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwiYnRvYVwiKSBKdi5bfCBvZl9qc3RyIGJzIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgZGVjb2RlIHMgPVxuICAgIG1hdGNoIEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwiYXRvYlwiKSBKdi5bfCBvZl9qc3RyIHMgfF0gd2l0aFxuICAgIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICAgIHwgdiAtPiBPayAoSnYudG9fanN0ciB2KVxuZW5kXG5cbm1vZHVsZSBKc29uID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgbGV0IGpzb24gPSBKdi5nZXQgSnYuZ2xvYmFsIFwiSlNPTlwiXG4gIGxldCBlbmNvZGUgdiA9IEp2LnRvX2pzdHIgKEp2LmNhbGwganNvbiBcInN0cmluZ2lmeVwiIFt8IHYgfF0pXG4gIGxldCBkZWNvZGUgcyA9IG1hdGNoIEp2LmNhbGwganNvbiBcInBhcnNlXCIgW3xKdi5vZl9qc3RyIHN8XSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZSB8IHYgLT4gT2sgdlxuZW5kXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgZW5jb2RlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImVuY29kZVVSSVwiXG4gIGxldCBkZWNvZGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZGVjb2RlVVJJXCJcbiAgbGV0IGVuY29kZV9jb21wb25lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZW5jb2RlVVJJQ29tcG9uZW50XCJcbiAgbGV0IGRlY29kZV9jb21wb25lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZGVjb2RlVVJJQ29tcG9uZW50XCJcblxuICBsZXQgdXJsID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVSTFwiXG5cbiAgbGV0IHYgP2Jhc2UgcyA9IG1hdGNoIGJhc2Ugd2l0aFxuICB8IE5vbmUgLT4gSnYubmV3JyB1cmwgW3wgSnYub2ZfanN0ciBzIHxdXG4gIHwgU29tZSBiIC0+IEp2Lm5ldycgdXJsIFt8IEp2Lm9mX2pzdHIgczsgSnYub2ZfanN0ciBiIHxdXG5cbiAgbGV0IHdpdGhfdXJpID9zY2hlbWUgP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCB1ID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICB0cnlcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInByb3RvY29sXCIgc2NoZW1lO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwiaG9zdG5hbWVcIiBob3N0O1xuICAgICAgYmVnaW4gbWF0Y2ggcG9ydCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBwIC0+IEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInBvcnRcIiAoT3B0aW9uLm1hcCBKc3RyLm9mX2ludCBwKVxuICAgICAgZW5kO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwicGF0aG5hbWVcIiBwYXRoO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwic2VhcmNoXCIgcXVlcnk7XG4gICAgICBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJoYXNoXCIgZnJhZ21lbnQ7XG4gICAgICBPayB1XG4gICAgd2l0aCBKdi5FcnJvciBlIC0+IEVycm9yIGVcblxuICBsZXQgc2NoZW1lIHUgPVxuICAgIGxldCBwID0gSnYuSnN0ci5nZXQgdSBcInByb3RvY29sXCIgaW5cbiAgICBpZiBKc3RyLmxlbmd0aCBwIDw+IDAgdGhlbiBKc3RyLnNsaWNlIHAgfnN0b3A6KC0xKSAoKiByZW1vdmUgJzonICopIGVsc2UgcFxuXG4gIGxldCBob3N0IHUgPSBKdi5Kc3RyLmdldCB1IFwiaG9zdG5hbWVcIlxuICBsZXQgcG9ydCB1ID1cbiAgICBsZXQgcCA9IEp2LkpzdHIuZ2V0IHUgXCJwb3J0XCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IHAgdGhlbiBOb25lIGVsc2UgSnN0ci50b19pbnQgcFxuXG4gIGxldCBzbGFzaCA9IEpzdHIudiBcIi9cIlxuXG4gIGxldCBwYXRoIHUgPSBKdi5Kc3RyLmdldCB1IFwicGF0aG5hbWVcIlxuXG4gIGxldCBxdWVyeSB1ID1cbiAgICBsZXQgcSA9IEp2LkpzdHIuZ2V0IHUgXCJzZWFyY2hcIiBpblxuICAgIGlmIEpzdHIuaXNfZW1wdHkgcSB0aGVuIHEgZWxzZSBKc3RyLnNsaWNlIHEgfnN0YXJ0OjEgKCogcmVtb3ZlICc/JyAqKVxuXG4gIGxldCBmcmFnbWVudCB1ID1cbiAgICBsZXQgZiA9IEp2LkpzdHIuZ2V0IHUgXCJoYXNoXCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IGYgdGhlbiBmIGVsc2UgSnN0ci5zbGljZSBmIH5zdGFydDoxICgqIHJlbW92ZSAnIycgKilcblxuICAoKiBQYXRoICopXG5cbiAgdHlwZSBwYXRoID0gSnN0ci50IGxpc3RcblxuICBsZXQgcGF0aF9zZWdtZW50cyB1ID1cbiAgICBsZXQgZGVjb2RlX3NlZyBzID0gSnYuKHRvX2pzdHIgKGFwcGx5IGRlY29kZV9jb21wb25lbnQgW3wgb2ZfanN0ciBzIHxdKSkgaW5cbiAgICB0cnlcbiAgICAgIGxldCBwID0gcGF0aCB1IGFuZCBwcmVmaXggPSBzbGFzaCBpblxuICAgICAgbGV0IHAgPSBpZiBKc3RyLnN0YXJ0c193aXRoIH5wcmVmaXggcCB0aGVuIEpzdHIuc2xpY2UgcCB+c3RhcnQ6MSBlbHNlIHAgaW5cbiAgICAgIE9rIChMaXN0Lm1hcCBkZWNvZGVfc2VnIChKc3RyLmN1dHMgfnNlcDpzbGFzaCBwKSlcbiAgICB3aXRoIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gIGxldCB3aXRoX3BhdGhfc2VnbWVudHMgdSBzZWdzID1cbiAgICBsZXQgZW5jb2RlX3NlZyBzID1cbiAgICAgIEpzdHIuYXBwZW5kIHNsYXNoIEp2Lih0b19qc3RyIChhcHBseSBlbmNvZGVfY29tcG9uZW50IFt8IG9mX2pzdHIgcyB8XSkpXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIGxldCB1ID0gSnYubmV3JyB1cmwgW3wgdSB8XSBpblxuICAgICAgbGV0IHBhdGggPSBKc3RyLmNvbmNhdCAoTGlzdC5tYXAgZW5jb2RlX3NlZyBzZWdzKSBpblxuICAgICAgSnYuc2V0IHUgXCJwYXRobmFtZVwiIChKdi5vZl9qc3RyIHBhdGgpO1xuICAgICAgT2sgdVxuICAgIHdpdGggSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgKCogUGFyYW1zICopXG5cbiAgbW9kdWxlIFBhcmFtcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCB1c3AgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiVVJMU2VhcmNoUGFyYW1zXCJcbiAgICBsZXQgaXNfZW1wdHkgcCA9IEp2Lkl0LnJlc3VsdF9kb25lIChKdi5JdC5uZXh0IChKdi5jYWxsIHAgXCJlbnRyaWVzXCIgW3x8XSkpXG4gICAgbGV0IG1lbSBrIHAgPSBKdi50b19ib29sIChKdi5jYWxsIHAgXCJoYXNcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmaW5kIGsgcCA9IEp2LnRvX29wdGlvbiBKdi50b19qc3RyIChKdi5jYWxsIHAgXCJnZXRcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmaW5kX2FsbCBrIHAgPSBKdi50b19qc3RyX2xpc3QgKEp2LmNhbGwgcCBcImdldEFsbFwiIFt8SnYub2ZfanN0ciBrfF0pXG4gICAgbGV0IGZvbGQgZiBwIGFjYyA9XG4gICAgICBsZXQga2V5ID0gSnYudG9fanN0ciBpblxuICAgICAgbGV0IHZhbHVlID0gSnYudG9fanN0ciBpblxuICAgICAgSnYuSXQuZm9sZF9iaW5kaW5ncyB+a2V5IH52YWx1ZSBmIChKdi5jYWxsIHAgXCJlbnRyaWVzXCIgW3x8XSkgYWNjXG5cbiAgICBsZXQgb2ZfanN0ciBzID1cbiAgICAgICgqIE5vdGUgdGhhdCBpdCBzZWVtcyB0aGF0IHRoaXMgbmV2ZXIgZXJyb3JzLiBBdCBsZWFzdCBkZWNvZGluZ1xuICAgICAgICAgZXJyb3JzIHNlZW0gdG8gYmUgcmVwbGFjZWQgYnkgVStGRkZELiAqKVxuICAgICAgSnYubmV3JyB1c3AgW3wgSnYub2ZfanN0ciBzfF1cblxuICAgIGxldCB0b19qc3RyIHAgPSBKdi50b19qc3RyIChKdi5jYWxsIHAgXCJ0b1N0cmluZ1wiIFt8fF0pXG4gICAgbGV0IG9mX2Fzc29jIGwgPVxuICAgICAgbGV0IHAgPSBvZl9qc3RyIEpzdHIuZW1wdHkgaW5cbiAgICAgIGxldCBhcHAgcCAoaywgdikgPVxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgcCBcImFwcGVuZFwiIEp2Llt8b2ZfanN0ciBrOyBvZl9qc3RyIHZ8XSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXIgKGFwcCBwKSBsOyBwXG5cbiAgICBsZXQgdG9fYXNzb2MgcCA9IExpc3QucmV2IChmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBwIFtdKVxuICAgIGxldCBvZl9vYmogbyA9IEp2Lm5ldycgdXNwIFt8IG8gfF1cbiAgZW5kXG5cbiAgbGV0IHF1ZXJ5X3BhcmFtcyB1ID0gUGFyYW1zLm9mX2pzdHIgKHF1ZXJ5IHUpXG4gIGxldCB3aXRoX3F1ZXJ5X3BhcmFtcyB1IHBzID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICBKdi5Kc3RyLnNldCB1IFwic2VhcmNoXCIgKFBhcmFtcy50b19qc3RyIHBzKTtcbiAgICB1XG5cbiAgbGV0IGZyYWdtZW50X3BhcmFtcyB1ID0gUGFyYW1zLm9mX2pzdHIgKGZyYWdtZW50IHUpXG4gIGxldCB3aXRoX2ZyYWdtZW50X3BhcmFtcyB1IHBzID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICBKdi5Kc3RyLnNldCB1IFwiaGFzaFwiIChQYXJhbXMudG9fanN0ciBwcyk7XG4gICAgdVxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICBsZXQgdG9fanN0ciB1ID0gSnYudG9fanN0ciAoSnYuY2FsbCB1IFwidG9TdHJpbmdcIiBbfHxdKVxuICBsZXQgb2ZfanN0ciA/YmFzZSBzID0gbWF0Y2ggdiA/YmFzZSBzIHdpdGhcbiAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlIHwgdiAtPiBPayB2XG5cbiAgKCogUGVyY2VudC1lbmNvZGluZyAqKVxuXG4gIGxldCBjb2RlIGYgcyA9IG1hdGNoIEp2LmFwcGx5IGYgW3xKdi5vZl9qc3RyIHN8XSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgZW5jb2RlIHMgPSBjb2RlIGVuY29kZSBzXG4gIGxldCBkZWNvZGUgcyA9IGNvZGUgZGVjb2RlIHNcbiAgbGV0IGVuY29kZV9jb21wb25lbnQgcyA9IGNvZGUgZW5jb2RlX2NvbXBvbmVudCBzXG4gIGxldCBkZWNvZGVfY29tcG9uZW50IHMgPSBjb2RlIGRlY29kZV9jb21wb25lbnQgc1xuZW5kXG5cbm1vZHVsZSBSZWdleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBpbnB1dCByID0gSnYuSnN0ci5nZXQgciBcImlucHV0XCJcbiAgICBsZXQgbWF0Y2gnIHIgPSBKdi50b19qc3RyIChKdi5KYXJyYXkuZ2V0IHIgMClcbiAgICBsZXQgc3RhcnRfaW5kZXggciA9IEp2LkludC5nZXQgciBcImluZGV4XCJcbiAgICBsZXQgc3RvcF9pbmRleCByID0gc3RhcnRfaW5kZXggciArIEpzdHIubGVuZ3RoIChtYXRjaCcgcilcbiAgICBsZXQgZm9sZF9ncm91cHMgZiByIGFjYyA9XG4gICAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgICAgZm9yIGkgPSAxICgqIDAgaXMgdGhlIHdob2xlIG1hdGNoICopIHRvIEp2LkphcnJheS5sZW5ndGggciAtIDEgZG9cbiAgICAgICAgYWNjIDo9IGYgKEp2LnRvX2pzdHIgKEp2LkphcnJheS5nZXQgciBpKSkgIWFjY1xuICAgICAgZG9uZTtcbiAgICAgICFhY2NcblxuICAgIGxldCBmb2xkX2dyb3VwX2luZGljZXMgZiByIGFjYyA9IG1hdGNoIEp2LmZpbmQgciBcImluZGljZXNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjYyAoKiBoYXBwZW5zIGlmIHJlZ2V4cCBoYWQgbm8gW2RdIGZsYWcuICopXG4gICAgfCBTb21lIGEgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAxICgqIDAgaXMgdGhlIHdob2xlIG1hdGNoICopIHRvIEp2LkphcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBsZXQgcmFuZ2UgPSBKdi5KYXJyYXkuZ2V0IGEgaSBpblxuICAgICAgICAgIGxldCBzdGFydCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAwKSBpblxuICAgICAgICAgIGxldCBzdG9wID0gSnYudG9faW50IChKdi5KYXJyYXkuZ2V0IHJhbmdlIDEpIGluXG4gICAgICAgICAgYWNjIDo9IGYgfnN0YXJ0IH5zdG9wICFhY2NcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWFjY1xuXG4gICAgKCogTm8gaXRlcmF0b3IgcHJvdG9jb2wgb24gT2JqZWN0IG1lbWJlcnMgPyAqKVxuICAgIGxldCBvYmpfZW50cmllcyBqdiA9IEp2LmNhbGwgKEp2LmdldCBKdi5nbG9iYWwgXCJPYmplY3RcIikgXCJlbnRyaWVzXCIgW3wganYgfF1cbiAgICBsZXQgb2JqX2tleSBhID0gSnYuSmFycmF5LmdldCBhIDBcbiAgICBsZXQgb2JqX3ZhbHVlIGEgPSBKdi5KYXJyYXkuZ2V0IGEgMVxuXG4gICAgbGV0IGZvbGRfbmFtZWRfZ3JvdXBzIGYgciBhY2MgPSBtYXRjaCBKdi5maW5kIHIgXCJncm91cHNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSBncm91cHMgLT5cbiAgICAgICAgbGV0IGVudHJpZXMgPSBvYmpfZW50cmllcyBncm91cHMgaW5cbiAgICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEp2LkphcnJheS5sZW5ndGggZW50cmllcyAtIDEgZG9cbiAgICAgICAgICBsZXQgZW50cnkgPSBKdi5KYXJyYXkuZ2V0IGVudHJpZXMgaSBpblxuICAgICAgICAgIGxldCBtYXRjaCcgPSBvYmpfdmFsdWUgZW50cnkgaW5cbiAgICAgICAgICBpZiBKdi5pc191bmRlZmluZWQgbWF0Y2gnIHRoZW4gKCkgZWxzZVxuICAgICAgICAgIGxldCBuYW1lID0gSnYudG9fanN0ciAob2JqX2tleSBlbnRyeSkgaW5cbiAgICAgICAgICBhY2MgOj0gZiB+bmFtZSAoSnYudG9fanN0ciBtYXRjaCcpICFhY2NcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWFjY1xuXG4gICAgbGV0IGZvbGRfbmFtZWRfZ3JvdXBfaW5kaWNlcyBmIHIgYWNjID0gbWF0Y2ggSnYuZmluZCByIFwiaW5kaWNlc1wiIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjICgqIGhhcHBlbnMgaWYgcmVnZXhwIGhhZCBubyBbZF0gZmxhZy4gKilcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgICBtYXRjaCBKdi5maW5kIGEgXCJncm91cHNcIiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIGdyb3VwcyAtPlxuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBvYmpfZW50cmllcyBncm91cHMgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgICAgICBmb3IgaSA9IDAgdG8gSnYuSmFycmF5Lmxlbmd0aCBlbnRyaWVzIC0gMSBkb1xuICAgICAgICAgICAgICBsZXQgZW50cnkgPSBKdi5KYXJyYXkuZ2V0IGVudHJpZXMgaSBpblxuICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSBvYmpfdmFsdWUgZW50cnkgaW5cbiAgICAgICAgICAgICAgaWYgSnYuaXNfdW5kZWZpbmVkIHJhbmdlIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IEp2LnRvX2pzdHIgKG9ial9rZXkgZW50cnkpIGluXG4gICAgICAgICAgICAgIGxldCBzdGFydCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAwKSBpblxuICAgICAgICAgICAgICBsZXQgc3RvcCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAxKSBpblxuICAgICAgICAgICAgICBhY2MgOj0gZiB+bmFtZSB+c3RhcnQgfnN0b3AgIWFjY1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICFhY2NcbiAgZW5kXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgcmVnZXhwID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlJlZ0V4cFwiXG4gIGxldCBlc2NhcGUgcyA9IEp2LnRvX2pzdHIgKEp2LmNhbGwgcmVnZXhwIFwiZXNjYXBlXCIgSnYuW3xvZl9qc3RyIHN8XSlcbiAgbGV0IGNyZWF0ZSA/ZmxhZ3MgcyA9XG4gICAgbGV0IGZsYWdzID0gSnYub2Zfb3B0aW9uIH5ub25lOkp2LnVuZGVmaW5lZCBKdi5vZl9qc3RyIGZsYWdzIGluXG4gICAgSnYubmV3JyByZWdleHAgSnYuW3xvZl9qc3RyIHM7IGZsYWdzfF1cblxuICBsZXQgZXhlYyByIHMgPVxuICAgIEp2LnRvX29wdGlvbiBSZXN1bHQub2ZfanYgQEAgSnYuY2FsbCByIFwiZXhlY1wiIEp2Llt8b2ZfanN0ciBzfF1cblxuICBsZXQgbWF0Y2gnIHIgcyA9XG4gICAgSnYudG9fb3B0aW9uIFJlc3VsdC5vZl9qdiBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwibWF0Y2hcIiBKdi5bfHJ8XVxuXG4gIGxldCBmb2xkX21hdGNoZXMgciBmIHMgYWNjID1cbiAgICBsZXQgaXRlciA9IEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJtYXRjaEFsbFwiIEp2Llt8cnxdIGluXG4gICAgSnYuSXQuZm9sZCBSZXN1bHQub2ZfanYgZiBpdGVyIGFjY1xuXG4gIGxldCByZXBsYWNlIHIgfmJ5IHMgPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInJlcGxhY2VcIiBKdi5bfHI7IG9mX2pzdHIgYnl8XVxuXG4gIGxldCByZXBsYWNlX2FsbCByIH5ieSBzID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJyZXBsYWNlQWxsXCIgSnYuW3xyOyBvZl9qc3RyIGJ5fF1cblxuICBsZXQgc2VhcmNoIHIgcyA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJzZWFyY2hcIiBKdi5bfHJ8XVxuXG4gIGxldCBzcGxpdCA/bGltaXQgciBzID0gbWF0Y2ggbGltaXQgd2l0aFxuICB8IE5vbmUgLT4gSnYudG9fanN0cl9hcnJheSBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwic3BsaXRcIiBKdi5bfHJ8XVxuICB8IFNvbWUgbGltaXQgLT5cbiAgICAgIEp2LnRvX2pzdHJfYXJyYXkgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInNwbGl0XCIgSnYuW3xyOyBvZl9pbnQgbGltaXR8XVxuXG4gIGxldCB0ZXN0IHIgcyA9IEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwidGVzdFwiIEp2Llt8b2ZfanN0ciBzfF1cbiAgbGV0IGxhc3RfaW5kZXggciA9IEp2LkludC5nZXQgciBcImxhc3RJbmRleFwiXG4gIGxldCBzZXRfbGFzdF9pbmRleCByIGkgPSBKdi5JbnQuc2V0IHIgXCJsYXN0SW5kZXhcIiBpXG4gIGxldCBkb3RfYWxsIHIgPSBKdi5Cb29sLmdldCByIFwiZG90QWxsXCJcbiAgbGV0IGZsYWdzIHIgPSBKdi5Kc3RyLmdldCByIFwiZmxhZ3NcIlxuICBsZXQgZ2xvYmFsIHIgPSBKdi5Cb29sLmdldCByIFwiZ2xvYmFsXCJcbiAgbGV0IGhhc19pbmRpY2VzIHIgPSBKdi5Cb29sLmdldCByIFwiaGFzSW5kaWNlc1wiXG4gIGxldCBpZ25vcmVfY2FzZSByID0gSnYuQm9vbC5nZXQgciBcImlnbm9yZUNhc2VcIlxuICBsZXQgbXVsdGlsaW5lIHIgPSBKdi5Cb29sLmdldCByIFwibXVsdGlsaW5lXCJcbiAgbGV0IHNvdXJjZSByID0gSnYuSnN0ci5nZXQgciBcInNvdXJjZVwiXG4gIGxldCBzdGlja3kgciA9IEp2LkJvb2wuZ2V0IHIgXCJzdGlja3lcIlxuICBsZXQgdW5pY29kZSByID0gSnYuQm9vbC5nZXQgciBcInVuaWNvZGVcIlxuICBsZXQgdW5pY29kZV9zZXRzIHIgPSBKdi5Cb29sLmdldCByIFwidW5pY29kZVNldHNcIlxuZW5kXG5cblxuKCogRE9NIGludGVyYWN0aW9uICopXG5cbm1vZHVsZSBBdCA9IHN0cnVjdFxuICB0eXBlIG5hbWUgPSBKc3RyLnRcbiAgdHlwZSB0ID0gbmFtZSAqIEpzdHIudFxuICBsZXRbQGlubGluZV0gdiBuIHYgPSAobiwgdilcbiAgbGV0IHZvaWQgPSAoSnN0ci5lbXB0eSwgSnN0ci5lbXB0eSlcbiAgbGV0IGlzX3ZvaWQgKG4sIHYpID0gSnN0ci5pc19lbXB0eSBuICYmIEpzdHIuaXNfZW1wdHkgdlxuICBsZXQgaWYnIGIgYXQgPSBpZiBiIHRoZW4gYXQgZWxzZSB2b2lkXG4gIGxldCBpZl9zb21lID0gZnVuY3Rpb24gTm9uZSAtPiB2b2lkIHwgU29tZSBhdCAtPiBhdFxuICBsZXQgdHJ1ZScgbiA9IChuLCBKc3RyLmVtcHR5KVxuICBsZXQgaW50IG4gaSA9IChuLCBKc3RyLm9mX2ludCBpKVxuICBsZXQgZmxvYXQgbiBmID0gKG4sIEpzdHIub2ZfZmxvYXQgZilcbiAgbGV0IHRvX3BhaXIgPSBGdW4uaWRcbiAgbGV0IGFkZF9pZiBiIGF0IGwgPSBpZiBiIHRoZW4gYXQgOjogbCBlbHNlIGxcbiAgbGV0IGFkZF9pZl9zb21lIG5hbWUgbyBsID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gbCB8IFNvbWUgYSAtPiAobmFtZSwgYSkgOjogbFxuICBtb2R1bGUgTmFtZSA9IHN0cnVjdFxuICAgIGxldCBhY2Nlc3NrZXkgPSBKc3RyLnYgXCJhY2Nlc3NrZXlcIlxuICAgIGxldCBhY3Rpb24gPSBKc3RyLnYgXCJhY3Rpb25cIlxuICAgIGxldCBhdXRvY29tcGxldGUgPSBKc3RyLnYgXCJhdXRvY29tcGxldGVcIlxuICAgIGxldCBhdXRvZm9jdXMgPSBKc3RyLnYgXCJhdXRvZm9jdXNcIlxuICAgIGxldCBjaGFyc2V0ID0gSnN0ci52IFwiY2hhcnNldFwiXG4gICAgbGV0IGNoZWNrZWQgPSBKc3RyLnYgXCJjaGVja2VkXCJcbiAgICBsZXQgY2xhc3MnID0gSnN0ci52IFwiY2xhc3NcIlxuICAgIGxldCBjb2xzID0gSnN0ci52IFwiY29sc1wiXG4gICAgbGV0IGNvbnRlbnQgPSBKc3RyLnYgXCJjb250ZW50XCJcbiAgICBsZXQgY29udGVudGVkaXRhYmxlID0gSnN0ci52IFwiY29udGVudGVkaXRhYmxlXCJcbiAgICBsZXQgZGVmZXIgPSBKc3RyLnYgXCJkZWZlclwiXG4gICAgbGV0IGRpciA9IEpzdHIudiBcImRpclwiXG4gICAgbGV0IGRpc2FibGVkID0gSnN0ci52IFwiZGlzYWJsZWRcIlxuICAgIGxldCBkb3dubG9hZCA9IEpzdHIudiBcImRvd25sb2FkXCJcbiAgICBsZXQgZHJhZ2dhYmxlID0gSnN0ci52IFwiZHJhZ2dhYmxlXCJcbiAgICBsZXQgZm9yJyA9IEpzdHIudiBcImZvclwiXG4gICAgbGV0IGhlaWdodCA9IEpzdHIudiBcImhlaWdodFwiXG4gICAgbGV0IGhpZGRlbiA9IEpzdHIudiBcImhpZGRlblwiXG4gICAgbGV0IGhyZWYgPSBKc3RyLnYgXCJocmVmXCJcbiAgICBsZXQgaWQgPSBKc3RyLnYgXCJpZFwiXG4gICAgbGV0IGxhbmcgPSBKc3RyLnYgXCJsYW5nXCJcbiAgICBsZXQgbGlzdCA9IEpzdHIudiBcImxpc3RcIlxuICAgIGxldCBtZWRpYSA9IEpzdHIudiBcIm1lZGlhXCJcbiAgICBsZXQgbWV0aG9kJyA9IEpzdHIudiBcIm1ldGhvZFwiXG4gICAgbGV0IG5hbWUgPSBKc3RyLnYgXCJuYW1lXCJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSBKc3RyLnYgXCJwbGFjZWhvbGRlclwiXG4gICAgbGV0IHJlbCA9IEpzdHIudiBcInJlbFwiXG4gICAgbGV0IHJlcXVpcmVkID0gSnN0ci52IFwicmVxdWlyZWRcIlxuICAgIGxldCByb3dzID0gSnN0ci52IFwicm93c1wiXG4gICAgbGV0IHNlbGVjdGVkID0gSnN0ci52IFwic2VsZWN0ZWRcIlxuICAgIGxldCBzcGVsbGNoZWNrID0gSnN0ci52IFwic3BlbGxjaGVja1wiXG4gICAgbGV0IHNyYyA9IEpzdHIudiBcInNyY1wiXG4gICAgbGV0IHN0eWxlID0gSnN0ci52IFwic3R5bGVcIlxuICAgIGxldCB0YWJpbmRleCA9IEpzdHIudiBcInRhYmluZGV4XCJcbiAgICBsZXQgdGl0bGUgPSBKc3RyLnYgXCJ0aXRsZVwiXG4gICAgbGV0IHR5cGUnID0gSnN0ci52IFwidHlwZVwiXG4gICAgbGV0IHZhbHVlID0gSnN0ci52IFwidmFsdWVcIlxuICAgIGxldCB3aWR0aCA9IEpzdHIudiBcIndpZHRoXCJcbiAgICBsZXQgd3JhcCA9IEpzdHIudiBcIndyYXBcIlxuICBlbmRcbiAgdHlwZSAnYSBjb25zID0gJ2EgLT4gdFxuICBsZXQgYWNjZXNza2V5IHMgPSB2IE5hbWUuYWNjZXNza2V5IHNcbiAgbGV0IGFjdGlvbiBzID0gdiBOYW1lLmFjdGlvbiBzXG4gIGxldCBhdXRvY29tcGxldGUgcyA9IHYgTmFtZS5hdXRvY29tcGxldGUgc1xuICBsZXQgYXV0b2ZvY3VzID0gdHJ1ZScgTmFtZS5hdXRvZm9jdXNcbiAgbGV0IGNoYXJzZXQgPSB2IE5hbWUuY2hhcnNldFxuICBsZXQgY2hlY2tlZCA9IHRydWUnIE5hbWUuY2hlY2tlZFxuICBsZXQgY2xhc3MnIHMgPSB2IE5hbWUuY2xhc3MnIHNcbiAgbGV0IGNvbHMgaSA9IGludCBOYW1lLmNvbHMgaVxuICBsZXQgY29udGVudCBzID0gdiBOYW1lLmNvbnRlbnQgc1xuICBsZXQgY29udGVudGVkaXRhYmxlIHMgPSB0cnVlJyBOYW1lLmNvbnRlbnRlZGl0YWJsZVxuICBsZXQgZGVmZXIgPSB0cnVlJyBOYW1lLmRlZmVyXG4gIGxldCBkaXIgcyA9IHYgTmFtZS5kaXIgc1xuICBsZXQgZGlzYWJsZWQgPSB0cnVlJyBOYW1lLmRpc2FibGVkXG4gIGxldCBkb3dubG9hZCBzID0gdiBOYW1lLmRvd25sb2FkIHNcbiAgbGV0IGRyYWdnYWJsZSBzID0gdiBOYW1lLmRyYWdnYWJsZSBzXG4gIGxldCBmb3InIHMgPSB2IE5hbWUuZm9yJyBzXG4gIGxldCBoZWlnaHQgaSA9IGludCBOYW1lLmhlaWdodCBpXG4gIGxldCBoaWRkZW4gPSB0cnVlJyBOYW1lLmhpZGRlblxuICBsZXQgaHJlZiBzID0gdiBOYW1lLmhyZWYgc1xuICBsZXQgaWQgcyA9IHYgTmFtZS5pZCBzXG4gIGxldCBsYW5nIHMgPSB2IE5hbWUubGFuZyBzXG4gIGxldCBsaXN0IHMgPSB2IE5hbWUubGlzdCBzXG4gIGxldCBtZWRpYSBzID0gdiBOYW1lLm1lZGlhIHNcbiAgbGV0IG1ldGhvZCcgcyA9IHYgTmFtZS5tZXRob2QnIHNcbiAgbGV0IG5hbWUgcyA9IHYgTmFtZS5uYW1lIHNcbiAgbGV0IHBsYWNlaG9sZGVyIHMgPSB2IE5hbWUucGxhY2Vob2xkZXIgc1xuICBsZXQgcmVsIHMgPSB2IE5hbWUucmVsIHNcbiAgbGV0IHJlcXVpcmVkID0gdHJ1ZScgTmFtZS5yZXF1aXJlZFxuICBsZXQgcm93cyBpID0gaW50IE5hbWUucm93cyBpXG4gIGxldCBzZWxlY3RlZCA9IHRydWUnIE5hbWUuc2VsZWN0ZWRcbiAgbGV0IHNwZWxsY2hlY2sgPSB2IE5hbWUuc3BlbGxjaGVja1xuICBsZXQgc3JjIHMgPSB2IE5hbWUuc3JjIHNcbiAgbGV0IHN0eWxlIHMgPSB2IE5hbWUuc3R5bGUgc1xuICBsZXQgdGFiaW5kZXggaSA9IGludCBOYW1lLnRhYmluZGV4IGlcbiAgbGV0IHRpdGxlIHMgPSB2IE5hbWUudGl0bGUgc1xuICBsZXQgdHlwZScgcyA9IHYgTmFtZS50eXBlJyBzXG4gIGxldCB2YWx1ZSBzID0gdiBOYW1lLnZhbHVlIHNcbiAgbGV0IHdpZHRoIGkgPSBpbnQgTmFtZS53aWR0aCBpXG4gIGxldCB3cmFwIHMgPSB2IE5hbWUud3JhcCBzXG5lbmRcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIHR5cGUgZG9jdW1lbnQgPSBKdi50XG4gIHR5cGUgd2luZG93ID0gSnYudFxuICB0eXBlIHRhZ19uYW1lID0gSnN0ci50XG4gIHR5cGUgZWwgPSBKdi50XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGdsb2JhbF9kb2N1bWVudCA9IEp2LmdldCBKdi5nbG9iYWwgXCJkb2N1bWVudFwiXG4gIGxldCBkb2N1bWVudCBlID0gSnYuZ2V0IGUgXCJvd25lckRvY3VtZW50XCJcbiAgbGV0IGdsb2JhbF9yb290ID1cbiAgICBpZiBKdi5pc19ub25lIGdsb2JhbF9kb2N1bWVudCB0aGVuICgqIGUuZy4gd2ViIHdvcmtlciAqKSBKdi51bmRlZmluZWQgZWxzZVxuICAgIEp2LmdldCBnbG9iYWxfZG9jdW1lbnQgXCJkb2N1bWVudEVsZW1lbnRcIlxuXG4gIGxldCBlbF9saXN0X29mX25vZGVfbGlzdCBubCA9XG4gICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgIGxldCBsZW4gPSBKdi5JbnQuZ2V0IG5sIFwibGVuZ3RoXCIgaW5cbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG8gYWNjIDo9IEp2LkphcnJheS5nZXQgbmwgaSA6OiAhYWNjIGRvbmU7XG4gICAgIWFjY1xuXG4gIGxldCBhcHBlbmRfY2hpbGQgZSBuID0gaWdub3JlIChKdi5jYWxsIGUgXCJhcHBlbmRDaGlsZFwiIFt8IG4gfF0pXG5cbiAgbGV0IHJlYyBzZXRfYXR0cyBlIHNzIGNsc3MgPSBmdW5jdGlvblxuICB8IChhLCB2KSA6OiBhdCAtPlxuICAgICAgaWYgSnN0ci5pc19lbXB0eSBhIHRoZW4gc2V0X2F0dHMgZSBzcyBjbHNzIGF0IGVsc2VcbiAgICAgIGlmIEpzdHIuZXF1YWwgYSBBdC5OYW1lLnN0eWxlIHRoZW4gc2V0X2F0dHMgZSAodiA6OiBzcykgY2xzcyBhdCBlbHNlXG4gICAgICBpZiBKc3RyLmVxdWFsIGEgQXQuTmFtZS5jbGFzcycgdGhlblxuICAgICAgICBzZXRfYXR0cyBlIHNzIChpZiBKc3RyLmlzX2VtcHR5IHYgdGhlbiBjbHNzIGVsc2UgdiA6OiBjbHNzKSBhdFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgZSBcInNldEF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhOyBvZl9qc3RyIHZ8XSk7XG4gICAgICAgIHNldF9hdHRzIGUgc3MgY2xzcyBhdFxuICAgICAgZW5kXG4gIHwgW10gLT5cbiAgICAgIGlmIHNzIDw+IFtdIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGEgPSBBdC5OYW1lLnN0eWxlIGluXG4gICAgICAgIGxldCB2ID0gSnN0ci5jb25jYXQgfnNlcDooSnN0ci52IFwiO1wiKSAoTGlzdC5yZXYgc3MpIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKTtcbiAgICAgIGVuZDtcbiAgICAgIGlmIGNsc3MgPD4gW10gdGhlbiBiZWdpblxuICAgICAgICBsZXQgYSA9IEF0Lk5hbWUuY2xhc3MnIGluXG4gICAgICAgIGxldCB2ID0gSnN0ci5jb25jYXQgfnNlcDooSnN0ci52IFwiIFwiKSAoTGlzdC5yZXYgY2xzcykgaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pXG4gICAgICBlbmRcblxuICBsZXQgdiA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpID8oYXQgPSBbXSkgbmFtZSBjcyA9XG4gICAgbGV0IGUgPSBKdi5jYWxsIGQgXCJjcmVhdGVFbGVtZW50XCIgW3wgSnYub2ZfanN0ciBuYW1lIHxdIGluXG4gICAgc2V0X2F0dHMgZSBbXSBbXSBhdDtcbiAgICBMaXN0Lml0ZXIgKGFwcGVuZF9jaGlsZCBlKSBjcztcbiAgICBlXG5cbiAgbGV0IHR4dCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpIHMgPVxuICAgIEp2LmNhbGwgZCBcImNyZWF0ZVRleHROb2RlXCIgW3xKdi5vZl9qc3RyIHN8XVxuXG4gIGxldCB0eHQnID8oZCA9IGdsb2JhbF9kb2N1bWVudCkgcyA9XG4gICAgSnYuY2FsbCBkIFwiY3JlYXRlVGV4dE5vZGVcIiBbfCBKdi5vZl9zdHJpbmcgcyB8XVxuXG4gIGxldCBzcCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpICgpID0gdHh0IChKc3RyLnYgXCIgXCIpXG4gIGxldCBuYnNwID8oZCA9IGdsb2JhbF9kb2N1bWVudCkgKCkgPSB0eHQgKEpzdHIudiBcIlxcdXswMEEwfVwiKVxuXG4gIGxldCBpc190eHQgZSA9IEp2LkludC5nZXQgZSBcIm5vZGVUeXBlXCIgPSAzXG4gIGxldCBpc19lbCBlID0gSnYuSW50LmdldCBlIFwibm9kZVR5cGVcIiA9IDFcbiAgbGV0IHRhZ19uYW1lIGUgPSBKc3RyLmxvd2VyY2FzZWQgQEAgSnYuSnN0ci5nZXQgZSBcIm5vZGVOYW1lXCJcbiAgbGV0IGhhc190YWdfbmFtZSBuIGUgPSBKc3RyLmVxdWFsIG4gKHRhZ19uYW1lIGUpXG4gIGxldCB0eHRfdGV4dCB0eHQgPSBtYXRjaCBpc190eHQgdHh0IHdpdGhcbiAgfCB0cnVlIC0+IEp2LkpzdHIuZ2V0IHR4dCBcIm5vZGVWYWx1ZVwiXG4gIHwgZmFsc2UgLT4gSnN0ci5lbXB0eVxuXG4gIGxldCB0ZXh0X2NvbnRlbnQgZSA9IEp2LkpzdHIuZ2V0IGUgXCJ0ZXh0Q29udGVudFwiXG5cbiAgZXh0ZXJuYWwgYXNfdGFyZ2V0IDogdCAtPiBFdi50YXJnZXQgPSBcIiVpZGVudGl0eVwiXG5cbiAgKCogRWxlbWVudCBsb29rdXBzICopXG5cbiAgbGV0IGZpbmRfYnlfY2xhc3MgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIGMgPVxuICAgIGVsX2xpc3Rfb2Zfbm9kZV9saXN0IEBAXG4gICAgSnYuY2FsbCByb290IFwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVwiIFt8IEp2Lm9mX2pzdHIgYyB8XVxuXG4gIGxldCBmaW5kX2J5X3RhZ19uYW1lID8ocm9vdCA9IGdsb2JhbF9yb290KSBuID1cbiAgICBlbF9saXN0X29mX25vZGVfbGlzdCBAQFxuICAgIEp2LmNhbGwgcm9vdCBcImdldEVsZW1lbnRzQnlUYWdOYW1lXCIgW3wgSnYub2ZfanN0ciBuIHxdXG5cbiAgbGV0IGZpbmRfZmlyc3RfYnlfc2VsZWN0b3IgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIHNlbCA9XG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IEBAIEp2LmNhbGwgcm9vdCBcInF1ZXJ5U2VsZWN0b3JcIiBbfCBKdi5vZl9qc3RyIHNlbCB8XVxuXG4gIGxldCBmb2xkX2ZpbmRfYnlfc2VsZWN0b3IgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIGYgc2VsIGFjYyA9XG4gICAgbGV0IG5sID0gSnYuY2FsbCByb290IFwicXVlcnlTZWxlY3RvckFsbFwiIFt8IEp2Lm9mX2pzdHIgc2VsIHxdIGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDAgdG8gKEp2LkludC5nZXQgbmwgXCJsZW5ndGhcIikgLSAxIGRvXG4gICAgICBhY2MgOj0gZiAob2ZfanYgKEp2LkphcnJheS5nZXQgbmwgaSkpICFhY2NcbiAgICBkb25lO1xuICAgICFhY2NcblxuICAoKiBQYXJlbnQgYW5kIGNoaWxkcmVuICopXG5cbiAgbGV0IHBhcmVudCBlID0gbWF0Y2ggSnYuZmluZCBlIFwicGFyZW50Tm9kZVwiIHdpdGhcbiAgfCBTb21lIGUgd2hlbiBpc19lbCBlIC0+IFNvbWUgZVxuICB8IF8gLT4gTm9uZVxuXG4gIGxldCBkZWxldGVfY2hpbGRyZW4gZSA9XG4gICAgd2hpbGUgbm90IChKdi5pc19udWxsIChKdi5nZXQgZSBcImZpcnN0Q2hpbGRcIikpIGRvXG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBlIFwicmVtb3ZlQ2hpbGRcIiBbfCBKdi5nZXQgZSBcImZpcnN0Q2hpbGRcIiB8XTtcbiAgICBkb25lXG5cbiAgbGV0IGNoaWxkcmVuID8ob25seV9lbHMgPSBmYWxzZSkgZSA9IG1hdGNoIG9ubHlfZWxzIHdpdGhcbiAgfCB0cnVlIC0+IGVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5nZXQgZSBcImNoaWxkcmVuXCIpXG4gIHwgZmFsc2UgLT4gZWxfbGlzdF9vZl9ub2RlX2xpc3QgKEp2LmdldCBlIFwiY2hpbGROb2Rlc1wiKVxuXG4gIGxldCBzZXRfY2hpbGRyZW4gZSBsID0gZGVsZXRlX2NoaWxkcmVuIGU7IExpc3QuaXRlciAoYXBwZW5kX2NoaWxkIGUpIGxcbiAgbGV0IGFwcGVuZF9jaGlsZCBlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwiYXBwZW5kQ2hpbGRcIiBbfCBjIHxdXG5cbiAgbGV0IHByZXBlbmRfY2hpbGRyZW4gZSBsID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInByZXBlbmRcIiAoQXJyYXkub2ZfbGlzdCBsKVxuICBsZXQgYXBwZW5kX2NoaWxkcmVuIGUgbCA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJhcHBlbmRcIiAoQXJyYXkub2ZfbGlzdCBsKVxuICBsZXQgcHJldmlvdXNfc2libGluZyBlID0gSnYuZmluZCBlIFwicHJldmlvdXNFbGVtZW50U2libGluZ1wiXG4gIGxldCBuZXh0X3NpYmxpbmcgZSA9IEp2LmZpbmQgZSBcIm5leHRFbGVtZW50U2libGluZ1wiXG4gIGxldCBpbnNlcnRfc2libGluZ3MgbG9jIGUgbCA9IGlnbm9yZSBAQCBtYXRjaCBsb2Mgd2l0aFxuICB8IGBCZWZvcmUgLT4gSnYuY2FsbCBlIFwiYmVmb3JlXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgfCBgQWZ0ZXIgLT4gIEp2LmNhbGwgZSBcImFmdGVyXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgfCBgUmVwbGFjZSAtPiBKdi5jYWxsIGUgXCJyZXBsYWNlV2l0aFwiIChBcnJheS5vZl9saXN0IGwpXG5cbiAgbGV0IHJlbW92ZSBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlbW92ZVwiIFt8IGUgfF1cblxuICAoKiBBdHRyaWJ1dGVzICopXG5cbiAgbGV0IGF0IGEgZSA9XG4gICAgSnYudG9fb3B0aW9uIEp2LnRvX2pzdHIgKEp2LmNhbGwgZSBcImdldEF0dHJpYnV0ZVwiIFt8SnYub2ZfanN0ciBhfF0pXG5cbiAgbGV0IHNldF9hdCBhIHYgZSA9XG4gICAgaWYgSnN0ci5pc19lbXB0eSBhIHRoZW4gKCkgZWxzZVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgTm9uZSAtPiBpZ25vcmUgKEp2LmNhbGwgZSBcInJlbW92ZUF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhfF0pXG4gICAgfCBTb21lIHYgLT4gaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pXG5cbiAgKCogUHJvcGVydGllcyAqKVxuXG4gIG1vZHVsZSBQcm9wID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbiA6IEpzdHIudDtcbiAgICAgICAganZfdG8gOiBKdi50IC0+ICdhO1xuICAgICAgICBqdl9vZiA6ICdhIC0+IEp2LnQ7IH1cblxuICAgIGxldCBqdl90b19ib29sIGIgPSBpZiBKdi5pc191bmRlZmluZWQgYiB0aGVuIGZhbHNlIGVsc2UgSnYudG9fYm9vbCBiXG4gICAgbGV0IGp2X3RvX2ludCBpID0gaWYgSnYuaXNfdW5kZWZpbmVkIGkgdGhlbiAwIGVsc2UgSnYudG9faW50IGlcbiAgICBsZXQganZfdG9fZmxvYXQgZiA9IGlmIEp2LmlzX3VuZGVmaW5lZCBmIHRoZW4gMC4gZWxzZSBKdi50b19mbG9hdCBmXG4gICAgbGV0IGp2X3RvX2pzdHIgcyA9IGlmIEp2LmlzX3VuZGVmaW5lZCBzIHRoZW4gSnN0ci5lbXB0eSBlbHNlIEp2LnRvX2pzdHIgc1xuXG4gICAgbGV0IGJvb2wgbiA9IHsgbjsganZfdG8gPSBqdl90b19ib29sIDsganZfb2YgPSBKdi5vZl9ib29sIH1cbiAgICBsZXQgaW50IG4gPSB7IG47IGp2X3RvID0ganZfdG9faW50IDsganZfb2YgPSBKdi5vZl9pbnQgfVxuICAgIGxldCBmbG9hdCBuID0geyBuOyBqdl90byA9IGp2X3RvX2Zsb2F0IDsganZfb2YgPSBKdi5vZl9mbG9hdCB9XG4gICAgbGV0IGpzdHIgbiA9IHsgbjsganZfdG8gPSBqdl90b19qc3RyIDsganZfb2YgPSBKdi5vZl9qc3RyIH1cblxuICAgIGxldCBjaGVja2VkID0gYm9vbCAoSnN0ci52IFwiY2hlY2tlZFwiKVxuICAgIGxldCBoZWlnaHQgPSBpbnQgKEpzdHIudiBcImhlaWdodFwiKVxuICAgIGxldCBoaWRkZW4gPSBib29sIChKc3RyLnYgXCJoaWRkZW5cIilcbiAgICBsZXQgaWQgPSBqc3RyIChKc3RyLnYgXCJpZFwiKVxuICAgIGxldCBuYW1lID0ganN0ciAoSnN0ci52IFwibmFtZVwiKVxuICAgIGxldCB0aXRsZSA9IGpzdHIgKEpzdHIudiBcInRpdGxlXCIpXG4gICAgbGV0IHZhbHVlID0ganN0ciAoSnN0ci52IFwidmFsdWVcIilcbiAgICBsZXQgd2lkdGggPSBpbnQgKEpzdHIudiBcIndpZHRoXCIpXG4gIGVuZFxuXG4gIGxldCBwcm9wIHAgZSA9IHAuUHJvcC5qdl90byBAQCBKdi5nZXQnIGUgcC5Qcm9wLm5cbiAgbGV0IHNldF9wcm9wIHAgdiBlID0gaWdub3JlIEBAIEp2LnNldCcgZSBwLlByb3AubiAocC5Qcm9wLmp2X29mIHYpXG5cbiAgKCogQ2xhc3MgKilcblxuICBsZXQgY2xhc3MnIGMgZSA9XG4gICAgSnYudG9fYm9vbCAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJjb250YWluc1wiIFt8SnYub2ZfanN0ciBjfF0pXG5cbiAgbGV0IHNldF9jbGFzcyBjIGIgZSA9IG1hdGNoIGIgd2l0aFxuICB8IHRydWUgLT4gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgZSBcImNsYXNzTGlzdFwiKSBcImFkZFwiIFt8SnYub2ZfanN0ciBjfF0pXG4gIHwgZmFsc2UgLT4gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgZSBcImNsYXNzTGlzdFwiKSBcInJlbW92ZVwiIFt8SnYub2ZfanN0ciBjfF0pXG5cbiAgKCogU3R5bGUgKilcblxuICBtb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHByb3AgPSBKc3RyLnRcbiAgICBsZXQgYmFja2dyb3VuZF9jb2xvciA9IEpzdHIudiBcImJhY2tncm91bmQtY29sb3JcIlxuICAgIGxldCBib3R0b20gPSBKc3RyLnYgXCJib3R0b21cIlxuICAgIGxldCBjb2xvciA9IEpzdHIudiBcImNvbG9yXCJcbiAgICBsZXQgY3Vyc29yID0gSnN0ci52IFwiY3Vyc29yXCJcbiAgICBsZXQgZGlzcGxheSA9IEpzdHIudiBcImRpc3BsYXlcIlxuICAgIGxldCBoZWlnaHQgPSBKc3RyLnYgXCJoZWlnaHRcIlxuICAgIGxldCBsZWZ0ID0gSnN0ci52IFwibGVmdFwiXG4gICAgbGV0IHBvc2l0aW9uID0gSnN0ci52IFwicG9zaXRpb25cIlxuICAgIGxldCByaWdodCA9IEpzdHIudiBcInJpZ2h0XCJcbiAgICBsZXQgdG9wID0gSnN0ci52IFwidG9wXCJcbiAgICBsZXQgdmlzaWJpbGl0eSA9IEpzdHIudiBcInZpc2liaWxpdHlcIlxuICAgIGxldCB3aWR0aCA9IEpzdHIudiBcIndpZHRoXCJcbiAgICBsZXQgel9pbmRleCA9IEpzdHIudiBcInotaW5kZXhcIlxuICAgIGxldCB6b29tID0gSnN0ci52IFwiem9vbVwiXG4gIGVuZFxuXG4gIGxldCBjb21wdXRlZF9zdHlsZSA/KHcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwid2luZG93XCIpIHAgZSA9XG4gICAgbGV0IHN0eWxlID0gSnYuY2FsbCB3IFwiZ2V0Q29tcHV0ZWRTdHlsZVwiIFt8ZXxdIGluXG4gICAgbGV0IHYgPSBKdi5nZXQnIHN0eWxlIHAgaW5cbiAgICBpZiBKdi5pc19ub25lIHYgdGhlbiBKc3RyLmVtcHR5IGVsc2UgSnYudG9fanN0ciB2XG5cbiAgbGV0IGlubGluZV9zdHlsZSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiBKc3RyLmVtcHR5IGVsc2VcbiAgICBsZXQgdiA9IEp2LmdldCcgc3R5bGUgcCBpblxuICAgIGlmIEp2LmlzX25vbmUgdiB0aGVuIEpzdHIuZW1wdHkgZWxzZSBKdi50b19qc3RyIHZcblxuICBsZXQgc2V0X2lubGluZV9zdHlsZSA/KGltcG9ydGFudCA9IGZhbHNlKSBwIHYgZSA9XG4gICAgbGV0IHByaW9yaXR5ID0gaWYgaW1wb3J0YW50IHRoZW4gSnN0ci52IFwiaW1wb3J0YW50XCIgZWxzZSBKc3RyLmVtcHR5IGluXG4gICAgbGV0IHN0eWxlID0gSnYuZ2V0IGUgXCJzdHlsZVwiIGluXG4gICAgaWYgSnYuaXNfbm9uZSBzdHlsZSB0aGVuICgpIGVsc2VcbiAgICAoaWdub3JlIEBAXG4gICAgIEp2LmNhbGwgc3R5bGUgXCJzZXRQcm9wZXJ0eVwiIEp2Llt8b2ZfanN0ciBwOyBvZl9qc3RyIHY7IG9mX2pzdHIgcHJpb3JpdHl8XSlcblxuICBsZXQgcmVtb3ZlX2lubGluZV9zdHlsZSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiAoKSBlbHNlXG4gICAgKGlnbm9yZSBAQCBKdi5jYWxsIHN0eWxlIFwicmVtb3ZlUHJvcGVydHlcIiBKdi5bfG9mX2pzdHIgcHxdKVxuXG4gICgqIExheW91dCAqKVxuXG4gIGxldCBpbm5lcl94IGUgPSBKdi5GbG9hdC5nZXQgZSBcImNsaWVudExlZnRcIlxuICBsZXQgaW5uZXJfeSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRUb3BcIlxuICBsZXQgaW5uZXJfdyBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRXaWR0aFwiXG4gIGxldCBpbm5lcl9oIGUgPSBKdi5GbG9hdC5nZXQgZSBcImNsaWVudEhlaWdodFwiXG4gIGxldCBib3VuZF94IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwieFwiXG4gIGxldCBib3VuZF95IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwieVwiXG4gIGxldCBib3VuZF93IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwid2lkdGhcIlxuICBsZXQgYm91bmRfaCBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcImhlaWdodFwiXG5cbiAgKCogT2Zmc2V0ICopXG5cbiAgbGV0IG9mZnNldF93IGUgPSBKdi5JbnQuZ2V0IGUgXCJvZmZzZXRXaWR0aFwiXG4gIGxldCBvZmZzZXRfaCBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0SGVpZ2h0XCJcblxuICBsZXQgb2Zmc2V0X2xlZnQgZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldExlZnRcIlxuICBsZXQgb2Zmc2V0X3RvcCBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0VG9wXCJcblxuICBsZXQgb2Zmc2V0X3BhcmVudCBlID0gSnYuZ2V0IGUgXCJvZmZzZXRQYXJlbnRcIiB8PiBKdi50b19vcHRpb24gb2ZfanZcblxuICAoKiBTY3JvbGxpbmcgKilcblxuICBsZXQgc2Nyb2xsX3ggZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsTGVmdFwiXG4gIGxldCBzY3JvbGxfeSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJzY3JvbGxUb3BcIlxuICBsZXQgc2Nyb2xsX3cgZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsV2lkdGhcIlxuICBsZXQgc2Nyb2xsX2ggZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsSGVpZ2h0XCJcblxuICBsZXQgc2Nyb2xsX2ludG9fdmlldyA/KGFsaWduX3YgPSBgU3RhcnQpID9iZWhhdmlvciBlID1cbiAgICBsZXQgYWxpZ24gPSBtYXRjaCBhbGlnbl92IHdpdGhcbiAgICAgIHwgYFN0YXJ0IC0+IFwic3RhcnRcIlxuICAgICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICAgIHwgYE5lYXJlc3QgLT4gXCJuZWFyZXN0XCJcbiAgICAgIHwgYEVuZCAtPiBcImVuZFwiXG4gICAgaW5cbiAgICBsZXQgYmVoYXZpb3IgPVxuICAgICAgSnYub2Zfb3B0aW9uIH5ub25lOkp2Lm51bGwgSnYub2Zfc3RyaW5nIEBAXG4gICAgICAgIE9wdGlvbi5tYXAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTbW9vdGggLT4gXCJzbW9vdGhcIlxuICAgICAgICAgICAgfCBgSW5zdGFudCAtPiBcImluc3RhbnRcIlxuICAgICAgICAgICAgfCBgQXV0byAtPiBcImF1dG9cIilcbiAgICAgICAgICBiZWhhdmlvclxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPSBKdi5vYmogW3xcImJsb2NrXCIsIEp2Lm9mX3N0cmluZyBhbGlnbjsgXCJiZWhhdmlvclwiICwgYmVoYXZpb3IgfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBlIFwic2Nyb2xsSW50b1ZpZXdcIiBbfCBvcHRpb25zIHxdXG5cbiAgKCogRm9jdXMgKilcblxuICBsZXQgaGFzX2ZvY3VzIGUgPVxuICAgIG1hdGNoIEp2LnRvX29wdGlvbiBGdW4uaWQgKEp2LmdldCAoZG9jdW1lbnQgZSkgXCJhY3RpdmVFbGVtZW50XCIpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2UgfCBTb21lIGUnIC0+IGUgPT0gZSdcblxuICBsZXQgc2V0X2hhc19mb2N1cyBiIGUgPVxuICAgIGlnbm9yZSAoaWYgYiB0aGVuIEp2LmNhbGwgZSBcImZvY3VzXCIgW3x8XSBlbHNlIEp2LmNhbGwgZSBcImJsdXJcIiBbfHxdKVxuXG4gICgqIFBvaW50ZXIgbG9ja2luZyAqKVxuXG4gIGxldCBpc19sb2NraW5nX3BvaW50ZXIgZSA9XG4gICAgbWF0Y2ggSnYudG9fb3B0aW9uIEZ1bi5pZCAoSnYuZ2V0IChkb2N1bWVudCBlKSBcInBvaW50ZXJMb2NrRWxlbWVudFwiKSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBlJyAtPiBlID09IGUnXG5cbiAgbGV0IHJlcXVlc3RfcG9pbnRlcl9sb2NrIGUgPVxuICAgIGxldCBmdXQsIHNldCA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgZCA9IChPYmoubWFnaWMgZG9jdW1lbnQgZSA6IEV2LnRhcmdldCkgaW5cbiAgICBsZXQgb3B0cyA9IEV2Lmxpc3Rlbl9vcHRzIH5vbmNlOnRydWUgKCkgaW5cbiAgICBsZXQgdW5saXN0ZW4gPSByZWYgKGZ1biAoKSAtPiAoKSkgaW5cbiAgICBsZXQgbG9ja2VkIF9ldiA9IHNldCAoT2sgKCkpOyAhdW5saXN0ZW4gKClcbiAgICBhbmQgZXJyb3IgX2V2ID1cbiAgICAgIGxldCBlcnIgPSBKdi5FcnJvci52IChKc3RyLnYgXCJDb3VsZCBub3QgbG9jayBwb2ludGVyXCIpIGluXG4gICAgICBzZXQgKEVycm9yIGVycik7ICF1bmxpc3RlbiAoKVxuICAgIGluXG4gICAgbGV0IGsgPSBFdi5saXN0ZW4gfm9wdHMgRXYucG9pbnRlcmxvY2tjaGFuZ2UgbG9ja2VkIGQgaW5cbiAgICBsZXQgaycgPSBFdi5saXN0ZW4gfm9wdHMgRXYucG9pbnRlcmxvY2tlcnJvciBlcnJvciBkIGluXG4gICAgdW5saXN0ZW4gOj0gKGZ1biAoKSAtPiBFdi51bmxpc3RlbiBrOyBFdi51bmxpc3RlbiBrJyk7XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlcXVlc3RQb2ludGVyTG9ja1wiIFt8fF07XG4gICAgZnV0XG5cbiAgKCogQ2xpY2sgc2ltbHVhdGlvbiAqKVxuXG4gIGxldCBjbGljayBlID0gaWdub3JlIChKdi5jYWxsIGUgXCJjbGlja1wiIFt8fF0pXG4gIGxldCBzZWxlY3RfdGV4dCBlID0gaWdub3JlIChKdi5jYWxsIGUgXCJzZWxlY3RcIiBbfHxdKVxuXG4gICgqIEZ1bGxzY3JlZW4gKilcblxuICBtb2R1bGUgTmF2aWdhdGlvbl91aSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBhdXRvID0gSnN0ci52IFwiYXV0b1wiXG4gICAgbGV0IGhpZGUgPSBKc3RyLnYgXCJoaWRlXCJcbiAgICBsZXQgc2hvdyA9IEpzdHIudiBcInNob3dcIlxuICBlbmRcblxuICB0eXBlIGZ1bGxzY3JlZW5fb3B0cyA9IEp2LnRcbiAgbGV0IGZ1bGxzY3JlZW5fb3B0cyA/bmF2aWdhdGlvbl91aSAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcIm5hdmlnYXRpb25VSVwiIG5hdmlnYXRpb25fdWk7XG4gICAgb1xuXG4gIGxldCByZXF1ZXN0X2Z1bGxzY3JlZW4gPyhvcHRzID0gSnYub2JqIFt8fF0pIGUgPVxuICAgIEZ1dC5vZl9wcm9taXNlIH5vazppZ25vcmUgQEAgSnYuY2FsbCBlIFwicmVxdWVzdEZ1bGxzY3JlZW5cIiBbfCBvcHRzIHxdXG5cbiAgKCogSW5wdXQgKilcblxuICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICBsZXQgZmlsZXMgZSA9IG1hdGNoIEp2LmZpbmQgZSBcImZpbGVzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBbXSB8IFNvbWUgZmlsZXMgLT4gSnYudG9fbGlzdCBGaWxlLm9mX2p2IGZpbGVzXG4gIGVuZFxuXG4gICgqIEVsZW1lbnQgdGFnIG5hbWVzICopXG5cbiAgbW9kdWxlIE5hbWUgPSBzdHJ1Y3RcbiAgICBsZXQgYSA9IEpzdHIudiBcImFcIlxuICAgIGxldCBhYmJyID0gSnN0ci52IFwiYWJiclwiXG4gICAgbGV0IGFkZHJlc3MgPSBKc3RyLnYgXCJhZGRyZXNzXCJcbiAgICBsZXQgYXJlYSA9IEpzdHIudiBcImFyZWFcIlxuICAgIGxldCBhcnRpY2xlID0gSnN0ci52IFwiYXJ0aWNsZVwiXG4gICAgbGV0IGFzaWRlID0gSnN0ci52IFwiYXNpZGVcIlxuICAgIGxldCBhdWRpbyA9IEpzdHIudiBcImF1ZGlvXCJcbiAgICBsZXQgYiA9IEpzdHIudiBcImJcIlxuICAgIGxldCBiYXNlID0gSnN0ci52IFwiYmFzZVwiXG4gICAgbGV0IGJkaSA9IEpzdHIudiBcImJkaVwiXG4gICAgbGV0IGJkbyA9IEpzdHIudiBcImJkb1wiXG4gICAgbGV0IGJsb2NrcXVvdGUgPSBKc3RyLnYgXCJibG9ja3F1b3RlXCJcbiAgICBsZXQgYm9keSA9IEpzdHIudiBcImJvZHlcIlxuICAgIGxldCBiciA9IEpzdHIudiBcImJyXCJcbiAgICBsZXQgYnV0dG9uID0gSnN0ci52IFwiYnV0dG9uXCJcbiAgICBsZXQgY2FudmFzID0gSnN0ci52IFwiY2FudmFzXCJcbiAgICBsZXQgY2FwdGlvbiA9IEpzdHIudiBcImNhcHRpb25cIlxuICAgIGxldCBjaXRlID0gSnN0ci52IFwiY2l0ZVwiXG4gICAgbGV0IGNvZGUgPSBKc3RyLnYgXCJjb2RlXCJcbiAgICBsZXQgY29sID0gSnN0ci52IFwiY29sXCJcbiAgICBsZXQgY29sZ3JvdXAgPSBKc3RyLnYgXCJjb2xncm91cFwiXG4gICAgbGV0IGNvbW1hbmQgPSBKc3RyLnYgXCJjb21tYW5kXCJcbiAgICBsZXQgZGF0YWxpc3QgPSBKc3RyLnYgXCJkYXRhbGlzdFwiXG4gICAgbGV0IGRkID0gSnN0ci52IFwiZGRcIlxuICAgIGxldCBkZWwgPSBKc3RyLnYgXCJkZWxcIlxuICAgIGxldCBkZXRhaWxzID0gSnN0ci52IFwiZGV0YWlsc1wiXG4gICAgbGV0IGRmbiA9IEpzdHIudiBcImRmblwiXG4gICAgbGV0IGRpdiA9IEpzdHIudiBcImRpdlwiXG4gICAgbGV0IGRsID0gSnN0ci52IFwiZGxcIlxuICAgIGxldCBkdCA9IEpzdHIudiBcImR0XCJcbiAgICBsZXQgZW0gPSBKc3RyLnYgXCJlbVwiXG4gICAgbGV0IGVtYmVkID0gSnN0ci52IFwiZW1iZWRcIlxuICAgIGxldCBmaWVsZHNldCA9IEpzdHIudiBcImZpZWxkc2V0XCJcbiAgICBsZXQgZmlnY2FwdGlvbiA9IEpzdHIudiBcImZpZ2NhcHRpb25cIlxuICAgIGxldCBmaWd1cmUgPSBKc3RyLnYgXCJmaWd1cmVcIlxuICAgIGxldCBmb290ZXIgPSBKc3RyLnYgXCJmb290ZXJcIlxuICAgIGxldCBmb3JtID0gSnN0ci52IFwiZm9ybVwiXG4gICAgbGV0IGgxID0gSnN0ci52IFwiaDFcIlxuICAgIGxldCBoMiA9IEpzdHIudiBcImgyXCJcbiAgICBsZXQgaDMgPSBKc3RyLnYgXCJoM1wiXG4gICAgbGV0IGg0ID0gSnN0ci52IFwiaDRcIlxuICAgIGxldCBoNSA9IEpzdHIudiBcImg1XCJcbiAgICBsZXQgaDYgPSBKc3RyLnYgXCJoNlwiXG4gICAgbGV0IGhlYWQgPSBKc3RyLnYgXCJoZWFkXCJcbiAgICBsZXQgaGVhZGVyID0gSnN0ci52IFwiaGVhZGVyXCJcbiAgICBsZXQgaGdyb3VwID0gSnN0ci52IFwiaGdyb3VwXCJcbiAgICBsZXQgaHIgPSBKc3RyLnYgXCJoclwiXG4gICAgbGV0IGh0bWwgPSBKc3RyLnYgXCJodG1sXCJcbiAgICBsZXQgaSA9IEpzdHIudiBcImlcIlxuICAgIGxldCBpZnJhbWUgPSBKc3RyLnYgXCJpZnJhbWVcIlxuICAgIGxldCBpbWcgPSBKc3RyLnYgXCJpbWdcIlxuICAgIGxldCBpbnB1dCA9IEpzdHIudiBcImlucHV0XCJcbiAgICBsZXQgaW5zID0gSnN0ci52IFwiaW5zXCJcbiAgICBsZXQga2JkID0gSnN0ci52IFwia2JkXCJcbiAgICBsZXQga2V5Z2VuID0gSnN0ci52IFwia2V5Z2VuXCJcbiAgICBsZXQgbGFiZWwgPSBKc3RyLnYgXCJsYWJlbFwiXG4gICAgbGV0IGxlZ2VuZCA9IEpzdHIudiBcImxlZ2VuZFwiXG4gICAgbGV0IGxpID0gSnN0ci52IFwibGlcIlxuICAgIGxldCBsaW5rID0gSnN0ci52IFwibGlua1wiXG4gICAgbGV0IG1hcCA9IEpzdHIudiBcIm1hcFwiXG4gICAgbGV0IG1hcmsgPSBKc3RyLnYgXCJtYXJrXCJcbiAgICBsZXQgbWVudSA9IEpzdHIudiBcIm1lbnVcIlxuICAgIGxldCBtZXRhID0gSnN0ci52IFwibWV0YVwiXG4gICAgbGV0IG1ldGVyID0gSnN0ci52IFwibWV0ZXJcIlxuICAgIGxldCBuYXYgPSBKc3RyLnYgXCJuYXZcIlxuICAgIGxldCBub3NjcmlwdCA9IEpzdHIudiBcIm5vc2NyaXB0XCJcbiAgICBsZXQgb2JqZWN0JyA9IEpzdHIudiBcIm9iamVjdFwiXG4gICAgbGV0IG9sID0gSnN0ci52IFwib2xcIlxuICAgIGxldCBvcHRncm91cCA9IEpzdHIudiBcIm9wdGdyb3VwXCJcbiAgICBsZXQgb3B0aW9uID0gSnN0ci52IFwib3B0aW9uXCJcbiAgICBsZXQgb3V0cHV0ID0gSnN0ci52IFwib3V0cHV0XCJcbiAgICBsZXQgcCA9IEpzdHIudiBcInBcIlxuICAgIGxldCBwYXJhbSA9IEpzdHIudiBcInBhcmFtXCJcbiAgICBsZXQgcHJlID0gSnN0ci52IFwicHJlXCJcbiAgICBsZXQgcHJvZ3Jlc3MgPSBKc3RyLnYgXCJwcm9ncmVzc1wiXG4gICAgbGV0IHEgPSBKc3RyLnYgXCJxXCJcbiAgICBsZXQgcnAgPSBKc3RyLnYgXCJycFwiXG4gICAgbGV0IHJ0ID0gSnN0ci52IFwicnRcIlxuICAgIGxldCBydWJ5ID0gSnN0ci52IFwicnVieVwiXG4gICAgbGV0IHMgPSBKc3RyLnYgXCJzXCJcbiAgICBsZXQgc2FtcCA9IEpzdHIudiBcInNhbXBcIlxuICAgIGxldCBzY3JpcHQgPSBKc3RyLnYgXCJzY3JpcHRcIlxuICAgIGxldCBzZWN0aW9uID0gSnN0ci52IFwic2VjdGlvblwiXG4gICAgbGV0IHNlbGVjdCA9IEpzdHIudiBcInNlbGVjdFwiXG4gICAgbGV0IHNtYWxsID0gSnN0ci52IFwic21hbGxcIlxuICAgIGxldCBzb3VyY2UgPSBKc3RyLnYgXCJzb3VyY2VcIlxuICAgIGxldCBzcGFuID0gSnN0ci52IFwic3BhblwiXG4gICAgbGV0IHN0cm9uZyA9IEpzdHIudiBcInN0cm9uZ1wiXG4gICAgbGV0IHN0eWxlID0gSnN0ci52IFwic3R5bGVcIlxuICAgIGxldCBzdWIgPSBKc3RyLnYgXCJzdWJcIlxuICAgIGxldCBzdW1tYXJ5ID0gSnN0ci52IFwic3VtbWFyeVwiXG4gICAgbGV0IHN1cCA9IEpzdHIudiBcInN1cFwiXG4gICAgbGV0IHRhYmxlID0gSnN0ci52IFwidGFibGVcIlxuICAgIGxldCB0Ym9keSA9IEpzdHIudiBcInRib2R5XCJcbiAgICBsZXQgdGQgPSBKc3RyLnYgXCJ0ZFwiXG4gICAgbGV0IHRleHRhcmVhID0gSnN0ci52IFwidGV4dGFyZWFcIlxuICAgIGxldCB0Zm9vdCA9IEpzdHIudiBcInRmb290XCJcbiAgICBsZXQgdGggPSBKc3RyLnYgXCJ0aFwiXG4gICAgbGV0IHRoZWFkID0gSnN0ci52IFwidGhlYWRcIlxuICAgIGxldCB0aW1lID0gSnN0ci52IFwidGltZVwiXG4gICAgbGV0IHRpdGxlID0gSnN0ci52IFwidGl0bGVcIlxuICAgIGxldCB0ciA9IEpzdHIudiBcInRyXCJcbiAgICBsZXQgdHJhY2sgPSBKc3RyLnYgXCJ0cmFja1wiXG4gICAgbGV0IHUgPSBKc3RyLnYgXCJ1XCJcbiAgICBsZXQgdWwgPSBKc3RyLnYgXCJ1bFwiXG4gICAgbGV0IHZhciA9IEpzdHIudiBcInZhclwiXG4gICAgbGV0IHZpZGVvID0gSnN0ci52IFwidmlkZW9cIlxuICAgIGxldCB3YnIgPSBKc3RyLnYgXCJ3YnJcIlxuICBlbmRcblxuICB0eXBlIGNvbnMgPSAgP2Q6ZG9jdW1lbnQgLT4gP2F0OkF0LnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIHZvaWRfY29ucyA9ID9kOmRvY3VtZW50IC0+ID9hdDpBdC50IGxpc3QgLT4gdW5pdCAtPiB0XG4gIGxldCBjb25zIG5hbWUgP2QgP2F0IGNzID0gdiA/ZCA/YXQgbmFtZSBjc1xuICBsZXQgdm9pZF9jb25zIG5hbWUgP2QgP2F0ICgpID0gdiA/ZCA/YXQgbmFtZSBbXVxuXG4gIGxldCBhID0gY29ucyBOYW1lLmFcbiAgbGV0IGFiYnIgPSBjb25zIE5hbWUuYWJiclxuICBsZXQgYWRkcmVzcyA9IGNvbnMgTmFtZS5hZGRyZXNzXG4gIGxldCBhcmVhID0gdm9pZF9jb25zIE5hbWUuYXJlYVxuICBsZXQgYXJ0aWNsZSA9IGNvbnMgTmFtZS5hcnRpY2xlXG4gIGxldCBhc2lkZSA9IGNvbnMgTmFtZS5hc2lkZVxuICBsZXQgYXVkaW8gPSBjb25zIE5hbWUuYXVkaW9cbiAgbGV0IGIgPSBjb25zIE5hbWUuYlxuICBsZXQgYmFzZSA9IHZvaWRfY29ucyBOYW1lLmJhc2VcbiAgbGV0IGJkaSA9IGNvbnMgTmFtZS5iZGlcbiAgbGV0IGJkbyA9IGNvbnMgTmFtZS5iZG9cbiAgbGV0IGJsb2NrcXVvdGUgPSBjb25zIE5hbWUuYmxvY2txdW90ZVxuICBsZXQgYm9keSA9IGNvbnMgTmFtZS5ib2R5XG4gIGxldCBiciA9IHZvaWRfY29ucyBOYW1lLmJyXG4gIGxldCBidXR0b24gPSBjb25zIE5hbWUuYnV0dG9uXG4gIGxldCBjYW52YXMgPSBjb25zIE5hbWUuY2FudmFzXG4gIGxldCBjYXB0aW9uID0gY29ucyBOYW1lLmNhcHRpb25cbiAgbGV0IGNpdGUgPSBjb25zIE5hbWUuY2l0ZVxuICBsZXQgY29kZSA9IGNvbnMgTmFtZS5jb2RlXG4gIGxldCBjb2wgPSB2b2lkX2NvbnMgTmFtZS5jb2xcbiAgbGV0IGNvbGdyb3VwID0gY29ucyBOYW1lLmNvbGdyb3VwXG4gIGxldCBjb21tYW5kID0gY29ucyBOYW1lLmNvbW1hbmRcbiAgbGV0IGRhdGFsaXN0ID0gY29ucyBOYW1lLmRhdGFsaXN0XG4gIGxldCBkZCA9IGNvbnMgTmFtZS5kZFxuICBsZXQgZGVsID0gY29ucyBOYW1lLmRlbFxuICBsZXQgZGV0YWlscyA9IGNvbnMgTmFtZS5kZXRhaWxzXG4gIGxldCBkZm4gPSBjb25zIE5hbWUuZGZuXG4gIGxldCBkaXYgPSBjb25zIE5hbWUuZGl2XG4gIGxldCBkbCA9IGNvbnMgTmFtZS5kbFxuICBsZXQgZHQgPSBjb25zIE5hbWUuZHRcbiAgbGV0IGVtID0gY29ucyBOYW1lLmVtXG4gIGxldCBlbWJlZCA9IHZvaWRfY29ucyBOYW1lLmVtYmVkXG4gIGxldCBmaWVsZHNldCA9IGNvbnMgTmFtZS5maWVsZHNldFxuICBsZXQgZmlnY2FwdGlvbiA9IGNvbnMgTmFtZS5maWdjYXB0aW9uXG4gIGxldCBmaWd1cmUgPSBjb25zIE5hbWUuZmlndXJlXG4gIGxldCBmb290ZXIgPSBjb25zIE5hbWUuZm9vdGVyXG4gIGxldCBmb3JtID0gY29ucyBOYW1lLmZvcm1cbiAgbGV0IGgxID0gY29ucyBOYW1lLmgxXG4gIGxldCBoMiA9IGNvbnMgTmFtZS5oMlxuICBsZXQgaDMgPSBjb25zIE5hbWUuaDNcbiAgbGV0IGg0ID0gY29ucyBOYW1lLmg0XG4gIGxldCBoNSA9IGNvbnMgTmFtZS5oNVxuICBsZXQgaDYgPSBjb25zIE5hbWUuaDZcbiAgbGV0IGhlYWQgPSBjb25zIE5hbWUuaGVhZFxuICBsZXQgaGVhZGVyID0gY29ucyBOYW1lLmhlYWRlclxuICBsZXQgaGdyb3VwID0gY29ucyBOYW1lLmhncm91cFxuICBsZXQgaHIgPSB2b2lkX2NvbnMgTmFtZS5oclxuICBsZXQgaHRtbCA9IGNvbnMgTmFtZS5odG1sXG4gIGxldCBpID0gY29ucyBOYW1lLmlcbiAgbGV0IGlmcmFtZSA9IGNvbnMgTmFtZS5pZnJhbWVcbiAgbGV0IGltZyA9IHZvaWRfY29ucyBOYW1lLmltZ1xuICBsZXQgaW5wdXQgPSB2b2lkX2NvbnMgTmFtZS5pbnB1dFxuICBsZXQgaW5zID0gY29ucyBOYW1lLmluc1xuICBsZXQga2JkID0gY29ucyBOYW1lLmtiZFxuICBsZXQga2V5Z2VuID0gY29ucyBOYW1lLmtleWdlblxuICBsZXQgbGFiZWwgPSBjb25zIE5hbWUubGFiZWxcbiAgbGV0IGxlZ2VuZCA9IGNvbnMgTmFtZS5sZWdlbmRcbiAgbGV0IGxpID0gY29ucyBOYW1lLmxpXG4gIGxldCBsaW5rID0gdm9pZF9jb25zIE5hbWUubGlua1xuICBsZXQgbWFwID0gY29ucyBOYW1lLm1hcFxuICBsZXQgbWFyayA9IGNvbnMgTmFtZS5tYXJrXG4gIGxldCBtZW51ID0gY29ucyBOYW1lLm1lbnVcbiAgbGV0IG1ldGEgPSB2b2lkX2NvbnMgTmFtZS5tZXRhXG4gIGxldCBtZXRlciA9IGNvbnMgTmFtZS5tZXRlclxuICBsZXQgbmF2ID0gY29ucyBOYW1lLm5hdlxuICBsZXQgbm9zY3JpcHQgPSBjb25zIE5hbWUubm9zY3JpcHRcbiAgbGV0IG9iamVjdCcgPSBjb25zIE5hbWUub2JqZWN0J1xuICBsZXQgb2wgPSBjb25zIE5hbWUub2xcbiAgbGV0IG9wdGdyb3VwID0gY29ucyBOYW1lLm9wdGdyb3VwXG4gIGxldCBvcHRpb24gPSBjb25zIE5hbWUub3B0aW9uXG4gIGxldCBvdXRwdXQgPSBjb25zIE5hbWUub3V0cHV0XG4gIGxldCBwID0gY29ucyBOYW1lLnBcbiAgbGV0IHBhcmFtID0gdm9pZF9jb25zIE5hbWUucGFyYW1cbiAgbGV0IHByZSA9IGNvbnMgTmFtZS5wcmVcbiAgbGV0IHByb2dyZXNzID0gY29ucyBOYW1lLnByb2dyZXNzXG4gIGxldCBxID0gY29ucyBOYW1lLnFcbiAgbGV0IHJwID0gY29ucyBOYW1lLnJwXG4gIGxldCBydCA9IGNvbnMgTmFtZS5ydFxuICBsZXQgcnVieSA9IGNvbnMgTmFtZS5ydWJ5XG4gIGxldCBzID0gY29ucyBOYW1lLnNcbiAgbGV0IHNhbXAgPSBjb25zIE5hbWUuc2FtcFxuICBsZXQgc2NyaXB0ID0gY29ucyBOYW1lLnNjcmlwdFxuICBsZXQgc2VjdGlvbiA9IGNvbnMgTmFtZS5zZWN0aW9uXG4gIGxldCBzZWxlY3QgPSBjb25zIE5hbWUuc2VsZWN0XG4gIGxldCBzbWFsbCA9IGNvbnMgTmFtZS5zbWFsbFxuICBsZXQgc291cmNlID0gdm9pZF9jb25zIE5hbWUuc291cmNlXG4gIGxldCBzcGFuID0gY29ucyBOYW1lLnNwYW5cbiAgbGV0IHN0cm9uZyA9IGNvbnMgTmFtZS5zdHJvbmdcbiAgbGV0IHN0eWxlID0gY29ucyBOYW1lLnN0eWxlXG4gIGxldCBzdWIgPSBjb25zIE5hbWUuc3ViXG4gIGxldCBzdW1tYXJ5ID0gY29ucyBOYW1lLnN1bW1hcnlcbiAgbGV0IHN1cCA9IGNvbnMgTmFtZS5zdXBcbiAgbGV0IHRhYmxlID0gY29ucyBOYW1lLnRhYmxlXG4gIGxldCB0Ym9keSA9IGNvbnMgTmFtZS50Ym9keVxuICBsZXQgdGQgPSBjb25zIE5hbWUudGRcbiAgbGV0IHRleHRhcmVhID0gY29ucyBOYW1lLnRleHRhcmVhXG4gIGxldCB0Zm9vdCA9IGNvbnMgTmFtZS50Zm9vdFxuICBsZXQgdGggPSBjb25zIE5hbWUudGhcbiAgbGV0IHRoZWFkID0gY29ucyBOYW1lLnRoZWFkXG4gIGxldCB0aW1lID0gY29ucyBOYW1lLnRpbWVcbiAgbGV0IHRpdGxlID0gY29ucyBOYW1lLnRpdGxlXG4gIGxldCB0ciA9IGNvbnMgTmFtZS50clxuICBsZXQgdHJhY2sgPSB2b2lkX2NvbnMgTmFtZS50cmFja1xuICBsZXQgdSA9IGNvbnMgTmFtZS51XG4gIGxldCB1bCA9IGNvbnMgTmFtZS51bFxuICBsZXQgdmFyID0gY29ucyBOYW1lLnZhclxuICBsZXQgdmlkZW8gPSBjb25zIE5hbWUudmlkZW9cbiAgbGV0IHdiciA9IHZvaWRfY29ucyBOYW1lLndiclxuZW5kXG5cbm1vZHVsZSBSYW5nZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIHR5cGUgY29tcGFyZV9ob3cgPSBpbnRcbiAgbGV0IGVuZF90b19lbmQgPSBKdi5JbnQuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlLkVORF9UT19FTkRcIlxuICBsZXQgZW5kX3RvX3N0YXJ0ID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5FTkRfVE9fU1RBUlRcIlxuICBsZXQgc3RhcnRfdG9fZW5kID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5TVEFSVF9UT19FTkRcIlxuICBsZXQgc3RhcnRfdG9fc3RhcnQgPSBKdi5JbnQuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlLlNUQVJUX1RPX1NUQVJUXCJcblxuICBsZXQgcmFuZ2UgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2VcIlxuICBsZXQgY3JlYXRlICgpID0gSnYubmV3JyByYW5nZSBbfHxdXG4gIGxldCBjbG9uZV9yYW5nZSByID0gSnYuY2FsbCByIFwiY2xvbmVSYW5nZVwiIFt8fF1cbiAgbGV0IGNvbGxhcHNlIHIgYiA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJjb2xsYXBzZVwiIEp2Llt8b2ZfYm9vbCBifF1cbiAgbGV0IGNvbGxhcHNlX3RvX3N0YXJ0IHIgPSBjb2xsYXBzZSByIHRydWVcbiAgbGV0IGNvbGxhcHNlX3RvX2VuZCByID0gY29sbGFwc2UgciBmYWxzZVxuXG4gIGxldCBjb21wYXJlX2JvdW5kYXJ5X3BvaW50cyByIGhvdyByJyA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgciBcImNvbXBhcmVCb3VuZGFyeVBvaW50c1wiIFt8SnYub2ZfaW50IGhvdzsgcid8XVxuXG4gIGxldCBjb21wYXJlX3BvaW50IHIgZWwgb2Zmc2V0ID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCByIFwiY29tcGFyZVBvaW50XCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgKCogIGxldCBjcmVhdGVfY29udGV4dHVhbF9mcmFnbWVudCByID0gZmFpbHdpdGggXCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnRcIiAqKVxuXG4gIGxldCBkZWxldGVfY29udGVudHMgciA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJkZWxldGVDb250ZW50c1wiIFt8fF1cbiAgKCpcbiAgbGV0IGV4dHJhY3RfY29udGVudHMgciA9IGZhaWx3aXRoIFwiZXh0cmFjdENvbnRlbnRzXCJcbiAgbGV0IGdldF9ib3VuZGluZ19jbGllbnRfcmVjdCByID0gZmFpbHdpdGggXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIlxuICBsZXQgZ2V0X2NsaWVudF9yZWN0cyByID0gZmFpbHdpdGggXCJnZXRDbGllbnRSZWN0c1wiICopXG5cbiAgbGV0IGluc2VydF9ub2RlIHIgZWwgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiaW5zZXJ0Tm9kZVwiIFt8RWwudG9fanYgZWx8XVxuICBsZXQgaW50ZXJzZWN0c19ub2RlIHIgZWwgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwiaW50ZXJzZWN0c05vZGVcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fcmFuZ2UgciBlbCBvZmZzZXQgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwiaXNQb2ludEluUmFuZ2VcIiBbfEVsLnRvX2p2IGVsOyBKdi5vZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgc2VsZWN0X25vZGUgciBlbCA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZWxlY3ROb2RlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNlbGVjdF9ub2RlX2NvbnRlbnRzIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZWxlY3ROb2RlQ29udGVudHNcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X2VuZCByIGVsIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldEVuZFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBzZXRfZW5kX2FmdGVyIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRFbmRBZnRlclwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfZW5kX2JlZm9yZSByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0RW5kQmVmb3JlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNldF9zdGFydCByIGVsIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldFN0YXJ0XCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHNldF9zdGFydF9hZnRlciByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0U3RhcnRBZnRlclwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfc3RhcnRfYmVmb3JlIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRTdGFydEJlZm9yZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzdXJyb3VuZF9jb250ZW50cyByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic3Vycm91bmRDb250ZW50c1wiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCB0b19zdHJpbmcgciA9IEp2LnRvX2pzdHIgQEAgSnYuY2FsbCByIFwidG9TdHJpbmdcIiBbfHxdXG5cbiAgKCogUHJvcGVydGllcyAqKVxuXG4gIGxldCBjb2xsYXBzZWQgciA9IEp2LkJvb2wuZ2V0IHIgXCJjb2xsYXBzZWRcIlxuICBsZXQgY29tbW9uX2FuY2VzdG9yX2NvbnRhaW5lciByID1cbiAgICBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJjb21tb25BbmNlc3RvckNvbnRhaW5lclwiKVxuXG4gIGxldCBlbmRfY29udGFpbmVyIHIgPSBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJlbmRDb250YWluZXJcIilcbiAgbGV0IGVuZF9vZmZzZXQgciA9IEp2LkludC5nZXQgciBcImVuZE9mZnNldFwiXG4gIGxldCBzdGFydF9jb250YWluZXIgciA9IEVsLm9mX2p2IChKdi5nZXQgciBcInN0YXJ0Q29udGFpbmVyXCIpXG4gIGxldCBzdGFydF9vZmZzZXQgciA9IEp2LkludC5nZXQgciBcInNhcnRPZmZzZXRcIlxuZW5kXG5cblxubW9kdWxlIERvY3VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEVsLmRvY3VtZW50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhc190YXJnZXQgZCA9IGRcblxuICAoKiBFbGVtZW50cyAqKVxuXG4gIGxldCByb290IGQgPSBFbC5vZl9qdiAoSnYuZ2V0IGQgXCJkb2N1bWVudEVsZW1lbnRcIilcbiAgbGV0IGJvZHkgZCA9XG4gICAgbGV0IGIgPSBKdi5nZXQgZCBcImJvZHlcIiBpblxuICAgIGlmIEp2LmlzX3NvbWUgYiB0aGVuIEVsLm9mX2p2IGIgZWxzZVxuICAgIGxldCBlcnIgPSBcIkRvY3VtZW50IGJvZHkgaXMgbnVsbC4gVHJ5IHRvIGRlZmVyIHlvdXIgc2NyaXB0IGV4ZWN1dGlvbi5cIiAgaW5cbiAgICBKdi50aHJvdyAoSnN0ci52IGVycilcblxuICBsZXQgaGVhZCBkID0gRWwub2ZfanYgKEp2LmdldCBkIFwiaGVhZFwiKVxuICBsZXQgYWN0aXZlX2VsIGQgPSBKdi50b19vcHRpb24gRWwub2ZfanYgKEp2LmdldCBkIFwiYWN0aXZlRWxlbWVudFwiKVxuXG4gIGxldCBmaW5kX2VsX2J5X2lkIGQgaWQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiAoSnYuY2FsbCBkIFwiZ2V0RWxlbWVudEJ5SWRcIiBbfCBKdi5vZl9qc3RyIGlkIHxdKVxuXG4gIGxldCBmaW5kX2Vsc19ieV9uYW1lIGQgbiA9XG4gICAgRWwuZWxfbGlzdF9vZl9ub2RlX2xpc3QgKEp2LmNhbGwgZCBcImdldEVsZW1lbnRzQnlOYW1lXCIgW3wgSnYub2ZfanN0ciBuIHxdKVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBsZXQgcmVmZXJyZXIgZCA9IEp2LkpzdHIuZ2V0IGQgXCJyZWZlcnJlclwiXG4gIGxldCB0aXRsZSBkID0gSnYuSnN0ci5nZXQgZCBcInRpdGxlXCJcbiAgbGV0IHNldF90aXRsZSBkIHQgPSBKdi5Kc3RyLnNldCBkIFwidGl0bGVcIiB0XG5cbiAgbW9kdWxlIFZpc2liaWxpdHlfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgaGlkZGVuID0gSnN0ci52IFwiaGlkZGVuXCJcbiAgICBsZXQgdmlzaWJsZSA9IEpzdHIudiBcInZpc2libGVcIlxuICBlbmRcblxuICBsZXQgdmlzaWJpbGl0eV9zdGF0ZSBkID0gSnYuSnN0ci5nZXQgZCBcInZpc2liaWxpdHlTdGF0ZVwiXG5cbiAgKCogUG9pbnRlciBsb2NrICopXG5cbiAgbGV0IHBvaW50ZXJfbG9ja19lbGVtZW50IGQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiBAQCBKdi5nZXQgZCBcInBvaW50ZXJMb2NrRWxlbWVudFwiXG5cbiAgbGV0IGV4aXRfcG9pbnRlcl9sb2NrIGQgPVxuICAgIGxldCBmdXQgPSBFdi5uZXh0IEV2LnBvaW50ZXJsb2NrY2hhbmdlIChhc190YXJnZXQgZCkgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBkIFwiZXhpdFBvaW50ZXJMb2NrXCIgW3x8XTtcbiAgICBmdXRcblxuICAoKiBGdWxsc2NyZWVuICopXG5cbiAgbGV0IGZ1bGxzY3JlZW5fYXZhaWxhYmxlIGQgPSBKdi5Cb29sLmdldCBkIFwiZnVsbHNjcmVlbkVuYWJsZWRcIlxuICBsZXQgZnVsbHNjcmVlbl9lbGVtZW50IGQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiBAQCBKdi5nZXQgZCBcImZ1bGxzY3JlZW5FbGVtZW50XCJcblxuICBsZXQgZXhpdF9mdWxsc2NyZWVuIGQgPVxuICAgIEZ1dC5vZl9wcm9taXNlIH5vazppZ25vcmUgQEAgSnYuY2FsbCBkIFwiZXhpdEZ1bGxzY3JlZW5cIiBbfHxdXG5lbmRcblxuKCogQnJvd3NlciBpbnRlcmFjdGlvbiAqKVxuXG5tb2R1bGUgQWJvcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNpZ25hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBleHRlcm5hbCBhc190YXJnZXQgOiB0IC0+IEV2LnRhcmdldCA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgYWJvcnRlZCBzID0gSnYuQm9vbC5nZXQgcyBcImFib3J0ZWRcIlxuICAgIGxldCBhYm9ydCA9IEV2LlR5cGUudm9pZCAoSnN0ci52IFwiYWJvcnRcIilcbiAgZW5kXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBjb250cm9sbGVyICgpID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIkFib3J0Q29udHJvbGxlclwiKSBbfHxdXG4gIGxldCBzaWduYWwgYyA9IFNpZ25hbC5vZl9qdiAoSnYuZ2V0IGMgXCJzaWduYWxcIilcbiAgbGV0IGFib3J0IGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYWJvcnRcIiBbfHxdXG5lbmRcblxubW9kdWxlIENvbnNvbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IGNhbGwgYyBtZXRoIGFyZ3MgPSBpZ25vcmUgKEp2LmNhbGwgYyBtZXRoIGFyZ3MpXG5cbiAgbGV0IGMgPSByZWYgKEp2LmdldCBKdi5nbG9iYWwgXCJjb25zb2xlXCIpXG4gIGxldCBnZXQgKCkgPSAhY1xuICBsZXQgc2V0IG4gPSBjIDo9IG5cbiAgbGV0IGNsZWFyICgpID0gY2FsbCAhYyBcImNsZWFyXCIgW3x8XVxuXG4gICgqIExvZyBmdW5jdGlvbnMgKilcblxuICB0eXBlIG1zZyA9IFtdIDogbXNnIHwgKCA6OiApIDogJ2EgKiBtc2cgLT4gbXNnXG4gIHR5cGUgJ2EgbXNnciA9ICdhIC0+IG1zZ1xuICBsZXQgbXNnIHYgPSBbdl1cbiAgbGV0IHN0ciB2ID1cbiAgICBsZXQgdiA9IEp2LnJlcHIgdiBpblxuICAgIGlmIEp2LmlzX251bGwgdiB0aGVuIEpzdHIudiBcIm51bGxcIiBlbHNlXG4gICAgaWYgSnYuaXNfdW5kZWZpbmVkIHYgdGhlbiBKc3RyLnYgXCJ1bmRlZmluZWRcIiBlbHNlXG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIHYgXCJ0b1N0cmluZ1wiIFt8fF1cblxuICBsZXQgbXNnX3RvX2p2X2FycmF5IG1zZyA9XG4gICAgbGV0IHJlYyBsb29wIGEgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhXG4gICAgfCB2IDo6IHZzIC0+IEp2LkphcnJheS5zZXQgYSBpIChKdi5yZXByIHYpOyBsb29wIGEgKGkgKyAxKSB2c1xuICAgIGluXG4gICAgSnYudG9fanZfYXJyYXkgQEAgbG9vcCAoSnYuSmFycmF5LmNyZWF0ZSAwKSAwIG1zZ1xuXG4gIHR5cGUgbG9nID0gbXNnIC0+IHVuaXRcblxuICAoKiBMZXZlbGxlZCBsb2dnaW5nICopXG5cbiAgbGV0IGxvZyBtc2cgPSBjYWxsICFjIFwibG9nXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIGxldCB0cmFjZSBtc2cgPSBjYWxsICFjIFwidHJhY2VcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGVycm9yIG1zZyA9IGNhbGwgIWMgXCJlcnJvclwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgd2FybiBtc2cgPSBjYWxsICFjIFwid2FyblwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgaW5mbyBtc2cgPSBjYWxsICFjIFwiaW5mb1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgZGVidWcgbXNnID0gY2FsbCAhYyBcImRlYnVnXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG5cbiAgKCogQXNzZXJ0aW5nIGFuZCBkdW1waW5nICopXG5cbiAgbGV0IGFzc2VydCcgYiBtc2cgPSBjYWxsICFjIFwiYXNzZXJ0XCIgKG1zZ190b19qdl9hcnJheSAoSnYub2ZfYm9vbCBiIDo6IG1zZykpXG4gIGxldCBkaXIgbyA9IGNhbGwgIWMgXCJkaXJcIiBbfEp2LnJlcHIgb3xdXG4gIGxldCB0YWJsZSA/Y29scyB2ID1cbiAgICBsZXQgbXNnID0gbWF0Y2ggY29scyB3aXRoXG4gICAgfCBOb25lIC0+IFt8SnYucmVwciB2fF0gfCBTb21lIGwgLT4gW3xKdi5yZXByIHY7IEp2Lm9mX2pzdHJfbGlzdCBsfF1cbiAgICBpblxuICAgIGNhbGwgIWMgXCJ0YWJsZVwiIG1zZ1xuXG4gICgqIEdyb3VwaW5nICopXG5cbiAgbGV0IGdyb3VwX2VuZCAoKSA9IGNhbGwgIWMgXCJncm91cEVuZFwiIFt8fF1cbiAgbGV0IGdyb3VwID8oY2xvc2VkID0gZmFsc2UpIG1zZyA9IG1hdGNoIGNsb3NlZCB3aXRoXG4gIHwgZmFsc2UgLT4gY2FsbCAhYyBcImdyb3VwXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIHwgdHJ1ZSAtPiBjYWxsICFjIFwiZ3JvdXBDb2xsYXBzZWRcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcblxuICAoKiBDb3VudGluZyAqKVxuXG4gIGxldCBjb3VudCBsYWJlbCA9IGNhbGwgIWMgXCJjb3VudFwiIFt8SnYub2ZfanN0ciBsYWJlbHxdXG4gIGxldCBjb3VudF9yZXNldCBsYWJlbCA9IGNhbGwgIWMgXCJjb3VudFJlc2V0XCIgW3xKdi5vZl9qc3RyIGxhYmVsfF1cblxuICAoKiBUaW1pbmcgKilcblxuICBsZXQgdGltZSBsYWJlbCA9IGNhbGwgIWMgXCJ0aW1lXCIgW3wgSnYub2ZfanN0ciBsYWJlbCB8XVxuICBsZXQgdGltZV9sb2cgbGFiZWwgbXNnID0gY2FsbCAhYyBcInRpbWVMb2dcIiAobXNnX3RvX2p2X2FycmF5IChsYWJlbCA6OiBtc2cpKVxuICBsZXQgdGltZV9lbmQgbGFiZWwgPSBjYWxsICFjIFwidGltZUVuZFwiIFt8IEp2Lm9mX2pzdHIgbGFiZWwgfF1cblxuICAoKiBQcm9maWxpbmcgKilcblxuICBsZXQgcHJvZmlsZSBsYWJlbCA9IGNhbGwgIWMgXCJwcm9maWxlXCIgW3xKdi5yZXByIGxhYmVsfF1cbiAgbGV0IHByb2ZpbGVfZW5kIGxhYmVsID0gY2FsbCAhYyBcInByb2ZpbGVFbmRcIiBbfEp2LnJlcHIgbGFiZWx8XVxuICBsZXQgdGltZV9zdGFtcCBsYWJlbCA9IGNhbGwgIWMgXCJ0aW1lU3RhbXBcIiBbfCBKdi5vZl9qc3RyIGxhYmVsIHxdXG5cbiAgKCogUmVzdWx0IGxvZ2dpbmcgKilcblxuICBsZXQgbG9nX3Jlc3VsdCA/KG9rID0gZnVuIHYgLT4gW3ZdKSA/ZXJyb3I6KGVyciA9IGZ1biBlIC0+IFtzdHIgZV0pIHIgPVxuICAgIChtYXRjaCByIHdpdGggT2sgdiAtPiBsb2cgKG9rIHYpIHwgRXJyb3IgZSAtPiBlcnJvciAoZXJyIGUpKTtcbiAgICByXG5cbiAgbGV0IGxvZ19pZl9lcnJvciA/KGwgPSBlcnJvcikgPyhlcnJvcl9tc2cgPSBmdW4gZSAtPiBbc3RyIGVdKSB+dXNlID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHYgfCBFcnJvciBlIC0+IGwgKGVycm9yX21zZyBlKTsgdXNlXG5cbiAgbGV0IGxvZ19pZl9lcnJvcicgP2wgP2Vycm9yX21zZyB+dXNlIHIgPVxuICAgIE9rIChsb2dfaWZfZXJyb3IgP2wgP2Vycm9yX21zZyB+dXNlIHIpXG5lbmRcblxubW9kdWxlIFdpbmRvdyA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbC53aW5kb3dcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFzX3RhcmdldCB3ID0gRXYudGFyZ2V0X29mX2p2IHdcblxuICBsZXQgY2xvc2VkIHcgPSBKdi5Cb29sLmdldCB3IFwiY2xvc2VkXCJcbiAgbGV0IHNjcm9sbF94IHcgPSBKdi5GbG9hdC5nZXQgdyBcInNjcm9sbFhcIlxuICBsZXQgc2Nyb2xsX3kgdyA9IEp2LkZsb2F0LmdldCB3IFwic2Nyb2xsWVwiXG5cbiAgbGV0IGlubmVyX3dpZHRoIHcgPSBKdi5JbnQuZ2V0IHcgXCJpbm5lcldpZHRoXCJcbiAgbGV0IGlubmVyX2hlaWdodCB3ID0gSnYuSW50LmdldCB3IFwiaW5uZXJIZWlnaHRcIlxuXG4gIGxldCBwYXJlbnQgdyA9XG4gICAgbGV0IHAgPSBKdi5nZXQgdyBcInBhcmVudFwiIGluXG4gICAgaWYgcCA9PSB3IHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuXG4gICgqIE1lZGlhIHByb3BlcnRpZXMgKilcblxuICBsZXQgZGV2aWNlX3BpeGVsX3JhdGlvIHcgPSBKdi5GbG9hdC5nZXQgdyBcImRldmljZVBpeGVsUmF0aW9cIlxuICBsZXQgbWF0Y2hlc19tZWRpYSB3IHMgPVxuICAgIGxldCBvID0gSnYuY2FsbCB3IFwibWF0Y2hNZWRpYVwiIFt8SnYub2ZfanN0ciBzfF0gaW5cbiAgICBKdi5Cb29sLmdldCBvIFwibWF0Y2hlc1wiXG5cbiAgbGV0IHByZWZlcnNfZGFya19jb2xvcl9zY2hlbWUgdyA9XG4gICAgbWF0Y2hlc19tZWRpYSB3IChKc3RyLnYgXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpXG5cbiAgKCogT3BlcmF0aW9ucyAqKVxuXG4gIGxldCBvcGVuJyA/KGZlYXR1cmVzID0gSnN0ci5lbXB0eSkgPyhuYW1lID0gSnN0ci5lbXB0eSkgdyB1ID1cbiAgICBKdi50b19vcHRpb24gb2ZfanYgQEBcbiAgICAgIEp2LmNhbGwgdyBcIm9wZW5cIiBbfEp2Lm9mX2pzdHIgdTsgSnYub2ZfanN0ciBuYW1lOyBKdi5vZl9qc3RyIGZlYXR1cmVzfF1cblxuICBsZXQgY2xvc2UgdyA9IGlnbm9yZSAoSnYuY2FsbCB3IFwiY2xvc2VcIiBbfHxdKVxuICBsZXQgcHJpbnQgdyA9IGlnbm9yZSAoSnYuY2FsbCB3IFwicHJpbnRcIiBbfHxdKVxuICBsZXQgcmVsb2FkIHcgPSBpZ25vcmUgKEp2LmNhbGwgKEp2LmdldCB3IFwibG9jYXRpb25cIikgXCJyZWxvYWRcIiBbfHxdKVxuXG4gICgqIExvY2F0aW9uIGFuZCBoaXN0b3J5ICopXG5cbiAgbGV0IGxvY2F0aW9uIHcgPSBKdi5uZXcnIFVyaS51cmwgW3wgSnYuZ2V0IHcgXCJsb2NhdGlvblwiIHxdXG4gIGxldCBzZXRfbG9jYXRpb24gdyB1ID0gSnYuc2V0IHcgXCJsb2NhdGlvblwiIChVcmkudG9fanYgdSlcblxuICBtb2R1bGUgSGlzdG9yeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTY3JvbGxfcmVzdG9yYXRpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IGF1dG8gPSBKc3RyLnYgXCJhdXRvXCJcbiAgICAgIGxldCBtYW51YWwgPSBKc3RyLnYgXCJtYW51YWxcIlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgbGVuZ3RoIGggPSBKdi5JbnQuZ2V0IGggXCJsZW5ndGhcIlxuICAgIGxldCBzY3JvbGxfcmVzdG9yYXRpb24gaCA9IEp2LkpzdHIuZ2V0IGggXCJzY3JvbGxSZXN0b3JhdGlvblwiXG4gICAgbGV0IHNldF9zY3JvbGxfcmVzdG9yYXRpb24gaCByID0gSnYuSnN0ci5zZXQgaCBcInNjcm9sbFJlc3RvcmF0aW9uXCIgclxuXG4gICAgKCogTW92aW5nIGluIGhpc3RvcnkgKilcblxuICAgIGxldCBiYWNrIGggPSBpZ25vcmUgQEAgSnYuY2FsbCBoIFwiYmFja1wiIFt8fF1cbiAgICBsZXQgZm9yd2FyZCBoID0gaWdub3JlIEBAIEp2LmNhbGwgaCBcImZvcndhcmRcIiBbfHxdXG4gICAgbGV0IGdvIGggZCA9IGlnbm9yZSBAQCBKdi5jYWxsIGggXCJnb1wiIEp2Llt8IG9mX2ludCBkIHxdXG5cbiAgICAoKiBNYWtpbmcgaGlzdG9yeSAqKVxuXG4gICAgdHlwZSBzdGF0ZSA9IEp2LnRcbiAgICBsZXQgc3RhdGUgaCA9IEp2LmdldCBoIFwic3RhdGVcIlxuICAgIGxldCBwdXNoX3N0YXRlID8oc3RhdGUgPSBKdi5udWxsKSA/KHRpdGxlID0gSnN0ci5lbXB0eSkgPyh1cmkgPSBKdi5udWxsKSBoID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGggXCJwdXNoU3RhdGVcIiBbfHN0YXRlOyBKdi5vZl9qc3RyIHRpdGxlOyB1cml8XVxuXG4gICAgbGV0IHJlcGxhY2Vfc3RhdGVcbiAgICAgICAgPyhzdGF0ZSA9IEp2Lm51bGwpID8odGl0bGUgPSBKc3RyLmVtcHR5KSA/KHVyaSA9IEp2Lm51bGwpIGhcbiAgICAgID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGggXCJyZXBsYWNlU3RhdGVcIiBbfHN0YXRlOyBKdi5vZl9qc3RyIHRpdGxlOyB1cml8XVxuXG4gICAgKCogRXZlbnQgKilcblxuICAgIG1vZHVsZSBFdiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFBvcHN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgICAgbGV0IHN0YXRlIGUgPSBKdi5nZXQgZSBcInN0YXRlXCJcbiAgICAgIGVuZFxuICAgICAgbGV0IHBvcHN0YXRlID0gRXYuVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvcHN0YXRlXCIpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBoaXN0b3J5IHcgPSBIaXN0b3J5Lm9mX2p2IEBAIEp2LmdldCB3IFwiaGlzdG9yeVwiXG5lbmRcblxubW9kdWxlIE5hdmlnYXRvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBsYW5ndWFnZXMgbiA9IG1hdGNoIEp2LmZpbmQgbiBcImxhbmd1YWdlc1wiIHdpdGhcbiAgfCBTb21lIGEgLT4gSnYudG9fanN0cl9saXN0IGFcbiAgfCBOb25lIC0+XG4gICAgICBtYXRjaCBKdi5Kc3RyLmZpbmQgbiBcImxhbmd1YWdlXCIgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gW3ZdIHwgTm9uZSAtPiBbXVxuXG4gIGxldCBtYXhfdG91Y2hfcG9pbnRzIG4gPVxuICAgIGxldCB0ID0gSnYuZ2V0IG4gXCJtYXhUb3VjaFBvaW50c1wiIGluXG4gICAgaWYgSnYuaXNfbm9uZSB0IHRoZW4gMCBlbHNlIEp2LnRvX2ludCB0XG5cbiAgbGV0IG9ubGluZSBuID0gSnYuQm9vbC5nZXQgbiBcIm9uTGluZVwiXG5lbmRcblxubW9kdWxlIFBlcmZvcm1hbmNlID0gc3RydWN0XG4gIG1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgIGxldCBmcmFtZSA9IEpzdHIudiBcImZyYW1lXCJcbiAgICAgIGxldCBuYXZpZ2F0aW9uID0gSnN0ci52IFwibmF2aWdhdGlvblwiXG4gICAgICBsZXQgcmVzb3VyY2UgPSBKc3RyLnYgXCJyZXNvdXJjZVwiXG4gICAgICBsZXQgbWFyayA9IEpzdHIudiBcIm1hcmtcIlxuICAgICAgbGV0IG1lYXN1cmUgPSBKc3RyLnYgXCJtZWFzdXJlXCJcbiAgICAgIGxldCBwYWludCA9IEpzdHIudiBcInBhaW50XCJcbiAgICAgIGxldCBsb25ndGFzayA9IEpzdHIudiBcImxvbmd0YXNrXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgdHlwZSBlbnRyeSA9IHRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgbmFtZSBlID0gSnYuSnN0ci5nZXQgZSBcIm5hbWVcIlxuICAgIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcImVudHJ5VHlwZVwiXG4gICAgbGV0IHN0YXJ0X3RpbWUgZSA9IEp2LkZsb2F0LmdldCBlIFwic3RhcnRUaW1lXCJcbiAgICBsZXQgZW5kX3RpbWUgZSA9IEp2LkZsb2F0LmdldCBlIFwiZW5kVGltZVwiXG4gICAgbGV0IGR1cmF0aW9uIGUgPSBKdi5GbG9hdC5nZXQgZSBcImR1cmF0aW9uXCJcbiAgICBsZXQgdG9fanNvbiBlID0gSnYuY2FsbCBlIFwidG9KU09OXCIgW3x8XVxuXG4gICAgbW9kdWxlIFJlc291cmNlX3RpbWluZyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnYudFxuICAgICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBsZXQgYXNfZW50cnkgPSBGdW4uaWRcbiAgICAgIGxldCBpbml0aWF0b3JfdHlwZSBlID0gSnYuSnN0ci5nZXQgZSBcImluaXRpYXRvclR5cGVcIlxuICAgICAgbGV0IG5leHRfaG9wX3Byb3RvY29sIGUgPSBKdi5Kc3RyLmdldCBlIFwibmV4dEhvcFByb3RvY29sXCJcbiAgICAgIGxldCB3b3JrZXJfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwid29ya2VyU3RhcnRcIlxuICAgICAgbGV0IHJlZGlyZWN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlZGlyZWN0U3RhcnRcIlxuICAgICAgbGV0IHJlZGlyZWN0X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZWRpcmVjdEVuZFwiXG4gICAgICBsZXQgZmV0Y2hfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZmV0Y2hTdGFydFwiXG4gICAgICBsZXQgZG9tYWluX2xvb2t1cF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21haW5Mb29rdXBTdGFydFwiXG4gICAgICBsZXQgZG9tYWluX2xvb2t1cF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZG9tYWluTG9va3VwRW5kXCJcbiAgICAgIGxldCBjb25uZWN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImNvbm5lY3RTdGFydFwiXG4gICAgICBsZXQgY29ubmVjdF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwiY29ubmVjdEVuZFwiXG4gICAgICBsZXQgc2VjdXJlX2Nvbm5lY3Rpb25fc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwic2VjdXJlQ29ubmVjdGlvblN0YXJ0XCJcbiAgICAgIGxldCByZXF1ZXN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlcXVlc3RTdGFydFwiXG4gICAgICBsZXQgcmVzcG9uc2Vfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwicmVzcG9uc2VTdGFydFwiXG4gICAgICBsZXQgcmVzcG9uc2VfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlc3BvbnNlRW5kXCJcbiAgICAgIGxldCB0cmFuc2Zlcl9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJ0cmFuc2ZlclNpemVcIlxuICAgICAgbGV0IGVuY29kZWRfYm9keV9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJlbmNvZGVkQm9keVNpemVcIlxuICAgICAgbGV0IGRlY29kZWRfYm9keV9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJkZWNvZGVkQm9keVNpemVcIlxuICAgIGVuZFxuICAgIG1vZHVsZSBOYXZpZ2F0aW9uX3RpbWluZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFR5cGUgPSAgc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgICBsZXQgbmF2aWdhdGUgPSBKc3RyLnYgXCJuYXZpZ2F0ZVwiXG4gICAgICAgIGxldCByZWxvYWQgPSBKc3RyLnYgXCJyZWxvYWRcIlxuICAgICAgICBsZXQgYmFja19mb3J3YXJkID0gSnN0ci52IFwiYmFja19mb3J3YXJkXCJcbiAgICAgICAgbGV0IHByZXJlbmRlciA9IEpzdHIudiBcInByZXJlbmRlclwiXG4gICAgICBlbmRcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgICBsZXQgYXNfcmVzb3VyY2VfdGltaW5nID0gRnVuLmlkXG4gICAgICBsZXQgYXNfZW50cnkgPSBGdW4uaWRcbiAgICAgIGxldCB1bmxvYWRfZXZlbnRfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwidW5sb2FkRXZlbnRTdGFydFwiXG4gICAgICBsZXQgdW5sb2FkX2V2ZW50X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJ1bmxvYWRFdmVudEVuZFwiXG4gICAgICBsZXQgZG9tX2ludGVyYWN0aXZlIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbUludGVyYWN0aXZlXCJcbiAgICAgIGxldCBkb21fY29udGVudF9sb2FkZWRfZXZlbnRfc3RhcnQgZSA9XG4gICAgICAgIEp2LkZsb2F0LmdldCBlIFwiZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnRcIlxuXG4gICAgICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkX2V2ZW50X2VuZCBlID1cbiAgICAgICAgSnYuRmxvYXQuZ2V0IGUgXCJkb21Db250ZW50TG9hZGVkRXZlbnRFbmRcIlxuXG4gICAgICBsZXQgZG9tX2NvbXBsZXRlIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbUNvbXBsZXRlXCJcbiAgICAgIGxldCBsb2FkX2V2ZW50X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImxvYWRFdmVudFN0YXJ0XCJcbiAgICAgIGxldCBsb2FkX2V2ZW50X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkRXZlbnRFbmRcIlxuICAgICAgbGV0IHR5cGUnIGUgPSBKdi5Kc3RyLmdldCBlIFwidHlwZSdcIlxuICAgICAgbGV0IHJlZGlyZWN0X2NvdW50IGUgPSBKdi5JbnQuZ2V0IGUgXCJyZWRpcmVjdENvdW50XCJcbiAgICBlbmRcbiAgICBsZXQgYXNfcmVzb3VyY2VfdGltaW5nID0gRnVuLmlkXG4gICAgbGV0IGFzX25hdmlnYXRpb25fdGltaW5nID0gRnVuLmlkXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IHRpbWVfb3JpZ2luX21zIHAgPSBKdi5GbG9hdC5nZXQgcCBcInRpbWVPcmlnaW5cIlxuICBsZXQgY2xlYXJfbWFya3MgcCBuID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG4gd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIG4gLT4gSnYuW3xvZl9qc3RyIG4gfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiY2xlYXJNYXJrc1wiIGFyZ3NcblxuICBsZXQgY2xlYXJfbWVhc3VyZXMgcCBuID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG4gd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIG4gLT4gSnYuW3xvZl9qc3RyIG4gfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiY2xlYXJNZWFzdXJlc1wiIGFyZ3NcblxuICBsZXQgY2xlYXJfcmVzb3VyY2VfdGltaW5ncyBwID0gaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyUmVzb3VyY2VUaW1pbmdzXCIgW3x8XVxuICBsZXQgZ2V0X2VudHJpZXMgP3R5cGUnID9uYW1lIHAgPSBtYXRjaCBuYW1lLCB0eXBlJyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzXCIgW3x8XVxuICB8IE5vbmUsIFNvbWUgdCAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlUeXBlXCIgSnYuW3wgb2ZfanN0ciB0IHxdXG4gIHwgU29tZSBuLCBOb25lIC0+XG4gICAgICBKdi50b19saXN0IEVudHJ5Lm9mX2p2IEBAIEp2LmNhbGwgcCBcImdldEVudHJpZXNCeU5hbWVcIiBKdi5bfCBvZl9qc3RyIG4gfF1cbiAgfCBTb21lIG4sIFNvbWUgdCAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlOYW1lXCJcbiAgICAgICAgSnYuW3wgb2ZfanN0ciBuOyBvZl9qc3RyIHQgfF1cblxuICBsZXQgbWFyayBwIG4gPSBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWFya1wiIEp2Llt8IG9mX2pzdHIgbiB8XVxuICBsZXQgbWVhc3VyZSA/c3RhcnQgP3N0b3AgcCBuID0gbWF0Y2ggc3RhcnQsIHN0b3Agd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBbfHxdXG4gIHwgU29tZSBzLCBOb25lIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgSnYuW3wgb2ZfanN0ciBzfF1cbiAgfCBTb21lIHMsIFNvbWUgZSAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWVhc3VyZVwiIEp2Llt8IG9mX2pzdHIgczsgb2ZfanN0ciBlfF1cbiAgfCBOb25lLCBTb21lIGUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBKdi5bfCB1bmRlZmluZWQ7IG9mX2pzdHIgZXxdXG5cbiAgbGV0IG5vd19tcyBwID0gSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBwIFwibm93XCIgW3x8XVxuICBsZXQgdG9fanNvbiBwID0gSnYuY2FsbCBwIFwidG9KU09OXCIgW3x8XVxuZW5kXG5cbm1vZHVsZSBHID0gc3RydWN0XG5cbiAgKCogR2xvYmFsIG9iamVjdHMgKilcblxuICBsZXQgY29uc29sZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJjb25zb2xlXCJcbiAgbGV0IGRvY3VtZW50ID0gRWwuZ2xvYmFsX2RvY3VtZW50XG4gIGxldCBuYXZpZ2F0b3IgPSBKdi5nZXQgSnYuZ2xvYmFsIFwibmF2aWdhdG9yXCJcbiAgbGV0IHBlcmZvcm1hbmNlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcInBlcmZvcm1hbmNlXCJcbiAgbGV0IHdpbmRvdyA9IEp2LmdldCBKdi5nbG9iYWwgXCJ3aW5kb3dcIlxuXG4gICgqIEdsb2JhbCBwcm9wZXJ0aWVzICopXG5cbiAgbGV0IGlzX3NlY3VyZV9jb250ZXh0ID0gSnYuQm9vbC5nZXQgSnYuZ2xvYmFsIFwiaXNTZWN1cmVDb250ZXh0XCJcblxuICAoKiBFdmVudCB0YXJnZXQgKilcblxuICBsZXQgdGFyZ2V0ID0gSnYuZ2xvYmFsXG5cbiAgKCogVGltZXJzICopXG5cbiAgdHlwZSB0aW1lcl9pZCA9IGludFxuXG4gIGxldCBzZXRfdGltZW91dCB+bXMgZiA9XG4gICAgSnYudG9faW50IEBAXG4gICAgSnYuY2FsbCBKdi5nbG9iYWwgXCJzZXRUaW1lb3V0XCIgW3wgSnYuY2FsbGJhY2sgfmFyaXR5OjEgZjsgSnYub2ZfaW50IG1zIHxdXG5cbiAgbGV0IHNldF9pbnRlcnZhbCB+bXMgZiA9XG4gICAgSnYudG9faW50IEBAXG4gICAgSnYuY2FsbCBKdi5nbG9iYWwgXCJzZXRJbnRlcnZhbFwiIFt8IEp2LmNhbGxiYWNrIH5hcml0eToxIGY7IEp2Lm9mX2ludCBtcyB8XVxuXG4gIGxldCBzdG9wX3RpbWVyIHRpZCA9XG4gICAgKCogYWNjb3JkaW5nIHRvIHNwZWMgaW50ZXJ2YWwgYW5kIHRpbWVvdXQgc2hhcmUgdGhlIHNhbWUgaW50cyAqKVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIEp2Lmdsb2JhbCBcImNsZWFyVGltZW91dFwiIFt8IEp2Lm9mX2ludCB0aWQgfF1cblxuICAoKiBBbmltYXRpb24gdGltaW5nICopXG5cbiAgdHlwZSBhbmltYXRpb25fZnJhbWVfaWQgPSBpbnRcblxuICBsZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgSnYuZ2xvYmFsIFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJcbiAgICAgIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjEgZnxdXG5cbiAgbGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgZmlkID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBKdi5nbG9iYWwgXCJjYW5jZWxBbmltYXRpb25GcmFtZVwiIFt8IEp2Lm9mX2ludCBmaWR8XVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp2IiwiSnN0ciIsIkZ1dCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9CaWdhcnJheSIsIlN0ZGxpYl9TeXMiLCJjc3RfYnViYmxlcyIsImNzdF9jYW5jZWxhYmxlIiwiY3N0X2NvbXBvc2VkIiwiaW5pdCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiY29tcG9zZWQiLCJwYXJhbSIsIm8iLCJldmVudCIsImNyZWF0ZSIsIm9wdCIsInQiLCJjc3RfdHlwZSIsInR5cGUiLCJlIiwidGFyZ2V0IiwiY3VycmVudF90YXJnZXQiLCJjb21wb3NlZF9wYXRoIiwiZXZlbnRfcGhhc2UiLCJzd2l0Y2hlciIsInN0b3BfcHJvcGFnYXRpb24iLCJzdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbiIsInByZXZlbnRfZGVmYXVsdCIsImRlZmF1bHRfcHJldmVudGVkIiwiaXNfdHJ1c3RlZCIsImNzdF90aW1lU3RhbXAiLCJ0aW1lc3RhbXBfbXMiLCJkaXNwYXRjaCIsImxpc3Rlbl9vcHRzIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwibGlzdGVuIiwib3B0cyIsInVubGlzdGVuIiwibmV4dCIsIm1hdGNoIiwic2V0IiwiZnV0Iiwia2luZCIsImkiLCJnZXRfZmlsZSIsImdldF9qc3RyIiwic2V0X3N0ciIsInN0ciIsImNzdF9sZW5ndGgiLCJsZW5ndGgiLCJsIiwiYWRkX2pzdHIiLCJhZGRfZmlsZSIsImZpbGUiLCJyZW1vdmUiLCJjbGVhciIsIml0ZW1zIiwiYWNjIiwiY3N0X2Ryb3BFZmZlY3QiLCJkcm9wX2VmZmVjdCIsImQiLCJzZXRfZHJvcF9lZmZlY3QiLCJjc3RfZWZmZWN0QWxsb3dlZCIsImVmZmVjdF9hbGxvd2VkIiwic2V0X2VmZmVjdF9hbGxvd2VkIiwiZGF0YSIsImMiLCJjc3RfZGF0YSIsIm1lc3NhZ2UiLCJmaWxlbmFtZSIsImxpbmVubyIsImNvbG5vIiwiZXJyb3IiLCJ3YWl0X3VudGlsIiwiY3N0X3JlbGF0ZWRUYXJnZXQiLCJyZWxhdGVkX3RhcmdldCIsIm0iLCJvbGRfdXJsIiwibmV3X3VybCIsImNzdF9kYXRhVHJhbnNmZXIiLCJkYXRhX3RyYW5zZmVyIiwiaW5wdXRfdHlwZSIsImNzdF9pc0NvbXBvc2luZyIsImlzX2NvbXBvc2luZyIsImtleSIsImsiLCJjc3RfY29kZSIsImNvZGUiLCJsb2NhdGlvbiIsInJlcGVhdCIsImNzdF9hbHRLZXkiLCJhbHRfa2V5IiwiY3N0X2N0cmxLZXkiLCJjdHJsX2tleSIsImNzdF9zaGlmdEtleSIsInNoaWZ0X2tleSIsImNzdF9tZXRhS2V5IiwibWV0YV9rZXkiLCJnZXRfbW9kaWZpZXJfc3RhdGUiLCJvZmZzZXRfeCIsIm9mZnNldF95IiwiY2xpZW50X3giLCJjbGllbnRfeSIsInBhZ2VfeCIsInBhZ2VfeSIsInNjcmVlbl94Iiwic2NyZWVuX3kiLCJtb3ZlbWVudF94IiwibW92ZW1lbnRfeSIsImNzdF9idXR0b24iLCJidXR0b24iLCJidXR0b25zIiwiaWQiLCJwIiwiY3N0X3dpZHRoIiwid2lkdGgiLCJjc3RfaGVpZ2h0IiwiaGVpZ2h0IiwicHJlc3N1cmUiLCJ0YW5nZW50aWFsX3ByZXNzdXJlIiwidGlsdF94IiwidGlsdF95IiwidHdpc3QiLCJhbHRpdHVkZV9hbmdsZSIsImF6aW11dGhfYW5nbGUiLCJpc19wcmltYXJ5IiwiZ2V0X2NvYWxlc2NlZF9ldmVudHMiLCJnZXRfcHJlZGljdGVkX2V2ZW50cyIsImRlbHRhX3giLCJ3IiwiZGVsdGFfeSIsImRlbHRhX3oiLCJkZWx0YV9tb2RlIiwiYXJyYXlfYnVmZmVyIiwibiIsImNzdF9ieXRlTGVuZ3RoIiwiYnl0ZV9sZW5ndGgiLCJhIiwic2xpY2UiLCJzdG9wIiwic3RhcnQiLCJidWZmZXIiLCJieXRlX29mZnNldCIsImRhdGF2aWV3Iiwib2ZfYnVmZmVyIiwiYiIsImdldF9pbnQ4IiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X3VpbnQ4IiwiZ2V0X3VpbnQxNl9iZSIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQzMl9sZSIsImdldF9mbG9hdDMyX2JlIiwiZ2V0X2Zsb2F0MzJfbGUiLCJnZXRfZmxvYXQ2NF9iZSIsImdldF9mbG9hdDY0X2xlIiwic2V0X2ludDgiLCJ2Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X3VpbnQ4Iiwic2V0X3VpbnQxNl9iZSIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF9mbG9hdDMyX2JlIiwic2V0X2Zsb2F0MzJfbGUiLCJzZXRfZmxvYXQ2NF9iZSIsInNldF9mbG9hdDY0X2xlIiwidHlwZV9zaXplX2luX2J5dGVzIiwiY29uc19vZl90eXBlIiwiYXJncyIsImNzdF9uYW1lIiwicyIsImVsdF90b19qdiIsImVsdF9vZl9qdiIsImNzdF9hdXRvIiwiY3N0X2RpciIsImNzdF9lcnJvciIsImNzdF9pbnB1dCIsImNzdF9zb3VyY2UiLCJjc3RfdGFibGUiLCJjc3RfdGltZSIsImNzdF90aXRsZSIsImNzdF90aW1lT3JpZ2luIiwiY3N0X3JlZGlyZWN0Q291bnQiLCJjc3RfbG9hZEV2ZW50RW5kIiwiY3N0X2xvYWRFdmVudFN0YXJ0IiwiY3N0X2RvbUNvbXBsZXRlIiwiY3N0X2RvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCIsImNzdF9kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCIsImNzdF9kb21JbnRlcmFjdGl2ZSIsImNzdF91bmxvYWRFdmVudEVuZCIsImNzdF91bmxvYWRFdmVudFN0YXJ0IiwiY3N0X2RlY29kZWRCb2R5U2l6ZSIsImNzdF9lbmNvZGVkQm9keVNpemUiLCJjc3RfdHJhbnNmZXJTaXplIiwiY3N0X3Jlc3BvbnNlRW5kIiwiY3N0X3Jlc3BvbnNlU3RhcnQiLCJjc3RfcmVxdWVzdFN0YXJ0IiwiY3N0X3NlY3VyZUNvbm5lY3Rpb25TdGFydCIsImNzdF9jb25uZWN0RW5kIiwiY3N0X2Nvbm5lY3RTdGFydCIsImNzdF9kb21haW5Mb29rdXBFbmQiLCJjc3RfZG9tYWluTG9va3VwU3RhcnQiLCJjc3RfZmV0Y2hTdGFydCIsImNzdF9yZWRpcmVjdEVuZCIsImNzdF9yZWRpcmVjdFN0YXJ0IiwiY3N0X3dvcmtlclN0YXJ0IiwiY3N0X25leHRIb3BQcm90b2NvbCIsImNzdF9pbml0aWF0b3JUeXBlIiwiY3N0X2R1cmF0aW9uIiwiY3N0X2VuZFRpbWUiLCJjc3Rfc3RhcnRUaW1lIiwiY3N0X2VudHJ5VHlwZSIsImNzdF9vbkxpbmUiLCJjc3RfbGFuZ3VhZ2VzIiwiY3N0X2xhbmd1YWdlIiwiY3N0X3Njcm9sbFJlc3RvcmF0aW9uIiwiY3N0X21hdGNoZXMiLCJjc3RfZGV2aWNlUGl4ZWxSYXRpbyIsImNzdF9pbm5lckhlaWdodCIsImNzdF9pbm5lcldpZHRoIiwiY3N0X3Njcm9sbFkiLCJjc3Rfc2Nyb2xsWCIsImNzdF9jbG9zZWQiLCJjc3RfcHJvZmlsZUVuZCIsImNzdF9wcm9maWxlIiwiY3N0X3RpbWVFbmQiLCJjc3RfdGltZUxvZyIsImNzdF9jb3VudFJlc2V0IiwiY3N0X2NvdW50IiwiY3N0X2dyb3VwQ29sbGFwc2VkIiwiY3N0X2dyb3VwIiwiY3N0X2dyb3VwRW5kIiwiY3N0X2Fzc2VydCIsImNzdF9kZWJ1ZyIsImNzdF9pbmZvIiwiY3N0X3dhcm4iLCJjc3RfdHJhY2UiLCJjc3RfbG9nIiwiY3N0X2NsZWFyIiwiY3N0X2Fib3J0ZWQiLCJjc3RfZnVsbHNjcmVlbkVuYWJsZWQiLCJjc3RfdmlzaWJpbGl0eVN0YXRlIiwiY3N0X3JlZmVycmVyIiwiY3N0X3NhcnRPZmZzZXQiLCJjc3RfZW5kT2Zmc2V0IiwiY3N0X2NvbGxhcHNlZCIsImNzdF9maWxlcyIsImNzdF9uYXZpZ2F0aW9uVUkiLCJjc3Rfc21vb3RoIiwiY3N0X2luc3RhbnQiLCJjc3RfY2VudGVyIiwiY3N0X25lYXJlc3QiLCJjc3Rfc3RhcnQiLCJjc3RfZW5kIiwiY3N0X3Njcm9sbEhlaWdodCIsImNzdF9zY3JvbGxXaWR0aCIsImNzdF9zY3JvbGxUb3AiLCJjc3Rfc2Nyb2xsTGVmdCIsImNzdF9vZmZzZXRUb3AiLCJjc3Rfb2Zmc2V0TGVmdCIsImNzdF9vZmZzZXRIZWlnaHQiLCJjc3Rfb2Zmc2V0V2lkdGgiLCJjc3RfeSIsImNzdF94IiwiY3N0X2NsaWVudEhlaWdodCIsImNzdF9jbGllbnRXaWR0aCIsImNzdF9jbGllbnRUb3AiLCJjc3RfY2xpZW50TGVmdCIsImNzdF9uZXh0RWxlbWVudFNpYmxpbmciLCJjc3RfcHJldmlvdXNFbGVtZW50U2libGluZyIsImNzdF9wYXJlbnROb2RlIiwiY3N0X3RleHRDb250ZW50IiwiY3N0X25vZGVWYWx1ZSIsImNzdF9ub2RlTmFtZSIsImNzdF9ub2RlVHlwZSIsImNzdF91bmljb2RlU2V0cyIsImNzdF91bmljb2RlIiwiY3N0X3N0aWNreSIsImNzdF9tdWx0aWxpbmUiLCJjc3RfaWdub3JlQ2FzZSIsImNzdF9oYXNJbmRpY2VzIiwiY3N0X2dsb2JhbCIsImNzdF9mbGFncyIsImNzdF9kb3RBbGwiLCJjc3RfbGFzdEluZGV4IiwiY3N0X2luZGljZXMiLCJjc3RfZ3JvdXBzIiwiY3N0X2luZGV4IiwiY3N0X2hhc2giLCJjc3Rfc2VhcmNoIiwiY3N0X3BhdGhuYW1lIiwiY3N0X3BvcnQiLCJjc3RfaG9zdG5hbWUiLCJjc3RfcHJvdG9jb2wiLCJjc3RfbGFzdE1vZGlmaWVkIiwiY3N0X3dlYmtpdFJlbGF0aXZlUGF0aCIsImNzdF9sZW5ndGhDb21wdXRhYmxlIiwiY3N0X2xvYWRlZCIsImNzdF90b3RhbCIsImNzdF9zaXplIiwiY3N0X2VuZGluZ3MiLCJjc3RfdXRmXzgiLCJjc3RfUmFuZ2VfRU5EX1RPX0VORCIsImNzdF9SYW5nZV9FTkRfVE9fU1RBUlQiLCJjc3RfUmFuZ2VfU1RBUlRfVE9fRU5EIiwiY3N0X1JhbmdlX1NUQVJUX1RPX1NUQVJUIiwiY3N0X2lzU2VjdXJlQ29udGV4dCIsImNvbXBpbGVkX3RvX3dhc20iLCJnZXQiLCJzZXRfdGFycmF5IiwiZHN0IiwiZmlsbCIsImNvcHlfd2l0aGluIiwic3ViIiwiZmluZCIsInNhdCIsIm9mX2p2IiwiZmluZF9pbmRleCIsImZvcl9hbGwiLCJleGlzdHMiLCJmaWx0ZXIiLCJpdGVyIiwibWFwIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsInJldmVyc2UiLCJvZl90YXJyYXkiLCJvZl9pbnRfYXJyYXkiLCJvZl9mbG9hdF9hcnJheSIsInRvX2ludF9qc3RyIiwic2VwIiwidG9faGV4X2pzdHIiLCJoZXgiLCJ1aW50OF9vZl9idWZmZXIiLCJvZl9qc3RyIiwiZW5jIiwidG9fanN0ciIsImRlYyIsImV4biIsIm9mX2JpbmFyeV9qc3RyIiwidG9fYmluYXJ5X2pzdHIiLCJ0eXBlX3RvX2JpZ2FycmF5X2tpbmQiLCJ0eXBlX29mX2JpZ2FycmF5X2tpbmQiLCJlbmRpbmdzIiwiYmxvYiIsIm9mX2FycmF5X2J1ZmZlciIsInN0cmVhbSIsImNzdF9wcm9ncmVzcyIsImxvYWQiLCJwcm9ncmVzcyIsImZpbGVfcmVhZGVyIiwiY29udiIsInByb2dyZXNzX2RhdGEiLCJsb2FkZWQiLCJ0b3RhbCIsInJlYWRlciIsInNldF9mdXQiLCJvayIsInRleHQiLCJkYXRhX3VyaSIsImJsb2JfaW5pdCIsImxhc3RfbW9kaWZpZWRfbXMiLCJvZl9ibG9iIiwibmFtZSIsInJlbGF0aXZlX3BhdGgiLCJkYXRhX3V0Zl84X29mX2pzdHIiLCJkYXRhX3V0Zl84X3RvX2pzdHIiLCJkYXRhX29mX2JpbmFyeV9qc3RyIiwiZGF0YV90b19iaW5hcnlfanN0ciIsImVuY29kZSIsImJzIiwiZGVjb2RlIiwianNvbiIsImVuY29kZV9jb21wb25lbnQiLCJkZWNvZGVfY29tcG9uZW50IiwidXJsIiwiYmFzZSIsIndpdGhfdXJpIiwic2NoZW1lIiwiaG9zdCIsInBvcnQiLCJwYXRoIiwicXVlcnkiLCJmcmFnbWVudCIsInUiLCJhcmciLCJldGEiLCJxIiwicHJlZml4IiwicGF0aF9zZWdtZW50cyIsImRlY29kZV9zZWciLCJ3aXRoX3BhdGhfc2VnbWVudHMiLCJzZWdzIiwiZW5jb2RlX3NlZyIsInVzcCIsImlzX2VtcHR5IiwibWVtIiwiZmluZF9hbGwiLCJmb2xkIiwidmFsdWUiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwib2Zfb2JqIiwicXVlcnlfcGFyYW1zIiwid2l0aF9xdWVyeV9wYXJhbXMiLCJwcyIsImZyYWdtZW50X3BhcmFtcyIsIndpdGhfZnJhZ21lbnRfcGFyYW1zIiwiaW5wdXQiLCJyIiwic3RhcnRfaW5kZXgiLCJzdG9wX2luZGV4IiwiZm9sZF9ncm91cHMiLCJmb2xkX2dyb3VwX2luZGljZXMiLCJyYW5nZSIsIm9ial9lbnRyaWVzIiwianYiLCJmb2xkX25hbWVkX2dyb3VwcyIsImdyb3VwcyIsImVudHJpZXMiLCJlbnRyeSIsImZvbGRfbmFtZWRfZ3JvdXBfaW5kaWNlcyIsInJlZ2V4cCIsImVzY2FwZSIsImZsYWdzIiwiZXhlYyIsImZvbGRfbWF0Y2hlcyIsInJlcGxhY2UiLCJieSIsInJlcGxhY2VfYWxsIiwic2VhcmNoIiwic3BsaXQiLCJsaW1pdCIsInRlc3QiLCJsYXN0X2luZGV4Iiwic2V0X2xhc3RfaW5kZXgiLCJkb3RfYWxsIiwiZ2xvYmFsIiwiaGFzX2luZGljZXMiLCJpZ25vcmVfY2FzZSIsIm11bHRpbGluZSIsInNvdXJjZSIsInN0aWNreSIsInVuaWNvZGUiLCJ1bmljb2RlX3NldHMiLCJ2b2lkJCIsImlzX3ZvaWQiLCJpZiQiLCJhdCIsImlmX3NvbWUiLCJ0cnVlJCIsImludCIsImZsb2F0IiwidG9fcGFpciIsImFkZF9pZiIsImFkZF9pZl9zb21lIiwiYWNjZXNza2V5IiwiYWN0aW9uIiwiYXV0b2NvbXBsZXRlIiwiYXV0b2ZvY3VzIiwiY2hhcnNldCIsImNzdF9jaGVja2VkIiwiY2hlY2tlZCIsImNzdF9jbGFzcyIsImNsYXNzJCIsImNvbHMiLCJjb250ZW50IiwiY29udGVudGVkaXRhYmxlIiwiZGVmZXIiLCJkaXIiLCJkaXNhYmxlZCIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZm9yJCIsImNzdF9oaWRkZW4iLCJoaWRkZW4iLCJocmVmIiwiY3N0X2lkIiwibGFuZyIsImxpc3QiLCJtZWRpYSIsIm1ldGhvZCIsInBsYWNlaG9sZGVyIiwicmVsIiwicmVxdWlyZWQiLCJyb3dzIiwic2VsZWN0ZWQiLCJzcGVsbGNoZWNrIiwic3JjIiwiY3N0X3N0eWxlIiwic3R5bGUiLCJ0YWJpbmRleCIsInRpdGxlIiwiY3N0X3ZhbHVlIiwid3JhcCIsImdsb2JhbF9kb2N1bWVudCIsImRvY3VtZW50IiwiZ2xvYmFsX3Jvb3QiLCJlbF9saXN0X29mX25vZGVfbGlzdCIsIm5sIiwibGVuIiwiY3N0IiwiY3MiLCJzcyIsImNsc3MiLCJ0eHQiLCJzcCIsIm5ic3AiLCJpc190eHQiLCJpc19lbCIsInRhZ19uYW1lIiwiaGFzX3RhZ19uYW1lIiwidHh0X3RleHQiLCJ0ZXh0X2NvbnRlbnQiLCJmaW5kX2J5X2NsYXNzIiwicm9vdCIsImZpbmRfYnlfdGFnX25hbWUiLCJmaW5kX2ZpcnN0X2J5X3NlbGVjdG9yIiwic2VsIiwiZm9sZF9maW5kX2J5X3NlbGVjdG9yIiwicGFyZW50IiwiY2hpbGRyZW4iLCJvbmx5X2VscyIsInNldF9jaGlsZHJlbiIsInByZXBlbmRfY2hpbGRyZW4iLCJhcHBlbmRfY2hpbGRyZW4iLCJwcmV2aW91c19zaWJsaW5nIiwibmV4dF9zaWJsaW5nIiwiaW5zZXJ0X3NpYmxpbmdzIiwibG9jIiwic2V0X2F0IiwianZfdG9fYm9vbCIsImp2X3RvX2ludCIsImp2X3RvX2Zsb2F0IiwianZfdG9fanN0ciIsImJvb2wiLCJqc3RyIiwicHJvcCIsInNldF9wcm9wIiwic2V0X2NsYXNzIiwiY29tcHV0ZWRfc3R5bGUiLCJpbmxpbmVfc3R5bGUiLCJzZXRfaW5saW5lX3N0eWxlIiwiaW1wb3J0YW50IiwicHJpb3JpdHkiLCJyZW1vdmVfaW5saW5lX3N0eWxlIiwiaW5uZXJfeCIsImlubmVyX3kiLCJpbm5lcl93IiwiaW5uZXJfaCIsImJvdW5kX3giLCJib3VuZF95IiwiYm91bmRfdyIsImJvdW5kX2giLCJvZmZzZXRfdyIsIm9mZnNldF9oIiwib2Zmc2V0X2xlZnQiLCJvZmZzZXRfdG9wIiwib2Zmc2V0X3BhcmVudCIsInNjcm9sbF94Iiwic2Nyb2xsX3kiLCJzY3JvbGxfdyIsInNjcm9sbF9oIiwic2Nyb2xsX2ludG9fdmlldyIsImJlaGF2aW9yIiwiYWxpZ25fdiIsImFsaWduIiwib3B0aW9ucyIsImhhc19mb2N1cyIsInNldF9oYXNfZm9jdXMiLCJpc19sb2NraW5nX3BvaW50ZXIiLCJwb2ludGVybG9ja2NoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJyZXF1ZXN0X3BvaW50ZXJfbG9jayIsImxvY2tlZCIsImV2IiwiZXJyIiwiY2xpY2siLCJzZWxlY3RfdGV4dCIsImZ1bGxzY3JlZW5fb3B0cyIsIm5hdmlnYXRpb25fdWkiLCJyZXF1ZXN0X2Z1bGxzY3JlZW4iLCJmaWxlcyIsInZvaWRfY29ucyIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29sIiwiY29sZ3JvdXAiLCJjb21tYW5kIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsImNzdF9saW5rIiwibGluayIsImNzdF9tYXJrIiwibWFyayIsIm1lbnUiLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwcmUiLCJycCIsInJ0IiwicnVieSIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwiY3N0X3NlbGVjdCIsInNlbGVjdCIsInNtYWxsIiwic3BhbiIsInN0cm9uZyIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidWwiLCJ2YXIkIiwidmlkZW8iLCJ3YnIiLCJlbmRfdG9fZW5kIiwiZW5kX3RvX3N0YXJ0Iiwic3RhcnRfdG9fZW5kIiwic3RhcnRfdG9fc3RhcnQiLCJjbG9uZV9yYW5nZSIsImNvbGxhcHNlIiwiY29sbGFwc2VfdG9fc3RhcnQiLCJjb2xsYXBzZV90b19lbmQiLCJjb21wYXJlX2JvdW5kYXJ5X3BvaW50cyIsImhvdyIsImNvbXBhcmVfcG9pbnQiLCJlbCIsIm9mZnNldCIsImRlbGV0ZV9jb250ZW50cyIsImluc2VydF9ub2RlIiwiaW50ZXJzZWN0c19ub2RlIiwiaXNfcG9pbnRfaW5fcmFuZ2UiLCJzZWxlY3Rfbm9kZSIsInNlbGVjdF9ub2RlX2NvbnRlbnRzIiwic2V0X2VuZCIsInNldF9lbmRfYWZ0ZXIiLCJzZXRfZW5kX2JlZm9yZSIsInNldF9zdGFydCIsInNldF9zdGFydF9hZnRlciIsInNldF9zdGFydF9iZWZvcmUiLCJzdXJyb3VuZF9jb250ZW50cyIsInRvX3N0cmluZyIsImNvbGxhcHNlZCIsImNvbW1vbl9hbmNlc3Rvcl9jb250YWluZXIiLCJlbmRfY29udGFpbmVyIiwiZW5kX29mZnNldCIsInN0YXJ0X2NvbnRhaW5lciIsInN0YXJ0X29mZnNldCIsImFzX3RhcmdldCIsImFjdGl2ZV9lbCIsImZpbmRfZWxfYnlfaWQiLCJmaW5kX2Vsc19ieV9uYW1lIiwicmVmZXJyZXIiLCJzZXRfdGl0bGUiLCJ2aXNpYmlsaXR5X3N0YXRlIiwicG9pbnRlcl9sb2NrX2VsZW1lbnQiLCJleGl0X3BvaW50ZXJfbG9jayIsImZ1bGxzY3JlZW5fYXZhaWxhYmxlIiwiZnVsbHNjcmVlbl9lbGVtZW50IiwiZXhpdF9mdWxsc2NyZWVuIiwiYWJvcnRlZCIsImNvbnRyb2xsZXIiLCJzaWduYWwiLCJhYm9ydCIsImNhbGwiLCJtZXRoIiwibXNnIiwibXNnX3RvX2p2X2FycmF5IiwidnMiLCJsb2ciLCJ0cmFjZSIsIndhcm4iLCJpbmZvIiwiZGVidWciLCJhc3NlcnQiLCJncm91cF9lbmQiLCJncm91cCIsImNsb3NlZCIsImNvdW50IiwiY291bnRfcmVzZXQiLCJ0aW1lX2xvZyIsInRpbWVfZW5kIiwicHJvZmlsZSIsInByb2ZpbGVfZW5kIiwidGltZV9zdGFtcCIsImxvZ19yZXN1bHQiLCJsb2dfaWZfZXJyb3IiLCJ1c2UiLCJlcnJvcl9tc2ciLCJpbm5lcl93aWR0aCIsImlubmVyX2hlaWdodCIsImRldmljZV9waXhlbF9yYXRpbyIsIm1hdGNoZXNfbWVkaWEiLCJwcmVmZXJzX2RhcmtfY29sb3Jfc2NoZW1lIiwib3BlbiIsImZlYXR1cmVzIiwiY2xvc2UiLCJwcmludCIsInJlbG9hZCIsInNldF9sb2NhdGlvbiIsImgiLCJzY3JvbGxfcmVzdG9yYXRpb24iLCJzZXRfc2Nyb2xsX3Jlc3RvcmF0aW9uIiwiYmFjayIsImZvcndhcmQiLCJnbyIsInN0YXRlIiwicHVzaF9zdGF0ZSIsInVyaSIsInJlcGxhY2Vfc3RhdGUiLCJoaXN0b3J5IiwibGFuZ3VhZ2VzIiwibWF4X3RvdWNoX3BvaW50cyIsIm9ubGluZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsImR1cmF0aW9uIiwidG9fanNvbiIsImFzX2VudHJ5IiwiaW5pdGlhdG9yX3R5cGUiLCJuZXh0X2hvcF9wcm90b2NvbCIsIndvcmtlcl9zdGFydCIsInJlZGlyZWN0X3N0YXJ0IiwicmVkaXJlY3RfZW5kIiwiZmV0Y2hfc3RhcnQiLCJkb21haW5fbG9va3VwX3N0YXJ0IiwiZG9tYWluX2xvb2t1cF9lbmQiLCJjb25uZWN0X3N0YXJ0IiwiY29ubmVjdF9lbmQiLCJzZWN1cmVfY29ubmVjdGlvbl9zdGFydCIsInJlcXVlc3Rfc3RhcnQiLCJyZXNwb25zZV9zdGFydCIsInJlc3BvbnNlX2VuZCIsInRyYW5zZmVyX3NpemUiLCJlbmNvZGVkX2JvZHlfc2l6ZSIsImRlY29kZWRfYm9keV9zaXplIiwiYXNfcmVzb3VyY2VfdGltaW5nIiwidW5sb2FkX2V2ZW50X3N0YXJ0IiwidW5sb2FkX2V2ZW50X2VuZCIsImRvbV9pbnRlcmFjdGl2ZSIsImRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9zdGFydCIsImRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9lbmQiLCJkb21fY29tcGxldGUiLCJsb2FkX2V2ZW50X3N0YXJ0IiwibG9hZF9ldmVudF9lbmQiLCJyZWRpcmVjdF9jb3VudCIsImFzX25hdmlnYXRpb25fdGltaW5nIiwidGltZV9vcmlnaW5fbXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY2xlYXJfcmVzb3VyY2VfdGltaW5ncyIsImdldF9lbnRyaWVzIiwibWVhc3VyZSIsIm5vd19tcyIsImNvbnNvbGUiLCJuYXZpZ2F0b3IiLCJwZXJmb3JtYW5jZSIsIndpbmRvdyIsImlzX3NlY3VyZV9jb250ZXh0Iiwic2V0X3RpbWVvdXQiLCJtcyIsInNldF9pbnRlcnZhbCIsInN0b3BfdGltZXIiLCJ0aWQiLCJyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSIsImNhbmNlbF9hbmltYXRpb25fZnJhbWUiLCJmaWQiLCJjc3Rf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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkF4Zm5EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQXdmbUQ7QUFBQTtBQUFBLEVEdndFakUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozNzY1NCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJicnIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2Jyci9icnJfY2FudmFzLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxub3BlbiBCcnJcblxubW9kdWxlIE1hdHJpeDQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgaXNfMmQgbSA9IEp2LkJvb2wuZ2V0IG0gXCJpczJEXCJcbiAgbGV0IGlzX2lkZW50aXR5IG0gPSBKdi5Cb29sLmdldCBtIFwiaXNJZGVudGl0eVwiXG4gIGxldCBpbnZlcnNlIG0gPSBKdi5jYWxsIG0gXCJpbnZlcnNlXCIgW3x8XVxuICBsZXQgbXVsdGlwbHkgbSBtJyA9IEp2LmNhbGwgbSBcIm11bHRpcGx5XCIgW3xtJ3xdXG5cbiAgbGV0IG0xMSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTFcIlxuICBsZXQgbTEyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0xMlwiXG4gIGxldCBtMTMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTEzXCJcbiAgbGV0IG0xNCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTRcIlxuICBsZXQgbTIxIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yMVwiXG4gIGxldCBtMjIgbSA9IEp2LkZsb2F0LmdldCBtIFwibTIyXCJcbiAgbGV0IG0yMyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjNcIlxuICBsZXQgbTI0IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yNFwiXG4gIGxldCBtMzEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTMxXCJcbiAgbGV0IG0zMiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMzJcIlxuICBsZXQgbTMzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zM1wiXG4gIGxldCBtMzQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTM0XCJcbiAgbGV0IG00MSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDFcIlxuICBsZXQgbTQyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm00MlwiXG4gIGxldCBtNDMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQzXCJcbiAgbGV0IG00NCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDRcIlxuICBsZXQgYSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhXCJcbiAgbGV0IGIgbSA9IEp2LkZsb2F0LmdldCBtIFwiYlwiXG4gIGxldCBjIG0gPSBKdi5GbG9hdC5nZXQgbSBcImNcIlxuICBsZXQgZCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJkXCJcbiAgbGV0IGUgbSA9IEp2LkZsb2F0LmdldCBtIFwiZVwiXG4gIGxldCBmIG0gPSBKdi5GbG9hdC5nZXQgbSBcImZcIlxuXG4gIGxldCBkb21tYXRyaXhybyA9IEp2LmdldCBKdi5nbG9iYWwgXCJET01NYXRyaXhSZWFkT25seVwiXG5cbiAgbGV0IHRvX2Zsb2F0MzJfYXJyYXkgbSA9IFRhcnJheS5vZl9qdiBAQCBKdi5jYWxsIG0gXCJ0b0Zsb2F0MzJBcnJheVwiIFt8fF1cbiAgbGV0IG9mX2Zsb2F0MzJfYXJyYXkgYSA9XG4gICAgSnYuY2FsbCBkb21tYXRyaXhybyBcImZyb21GbG9hdDMyQXJyYXlcIiBbfCBUYXJyYXkudG9fanYgYSB8XVxuXG4gIGxldCB0b19mbG9hdDY0X2FycmF5IG0gPSBUYXJyYXkub2ZfanYgQEAgSnYuY2FsbCBtIFwidG9GbG9hdDY0QXJyYXlcIiBbfHxdXG4gIGxldCBvZl9mbG9hdDY0X2FycmF5IGEgPVxuICAgIEp2LmNhbGwgZG9tbWF0cml4cm8gXCJmcm9tRmxvYXQ2NEFycmF5XCIgW3wgVGFycmF5LnRvX2p2IGEgfF1cbmVuZFxuXG5tb2R1bGUgVmVjNCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgdjQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRE9NUG9pbnRSZWFkT25seVwiXG4gIGxldCB2IH54IH55IH56IH53ID1cbiAgICBKdi5uZXcnIHY0IEp2Llt8b2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgejsgb2ZfZmxvYXQgdzt8XVxuXG4gIGxldCB0ciBtIHYgPSBKdi5jYWxsIHYgXCJtYXRyaXhUcmFuc2Zvcm1cIiBbfCBNYXRyaXg0LnRvX2p2IG0gfF1cbiAgbGV0IHRvX2pzb24gdiA9IEp2LmNhbGwgdiBcInRvSlNPTlwiIFt8fF1cbiAgbGV0IHggdiA9IEp2LkZsb2F0LmdldCB2IFwieFwiXG4gIGxldCB5IHYgPSBKdi5GbG9hdC5nZXQgdiBcInlcIlxuICBsZXQgeiB2ID0gSnYuRmxvYXQuZ2V0IHYgXCJ6XCJcbiAgbGV0IHcgdiA9IEp2LkZsb2F0LmdldCB2IFwid1wiXG5lbmRcblxubW9kdWxlIENhbnZhcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBjcmVhdGUgP2QgP2F0ID8odyA9IDApID8oaCA9IDApIGNzID1cbiAgICBsZXQgYyA9IEVsLnRvX2p2IEBAIEVsLmNhbnZhcyA/ZCA/YXQgY3MgaW5cbiAgICBKdi5JbnQuc2V0IGMgXCJ3aWR0aFwiIHc7IEp2LkludC5zZXQgYyBcImhlaWdodFwiIGg7XG4gICAgY1xuXG4gIGxldCBvZl9lbCBlID1cbiAgICBpZiBFbC5oYXNfdGFnX25hbWUgRWwuTmFtZS5jYW52YXMgZSB0aGVuIChFbC50b19qdiBlKSBlbHNlXG4gICAgbGV0IGV4cCA9IEpzdHIudiBcIkV4cGVjdGVkIGNhbnZhcyBlbGVtZW50IGJ1dCBmb3VuZDogXCIgaW5cbiAgICBKdi50aHJvdyAoSnN0ci5hcHBlbmQgZXhwIChFbC50YWdfbmFtZSBlKSlcblxuICBsZXQgdG9fZWwgPSBFbC5vZl9qdlxuXG4gICgqIERpbWVuc2lvbnMgKilcblxuICBsZXQgdyBjID0gSnYuSW50LmdldCBjIFwid2lkdGhcIlxuICBsZXQgaCBjID0gSnYuSW50LmdldCBjIFwiaGVpZ2h0XCJcbiAgbGV0IHNldF93IGMgdyA9IEp2LkludC5zZXQgYyBcIndpZHRoXCIgd1xuICBsZXQgc2V0X2ggYyBoID0gSnYuSW50LnNldCBjIFwiaGVpZ2h0XCIgaFxuICBsZXQgc2V0X3NpemVfdG9fbGF5b3V0X3NpemUgPyhoaWRwaSA9IHRydWUpIGMgPVxuICAgIGxldCBkcHIgPSBpZiBoaWRwaSB0aGVuIFdpbmRvdy5kZXZpY2VfcGl4ZWxfcmF0aW8gRy53aW5kb3cgZWxzZSAxLjAgaW5cbiAgICBsZXQgY3cgPSBGbG9hdC50b19pbnQgQEAgRmxvYXQuY2VpbCAoZHByICouIEVsLmlubmVyX3cgKEVsLm9mX2p2IGMpKSBpblxuICAgIGxldCBjaCA9IEZsb2F0LnRvX2ludCBAQCBGbG9hdC5jZWlsIChkcHIgKi4gRWwuaW5uZXJfaCAoRWwub2ZfanYgYykpIGluXG4gICAgaWYgdyBjIDw+IGN3IHx8IGggYyA8PiBjaFxuICAgIHRoZW4gKHNldF93IGMgY3c7IHNldF9oIGMgY2gpXG5cbiAgKCogQ29udmVydGluZyAqKVxuXG4gIHR5cGUgaW1hZ2VfZW5jb2RlID0gSnYudCAoKiBJbWFnZUVuY29kZU9wdGlvbnMgb2JqZWN0LiAqKVxuICBsZXQgaW1hZ2VfZW5jb2RlID8odHlwZScgPSBKc3RyLnYgXCJpbWFnZS9wbmdcIikgP3F1YWxpdHkgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Kc3RyLnNldCBvIFwidHlwZVwiIHR5cGUnO1xuICAgIEp2LkZsb2F0LnNldF9pZl9zb21lIG8gXCJxdWFsaXR5XCIgcXVhbGl0eTtcbiAgICBvXG5cbiAgbGV0IGVuYyA/ZW5jb2RlIGMgbWV0aCBhcmcgPVxuICAgIGxldCBlbmNvZGUgPSBtYXRjaCBlbmNvZGUgd2l0aCBOb25lIC0+IGltYWdlX2VuY29kZSAoKSB8IFNvbWUgZSAtPiBlIGluXG4gICAgbGV0IHQgPSBKdi5nZXQgZW5jb2RlIFwidHlwZVwiIGluXG4gICAgbGV0IHEgPSBKdi5maW5kIGVuY29kZSBcInF1YWxpdHlcIiBpblxuICAgIGxldCBhcmdzID0gbWF0Y2ggYXJnIHdpdGhcbiAgICB8IE5vbmUgLT4gKG1hdGNoIHEgd2l0aCBOb25lIC0+IFt8dHxdIHwgU29tZSBxIC0+IFt8dDsgcXxdKVxuICAgIHwgU29tZSBhIC0+IChtYXRjaCBxIHdpdGggTm9uZSAtPiBbfGE7IHR8XSB8IFNvbWUgcSAtPiBbfCBhOyB0OyBxfF0pXG4gICAgaW5cbiAgICBKdi5jYWxsIGMgbWV0aCBhcmdzXG5cbiAgbGV0IHRvX2RhdGFfdXJsID9lbmNvZGUgYyA9IG1hdGNoIGVuYyBjIFwidG9EYXRhVVJMXCIgTm9uZSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgdG9fYmxvYiA/ZW5jb2RlIGMgPVxuICAgIGxldCBmdXQsIHNldCA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgY2IgYmxvYiA9IHNldCAoT2sgKEp2LnRvX29wdGlvbiBCbG9iLm9mX2p2IGJsb2IpKSBpblxuICAgIG1hdGNoIGVuYyBjIFwidG9CbG9iXCIgKFNvbWUgKEp2LmNhbGxiYWNrIH5hcml0eToxIGNiKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gc2V0IChFcnJvciBlKTsgZnV0XG4gICAgfCBfIC0+IGZ1dFxuXG4gIGxldCBjYXB0dXJlX3N0cmVhbSB+aHogYyA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBoeiB3aXRoIE5vbmUgLT4gW3x8XSB8IFNvbWUgaHogLT4gW3xKdi5vZl9pbnQgaHp8XSBpblxuICAgIEJycl9pby5NZWRpYS5TdHJlYW0ub2ZfanYgQEAgSnYuY2FsbCBjIFwiY2FwdHVyZVN0cnNlYW1cIiBhcmdzXG5lbmRcblxubW9kdWxlIEMyZCA9IHN0cnVjdFxuXG4gICgqIEVudW1lcmF0aW9ucyAqKVxuXG4gIG1vZHVsZSBGaWxsX3J1bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbm9uemVybyA9IEpzdHIudiBcIm5vbnplcm9cIlxuICAgIGxldCBldmVub2RkID0gSnN0ci52IFwiZXZlbm9kZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBsb3cgPSBKc3RyLnYgXCJsb3dcIlxuICAgIGxldCBtZWRpdW0gPSBKc3RyLnYgXCJtZWRpdW1cIlxuICAgIGxldCBoaWdoID0gSnN0ci52IFwiaGlnaFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBMaW5lX2NhcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBidXR0ID0gSnN0ci52IFwiYnV0dFwiXG4gICAgbGV0IHJvdW5kID0gSnN0ci52IFwicm91bmRcIlxuICAgIGxldCBzcXVhcmUgPSBKc3RyLnYgXCJzcXVhcmVcIlxuICBlbmRcblxuICBtb2R1bGUgTGluZV9qb2luID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHJvdW5kID0gSnN0ci52IFwicm91bmRcIlxuICAgIGxldCBiZXZlbCA9IEpzdHIudiBcImJldmVsXCJcbiAgICBsZXQgbWl0ZXIgPSBKc3RyLnYgXCJtaXRlclwiXG4gIGVuZFxuXG4gIG1vZHVsZSBUZXh0X2FsaWduID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHN0YXJ0ID0gSnN0ci52IFwic3RhcnRcIlxuICAgIGxldCBlbmQnID0gSnN0ci52IFwiZW5kXCJcbiAgICBsZXQgbGVmdCA9IEpzdHIudiBcImxlZnRcIlxuICAgIGxldCByaWdodCA9IEpzdHIudiBcInJpZ2h0XCJcbiAgICBsZXQgY2VudGVyID0gSnN0ci52IFwiY2VudGVyXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleHRfYmFzZWxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgdG9wID0gSnN0ci52IFwidG9wXCJcbiAgICBsZXQgaGFuZ2luZyA9IEpzdHIudiBcImhhbmdpbmdcIlxuICAgIGxldCBtaWRkbGUgPSBKc3RyLnYgXCJtaWRkbGVcIlxuICAgIGxldCBhbHBoYWJldGljID0gSnN0ci52IFwiYWxwaGFiZXRpY1wiXG4gICAgbGV0IGlkZW9ncmFwaGljID0gSnN0ci52IFwiaWRlb2dyYXBoaWNcIlxuICAgIGxldCBib3R0b20gPSBKc3RyLnYgXCJib3R0b21cIlxuICBlbmRcblxuICBtb2R1bGUgVGV4dF9kaXJlY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbHRyID0gSnN0ci52IFwibHRyXCJcbiAgICBsZXQgcnRsID0gSnN0ci52IFwicnRsXCJcbiAgICBsZXQgaW5oZXJpdCcgPSBKc3RyLnYgXCJpbmhlcml0XCJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbXBvc2l0ZV9vcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuXG4gICAgbGV0IG5vcm1hbCA9IEpzdHIudiBcIm5vcm1hbFwiXG4gICAgbGV0IG11bHRpcGx5ID0gSnN0ci52IFwibXVsdGlwbHlcIlxuICAgIGxldCBzY3JlZW4gPSBKc3RyLnYgXCJzY3JlZW5cIlxuICAgIGxldCBvdmVybGF5ID0gSnN0ci52IFwib3ZlcmxheVwiXG4gICAgbGV0IGRhcmtlbiA9IEpzdHIudiBcImRhcmtlblwiXG4gICAgbGV0IGxpZ2h0ZW4gPSBKc3RyLnYgXCJsaWdodGVuXCJcbiAgICBsZXQgY29sb3JfZG9kZ2UgPSBKc3RyLnYgXCJjb2xvci1kb2RnZVwiXG4gICAgbGV0IGNvbG9yX2J1cm4gPSBKc3RyLnYgXCJjb2xvci1idXJuXCJcbiAgICBsZXQgaGFyZF9saWdodCA9IEpzdHIudiBcImhhcmQtbGlnaHRcIlxuICAgIGxldCBzb2Z0X2xpZ2h0ID0gSnN0ci52IFwic29mdC1saWdodFwiXG4gICAgbGV0IGRpZmZlcmVuY2UgPSBKc3RyLnYgXCJkaWZmZXJlbmNlXCJcbiAgICBsZXQgZXhjbHVzaW9uID0gSnN0ci52IFwiZXhjbHVzaW9uXCJcbiAgICBsZXQgaHVlID0gSnN0ci52IFwiaHVlXCJcbiAgICBsZXQgc2F0dXJhdGlvbiA9IEpzdHIudiBcInNhdHVyYXRpb25cIlxuICAgIGxldCBjb2xvciA9IEpzdHIudiBcImNvbG9yXCJcbiAgICBsZXQgbHVtaW5vc2l0eSA9IEpzdHIudiBcImx1bWlub3NpdHlcIlxuICAgIGxldCBjbGVhciA9IEpzdHIudiBcImNsZWFyXCJcbiAgICBsZXQgY29weSA9IEpzdHIudiBcImNvcHlcIlxuICAgIGxldCBzb3VyY2Vfb3ZlciA9IEpzdHIudiBcInNvdXJjZS1vdmVyXCJcbiAgICBsZXQgZGVzdGluYXRpb25fb3ZlciA9IEpzdHIudiBcImRlc3RpbmF0aW9uLW92ZXJcIlxuICAgIGxldCBzb3VyY2VfaW4gPSBKc3RyLnYgXCJzb3VyY2UtaW5cIlxuICAgIGxldCBkZXN0aW5hdGlvbl9pbiA9IEpzdHIudiBcImRlc3RpbmF0aW9uLWluXCJcbiAgICBsZXQgc291cmNlX291dCA9IEpzdHIudiBcInNvdXJjZS1vdXRcIlxuICAgIGxldCBkZXN0aW5hdGlvbl9vdXQgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1vdXRcIlxuICAgIGxldCBzb3VyY2VfYXRvcCA9IEpzdHIudiBcInNvdXJjZS1hdG9wXCJcbiAgICBsZXQgZGVzdGluYXRpb25fYXRvcCA9IEpzdHIudiBcImRlc3RpbmF0aW9uLWF0b3BcIlxuICAgIGxldCB4b3IgPSBKc3RyLnYgXCJ4b3JcIlxuICAgIGxldCBsaWdodGVyID0gSnN0ci52IFwibGlnaHRlclwiXG4gICAgbGV0IHBsdXNfZGFya2VyID0gSnN0ci52IFwicGx1cy1kYXJrZXJcIlxuICAgIGxldCBwbHVzX2xpZ2h0ZXIgPSBKc3RyLnYgXCJwbHVzLWxpZ2h0ZXJcIlxuICBlbmRcblxuICBtb2R1bGUgUmVwZWF0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHh5ID0gSnN0ci52IFwicmVwZWF0XCJcbiAgICBsZXQgeCA9IEpzdHIudiBcInJlcGVhdC14XCJcbiAgICBsZXQgeSA9IEpzdHIudiBcInJlcGVhdC15XCJcbiAgICBsZXQgbm8gPSBKc3RyLnYgXCJuby1yZXBlYXRcIlxuICBlbmRcblxuICBtb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcGF0aCA9IEp2LmdldCBKdi5nbG9iYWwgXCJQYXRoMkRcIlxuICAgIGxldCBjcmVhdGUgKCkgPSBKdi5uZXcnIHBhdGggW3x8XVxuICAgIGxldCBvZl9zdmcgc3ZnID0gSnYubmV3JyBwYXRoIFt8IEp2Lm9mX2pzdHIgc3ZnIHxdXG4gICAgbGV0IG9mX3BhdGggcCA9IEp2Lm5ldycgcGF0aCBbfCBwIHxdXG4gICAgbGV0IGFkZCA/dHIgcCBwJyA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiYWRkUGF0aFwiXG4gICAgICAgIChtYXRjaCB0ciB3aXRoIE5vbmUgLT4gW3xwJ3xdIHwgU29tZSB0IC0+IFt8cCc7IE1hdHJpeDQudG9fanYgdHxdKVxuXG4gICAgbGV0IGNsb3NlIHAgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsb3NlUGF0aFwiIFt8fF1cblxuICAgIGxldCBtb3ZlX3RvIHAgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1vdmVUb1wiIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICAgIGxldCBsaW5lX3RvIHAgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImxpbmVUb1wiIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICAgIGxldCBxY3VydmVfdG8gcCB+Y3ggfmN5IH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJxdWFkcmF0aWNDdXJ2ZVRvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgY2N1cnZlX3RvIHAgfmN4IH5jeSB+Y3gnIH5jeScgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImJlemllckN1cnZlVG9cIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IGN4Jzsgb2ZfZmxvYXQgY3knO1xuICAgICAgICAgICAgICBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICAgIGxldCBhcmNfdG8gcCB+Y3ggfmN5IH5jeCcgfmN5JyB+ciA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiYXJjVG9cIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IGN4Jzsgb2ZfZmxvYXQgY3knOyBvZl9mbG9hdCByfF1cblxuICAgIGxldCBhcmMgPyhhbnRpY2xvY2t3aXNlID0gZmFsc2UpIHAgfmN4IH5jeSB+ciB+c3RhcnQgfnN0b3AgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFyY1wiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IGN4OyBvZl9mbG9hdCBjeTsgb2ZfZmxvYXQgcjsgb2ZfZmxvYXQgc3RhcnQ7XG4gICAgICAgICAgICAgIG9mX2Zsb2F0IHN0b3A7IG9mX2Jvb2wgYW50aWNsb2Nrd2lzZSB8XVxuXG4gICAgbGV0IHJlY3QgcCB+eCB+eSB+dyB+aCA9XG4gICAgICBpZ25vcmUgQEAgIEp2LmNhbGwgcCBcInJlY3RcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgICBsZXQgZWxsaXBzZSA/KGFudGljbG9ja3dpc2UgPSBmYWxzZSkgcCB+Y3ggfmN5IH5yeCB+cnkgfnJvdCB+c3RhcnQgfnN0b3AgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImVsbGlwc2VcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IHJ4OyBvZl9mbG9hdCByeTsgb2ZfZmxvYXQgcm90O1xuICAgICAgICAgICAgICBvZl9mbG9hdCBzdGFydDsgb2ZfZmxvYXQgc3RvcDsgb2ZfYm9vbCBhbnRpY2xvY2t3aXNlIHxdXG5cbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgKCogSW1hZ2Ugc291cmNlcyAqKVxuXG4gIHR5cGUgaW1hZ2Vfc3JjID0gSnYudFxuICBsZXQgaW1hZ2Vfc3JjX29mX2VsID0gRWwudG9fanZcbiAgbGV0IGltYWdlX3NyY19vZl9qdiA9IEZ1bi5pZFxuXG4gICgqIEF0dHJpYnV0ZXMgKilcblxuICB0eXBlIGF0dHJzID0gSnYudFxuXG4gIGxldCBjcmVhdGVfYXR0cnNcbiAgICAgID9hbHBoYSA/Y29sb3Jfc3BhY2UgP2Rlc3luY2hyb25pemVkID93aWxsX3JlYWRfZnJlcXVlbnRseSAoKVxuICAgID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiYWxwaGFcIiBhbHBoYTtcbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJjb2xvclNwYWNlXCIgY29sb3Jfc3BhY2U7XG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiZGVzeW5jaHJvbml6ZWRcIiBkZXN5bmNocm9uaXplZDtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJ3aWxsUmVhZEZyZXF1ZW50bHlcIiB3aWxsX3JlYWRfZnJlcXVlbnRseTtcbiAgICBvXG5cbiAgbGV0IGF0dHJzX2FscGhhIG8gPSBKdi5Cb29sLmdldCBvIFwiYWxwaGFcIlxuICBsZXQgYXR0cnNfY29sb3Jfc3BhY2UgbyA9XG4gICAgKCogVGhpcyBjYW4gYmUgZ2V0IG9uY2UgRkYgc3VwcG9ydHMgdGhlIHByb3BlcnR5LiAqKVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpKc3RyLmVtcHR5IChKdi5Kc3RyLmZpbmQgbyBcImNvbG9yU3BhY2VcIilcblxuICBsZXQgYXR0cnNfZGVzeW5jaHJvbml6ZWQgbyA9IEp2LkJvb2wuZ2V0IG8gXCJkZXN5bmNocm9uaXplZFwiXG4gIGxldCBhdHRyc193aWxsX3JlYWRfZnJlcXVlbnRseSBvID0gSnYuQm9vbC5nZXQgbyBcIndpbGxSZWFkRnJlcXVlbnRseVwiXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IGdldF9jb250ZXh0ID8oYXR0cnMgPSBKdi51bmRlZmluZWQpIGNudiA9XG4gICAgSnYuY2FsbCBjbnYgXCJnZXRDb250ZXh0XCIgSnYuW3wgb2Zfc3RyaW5nIFwiMmRcIjsgYXR0cnMgfF1cblxuICBsZXQgY3JlYXRlID0gZ2V0X2NvbnRleHRcblxuICBsZXQgY2FudmFzIGMgPSBKdi5maW5kX21hcCBDYW52YXMub2ZfanYgYyBcImNhbnZhc1wiXG4gIGxldCBhdHRycyBjID0gSnYuY2FsbCBjIFwiZ2V0Q29udGV4dEF0dHJpYnV0ZXNcIiBbfHxdXG4gIGxldCBzYXZlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2F2ZVwiIFt8fF1cbiAgbGV0IHJlc3RvcmUgYyA9IGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXN0b3JlXCIgW3x8XVxuXG4gICgqIEFudGlhbGlhc2luZyAqKVxuXG4gIGxldCBpbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCBjID0gSnYuQm9vbC5nZXQgYyBcImltYWdlU21vb3RoaW5nRW5hYmxlZFwiXG4gIGxldCBzZXRfaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQgYyBiID0gSnYuQm9vbC5zZXQgYyBcImltYWdlU21vb3RoaW5nRW5hYmxlZFwiIGJcbiAgbGV0IGltYWdlX3Ntb290aGluZ19xdWFsaXR5IGMgPSBKdi5Kc3RyLmdldCBjIFwiaW1hZ2VTbW9vdGhpbmdRdWFsaXR5XCJcbiAgbGV0IHNldF9pbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSBjIHYgPSBKdi5Kc3RyLnNldCBjIFwiaW1hZ2VTbW9vdGhpbmdRdWFsaXR5XCIgdlxuXG4gICgqIENvbXBvc2l0aW5nICopXG5cbiAgbGV0IGdsb2JhbF9hbHBoYSBjID0gSnYuRmxvYXQuZ2V0IGMgXCJnbG9iYWxBbHBoYVwiXG4gIGxldCBzZXRfZ2xvYmFsX2FscGhhIGMgYSA9IEp2LkZsb2F0LnNldCBjIFwiZ2xvYmFsQWxwaGFcIiBhXG4gIGxldCBnbG9iYWxfY29tcG9zaXRlX29wIGMgPSBKdi5Kc3RyLmdldCBjIFwiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXCJcbiAgbGV0IHNldF9nbG9iYWxfY29tcG9zaXRlX29wIGMgbyA9IEp2LkpzdHIuc2V0IGMgXCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb25cIiBvXG4gIGxldCBmaWx0ZXIgYyA9IEp2LkpzdHIuZ2V0IGMgXCJmaWx0ZXJcIlxuICBsZXQgc2V0X2ZpbHRlciBjIGYgPSBKdi5Kc3RyLnNldCBjIFwiZmlsdGVyXCIgZlxuXG4gICgqIFRyYW5zZm9ybXMgKilcblxuICBsZXQgZ2V0X3RyYW5zZm9ybSBjID0gTWF0cml4NC5vZl9qdiBAQCBKdi5jYWxsIGMgXCJnZXRUcmFuc2Zvcm1cIiBbfHxdXG4gIGxldCBzZXRfdHJhbnNmb3JtIGMgbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNldFRyYW5zZm9ybVwiIFt8IE1hdHJpeDQudG9fanYgbSB8XVxuXG4gIGxldCBzZXRfdHJhbnNmb3JtJyBjdHggfmEgfmIgfmMgfmQgfmUgfmYgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGN0eCBcInNldFRyYW5zZm9ybVwiXG4gICAgICBKdi5bfCBvZl9mbG9hdCBhOyBvZl9mbG9hdCBiOyBvZl9mbG9hdCBjOyBvZl9mbG9hdCBkO1xuICAgICAgICAgICAgb2ZfZmxvYXQgZTsgb2ZfZmxvYXQgZiB8XVxuXG4gIGxldCByZXNldF90cmFuc2Zvcm0gYyA9IGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXNldFRyYW5zZm9ybVwiIFt8fF1cbiAgbGV0IHRyYW5zZm9ybSBjIG0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgKE1hdHJpeDQuYSBtKTsgb2ZfZmxvYXQgKE1hdHJpeDQuYiBtKTtcbiAgICAgICAgICAgIG9mX2Zsb2F0IChNYXRyaXg0LmMgbSk7IG9mX2Zsb2F0IChNYXRyaXg0LmQgbSk7XG4gICAgICAgICAgICBvZl9mbG9hdCAoTWF0cml4NC5lIG0pOyBvZl9mbG9hdCAoTWF0cml4NC5mIG0pIHxdXG5cbiAgbGV0IHRyYW5zZm9ybScgY3R4IH5hIH5iIH5jIH5kIH5lIH5mID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjdHggXCJ0cmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgYTsgb2ZfZmxvYXQgYjsgb2ZfZmxvYXQgYzsgb2ZfZmxvYXQgZDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IGU7IG9mX2Zsb2F0IGYgfF1cblxuICBsZXQgdHJhbnNsYXRlIGMgfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2xhdGVcIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgbGV0IHJvdGF0ZSBjIHIgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicm90YXRlXCIgSnYuW3wgb2ZfZmxvYXQgciB8XVxuICBsZXQgc2NhbGUgYyB+c3ggfnN5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2NhbGVcIiBKdi5bfCBvZl9mbG9hdCBzeDsgb2ZfZmxvYXQgc3kgfF1cblxuICAoKiBTdHlsZSBmaWxscyBhbmQgc3Ryb2tlcyAqKVxuXG4gIHR5cGUgc3R5bGUgPSBKdi50XG4gIGxldCBzZXRfc3Ryb2tlX3N0eWxlIGMgcyA9IEp2LnNldCBjIFwic3Ryb2tlU3R5bGVcIiBzXG4gIGxldCBzZXRfZmlsbF9zdHlsZSBjIHMgPSBKdi5zZXQgYyBcImZpbGxTdHlsZVwiIHNcbiAgbGV0IGNvbG9yID0gSnYub2ZfanN0clxuXG4gIHR5cGUgZ3JhZGllbnQgPSBKdi50XG4gIGxldCBncmFkaWVudF9zdHlsZSA9IEZ1bi5pZFxuXG4gIGxldCBtYWtlX3N0b3BzIGcgc3RvcHMgPVxuICAgIGxldCBhZGRfc3RvcCBnIChvZmYsIGMpID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGcgXCJhZGRDb2xvclN0b3BcIiBKdi5bfCBvZl9mbG9hdCBvZmY7IG9mX2pzdHIgYyB8XVxuICAgIGluXG4gICAgTGlzdC5pdGVyIChhZGRfc3RvcCBnKSBzdG9wc1xuXG4gIGxldCBsaW5lYXJfZ3JhZGllbnQgYyB+eDAgfnkwIH54MSB+eTEgfnN0b3BzID1cbiAgICBsZXQgZyA9XG4gICAgICBKdi5jYWxsIGMgXCJjcmVhdGVMaW5lYXJHcmFkaWVudFwiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IHgwOyBvZl9mbG9hdCB5MDsgb2ZfZmxvYXQgeDE7IG9mX2Zsb2F0IHkxIHxdXG4gICAgaW5cbiAgICBtYWtlX3N0b3BzIGcgc3RvcHM7IGdcblxuICBsZXQgcmFkaWFsX2dyYWRpZW50IGMgfngwIH55MCB+cjAgfngxIH55MSB+cjEgfnN0b3BzID1cbiAgICBsZXQgZyA9XG4gICAgICBKdi5jYWxsIGMgXCJjcmVhdGVSYWRpYWxHcmFkaWVudFwiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IHgwOyBvZl9mbG9hdCB5MDsgb2ZfZmxvYXQgcjA7XG4gICAgICAgICAgICAgIG9mX2Zsb2F0IHgxOyBvZl9mbG9hdCB5MTsgb2ZfZmxvYXQgcjE7IHxdXG4gICAgaW5cbiAgICBtYWtlX3N0b3BzIGcgc3RvcHM7IGdcblxuICB0eXBlIHBhdHRlcm4gPSBKdi50XG4gIGxldCBwYXR0ZXJuIGMgaW1nIHIgfnRyID1cbiAgICBsZXQgcCA9IEp2LmNhbGwgYyBcImNyZWF0ZVBhdHRlcm5cIiBbfGltZzsgSnYub2ZfanN0ciByfF0gaW5cbiAgICBtYXRjaCB0ciB3aXRoXG4gICAgfCBOb25lIC0+IHBcbiAgICB8IFNvbWUgdCAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwic2V0VHJhbnNmb3JtXCIgW3wgTWF0cml4NC50b19qdiB0IHxdOyBwXG5cbiAgbGV0IHBhdHRlcm5fc3R5bGUgPSBGdW4uaWRcblxuICAoKiBTdHlsZSBsaW5lcyAqKVxuXG4gIGxldCBsaW5lX3dpZHRoIGMgPSBKdi5GbG9hdC5nZXQgYyBcImxpbmVXaWR0aFwiXG4gIGxldCBzZXRfbGluZV93aWR0aCBjIHcgPSBKdi5GbG9hdC5zZXQgYyBcImxpbmVXaWR0aFwiIHdcbiAgbGV0IGxpbmVfY2FwIGMgPSBKdi5Kc3RyLmdldCBjIFwibGluZUNhcFwiXG4gIGxldCBzZXRfbGluZV9jYXAgYyBjYXAgPSBKdi5Kc3RyLnNldCBjIFwibGluZUNhcFwiIGNhcFxuICBsZXQgbGluZV9qb2luIGMgPSBKdi5Kc3RyLmdldCBjIFwibGluZUpvaW5cIlxuICBsZXQgc2V0X2xpbmVfam9pbiBjIGpvaW4gPSBKdi5Kc3RyLnNldCBjIFwibGluZUpvaW5cIiBqb2luXG4gIGxldCBtaXRlcl9saW1pdCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJtaXRlckxpbWl0XCJcbiAgbGV0IHNldF9taXRlcl9saW1pdCBjIGwgPSBKdi5GbG9hdC5zZXQgYyBcIm1pdGVyTGltaXRcIiBsXG4gIGxldCBsaW5lX2Rhc2ggYyA9IEp2LnRvX2xpc3QgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBjIFwiZ2V0TGluZURhc2hcIiBbfHxdXG4gIGxldCBzZXRfbGluZV9kYXNoIGMgZHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzZXRMaW5lRGFzaFwiIFt8SnYub2ZfbGlzdCBKdi5vZl9mbG9hdCBkc3xdXG5cbiAgbGV0IGxpbmVfZGFzaF9vZmZzZXQgYyA9IEp2LkZsb2F0LmdldCBjIFwibGluZURhc2hPZmZzZXRcIlxuICBsZXQgc2V0X2xpbmVfZGFzaF9vZmZzZXQgYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJsaW5lRGFzaE9mZnNldFwiIG9cblxuICAoKiBTdHlsZSBzaGFkb3dzICopXG5cbiAgbGV0IHNoYWRvd19ibHVyIGMgPSBKdi5GbG9hdC5nZXQgYyBcInNoYWRvd0JsdXJcIlxuICBsZXQgc2V0X3NoYWRvd19ibHVyIGMgYiA9IEp2LkZsb2F0LnNldCBjIFwic2hhZG93Qmx1clwiIGJcbiAgbGV0IHNoYWRvd19vZmZzZXRfeCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dPZmZzZXRYXCJcbiAgbGV0IHNldF9zaGFkb3dfb2Zmc2V0X3ggYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJzaGFkb3dPZmZzZXRYXCIgb1xuICBsZXQgc2hhZG93X29mZnNldF95IGMgPSBKdi5GbG9hdC5nZXQgYyBcInNoYWRvd09mZnNldFlcIlxuICBsZXQgc2V0X3NoYWRvd19vZmZzZXRfeSBjIG8gPSBKdi5GbG9hdC5zZXQgYyBcInNoYWRvd09mZnNldFlcIiBvXG4gIGxldCBzaGFkb3dfY29sb3IgYyA9IEp2LkpzdHIuZ2V0IGMgXCJzaGFkb3dDb2xvclwiXG4gIGxldCBzZXRfc2hhZG93X2NvbG9yIGMgY29sID0gSnYuSnN0ci5zZXQgYyBcInNoYWRvd0NvbG9yXCIgY29sXG5cbiAgKCogU3R5bGUgdGV4dCAqKVxuXG4gIGxldCBmb250IGMgPSBKdi5Kc3RyLmdldCBjIFwiZm9udFwiXG4gIGxldCBzZXRfZm9udCBjIGYgPSBKdi5Kc3RyLnNldCBjIFwiZm9udFwiIGZcbiAgbGV0IHRleHRfYWxpZ24gYyA9IEp2LkpzdHIuZ2V0IGMgXCJ0ZXh0QWxpZ25cIlxuICBsZXQgc2V0X3RleHRfYWxpZ24gYyBhID0gSnYuSnN0ci5zZXQgYyBcInRleHRBbGlnblwiIGFcbiAgbGV0IHRleHRfYmFzZWxpbmUgYyA9IEp2LkpzdHIuZ2V0IGMgXCJ0ZXh0QmFzZWxpbmVcIlxuICBsZXQgc2V0X3RleHRfYmFzZWxpbmUgYyBiID0gSnYuSnN0ci5zZXQgYyBcInRleHRCYXNlbGluZVwiIGJcbiAgbGV0IHRleHRfZGlyZWN0aW9uIGMgPSBKdi5Kc3RyLmdldCBjIFwiZGlyZWN0aW9uXCJcbiAgbGV0IHNldF90ZXh0X2RpcmVjdGlvbiBjIGQgPSBKdi5Kc3RyLnNldCBjIFwiZGlyZWN0aW9uXCIgZFxuXG4gICgqIERyYXcgcmVjdGFuZ2xlcyAqKVxuXG4gIGxldCBjbGVhcl9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhclJlY3RcIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gIGxldCBmaWxsX3JlY3QgYyB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZpbGxSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgc3Ryb2tlX3JlY3QgYyB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0cm9rZVJlY3RcIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gICgqIERyYXcgcGF0aHMgKilcblxuICBsZXQgZmlsbCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaWxsXCIgW3wgcDsgSnYub2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgc3Ryb2tlIGMgcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0cm9rZVwiIFt8IHAgfF1cblxuICBsZXQgY2xpcCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGlwXCIgW3wgcDsgSnYub2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgZHJhd19mb2N1c19pZl9uZWVkZWQgYyBwIGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3Rm9jdXNJZk5lZWRlZFwiIFt8IHA7IEVsLnRvX2p2IGUgfF1cblxuICBsZXQgc2Nyb2xsX3BhdGhfaW50b192aWV3IGMgcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjcm9sbFBhdGhJbnRvVmlld1wiIFt8IHAgfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fZmlsbCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgfnggfnkgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNQb2ludEluUGF0aFwiXG4gICAgICBKdi5bfCBwOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9qc3RyIGZpbGxfcnVsZSB8XVxuXG4gIGxldCBpc19wb2ludF9pbl9zdHJva2UgYyBwIH54IH55ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUG9pbnRJblN0cm9rZVwiXG4gICAgICBKdi5bfCBwOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyB8XVxuXG4gICgqIERyYXcgdGV4dCAqKVxuXG4gIGxldCBjYWxsX3RleHQgYyBtZXRoID9tYXhfd2lkdGggdHh0IH54IH55ID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG1heF93aWR0aCB3aXRoXG4gICAgfCBOb25lIC0+IEp2Llt8b2ZfanN0ciB0eHQ7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cbiAgICB8IFNvbWUgbSAtPiBKdi5bfG9mX2pzdHIgdHh0OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCBtIHxdXG4gICAgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIG1ldGggYXJnc1xuXG4gIGxldCBmaWxsX3RleHQgP21heF93aWR0aCBjIHR4dCB+eCB+eSA9XG4gICAgY2FsbF90ZXh0IGMgXCJmaWxsVGV4dFwiID9tYXhfd2lkdGggdHh0IH54IH55XG5cbiAgbGV0IHN0cm9rZV90ZXh0ID9tYXhfd2lkdGggYyB0eHQgfnggfnkgPVxuICAgIGNhbGxfdGV4dCBjIFwic3Ryb2tlVGV4dFwiID9tYXhfd2lkdGggdHh0IH54IH55XG5cbiAgbW9kdWxlIFRleHRfbWV0cmljcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgd2lkdGggbSA9IEp2LkZsb2F0LmdldCBtIFwid2lkdGhcIlxuICAgIGxldCBhY3R1YWxfYm91bmRpbmdfYm94X2xlZnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hMZWZ0XCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9yaWdodCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveFJpZ2h0XCJcbiAgICBsZXQgZm9udF9ib3VuZGluZ19ib3hfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImZvbnRCb3VuZGluZ0JveEFzY2VudFwiXG4gICAgbGV0IGZvbnRfYm91bmRpbmdfYm94X2Rlc2NlbnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZm9udEJvdW5kaW5nQm94RGVzY2VudFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImFjdHVhbEJvdW5kaW5nQm94QXNjZW50XCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9kZXNjZW50IG0gPVxuICAgICAgSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveERlc2NlbnRcIlxuICAgIGxldCBlbV9oZWlnaHRfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImVtSGVpZ2h0QXNjZW50XCJcbiAgICBsZXQgZW1faGVpZ2h0X2Rlc2NlbnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZW1IZWlnaHREZXNjZW50XCJcbiAgICBsZXQgaGFuZ2luZ19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJoYW5naW5nQmFzZWxpbmVcIlxuICAgIGxldCBhbHBoYWJldGljX2Jhc2VsaW5lIG0gPSBKdi5GbG9hdC5nZXQgbSBcImFscGhhYmV0aWNCYXNlbGluZVwiXG4gICAgbGV0IGlkZW9ncmFwaGljX2Jhc2VsaW5lIG0gPSBKdi5GbG9hdC5nZXQgbSBcImlkZW9ncmFwaGljQmFzZWxpbmVcIlxuICBlbmRcblxuICBsZXQgbWVhc3VyZV90ZXh0IGMgdHh0ID1cbiAgICBUZXh0X21ldHJpY3Mub2ZfanYgQEAgSnYuY2FsbCBjIFwibWVhc3VyZVRleHRcIiBbfCBKdi5vZl9qc3RyIHR4dCB8XVxuXG4gICgqIERyYXcgaW1hZ2VzICopXG5cbiAgbGV0IGRyYXdfaW1hZ2UgYyBpIH54IH55ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCIgSnYuW3wgaTsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gIGxldCBkcmF3X2ltYWdlX2luX3JlY3QgYyBpIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCJcbiAgICAgIEp2Llt8IGk7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgZHJhd19zdWJfaW1hZ2VfaW5fcmVjdCBjIGkgfnN4IH5zeSB+c3cgfnNoIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCJcbiAgICAgIEp2Llt8IGk7XG4gICAgICAgICAgICBvZl9mbG9hdCBzeDsgb2ZfZmxvYXQgc3k7IG9mX2Zsb2F0IHN3OyBvZl9mbG9hdCBzaDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICAoKiBQaXhlbCBtYW5pcHVsYXRpb25zICopXG5cbiAgbW9kdWxlIEltYWdlX2RhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpID0gbWF0Y2ggY29sb3Jfc3BhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBKdi51bmRlZmluZWRcbiAgICB8IFNvbWUgY3MgLT5cbiAgICAgICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgICAgICBKdi5Kc3RyLnNldCBvIFwiY29sb3JTcGFjZVwiIGNzOyBvXG5cbiAgICBsZXQgaW1hZ2VfZGF0YSA9IEp2LmdldCBKdi5nbG9iYWwgXCJJbWFnZURhdGFcIlxuICAgIGxldCBjcmVhdGUgP2NvbG9yX3NwYWNlID9kYXRhIH53IH5oICgpID1cbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSBpblxuICAgICAgbGV0IGFyZ3MgPSBtYXRjaCBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBKdi5bfG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuICAgICAgfCBTb21lIGRhdGEgLT4gSnYuW3xUYXJyYXkudG9fanYgZGF0YTsgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5nc3xdXG4gICAgICBpblxuICAgICAgSnYubmV3JyBpbWFnZV9kYXRhIGFyZ3NcblxuICAgIGxldCB3IGQgPSBKdi5JbnQuZ2V0IGQgXCJ3aWR0aFwiXG4gICAgbGV0IGggZCA9IEp2LkludC5nZXQgZCBcImhlaWdodFwiXG4gICAgbGV0IGNvbG9yX3NwYWNlIGQgPVxuICAgICAgKCogQ2FuIGJlY29tZSBKdi5Kc3RyLmdldCBvbmNlIGZpcmVmb3ggc3VwcG9ydHMgdGhlIHByb3BlcnR5LiAqKVxuICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkpzdHIuZW1wdHkgKEp2LkpzdHIuZmluZCBkIFwiY29sb3JTcGFjZVwiKVxuXG4gICAgbGV0IGRhdGEgZCA9IFRhcnJheS5vZl9qdiBAQCBKdi5nZXQgZCBcImRhdGFcIlxuICBlbmRcblxuICBsZXQgY3JlYXRlX2ltYWdlX2RhdGEgP2NvbG9yX3NwYWNlIGMgfncgfmggPVxuICAgIGxldCBzZXR0aW5ncyA9IEltYWdlX2RhdGEuc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpIGluXG4gICAgSW1hZ2VfZGF0YS5vZl9qdiBAQCBKdi5jYWxsIGMgXCJjcmVhdGVJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5ncyB8XVxuXG4gIGxldCBnZXRfaW1hZ2VfZGF0YSA/Y29sb3Jfc3BhY2UgYyB+eCB+eSB+dyB+aCA9XG4gICAgbGV0IHNldHRpbmdzID0gSW1hZ2VfZGF0YS5zZXR0aW5ncyA/Y29sb3Jfc3BhY2UgKCkgaW5cbiAgICBJbWFnZV9kYXRhLm9mX2p2IEBAIEp2LmNhbGwgYyBcImdldEltYWdlRGF0YVwiXG4gICAgICBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5nc3xdXG5cbiAgbGV0IHB1dF9pbWFnZV9kYXRhIGMgZCB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInB1dEltYWdlRGF0YVwiXG4gICAgICBKdi5bfCBJbWFnZV9kYXRhLnRvX2p2IGQ7IG9mX2ludCB4OyBvZl9pbnQgeSB8XVxuXG4gIGxldCBwdXRfc3ViX2ltYWdlX2RhdGEgYyBkIH5zeCB+c3kgfnN3IH5zaCB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInB1dEltYWdlRGF0YVwiXG4gICAgICBKdi5bfCBJbWFnZV9kYXRhLnRvX2p2IGQ7IG9mX2ludCB4OyBvZl9pbnQgeTtcbiAgICAgICAgICAgIG9mX2ludCBzeDsgb2ZfaW50IHN5OyBvZl9pbnQgc3c7IG9mX2ludCBzaCB8XVxuZW5kXG5cbm1vZHVsZSBHbCA9IHN0cnVjdFxuXG4gICgqIENvbnRleHQgY3JlYXRpb24gKilcblxuICBtb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUG93ZXJfcHJlZmVyZW5jZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgZGVmYXVsdCA9IEpzdHIudiBcImRlZmF1bHRcIlxuICAgICAgbGV0IGhpZ2hfcGVyZm9ybWFuY2UgPSBKc3RyLnYgXCJoaWdoLXBlcmZvcm1hbmNlXCJcbiAgICAgIGxldCBsb3dfcG93ZXIgPSBKc3RyLnYgXCJsb3ctcG93ZXJcIlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgdlxuICAgICAgICA/YWxwaGEgP2RlcHRoID9zdGVuY2lsID9hbnRpYWxpYXMgP3ByZW11bHRpcGxpZWRfYWxwaGFcbiAgICAgICAgP3ByZXNlcnZlX2RyYXdpbmdfYnVmZmVyID9wb3dlcl9wcmVmZXJlbmNlXG4gICAgICAgID9mYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmVhdCA/ZGVzeW5jaHJvbml6ZWQgKCkgPVxuICAgICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiYWxwaGFcIiBhbHBoYTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlcHRoXCIgZGVwdGg7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJzdGVuY2lsXCIgc3RlbmNpbDtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFudGlhbGlhc1wiIGFudGlhbGlhcztcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInByZW11bHRpcGxpZWRBcGhhXCIgcHJlbXVsdGlwbGllZF9hbHBoYTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiIHByZXNlcnZlX2RyYXdpbmdfYnVmZmVyO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwicG93ZXJQcmVmZXJlbmNlXCIgcG93ZXJfcHJlZmVyZW5jZTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIlxuICAgICAgICBmYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmVhdDtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlc3luY2hyb25pemVkXCIgZGVzeW5jaHJvbml6ZWQ7XG4gICAgICBvXG5cbiAgICBsZXQgYWxwaGEgYSA9IEp2LkJvb2wuZ2V0IGEgXCJhbHBoYVwiXG4gICAgbGV0IGRlcHRoIGEgPSBKdi5Cb29sLmdldCBhIFwiZGVwdGhcIlxuICAgIGxldCBzdGVuY2lsIGEgPSBKdi5Cb29sLmdldCBhIFwic3RlbmNpbFwiXG4gICAgbGV0IGFudGlhbGlhcyBhID0gSnYuQm9vbC5nZXQgYSBcImFudGlhbGlhc1wiXG4gICAgbGV0IHByZW11bHRpcGxpZWRfYWxwaGEgYSA9IEp2LkJvb2wuZ2V0IGEgXCJwcmVtdWx0aXBsaWVkQXBoYVwiXG4gICAgbGV0IHByZXNlcnZlX2RyYXdpbmdfYnVmZmVyIGEgPSBKdi5Cb29sLmdldCBhIFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCJcbiAgICBsZXQgZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQgYSA9XG4gICAgICBKdi5Cb29sLmdldCBhIFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiXG4gICAgbGV0IHBvd2VyX3ByZWZlcmVuY2UgYSA9IEp2LkpzdHIuZ2V0IGEgXCJwb3dlclByZWZlcmVuY2VcIlxuICAgIGxldCBkZXN5bmNocm9uaXplZCBhID0gSnYuQm9vbC5nZXQgYSBcImRlc3luY2hyb25pemVkXCJcbiAgZW5kXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgZ2V0X2NvbnRleHQgPyhhdHRycyA9IEp2LnVuZGVmaW5lZCkgPyh2MSA9IGZhbHNlKSBjbnYgPVxuICAgIGxldCB3ZWJnbCA9IEp2Lm9mX3N0cmluZyAoaWYgdjEgdGhlbiBcIndlYmdsXCIgZWxzZSBcIndlYmdsMlwiKSBpblxuICAgIEp2LnRvX29wdGlvbiBGdW4uaWQgQEBcbiAgICBKdi5jYWxsIChDYW52YXMudG9fanYgY252KSBcImdldENvbnRleHRcIiBKdi5bfCB3ZWJnbDsgYXR0cnMgfF1cblxuICBsZXQgY3JlYXRlID0gZ2V0X2NvbnRleHRcblxuICBsZXQgY2FudmFzIGMgPSBKdi5maW5kX21hcCBDYW52YXMub2ZfanYgYyBcImNhbnZhc1wiXG4gIGxldCBhdHRycyBjID0gSnYuY2FsbCBjIFwiZ2V0Q29udGV4dEF0dHJpYnV0ZXNcIiBbfHxdXG5cbiAgbGV0IGRyYXdpbmdfYnVmZmVyX3dpZHRoIGMgPSBKdi5JbnQuZ2V0IGMgXCJkcmF3aW5nQnVmZmVyV2lkdGhcIlxuICBsZXQgZHJhd2luZ19idWZmZXJfaGVpZ2h0IGMgPSBKdi5JbnQuZ2V0IGMgXCJkcmF3aW5nQnVmZmVySGVpZ2h0XCJcbiAgbGV0IGlzX2NvbnRleHRfbG9zdCBjID0gSnYuQm9vbC5nZXQgYyBcImlzQ29udGV4dExvc3RcIlxuXG4gIGxldCBnZXRfc3VwcG9ydGVkX2V4dGVuc2lvbnMgYyA9XG4gICAgSnYudG9fanN0cl9saXN0IEBAIEp2LmNhbGwgYyBcImdldFN1cHBvcnRlZEV4dGVuc2lvbnNcIiBbfHxdXG5cbiAgbGV0IGdldF9leHRlbnNpb24gYyBleHQgPSBKdi5jYWxsIGMgXCJnZXRFeHRlbnNpb25cIiBKdi5bfCBvZl9qc3RyIGV4dCB8XVxuXG4gICgqIFR5cGVzICopXG5cbiAgdHlwZSBlbnVtID0gaW50XG4gIHR5cGUgYnVmZmVyID0gSnYudFxuICB0eXBlIGZyYW1lYnVmZmVyID0gSnYudFxuICB0eXBlIHByb2dyYW0gPSBKdi50XG4gIHR5cGUgcXVlcnkgPSBKdi50XG4gIHR5cGUgcmVuZGVyYnVmZmVyID0gSnYudFxuICB0eXBlIHNhbXBsZXIgPSBKdi50XG4gIHR5cGUgc2hhZGVyID0gSnYudFxuICB0eXBlIHN5bmMgPSBKdi50XG4gIHR5cGUgdGV4dHVyZSA9IEp2LnRcbiAgdHlwZSB0cmFuc2Zvcm1fZmVlZGJhY2sgPSBKdi50XG4gIHR5cGUgdW5pZm9ybV9sb2NhdGlvbiA9IEp2LnRcbiAgdHlwZSB2ZXJ0ZXhfYXJyYXlfb2JqZWN0ID0gSnYudFxuXG4gIG1vZHVsZSBBY3RpdmVfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgc2l6ZSBpID0gSnYuSW50LmdldCBpIFwic2l6ZVwiXG4gICAgbGV0IHR5cGUnIGkgPSBKdi5JbnQuZ2V0IGkgXCJ0eXBlXCJcbiAgICBsZXQgbmFtZSBpID0gSnYuSnN0ci5nZXQgaSBcIm5hbWVcIlxuICBlbmRcblxuICBtb2R1bGUgU2hhZGVyX3ByZWNpc2lvbl9mb3JtYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHJhbmdlX21pbiBmID0gSnYuSW50LmdldCBmIFwicmFuZ2VNaW5cIlxuICAgIGxldCByYW5nZV9tYXggZiA9IEp2LkludC5nZXQgZiBcInJhbmdlTWF4XCJcbiAgICBsZXQgcHJlY2lzaW9uIGYgPSBKdi5JbnQuZ2V0IGYgXCJwcmVjaXNpb25cIlxuICBlbmRcblxuICBtb2R1bGUgVGV4X2ltYWdlX3NvdXJjZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgb2ZfaW1hZ2VfZGF0YSA9IEMyZC5JbWFnZV9kYXRhLnRvX2p2XG4gICAgbGV0IG9mX2ltZ19lbCA9IEJyci5FbC50b19qdlxuICAgIGxldCBvZl9jYW52YXNfZWwgPSBDYW52YXMudG9fanZcbiAgICBsZXQgb2ZfdmlkZW9fZWwgPSBCcnJfaW8uTWVkaWEuRWwudG9fanZcbiAgICBsZXQgb2Zfb2Zmc2NyZWVuX2NhbnZhcyA9IEZ1bi5pZFxuICBlbmRcblxuICAoKiBGdW5jdGlvbnMgKilcblxuICBsZXQgYWN0aXZlX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYWN0aXZlVGV4dHVyZVwiIEp2Llt8b2ZfaW50IHRleHR1cmV8XVxuXG4gIGxldCBhdHRhY2hfc2hhZGVyIGMgcHJvZ3JhbSBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJhdHRhY2hTaGFkZXJcIiBKdi5bfHByb2dyYW07IHNoYWRlcnxdXG5cbiAgbGV0IGJlZ2luX3F1ZXJ5IGMgdGFyZ2V0IHF1ZXJ5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmVnaW5RdWVyeVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgcXVlcnl8XVxuXG4gIGxldCBiZWdpbl90cmFuc2Zvcm1fZmVlZGJhY2sgYyBwcmltaXRpdmVNb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmVnaW5UcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8b2ZfaW50IHByaW1pdGl2ZU1vZGV8XVxuXG4gIGxldCBiaW5kX2F0dHJpYl9sb2NhdGlvbiBjIHByb2dyYW0gaW5kZXggbmFtZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRBdHRyaWJMb2NhdGlvblwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IGluZGV4OyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBiaW5kX2J1ZmZlciBjIHRhcmdldCBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgYnVmZmVyfF1cblxuICBsZXQgYmluZF9idWZmZXJfYmFzZSBjIHRhcmdldCBpbmRleCBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyQmFzZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGluZGV4OyBidWZmZXJ8XVxuXG4gIGxldCBiaW5kX2J1ZmZlcl9yYW5nZSBjIHRhcmdldCBpbmRleCBidWZmZXIgb2Zmc2V0IHNpemUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyUmFuZ2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleDsgYnVmZmVyOyBvZl9pbnQgb2Zmc2V0OyBvZl9pbnQgc2l6ZXxdXG5cbiAgbGV0IGJpbmRfZnJhbWVidWZmZXIgYyB0YXJnZXQgZnJhbWVidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBmcmFtZWJ1ZmZlcnxdXG5cbiAgbGV0IGJpbmRfcmVuZGVyYnVmZmVyIGMgdGFyZ2V0IHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRSZW5kZXJidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCByZW5kZXJidWZmZXJ8XVxuXG4gIGxldCBiaW5kX3NhbXBsZXIgYyB1bml0IHNhbXBsZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kU2FtcGxlclwiIEp2Llt8b2ZfaW50IHVuaXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBzYW1wbGVyfF1cblxuICBsZXQgYmluZF90ZXh0dXJlIGMgdGFyZ2V0IHRleHR1cmUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVGV4dHVyZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIHRleHR1cmV8XVxuXG4gIGxldCBiaW5kX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRhcmdldCB0ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIHRmfF1cblxuICBsZXQgYmluZF92ZXJ0ZXhfYXJyYXkgYyBhcnJheSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRWZXJ0ZXhBcnJheVwiIEp2Llt8IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBhcnJheXxdXG5cbiAgbGV0IGJsZW5kX2NvbG9yIGMgcmVkIGdyZWVuIGJsdWUgYWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZENvbG9yXCIgSnYuW3xvZl9mbG9hdCByZWQ7IG9mX2Zsb2F0IGdyZWVuOyBvZl9mbG9hdCBibHVlOyBvZl9mbG9hdCBhbHBoYXxdXG5cbiAgbGV0IGJsZW5kX2VxdWF0aW9uIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRXF1YXRpb25cIiBKdi5bfG9mX2ludCBtb2RlfF1cblxuICBsZXQgYmxlbmRfZXF1YXRpb25fc2VwYXJhdGUgYyBtb2RlUkdCIG1vZGVBbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRXF1YXRpb25TZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IG1vZGVSR0I7IG9mX2ludCBtb2RlQWxwaGF8XVxuXG4gIGxldCBibGVuZF9mdW5jIGMgc2ZhY3RvciBkZmFjdG9yID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmxlbmRGdW5jXCIgSnYuW3xvZl9pbnQgc2ZhY3Rvcjsgb2ZfaW50IGRmYWN0b3J8XVxuXG4gIGxldCBibGVuZF9mdW5jX3NlcGFyYXRlIGMgc3JjUkdCIGRzdFJHQiBzcmNBbHBoYSBkc3RBbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRnVuY1NlcGFyYXRlXCIgSnYuW3xvZl9pbnQgc3JjUkdCOyBvZl9pbnQgZHN0UkdCOyBvZl9pbnQgc3JjQWxwaGE7IG9mX2ludCBkc3RBbHBoYXxdXG5cbiAgbGV0IGJsaXRfZnJhbWVidWZmZXIgYyBzcmNYMCBzcmNZMCBzcmNYMSBzcmNZMSBkc3RYMCBkc3RZMCBkc3RYMSBkc3RZMSBtYXNrIGZpbHRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsaXRGcmFtZWJ1ZmZlclwiIEp2Llt8b2ZfaW50IHNyY1gwOyBvZl9pbnQgc3JjWTA7IG9mX2ludCBzcmNYMTsgb2ZfaW50IHNyY1kxOyBvZl9pbnQgZHN0WDA7IG9mX2ludCBkc3RZMDsgb2ZfaW50IGRzdFgxOyBvZl9pbnQgZHN0WTE7IG9mX2ludCBtYXNrOyBvZl9pbnQgZmlsdGVyfF1cblxuICBsZXQgYnVmZmVyX2RhdGEgYyB0YXJnZXQgc3JjRGF0YSB1c2FnZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJ1ZmZlckRhdGFcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgdXNhZ2V8XVxuXG4gIGxldCBidWZmZXJfZGF0YV9zaXplIGMgdGFyZ2V0IHNpemUgdXNhZ2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgc2l6ZTsgb2ZfaW50IHVzYWdlfF1cblxuICBsZXQgYnVmZmVyX3N1Yl9kYXRhIGMgdGFyZ2V0IGRzdEJ5dGVPZmZzZXQgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJ1ZmZlclN1YkRhdGFcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBkc3RCeXRlT2Zmc2V0OyBUYXJyYXkudG9fanYgc3JjRGF0YSB8XVxuXG4gIGxldCBjaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgYyB0YXJnZXQgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzXCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgY2xlYXIgYyBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJcIiBKdi5bfG9mX2ludCBtYXNrfF1cblxuICBsZXQgY2xlYXJfYnVmZmVyZmkgYyBidWZmZXIgZHJhd2J1ZmZlciBkZXB0aCBzdGVuY2lsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJmaVwiIEp2Llt8b2ZfaW50IGJ1ZmZlcjsgb2ZfaW50IGRyYXdidWZmZXI7IG9mX2Zsb2F0IGRlcHRoOyBvZl9pbnQgc3RlbmNpbHxdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcmZ2IGMgYnVmZmVyIGRyYXdidWZmZXIgdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJmdlwiIEp2Llt8b2ZfaW50IGJ1ZmZlcjsgb2ZfaW50IGRyYXdidWZmZXI7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCBjbGVhcl9idWZmZXJpdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyaXZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfYnVmZmVydWl2IGMgYnVmZmVyIGRyYXdidWZmZXIgdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJ1aXZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfY29sb3IgYyByZWQgZ3JlZW4gYmx1ZSBhbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQ29sb3JcIiBKdi5bfG9mX2Zsb2F0IHJlZDsgb2ZfZmxvYXQgZ3JlZW47IG9mX2Zsb2F0IGJsdWU7IG9mX2Zsb2F0IGFscGhhfF1cblxuICBsZXQgY2xlYXJfZGVwdGggYyBkZXB0aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyRGVwdGhcIiBKdi5bfG9mX2Zsb2F0IGRlcHRofF1cblxuICBsZXQgY2xlYXJfc3RlbmNpbCBjIHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhclN0ZW5jaWxcIiBKdi5bfG9mX2ludCBzfF1cblxuICBsZXQgY2xpZW50X3dhaXRfc3luYyBjIHN5bmMgZmxhZ3MgdGltZW91dCA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImNsaWVudFdhaXRTeW5jXCIgSnYuW3xzeW5jOyBvZl9pbnQgZmxhZ3M7IG9mX2ludCB0aW1lb3V0fF1cblxuICBsZXQgY29sb3JfbWFzayBjIHJlZCBncmVlbiBibHVlIGFscGhhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29sb3JNYXNrXCIgSnYuW3xKdi5vZl9ib29sIHJlZDsgSnYub2ZfYm9vbCBncmVlbjsgSnYub2ZfYm9vbCBibHVlOyBKdi5vZl9ib29sIGFscGhhfF1cblxuICBsZXQgY29tcGlsZV9zaGFkZXIgYyBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21waWxlU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X2ltYWdlMmRfc2l6ZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGltYWdlU2l6ZSBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTNkX3NpemUgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZF9zaXplIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IGltYWdlU2l6ZSBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTNkX3NpemUgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb3B5X2J1ZmZlcl9zdWJfZGF0YSBjIHJlYWRUYXJnZXQgd3JpdGVUYXJnZXQgcmVhZE9mZnNldCB3cml0ZU9mZnNldCBzaXplID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29weUJ1ZmZlclN1YkRhdGFcIiBKdi5bfG9mX2ludCByZWFkVGFyZ2V0OyBvZl9pbnQgd3JpdGVUYXJnZXQ7IG9mX2ludCByZWFkT2Zmc2V0OyBvZl9pbnQgd3JpdGVPZmZzZXQ7IG9mX2ludCBzaXplfF1cblxuICBsZXQgY29weV90ZXhfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB4IHkgd2lkdGggaGVpZ2h0IGJvcmRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXJ8XVxuXG4gIGxldCBjb3B5X3RleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBjb3B5X3RleF9zdWJfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgem9mZnNldCB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29weVRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBjcmVhdGVfYnVmZmVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVCdWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9mcmFtZWJ1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlRnJhbWVidWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9wcm9ncmFtIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVQcm9ncmFtXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcXVlcnkgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVF1ZXJ5XCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcmVuZGVyYnVmZmVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVSZW5kZXJidWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9zYW1wbGVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVTYW1wbGVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfc2hhZGVyIGMgdHlwZScgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVNoYWRlclwiIEp2Llt8b2ZfaW50IHR5cGUnfF1cblxuICBsZXQgY3JlYXRlX3RleHR1cmUgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVRleHR1cmVcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfdmVydGV4X2FycmF5IGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVWZXJ0ZXhBcnJheVwiIEp2Llt8fF1cblxuICBsZXQgY3VsbF9mYWNlIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImN1bGxGYWNlXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGRlbGV0ZV9idWZmZXIgYyBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVCdWZmZXJcIiBKdi5bfGJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9mcmFtZWJ1ZmZlciBjIGZyYW1lYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlRnJhbWVidWZmZXJcIiBKdi5bfGZyYW1lYnVmZmVyfF1cblxuICBsZXQgZGVsZXRlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IGRlbGV0ZV9xdWVyeSBjIHF1ZXJ5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlUXVlcnlcIiBKdi5bfHF1ZXJ5fF1cblxuICBsZXQgZGVsZXRlX3JlbmRlcmJ1ZmZlciBjIHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVJlbmRlcmJ1ZmZlclwiIEp2Llt8cmVuZGVyYnVmZmVyfF1cblxuICBsZXQgZGVsZXRlX3NhbXBsZXIgYyBzYW1wbGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlU2FtcGxlclwiIEp2Llt8c2FtcGxlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zaGFkZXIgYyBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVTaGFkZXJcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zeW5jIGMgc3luYyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVN5bmNcIiBKdi5bfHN5bmN8XVxuXG4gIGxldCBkZWxldGVfdGV4dHVyZSBjIHRleHR1cmUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVUZXh0dXJlXCIgSnYuW3x0ZXh0dXJlfF1cblxuICBsZXQgZGVsZXRlX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRmID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHRmfF1cblxuICBsZXQgZGVsZXRlX3ZlcnRleF9hcnJheSBjIHZlcnRleEFycmF5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVmVydGV4QXJyYXlcIiBKdi5bfHZlcnRleEFycmF5fF1cblxuICBsZXQgZGVwdGhfZnVuYyBjIGZ1bmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aEZ1bmNcIiBKdi5bfG9mX2ludCBmdW5jfF1cblxuICBsZXQgZGVwdGhfbWFzayBjIGZsYWcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aE1hc2tcIiBKdi5bfEp2Lm9mX2Jvb2wgZmxhZ3xdXG5cbiAgbGV0IGRlcHRoX3JhbmdlIGMgek5lYXIgekZhciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlcHRoUmFuZ2VcIiBKdi5bfG9mX2Zsb2F0IHpOZWFyOyBvZl9mbG9hdCB6RmFyfF1cblxuICBsZXQgZGV0YWNoX3NoYWRlciBjIHByb2dyYW0gc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGV0YWNoU2hhZGVyXCIgSnYuW3xwcm9ncmFtOyBzaGFkZXJ8XVxuXG4gIGxldCBkaXNhYmxlIGMgY2FwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGlzYWJsZVwiIEp2Llt8b2ZfaW50IGNhcHxdXG5cbiAgbGV0IGRpc2FibGVfdmVydGV4X2F0dHJpYl9hcnJheSBjIGluZGV4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5XCIgSnYuW3xvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBkcmF3X2FycmF5cyBjIG1vZGUgZmlyc3QgY291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QXJyYXlzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGZpcnN0OyBvZl9pbnQgY291bnR8XVxuXG4gIGxldCBkcmF3X2FycmF5c19pbnN0YW5jZWQgYyBtb2RlIGZpcnN0IGNvdW50IGluc3RhbmNlQ291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QXJyYXlzSW5zdGFuY2VkXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGZpcnN0OyBvZl9pbnQgY291bnQ7IG9mX2ludCBpbnN0YW5jZUNvdW50fF1cblxuICBsZXQgZHJhd19idWZmZXJzIGMgYnVmZmVycyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdCdWZmZXJzXCIgSnYuW3xvZl9saXN0IG9mX2ludCBidWZmZXJzfF1cblxuICBsZXQgZHJhd19lbGVtZW50cyBjIG1vZGUgY291bnQgdHlwZScgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0VsZW1lbnRzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBkcmF3X2VsZW1lbnRzX2luc3RhbmNlZCBjIG1vZGUgY291bnQgdHlwZScgb2Zmc2V0IGluc3RhbmNlQ291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3RWxlbWVudHNJbnN0YW5jZWRcIiBKdi5bfG9mX2ludCBtb2RlOyBvZl9pbnQgY291bnQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IG9mZnNldDsgb2ZfaW50IGluc3RhbmNlQ291bnR8XVxuXG4gIGxldCBkcmF3X3JhbmdlX2VsZW1lbnRzIGMgbW9kZSBzdGFydCBlbmQnIGNvdW50IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdSYW5nZUVsZW1lbnRzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgZW5kJzsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBlbmFibGUgYyBjYXAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmFibGVcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBlbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBjIGluZGV4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZW5hYmxlVmVydGV4QXR0cmliQXJyYXlcIiBKdi5bfG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGVuZF9xdWVyeSBjIHRhcmdldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuZFF1ZXJ5XCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgZW5kX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuZFRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBmZW5jZV9zeW5jIGMgY29uZGl0aW9uIGZsYWdzID1cbiAgICBKdi5jYWxsIGMgXCJmZW5jZVN5bmNcIiBKdi5bfG9mX2ludCBjb25kaXRpb247IG9mX2ludCBmbGFnc3xdXG5cbiAgbGV0IGZpbmlzaCBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZpbmlzaFwiIEp2Llt8fF1cblxuICBsZXQgZmx1c2ggYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmbHVzaFwiIEp2Llt8fF1cblxuICBsZXQgZnJhbWVidWZmZXJfcmVuZGVyYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgcmVuZGVyYnVmZmVydGFyZ2V0IHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgYXR0YWNobWVudDsgb2ZfaW50IHJlbmRlcmJ1ZmZlcnRhcmdldDsgcmVuZGVyYnVmZmVyfF1cblxuICBsZXQgZnJhbWVidWZmZXJfdGV4dHVyZTJkIGMgdGFyZ2V0IGF0dGFjaG1lbnQgdGV4dGFyZ2V0IHRleHR1cmUgbGV2ZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmcmFtZWJ1ZmZlclRleHR1cmUyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCB0ZXh0YXJnZXQ7IHRleHR1cmU7IG9mX2ludCBsZXZlbHxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3RleHR1cmVfbGF5ZXIgYyB0YXJnZXQgYXR0YWNobWVudCB0ZXh0dXJlIGxldmVsIGxheWVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyB0ZXh0dXJlOyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBsYXllcnxdXG5cbiAgbGV0IGZyb250X2ZhY2UgYyBtb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJvbnRGYWNlXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGdlbmVyYXRlX21pcG1hcCBjIHRhcmdldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImdlbmVyYXRlTWlwbWFwXCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgZ2V0X2FjdGl2ZV9hdHRyaWIgYyBwcm9ncmFtIGluZGV4ID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVBdHRyaWJcIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybSBjIHByb2dyYW0gaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldEFjdGl2ZVVuaWZvcm1cIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19uYW1lIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfcGFyYW1ldGVyIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXg7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybXMgYyBwcm9ncmFtIHVuaWZvcm1JbmRpY2VzIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3Jtc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfbGlzdCBvZl9pbnQgdW5pZm9ybUluZGljZXM7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9hdHRhY2hlZF9zaGFkZXJzIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fanZfbGlzdCBAQCBKdi5jYWxsIGMgXCJnZXRBdHRhY2hlZFNoYWRlcnNcIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBnZXRfYXR0cmliX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0QXR0cmliTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF9idWZmZXJfcGFyYW1ldGVyIGMgdGFyZ2V0IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRCdWZmZXJQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9idWZmZXJfc3ViX2RhdGEgYyB0YXJnZXQgc3JjQnl0ZU9mZnNldCBkc3RCdWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJnZXRCdWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgc3JjQnl0ZU9mZnNldDsgVGFycmF5LnRvX2p2IGRzdEJ1ZmZlcnxdXG5cbiAgbGV0IGdldF9lcnJvciBjICA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEVycm9yXCIgSnYuW3x8XVxuXG4gIGxldCBnZXRfZnJhZ19kYXRhX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0RnJhZ0RhdGFMb2NhdGlvblwiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0ciBuYW1lfF1cblxuICBsZXQgZ2V0X2ZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcGFyYW1ldGVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9pbmRleGVkX3BhcmFtZXRlciBjIHRhcmdldCBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0SW5kZXhlZFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGluZGV4fF1cblxuICBsZXQgZ2V0X2ludGVybmFsZm9ybWF0X3BhcmFtZXRlciBjIHRhcmdldCBpbnRlcm5hbGZvcm1hdCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3BhcmFtZXRlciBjIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9wcm9ncmFtX2luZm9fbG9nIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRQcm9ncmFtSW5mb0xvZ1wiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IGdldF9wcm9ncmFtX3BhcmFtZXRlciBjIHByb2dyYW0gcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFByb2dyYW1QYXJhbWV0ZXJcIiBKdi5bfHByb2dyYW07IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9xdWVyeSBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UXVlcnlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9xdWVyeV9wYXJhbWV0ZXIgYyBxdWVyeSBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UXVlcnlQYXJhbWV0ZXJcIiBKdi5bfHF1ZXJ5OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcmVuZGVyYnVmZmVyX3BhcmFtZXRlciBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfc2FtcGxlcl9wYXJhbWV0ZXIgYyBzYW1wbGVyIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTYW1wbGVyUGFyYW1ldGVyXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfc2hhZGVyX2luZm9fbG9nIGMgc2hhZGVyID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgYyBcImdldFNoYWRlckluZm9Mb2dcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGdldF9zaGFkZXJfcGFyYW1ldGVyIGMgc2hhZGVyIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTaGFkZXJQYXJhbWV0ZXJcIiBKdi5bfHNoYWRlcjsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NoYWRlcl9wcmVjaXNpb25fZm9ybWF0IGMgc2hhZGVydHlwZSBwcmVjaXNpb250eXBlID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRcIiBKdi5bfG9mX2ludCBzaGFkZXJ0eXBlOyBvZl9pbnQgcHJlY2lzaW9udHlwZXxdXG5cbiAgbGV0IGdldF9zaGFkZXJfc291cmNlIGMgc2hhZGVyID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgYyBcImdldFNoYWRlclNvdXJjZVwiIEp2Llt8c2hhZGVyfF1cblxuICBsZXQgZ2V0X3N5bmNfcGFyYW1ldGVyIGMgc3luYyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U3luY1BhcmFtZXRlclwiIEp2Llt8c3luYzsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3RleF9wYXJhbWV0ZXIgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFRleFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3RyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5nIGMgcHJvZ3JhbSBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfdW5pZm9ybSBjIHByb2dyYW0gbG9jYXRpb24gPVxuICAgIEp2LmNhbGwgYyBcImdldFVuaWZvcm1cIiBKdi5bfHByb2dyYW07IGxvY2F0aW9ufF1cblxuICBsZXQgZ2V0X3VuaWZvcm1fYmxvY2tfaW5kZXggYyBwcm9ncmFtIHVuaWZvcm1CbG9ja05hbWUgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtQmxvY2tJbmRleFwiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0ciB1bmlmb3JtQmxvY2tOYW1lfF1cblxuICBsZXQgZ2V0X3VuaWZvcm1faW5kaWNlcyBjIHByb2dyYW0gdW5pZm9ybU5hbWVzID1cbiAgICBKdi50b19saXN0IEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtSW5kaWNlc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0cl9saXN0IHVuaWZvcm1OYW1lc3xdXG5cbiAgbGV0IGdldF91bmlmb3JtX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF92ZXJ0ZXhfYXR0cmliIGMgaW5kZXggcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFZlcnRleEF0dHJpYlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfdmVydGV4X2F0dHJpYl9vZmZzZXQgYyBpbmRleCBwbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldFZlcnRleEF0dHJpYk9mZnNldFwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBoaW50IGMgdGFyZ2V0IG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJoaW50XCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGludmFsaWRhdGVfZnJhbWVidWZmZXIgYyB0YXJnZXQgYXR0YWNobWVudHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJpbnZhbGlkYXRlRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2xpc3Qgb2ZfaW50IGF0dGFjaG1lbnRzfF1cblxuICBsZXQgaW52YWxpZGF0ZV9zdWJfZnJhbWVidWZmZXIgYyB0YXJnZXQgYXR0YWNobWVudHMgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfbGlzdCBvZl9pbnQgYXR0YWNobWVudHM7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgaXNfYnVmZmVyIGMgYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzQnVmZmVyXCIgSnYuW3xidWZmZXJ8XVxuXG4gIGxldCBpc19lbmFibGVkIGMgY2FwID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzRW5hYmxlZFwiIEp2Llt8b2ZfaW50IGNhcHxdXG5cbiAgbGV0IGlzX2ZyYW1lYnVmZmVyIGMgZnJhbWVidWZmZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNGcmFtZWJ1ZmZlclwiIEp2Llt8ZnJhbWVidWZmZXJ8XVxuXG4gIGxldCBpc19wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1Byb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBpc19xdWVyeSBjIHF1ZXJ5ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUXVlcnlcIiBKdi5bfHF1ZXJ5fF1cblxuICBsZXQgaXNfcmVuZGVyYnVmZmVyIGMgcmVuZGVyYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUmVuZGVyYnVmZmVyXCIgSnYuW3xyZW5kZXJidWZmZXJ8XVxuXG4gIGxldCBpc19zYW1wbGVyIGMgc2FtcGxlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1NhbXBsZXJcIiBKdi5bfHNhbXBsZXJ8XVxuXG4gIGxldCBpc19zaGFkZXIgYyBzaGFkZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNTaGFkZXJcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGlzX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVGV4dHVyZVwiIEp2Llt8dGV4dHVyZXxdXG5cbiAgbGV0IGlzX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRmID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHRmfF1cblxuICBsZXQgaXNfdmVydGV4X2FycmF5IGMgdmVydGV4QXJyYXkgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNWZXJ0ZXhBcnJheVwiIEp2Llt8dmVydGV4QXJyYXl8XVxuXG4gIGxldCBsaW5lX3dpZHRoIGMgd2lkdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJsaW5lV2lkdGhcIiBKdi5bfG9mX2Zsb2F0IHdpZHRofF1cblxuICBsZXQgbGlua19wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImxpbmtQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgcGF1c2VfdHJhbnNmb3JtX2ZlZWRiYWNrIGMgID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicGF1c2VUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgcGl4ZWxfc3RvcmVpIGMgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwaXhlbFN0b3JlaVwiIEp2Llt8b2ZfaW50IHBuYW1lOyBvZl9pbnQgcGFyYW18XVxuXG4gIGxldCBwb2x5Z29uX29mZnNldCBjIGZhY3RvciB1bml0cyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInBvbHlnb25PZmZzZXRcIiBKdi5bfG9mX2Zsb2F0IGZhY3Rvcjsgb2ZfZmxvYXQgdW5pdHN8XVxuXG4gIGxldCByZWFkX2J1ZmZlciBjIHNyYyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRCdWZmZXJcIiBKdi5bfG9mX2ludCBzcmN8XVxuXG4gIGxldCByZWFkX3BpeGVsc190b19waXhlbF9wYWNrIGMgeCB5IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVhZFBpeGVsc1wiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHJlYWRfcGl4ZWxzIGMgeCB5IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgZHN0RGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRQaXhlbHNcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBkc3REYXRhfF1cblxuICBsZXQgcmVuZGVyYnVmZmVyX3N0b3JhZ2UgYyB0YXJnZXQgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVuZGVyYnVmZmVyU3RvcmFnZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCByZW5kZXJidWZmZXJfc3RvcmFnZV9tdWx0aXNhbXBsZSBjIHRhcmdldCBzYW1wbGVzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNhbXBsZXM7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgcmVzdW1lX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBzYW1wbGVfY292ZXJhZ2UgYyB2YWx1ZSBpbnZlcnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVDb3ZlcmFnZVwiIEp2Llt8b2ZfZmxvYXQgdmFsdWU7IEp2Lm9mX2Jvb2wgaW52ZXJ0fF1cblxuICBsZXQgc2FtcGxlcl9wYXJhbWV0ZXJmIGMgc2FtcGxlciBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhbXBsZXJQYXJhbWV0ZXJmXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWU7IG9mX2Zsb2F0IHBhcmFtfF1cblxuICBsZXQgc2FtcGxlcl9wYXJhbWV0ZXJpIGMgc2FtcGxlciBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhbXBsZXJQYXJhbWV0ZXJpXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWU7IG9mX2ludCBwYXJhbXxdXG5cbiAgbGV0IHNjaXNzb3IgYyB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2Npc3NvclwiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBzaGFkZXJfc291cmNlIGMgc2hhZGVyIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNoYWRlclNvdXJjZVwiIEp2Llt8c2hhZGVyOyBvZl9qc3RyIHNvdXJjZXxdXG5cbiAgbGV0IHN0ZW5jaWxfZnVuYyBjIGZ1bmMgcmVmIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsRnVuY1wiIEp2Llt8b2ZfaW50IGZ1bmM7IG9mX2ludCByZWY7IG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9mdW5jX3NlcGFyYXRlIGMgZmFjZSBmdW5jIHJlZiBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbEZ1bmNTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBmdW5jOyBvZl9pbnQgcmVmOyBvZl9pbnQgbWFza3xdXG5cbiAgbGV0IHN0ZW5jaWxfbWFzayBjIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsTWFza1wiIEp2Llt8b2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX21hc2tfc2VwYXJhdGUgYyBmYWNlIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsTWFza1NlcGFyYXRlXCIgSnYuW3xvZl9pbnQgZmFjZTsgb2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX29wIGMgZmFpbCB6ZmFpbCB6cGFzcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxPcFwiIEp2Llt8b2ZfaW50IGZhaWw7IG9mX2ludCB6ZmFpbDsgb2ZfaW50IHpwYXNzfF1cblxuICBsZXQgc3RlbmNpbF9vcF9zZXBhcmF0ZSBjIGZhY2UgZmFpbCB6ZmFpbCB6cGFzcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxPcFNlcGFyYXRlXCIgSnYuW3xvZl9pbnQgZmFjZTsgb2ZfaW50IGZhaWw7IG9mX2ludCB6ZmFpbDsgb2ZfaW50IHpwYXNzfF1cblxuICBsZXQgdGV4X2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGJvcmRlciBmb3JtYXQgdHlwZScgc3JjRGF0YSBzcmNPZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X2ltYWdlMmRfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X2ltYWdlMmRfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHBib09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IHBib09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHNyY0RhdGEgc3JjT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X2ltYWdlM2Rfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBzb3VyY2V8XVxuXG4gIGxldCB0ZXhfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfcGFyYW1ldGVyZiBjIHRhcmdldCBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFBhcmFtZXRlcmZcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZTsgb2ZfZmxvYXQgcGFyYW18XVxuXG4gIGxldCB0ZXhfcGFyYW1ldGVyaSBjIHRhcmdldCBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFBhcmFtZXRlcmlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZTsgb2ZfaW50IHBhcmFtfF1cblxuICBsZXQgdGV4X3N0b3JhZ2UyZCBjIHRhcmdldCBsZXZlbHMgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3RvcmFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWxzOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IHRleF9zdG9yYWdlM2QgYyB0YXJnZXQgbGV2ZWxzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN0b3JhZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsczsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aHxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBzcmNEYXRhIHNyY09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgVGFycmF5LnRvX2p2IHNyY0RhdGE7IG9mX2ludCBzcmNPZmZzZXR8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlMmRfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTJkX29mX3BpeGVsX3VucGFjayBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UzZF9vZl9zb3VyY2UgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZ3MgYyBwcm9ncmFtIHZhcnlpbmdzIGJ1ZmZlck1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyX2xpc3QgdmFyeWluZ3M7IG9mX2ludCBidWZmZXJNb2RlfF1cblxuICBsZXQgdW5pZm9ybTFmIGMgbG9jYXRpb24geCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHh8XVxuXG4gIGxldCB1bmlmb3JtMWZ2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0xaSBjIGxvY2F0aW9uIHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeHxdXG5cbiAgbGV0IHVuaWZvcm0xaXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTFpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTF1aSBjIGxvY2F0aW9uIHYwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTF1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MHxdXG5cbiAgbGV0IHVuaWZvcm0xdWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xdWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMmYgYyBsb2NhdGlvbiB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICBsZXQgdW5pZm9ybTJmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMmkgYyBsb2NhdGlvbiB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeDsgb2ZfaW50IHl8XVxuXG4gIGxldCB1bmlmb3JtMml2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0yaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0ydWkgYyBsb2NhdGlvbiB2MCB2MSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0ydWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MXxdXG5cbiAgbGV0IHVuaWZvcm0ydWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0ydWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtM2YgYyBsb2NhdGlvbiB4IHkgeiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHp8XVxuXG4gIGxldCB1bmlmb3JtM2Z2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0zaSBjIGxvY2F0aW9uIHggeSB6ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTNpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgenxdXG5cbiAgbGV0IHVuaWZvcm0zaXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTNpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTN1aSBjIGxvY2F0aW9uIHYwIHYxIHYyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTN1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MDsgb2ZfaW50IHYxOyBvZl9pbnQgdjJ8XVxuXG4gIGxldCB1bmlmb3JtM3VpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM3VpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTRmIGMgbG9jYXRpb24geCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00ZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHd8XVxuXG4gIGxldCB1bmlmb3JtNGZ2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00ZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00aSBjIGxvY2F0aW9uIHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHVuaWZvcm00aXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTRpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTR1aSBjIGxvY2F0aW9uIHYwIHYxIHYyIHYzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTR1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MDsgb2ZfaW50IHYxOyBvZl9pbnQgdjI7IG9mX2ludCB2M3xdXG5cbiAgbGV0IHVuaWZvcm00dWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00dWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2JpbmRpbmcgYyBwcm9ncmFtIHVuaWZvcm1CbG9ja0luZGV4IHVuaWZvcm1CbG9ja0JpbmRpbmcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtQmxvY2tCaW5kaW5nXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXg7IG9mX2ludCB1bmlmb3JtQmxvY2tCaW5kaW5nfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgyZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDJ4M2Z2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4MngzZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDJ4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4Mng0ZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDNmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4M3gyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzeDJmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4M3g0ZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzeDRmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4NGZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXg0eDJmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDR4MmZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXg0eDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDR4M2Z2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdXNlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidXNlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHZhbGlkYXRlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmFsaWRhdGVQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjFmIGMgaW5kZXggeCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjFmXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2Zsb2F0IHh8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliMWZ2IGMgaW5kZXggdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliMWZ2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliMmYgYyBpbmRleCB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIyZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjJmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjJmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjNmIGMgaW5kZXggeCB5IHogPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIzZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjNmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjNmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjRmIGMgaW5kZXggeCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjRmXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHd8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliNGZ2IGMgaW5kZXggdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliNGZ2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2Rpdmlzb3IgYyBpbmRleCBkaXZpc29yID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliRGl2aXNvclwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgZGl2aXNvcnxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTRpIGMgaW5kZXggeCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0aVwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTRpdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0aXZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTR1aSBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNHVpXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHo7IG9mX2ludCB3fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9pNHVpdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0dWl2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2lwb2ludGVyIGMgaW5kZXggc2l6ZSB0eXBlJyBzdHJpZGUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliSVBvaW50ZXJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHNpemU7IG9mX2ludCB0eXBlJzsgb2ZfaW50IHN0cmlkZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfcG9pbnRlciBjIGluZGV4IHNpemUgdHlwZScgbm9ybWFsaXplZCBzdHJpZGUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliUG9pbnRlclwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgc2l6ZTsgb2ZfaW50IHR5cGUnOyBKdi5vZl9ib29sIG5vcm1hbGl6ZWQ7IG9mX2ludCBzdHJpZGU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCB2aWV3cG9ydCBjIHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2aWV3cG9ydFwiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCB3YWl0X3N5bmMgYyBzeW5jIGZsYWdzIHRpbWVvdXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ3YWl0U3luY1wiIEp2Llt8c3luYzsgb2ZfaW50IGZsYWdzOyBvZl9pbnQgdGltZW91dHxdXG5cbiAgKCogRW51bXMgKilcblxuICBsZXQgZ2V0X2ludCBjdHggZiA9IGlmIEp2LmlzX25vbmUgY3R4IHRoZW4gMCBlbHNlIEp2LkludC5nZXQgY3R4IGZcblxuICBsZXQgZ2wxY3R4ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIldlYkdMUmVuZGVyaW5nQ29udGV4dFwiXG4gIGxldCBkZXB0aF9idWZmZXJfYml0ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9CVUZGRVJfQklUXCJcbiAgbGV0IHN0ZW5jaWxfYnVmZmVyX2JpdCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CVUZGRVJfQklUXCJcbiAgbGV0IGNvbG9yX2J1ZmZlcl9iaXQgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0JVRkZFUl9CSVRcIlxuICBsZXQgcG9pbnRzID0gZ2V0X2ludCBnbDFjdHggXCJQT0lOVFNcIlxuICBsZXQgbGluZXMgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVTXCJcbiAgbGV0IGxpbmVfbG9vcCA9IGdldF9pbnQgZ2wxY3R4IFwiTElORV9MT09QXCJcbiAgbGV0IGxpbmVfc3RyaXAgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfU1RSSVBcIlxuICBsZXQgdHJpYW5nbGVzID0gZ2V0X2ludCBnbDFjdHggXCJUUklBTkdMRVNcIlxuICBsZXQgdHJpYW5nbGVfc3RyaXAgPSBnZXRfaW50IGdsMWN0eCBcIlRSSUFOR0xFX1NUUklQXCJcbiAgbGV0IHRyaWFuZ2xlX2ZhbiA9IGdldF9pbnQgZ2wxY3R4IFwiVFJJQU5HTEVfRkFOXCJcbiAgbGV0IHplcm8gPSBnZXRfaW50IGdsMWN0eCBcIlpFUk9cIlxuICBsZXQgb25lID0gZ2V0X2ludCBnbDFjdHggXCJPTkVcIlxuICBsZXQgc3JjX2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQ09MT1JcIlxuICBsZXQgb25lX21pbnVzX3NyY19jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX1NSQ19DT0xPUlwiXG4gIGxldCBzcmNfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIlNSQ19BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfU1JDX0FMUEhBXCJcbiAgbGV0IGRzdF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiRFNUX0FMUEhBXCJcbiAgbGV0IG9uZV9taW51c19kc3RfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19EU1RfQUxQSEFcIlxuICBsZXQgZHN0X2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJEU1RfQ09MT1JcIlxuICBsZXQgb25lX21pbnVzX2RzdF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX0RTVF9DT0xPUlwiXG4gIGxldCBzcmNfYWxwaGFfc2F0dXJhdGUgPSBnZXRfaW50IGdsMWN0eCBcIlNSQ19BTFBIQV9TQVRVUkFURVwiXG4gIGxldCBmdW5jX2FkZCA9IGdldF9pbnQgZ2wxY3R4IFwiRlVOQ19BRERcIlxuICBsZXQgYmxlbmRfZXF1YXRpb24nID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9FUVVBVElPTlwiXG4gIGxldCBibGVuZF9lcXVhdGlvbl9yZ2IgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0VRVUFUSU9OX1JHQlwiXG4gIGxldCBibGVuZF9lcXVhdGlvbl9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIlxuICBsZXQgZnVuY19zdWJ0cmFjdCA9IGdldF9pbnQgZ2wxY3R4IFwiRlVOQ19TVUJUUkFDVFwiXG4gIGxldCBmdW5jX3JldmVyc2Vfc3VidHJhY3QgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfUkVWRVJTRV9TVUJUUkFDVFwiXG4gIGxldCBibGVuZF9kc3RfcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9EU1RfUkdCXCJcbiAgbGV0IGJsZW5kX3NyY19yZ2IgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX1NSQ19SR0JcIlxuICBsZXQgYmxlbmRfZHN0X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9EU1RfQUxQSEFcIlxuICBsZXQgYmxlbmRfc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9TUkNfQUxQSEFcIlxuICBsZXQgY29uc3RhbnRfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIkNPTlNUQU5UX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19jb25zdGFudF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCJcbiAgbGV0IGNvbnN0YW50X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJDT05TVEFOVF9BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQVwiXG4gIGxldCBibGVuZF9jb2xvcicgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0NPTE9SXCJcbiAgbGV0IGFycmF5X2J1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiQVJSQVlfQlVGRkVSXCJcbiAgbGV0IGVsZW1lbnRfYXJyYXlfYnVmZmVyID0gZ2V0X2ludCBnbDFjdHggXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiXG4gIGxldCBhcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgZWxlbWVudF9hcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR1wiXG4gIGxldCBzdHJlYW1fZHJhdyA9IGdldF9pbnQgZ2wxY3R4IFwiU1RSRUFNX0RSQVdcIlxuICBsZXQgc3RhdGljX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIlNUQVRJQ19EUkFXXCJcbiAgbGV0IGR5bmFtaWNfZHJhdyA9IGdldF9pbnQgZ2wxY3R4IFwiRFlOQU1JQ19EUkFXXCJcbiAgbGV0IGJ1ZmZlcl9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJCVUZGRVJfU0laRVwiXG4gIGxldCBidWZmZXJfdXNhZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkJVRkZFUl9VU0FHRVwiXG4gIGxldCBjdXJyZW50X3ZlcnRleF9hdHRyaWIgPSBnZXRfaW50IGdsMWN0eCBcIkNVUlJFTlRfVkVSVEVYX0FUVFJJQlwiXG4gIGxldCBmcm9udCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJPTlRcIlxuICBsZXQgYmFjayA9IGdldF9pbnQgZ2wxY3R4IFwiQkFDS1wiXG4gIGxldCBmcm9udF9hbmRfYmFjayA9IGdldF9pbnQgZ2wxY3R4IFwiRlJPTlRfQU5EX0JBQ0tcIlxuICBsZXQgY3VsbF9mYWNlJyA9IGdldF9pbnQgZ2wxY3R4IFwiQ1VMTF9GQUNFXCJcbiAgbGV0IGJsZW5kID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORFwiXG4gIGxldCBkaXRoZXIgPSBnZXRfaW50IGdsMWN0eCBcIkRJVEhFUlwiXG4gIGxldCBzdGVuY2lsX3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfVEVTVFwiXG4gIGxldCBkZXB0aF90ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9URVNUXCJcbiAgbGV0IHNjaXNzb3JfdGVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiU0NJU1NPUl9URVNUXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X2ZpbGwgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX0ZJTExcIlxuICBsZXQgc2FtcGxlX2FscGhhX3RvX2NvdmVyYWdlID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VcIlxuICBsZXQgc2FtcGxlX2NvdmVyYWdlJyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0NPVkVSQUdFXCJcbiAgbGV0IG5vX2Vycm9yID0gZ2V0X2ludCBnbDFjdHggXCJOT19FUlJPUlwiXG4gIGxldCBpbnZhbGlkX2VudW0gPSBnZXRfaW50IGdsMWN0eCBcIklOVkFMSURfRU5VTVwiXG4gIGxldCBpbnZhbGlkX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX1ZBTFVFXCJcbiAgbGV0IGludmFsaWRfb3BlcmF0aW9uID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX09QRVJBVElPTlwiXG4gIGxldCBvdXRfb2ZfbWVtb3J5ID0gZ2V0X2ludCBnbDFjdHggXCJPVVRfT0ZfTUVNT1JZXCJcbiAgbGV0IGN3ID0gZ2V0X2ludCBnbDFjdHggXCJDV1wiXG4gIGxldCBjY3cgPSBnZXRfaW50IGdsMWN0eCBcIkNDV1wiXG4gIGxldCBsaW5lX3dpZHRoJyA9IGdldF9pbnQgZ2wxY3R4IFwiTElORV9XSURUSFwiXG4gIGxldCBhbGlhc2VkX3BvaW50X3NpemVfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXG4gIGxldCBhbGlhc2VkX2xpbmVfd2lkdGhfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkFMSUFTRURfTElORV9XSURUSF9SQU5HRVwiXG4gIGxldCBjdWxsX2ZhY2VfbW9kZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ1VMTF9GQUNFX01PREVcIlxuICBsZXQgZnJvbnRfZmFjZScgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UX0ZBQ0VcIlxuICBsZXQgZGVwdGhfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1JBTkdFXCJcbiAgbGV0IGRlcHRoX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfV1JJVEVNQVNLXCJcbiAgbGV0IGRlcHRoX2NsZWFyX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DTEVBUl9WQUxVRVwiXG4gIGxldCBkZXB0aF9mdW5jJyA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2NsZWFyX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCJcbiAgbGV0IHN0ZW5jaWxfZnVuYycgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2ZhaWwgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfRkFJTFwiXG4gIGxldCBzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJcbiAgbGV0IHN0ZW5jaWxfcmVmID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1JFRlwiXG4gIGxldCBzdGVuY2lsX3ZhbHVlX21hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfVkFMVUVfTUFTS1wiXG4gIGxldCBzdGVuY2lsX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9XUklURU1BU0tcIlxuICBsZXQgc3RlbmNpbF9iYWNrX2Z1bmMgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19GVU5DXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXG4gIGxldCBzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19wYXNzX2RlcHRoX3Bhc3MgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3JlZiA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1JFRlwiXG4gIGxldCBzdGVuY2lsX2JhY2tfdmFsdWVfbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1dSSVRFTUFTS1wiXG4gIGxldCB2aWV3cG9ydCcgPSBnZXRfaW50IGdsMWN0eCBcIlZJRVdQT1JUXCJcbiAgbGV0IHNjaXNzb3JfYm94ID0gZ2V0X2ludCBnbDFjdHggXCJTQ0lTU09SX0JPWFwiXG4gIGxldCBjb2xvcl9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfQ0xFQVJfVkFMVUVcIlxuICBsZXQgY29sb3Jfd3JpdGVtYXNrID0gZ2V0X2ludCBnbDFjdHggXCJDT0xPUl9XUklURU1BU0tcIlxuICBsZXQgdW5wYWNrX2FsaWdubWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX0FMSUdOTUVOVFwiXG4gIGxldCBwYWNrX2FsaWdubWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiUEFDS19BTElHTk1FTlRcIlxuICBsZXQgbWF4X3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1RFWFRVUkVfU0laRVwiXG4gIGxldCBtYXhfdmlld3BvcnRfZGltcyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIlxuICBsZXQgc3VicGl4ZWxfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiU1VCUElYRUxfQklUU1wiXG4gIGxldCByZWRfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiUkVEX0JJVFNcIlxuICBsZXQgZ3JlZW5fYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiR1JFRU5fQklUU1wiXG4gIGxldCBibHVlX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkJMVUVfQklUU1wiXG4gIGxldCBhbHBoYV9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJBTFBIQV9CSVRTXCJcbiAgbGV0IGRlcHRoX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0JJVFNcIlxuICBsZXQgc3RlbmNpbF9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JJVFNcIlxuICBsZXQgcG9seWdvbl9vZmZzZXRfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X2ZhY3RvciA9IGdldF9pbnQgZ2wxY3R4IFwiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18yZCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzJEXCJcbiAgbGV0IHNhbXBsZV9idWZmZXJzID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQlVGRkVSU1wiXG4gIGxldCBzYW1wbGVzID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVTXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZV92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0NPVkVSQUdFX1ZBTFVFXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZV9pbnZlcnQgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIlxuICBsZXQgY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHMgPSBnZXRfaW50IGdsMWN0eCBcIkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXCJcbiAgbGV0IGRvbnRfY2FyZSA9IGdldF9pbnQgZ2wxY3R4IFwiRE9OVF9DQVJFXCJcbiAgbGV0IGZhc3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIkZBU1RFU1RcIlxuICBsZXQgbmljZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJOSUNFU1RcIlxuICBsZXQgZ2VuZXJhdGVfbWlwbWFwX2hpbnQgPSBnZXRfaW50IGdsMWN0eCBcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJcbiAgbGV0IGJ5dGUgPSBnZXRfaW50IGdsMWN0eCBcIkJZVEVcIlxuICBsZXQgdW5zaWduZWRfYnl0ZSA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfQllURVwiXG4gIGxldCBzaG9ydCA9IGdldF9pbnQgZ2wxY3R4IFwiU0hPUlRcIlxuICBsZXQgdW5zaWduZWRfc2hvcnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXCJcbiAgbGV0IGludCA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UXCJcbiAgbGV0IHVuc2lnbmVkX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfSU5UXCJcbiAgbGV0IGZsb2F0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVFwiXG4gIGxldCBkZXB0aF9jb21wb25lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0NPTVBPTkVOVFwiXG4gIGxldCBhbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQUxQSEFcIlxuICBsZXQgcmdiID0gZ2V0X2ludCBnbDFjdHggXCJSR0JcIlxuICBsZXQgcmdiYSA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCQVwiXG4gIGxldCBsdW1pbmFuY2UgPSBnZXRfaW50IGdsMWN0eCBcIkxVTUlOQU5DRVwiXG4gIGxldCBsdW1pbmFuY2VfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkxVTUlOQU5DRV9BTFBIQVwiXG4gIGxldCB1bnNpZ25lZF9zaG9ydF80XzRfNF80ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF80XzRfNF80XCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0XzVfNV81XzEgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIlxuICBsZXQgdW5zaWduZWRfc2hvcnRfNV82XzUgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXzVfNl81XCJcbiAgbGV0IGZyYWdtZW50X3NoYWRlciA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBR01FTlRfU0hBREVSXCJcbiAgbGV0IHZlcnRleF9zaGFkZXIgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9TSEFERVJcIlxuICBsZXQgbWF4X3ZlcnRleF9hdHRyaWJzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkVSVEVYX0FUVFJJQlNcIlxuICBsZXQgbWF4X3ZlcnRleF91bmlmb3JtX3ZlY3RvcnMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJcbiAgbGV0IG1heF92YXJ5aW5nX3ZlY3RvcnMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIlxuICBsZXQgbWF4X2NvbWJpbmVkX3RleHR1cmVfaW1hZ2VfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdGV4dHVyZV9pbWFnZV91bml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJcbiAgbGV0IG1heF90ZXh0dXJlX2ltYWdlX3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV92ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXCJcbiAgbGV0IHNoYWRlcl90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJTSEFERVJfVFlQRVwiXG4gIGxldCBkZWxldGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJERUxFVEVfU1RBVFVTXCJcbiAgbGV0IGxpbmtfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJMSU5LX1NUQVRVU1wiXG4gIGxldCB2YWxpZGF0ZV9zdGF0dXMgPSBnZXRfaW50IGdsMWN0eCBcIlZBTElEQVRFX1NUQVRVU1wiXG4gIGxldCBhdHRhY2hlZF9zaGFkZXJzID0gZ2V0X2ludCBnbDFjdHggXCJBVFRBQ0hFRF9TSEFERVJTXCJcbiAgbGV0IGFjdGl2ZV91bmlmb3JtcyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX1VOSUZPUk1TXCJcbiAgbGV0IGFjdGl2ZV9hdHRyaWJ1dGVzID0gZ2V0X2ludCBnbDFjdHggXCJBQ1RJVkVfQVRUUklCVVRFU1wiXG4gIGxldCBzaGFkaW5nX2xhbmd1YWdlX3ZlcnNpb24gPSBnZXRfaW50IGdsMWN0eCBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiXG4gIGxldCBjdXJyZW50X3Byb2dyYW0gPSBnZXRfaW50IGdsMWN0eCBcIkNVUlJFTlRfUFJPR1JBTVwiXG4gIGxldCBuZXZlciA9IGdldF9pbnQgZ2wxY3R4IFwiTkVWRVJcIlxuICBsZXQgbGVzcyA9IGdldF9pbnQgZ2wxY3R4IFwiTEVTU1wiXG4gIGxldCBlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiRVFVQUxcIlxuICBsZXQgbGVxdWFsID0gZ2V0X2ludCBnbDFjdHggXCJMRVFVQUxcIlxuICBsZXQgZ3JlYXRlciA9IGdldF9pbnQgZ2wxY3R4IFwiR1JFQVRFUlwiXG4gIGxldCBub3RlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiTk9URVFVQUxcIlxuICBsZXQgZ2VxdWFsID0gZ2V0X2ludCBnbDFjdHggXCJHRVFVQUxcIlxuICBsZXQgYWx3YXlzID0gZ2V0X2ludCBnbDFjdHggXCJBTFdBWVNcIlxuICBsZXQga2VlcCA9IGdldF9pbnQgZ2wxY3R4IFwiS0VFUFwiXG4gIGxldCByZXBsYWNlID0gZ2V0X2ludCBnbDFjdHggXCJSRVBMQUNFXCJcbiAgbGV0IGluY3IgPSBnZXRfaW50IGdsMWN0eCBcIklOQ1JcIlxuICBsZXQgZGVjciA9IGdldF9pbnQgZ2wxY3R4IFwiREVDUlwiXG4gIGxldCBpbnZlcnQgPSBnZXRfaW50IGdsMWN0eCBcIklOVkVSVFwiXG4gIGxldCBpbmNyX3dyYXAgPSBnZXRfaW50IGdsMWN0eCBcIklOQ1JfV1JBUFwiXG4gIGxldCBkZWNyX3dyYXAgPSBnZXRfaW50IGdsMWN0eCBcIkRFQ1JfV1JBUFwiXG4gIGxldCB2ZW5kb3IgPSBnZXRfaW50IGdsMWN0eCBcIlZFTkRPUlwiXG4gIGxldCByZW5kZXJlciA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSRVJcIlxuICBsZXQgdmVyc2lvbiA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSU0lPTlwiXG4gIGxldCBuZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUXCJcbiAgbGV0IGxpbmVhciA9IGdldF9pbnQgZ2wxY3R4IFwiTElORUFSXCJcbiAgbGV0IG5lYXJlc3RfbWlwbWFwX25lYXJlc3QgPSBnZXRfaW50IGdsMWN0eCBcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIlxuICBsZXQgbGluZWFyX21pcG1hcF9uZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIlxuICBsZXQgbmVhcmVzdF9taXBtYXBfbGluZWFyID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIlxuICBsZXQgbGluZWFyX21pcG1hcF9saW5lYXIgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVBUl9NSVBNQVBfTElORUFSXCJcbiAgbGV0IHRleHR1cmVfbWFnX2ZpbHRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9NQUdfRklMVEVSXCJcbiAgbGV0IHRleHR1cmVfbWluX2ZpbHRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9NSU5fRklMVEVSXCJcbiAgbGV0IHRleHR1cmVfd3JhcF9zID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX1dSQVBfU1wiXG4gIGxldCB0ZXh0dXJlX3dyYXBfdCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9XUkFQX1RcIlxuICBsZXQgdGV4dHVyZV8yZCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV8yRFwiXG4gIGxldCB0ZXh0dXJlID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXAgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfQ1VCRV9NQVBcIlxuICBsZXQgdGV4dHVyZV9iaW5kaW5nX2N1YmVfbWFwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV94ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV94ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV95ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV95ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV96ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV96ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pcIlxuICBsZXQgbWF4X2N1YmVfbWFwX3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXG4gIGxldCB0ZXh0dXJlMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTBcIlxuICBsZXQgdGV4dHVyZTEgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUxXCJcbiAgbGV0IHRleHR1cmUyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMlwiXG4gIGxldCB0ZXh0dXJlMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTNcIlxuICBsZXQgdGV4dHVyZTQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU0XCJcbiAgbGV0IHRleHR1cmU1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFNVwiXG4gIGxldCB0ZXh0dXJlNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTZcIlxuICBsZXQgdGV4dHVyZTcgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU3XCJcbiAgbGV0IHRleHR1cmU4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFOFwiXG4gIGxldCB0ZXh0dXJlOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTlcIlxuICBsZXQgdGV4dHVyZTEwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTBcIlxuICBsZXQgdGV4dHVyZTExID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTFcIlxuICBsZXQgdGV4dHVyZTEyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTJcIlxuICBsZXQgdGV4dHVyZTEzID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTNcIlxuICBsZXQgdGV4dHVyZTE0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTRcIlxuICBsZXQgdGV4dHVyZTE1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTVcIlxuICBsZXQgdGV4dHVyZTE2ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTZcIlxuICBsZXQgdGV4dHVyZTE3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTdcIlxuICBsZXQgdGV4dHVyZTE4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMThcIlxuICBsZXQgdGV4dHVyZTE5ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTlcIlxuICBsZXQgdGV4dHVyZTIwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjBcIlxuICBsZXQgdGV4dHVyZTIxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjFcIlxuICBsZXQgdGV4dHVyZTIyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjJcIlxuICBsZXQgdGV4dHVyZTIzID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjNcIlxuICBsZXQgdGV4dHVyZTI0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjRcIlxuICBsZXQgdGV4dHVyZTI1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjVcIlxuICBsZXQgdGV4dHVyZTI2ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjZcIlxuICBsZXQgdGV4dHVyZTI3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjdcIlxuICBsZXQgdGV4dHVyZTI4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjhcIlxuICBsZXQgdGV4dHVyZTI5ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjlcIlxuICBsZXQgdGV4dHVyZTMwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMzBcIlxuICBsZXQgdGV4dHVyZTMxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMzFcIlxuICBsZXQgYWN0aXZlX3RleHR1cmUnID0gZ2V0X2ludCBnbDFjdHggXCJBQ1RJVkVfVEVYVFVSRVwiXG4gIGxldCByZXBlYXQgPSBnZXRfaW50IGdsMWN0eCBcIlJFUEVBVFwiXG4gIGxldCBjbGFtcF90b19lZGdlID0gZ2V0X2ludCBnbDFjdHggXCJDTEFNUF9UT19FREdFXCJcbiAgbGV0IG1pcnJvcmVkX3JlcGVhdCA9IGdldF9pbnQgZ2wxY3R4IFwiTUlSUk9SRURfUkVQRUFUXCJcbiAgbGV0IGZsb2F0X3ZlYzIgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX1ZFQzJcIlxuICBsZXQgZmxvYXRfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfVkVDM1wiXG4gIGxldCBmbG9hdF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9WRUM0XCJcbiAgbGV0IGludF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJJTlRfVkVDMlwiXG4gIGxldCBpbnRfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UX1ZFQzNcIlxuICBsZXQgaW50X3ZlYzQgPSBnZXRfaW50IGdsMWN0eCBcIklOVF9WRUM0XCJcbiAgbGV0IGJvb2wgPSBnZXRfaW50IGdsMWN0eCBcIkJPT0xcIlxuICBsZXQgYm9vbF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzJcIlxuICBsZXQgYm9vbF92ZWMzID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzNcIlxuICBsZXQgYm9vbF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzRcIlxuICBsZXQgZmxvYXRfbWF0MiA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfTUFUMlwiXG4gIGxldCBmbG9hdF9tYXQzID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9NQVQzXCJcbiAgbGV0IGZsb2F0X21hdDQgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX01BVDRcIlxuICBsZXQgc2FtcGxlcl8yZCA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFUl8yRFwiXG4gIGxldCBzYW1wbGVyX2N1YmUgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRVJfQ1VCRVwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X2VuYWJsZWQgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRFwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X3N0cmlkZSA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1RZUEVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9ub3JtYWxpemVkID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9wb2ludGVyID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR1wiXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX3R5cGUgPSBnZXRfaW50IGdsMWN0eCBcIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRVwiXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX2Zvcm1hdCA9IGdldF9pbnQgZ2wxY3R4IFwiSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVRcIlxuICBsZXQgY29tcGlsZV9zdGF0dXMgPSBnZXRfaW50IGdsMWN0eCBcIkNPTVBJTEVfU1RBVFVTXCJcbiAgbGV0IGxvd19mbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiTE9XX0ZMT0FUXCJcbiAgbGV0IG1lZGl1bV9mbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiTUVESVVNX0ZMT0FUXCJcbiAgbGV0IGhpZ2hfZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIkhJR0hfRkxPQVRcIlxuICBsZXQgbG93X2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiTE9XX0lOVFwiXG4gIGxldCBtZWRpdW1faW50ID0gZ2V0X2ludCBnbDFjdHggXCJNRURJVU1fSU5UXCJcbiAgbGV0IGhpZ2hfaW50ID0gZ2V0X2ludCBnbDFjdHggXCJISUdIX0lOVFwiXG4gIGxldCBmcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJcIlxuICBsZXQgcmVuZGVyYnVmZmVyID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJcIlxuICBsZXQgcmdiYTQgPSBnZXRfaW50IGdsMWN0eCBcIlJHQkE0XCJcbiAgbGV0IHJnYjVfYTEgPSBnZXRfaW50IGdsMWN0eCBcIlJHQjVfQTFcIlxuICBsZXQgcmdiNTY1ID0gZ2V0X2ludCBnbDFjdHggXCJSR0I1NjVcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MTYgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0NPTVBPTkVOVDE2XCJcbiAgbGV0IHN0ZW5jaWxfaW5kZXg4ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0lOREVYOFwiXG4gIGxldCBkZXB0aF9zdGVuY2lsID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9TVEVOQ0lMXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl93aWR0aCA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX1dJRFRIXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9oZWlnaHQgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9IRUlHSFRcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2ludGVybmFsX2Zvcm1hdCA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXG4gIGxldCByZW5kZXJidWZmZXJfcmVkX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfZ3JlZW5fc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2JsdWVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfYWxwaGFfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2RlcHRoX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zdGVuY2lsX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdF9uYW1lID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfdGV4dHVyZV9sZXZlbCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfdGV4dHVyZV9jdWJlX21hcF9mYWNlID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MCA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfQVRUQUNITUVOVDBcIlxuICBsZXQgZGVwdGhfYXR0YWNobWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQVRUQUNITUVOVFwiXG4gIGxldCBzdGVuY2lsX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQVRUQUNITUVOVFwiXG4gIGxldCBkZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVFwiXG4gIGxldCBub25lID0gZ2V0X2ludCBnbDFjdHggXCJOT05FXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2NvbXBsZXRlID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX21pc3NpbmdfYXR0YWNobWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9kaW1lbnNpb25zID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNcIlxuICBsZXQgZnJhbWVidWZmZXJfdW5zdXBwb3J0ZWQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IG1heF9yZW5kZXJidWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCJcbiAgbGV0IGludmFsaWRfZnJhbWVidWZmZXJfb3BlcmF0aW9uID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTlwiXG4gIGxldCB1bnBhY2tfZmxpcF95X3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJcbiAgbGV0IHVucGFja19wcmVtdWx0aXBseV9hbHBoYV93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJcbiAgbGV0IGNvbnRleHRfbG9zdF93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiQ09OVEVYVF9MT1NUX1dFQkdMXCJcbiAgbGV0IHVucGFja19jb2xvcnNwYWNlX2NvbnZlcnNpb25fd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIlxuICBsZXQgYnJvd3Nlcl9kZWZhdWx0X3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIlxuXG4gIGxldCBnbDJjdHggPSBKdi5nZXQgSnYuZ2xvYmFsIFwiV2ViR0wyUmVuZGVyaW5nQ29udGV4dFwiXG4gIGxldCByZWFkX2J1ZmZlcicgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfQlVGRkVSXCJcbiAgbGV0IHVucGFja19yb3dfbGVuZ3RoID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfUk9XX0xFTkdUSFwiXG4gIGxldCB1bnBhY2tfc2tpcF9yb3dzID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfU0tJUF9ST1dTXCJcbiAgbGV0IHVucGFja19za2lwX3BpeGVscyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfUElYRUxTXCJcbiAgbGV0IHBhY2tfcm93X2xlbmd0aCA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19ST1dfTEVOR1RIXCJcbiAgbGV0IHBhY2tfc2tpcF9yb3dzID0gZ2V0X2ludCBnbDJjdHggXCJQQUNLX1NLSVBfUk9XU1wiXG4gIGxldCBwYWNrX3NraXBfcGl4ZWxzID0gZ2V0X2ludCBnbDJjdHggXCJQQUNLX1NLSVBfUElYRUxTXCJcbiAgbGV0IGNvbG9yID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUlwiXG4gIGxldCBkZXB0aCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEhcIlxuICBsZXQgc3RlbmNpbCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RFTkNJTFwiXG4gIGxldCByZWQgPSBnZXRfaW50IGdsMmN0eCBcIlJFRFwiXG4gIGxldCByZ2I4ID0gZ2V0X2ludCBnbDJjdHggXCJSR0I4XCJcbiAgbGV0IHJnYmE4ID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOFwiXG4gIGxldCByZ2IxMF9hMiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTBfQTJcIlxuICBsZXQgdGV4dHVyZV9iaW5kaW5nXzNkID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0JJTkRJTkdfM0RcIlxuICBsZXQgdW5wYWNrX3NraXBfaW1hZ2VzID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfU0tJUF9JTUFHRVNcIlxuICBsZXQgdW5wYWNrX2ltYWdlX2hlaWdodCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX0lNQUdFX0hFSUdIVFwiXG4gIGxldCB0ZXh0dXJlXzNkID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFXzNEXCJcbiAgbGV0IHRleHR1cmVfd3JhcF9yID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX1dSQVBfUlwiXG4gIGxldCBtYXhfM2RfdGV4dHVyZV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfM0RfVEVYVFVSRV9TSVpFXCJcbiAgbGV0IHVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWXCJcbiAgbGV0IG1heF9lbGVtZW50c192ZXJ0aWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTXCJcbiAgbGV0IG1heF9lbGVtZW50c19pbmRpY2VzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRUxFTUVOVFNfSU5ESUNFU1wiXG4gIGxldCB0ZXh0dXJlX21pbl9sb2QgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUlOX0xPRFwiXG4gIGxldCB0ZXh0dXJlX21heF9sb2QgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUFYX0xPRFwiXG4gIGxldCB0ZXh0dXJlX2Jhc2VfbGV2ZWwgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQkFTRV9MRVZFTFwiXG4gIGxldCB0ZXh0dXJlX21heF9sZXZlbCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9NQVhfTEVWRUxcIlxuICBsZXQgbWluID0gZ2V0X2ludCBnbDJjdHggXCJNSU5cIlxuICBsZXQgbWF4ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MjQgPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIX0NPTVBPTkVOVDI0XCJcbiAgbGV0IG1heF90ZXh0dXJlX2xvZF9iaWFzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVEVYVFVSRV9MT0RfQklBU1wiXG4gIGxldCB0ZXh0dXJlX2NvbXBhcmVfbW9kZSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9DT01QQVJFX01PREVcIlxuICBsZXQgdGV4dHVyZV9jb21wYXJlX2Z1bmMgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQ09NUEFSRV9GVU5DXCJcbiAgbGV0IGN1cnJlbnRfcXVlcnkgPSBnZXRfaW50IGdsMmN0eCBcIkNVUlJFTlRfUVVFUllcIlxuICBsZXQgcXVlcnlfcmVzdWx0ID0gZ2V0X2ludCBnbDJjdHggXCJRVUVSWV9SRVNVTFRcIlxuICBsZXQgcXVlcnlfcmVzdWx0X2F2YWlsYWJsZSA9IGdldF9pbnQgZ2wyY3R4IFwiUVVFUllfUkVTVUxUX0FWQUlMQUJMRVwiXG4gIGxldCBzdHJlYW1fcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RSRUFNX1JFQURcIlxuICBsZXQgc3RyZWFtX2NvcHkgPSBnZXRfaW50IGdsMmN0eCBcIlNUUkVBTV9DT1BZXCJcbiAgbGV0IHN0YXRpY19yZWFkID0gZ2V0X2ludCBnbDJjdHggXCJTVEFUSUNfUkVBRFwiXG4gIGxldCBzdGF0aWNfY29weSA9IGdldF9pbnQgZ2wyY3R4IFwiU1RBVElDX0NPUFlcIlxuICBsZXQgZHluYW1pY19yZWFkID0gZ2V0X2ludCBnbDJjdHggXCJEWU5BTUlDX1JFQURcIlxuICBsZXQgZHluYW1pY19jb3B5ID0gZ2V0X2ludCBnbDJjdHggXCJEWU5BTUlDX0NPUFlcIlxuICBsZXQgbWF4X2RyYXdfYnVmZmVycyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0RSQVdfQlVGRkVSU1wiXG4gIGxldCBkcmF3X2J1ZmZlcjAgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMFwiXG4gIGxldCBkcmF3X2J1ZmZlcjEgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMVwiXG4gIGxldCBkcmF3X2J1ZmZlcjIgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMlwiXG4gIGxldCBkcmF3X2J1ZmZlcjMgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSM1wiXG4gIGxldCBkcmF3X2J1ZmZlcjQgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNFwiXG4gIGxldCBkcmF3X2J1ZmZlcjUgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNVwiXG4gIGxldCBkcmF3X2J1ZmZlcjYgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNlwiXG4gIGxldCBkcmF3X2J1ZmZlcjcgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSN1wiXG4gIGxldCBkcmF3X2J1ZmZlcjggPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSOFwiXG4gIGxldCBkcmF3X2J1ZmZlcjkgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSOVwiXG4gIGxldCBkcmF3X2J1ZmZlcjEwID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjEwXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTEgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTFcIlxuICBsZXQgZHJhd19idWZmZXIxMiA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxMlwiXG4gIGxldCBkcmF3X2J1ZmZlcjEzID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjEzXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTQgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTRcIlxuICBsZXQgZHJhd19idWZmZXIxNSA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxNVwiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBzYW1wbGVyXzNkID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzNEXCJcbiAgbGV0IHNhbXBsZXJfMmRfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX1NIQURPV1wiXG4gIGxldCBmcmFnbWVudF9zaGFkZXJfZGVyaXZhdGl2ZV9oaW50ID0gZ2V0X2ludCBnbDJjdHggXCJGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UXCJcbiAgbGV0IHBpeGVsX3BhY2tfYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9QQUNLX0JVRkZFUlwiXG4gIGxldCBwaXhlbF91bnBhY2tfYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9VTlBBQ0tfQlVGRkVSXCJcbiAgbGV0IHBpeGVsX3BhY2tfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlBJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcGl4ZWxfdW5wYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgZmxvYXRfbWF0MngzID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQyeDNcIlxuICBsZXQgZmxvYXRfbWF0Mng0ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQyeDRcIlxuICBsZXQgZmxvYXRfbWF0M3gyID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQzeDJcIlxuICBsZXQgZmxvYXRfbWF0M3g0ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQzeDRcIlxuICBsZXQgZmxvYXRfbWF0NHgyID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQ0eDJcIlxuICBsZXQgZmxvYXRfbWF0NHgzID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQ0eDNcIlxuICBsZXQgc3JnYiA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQlwiXG4gIGxldCBzcmdiOCA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQjhcIlxuICBsZXQgc3JnYjhfYWxwaGE4ID0gZ2V0X2ludCBnbDJjdHggXCJTUkdCOF9BTFBIQThcIlxuICBsZXQgY29tcGFyZV9yZWZfdG9fdGV4dHVyZSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09NUEFSRV9SRUZfVE9fVEVYVFVSRVwiXG4gIGxldCByZ2JhMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMzJGXCJcbiAgbGV0IHJnYjMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJGXCJcbiAgbGV0IHJnYmExNmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNkZcIlxuICBsZXQgcmdiMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxNkZcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVJcIlxuICBsZXQgbWF4X2FycmF5X3RleHR1cmVfbGF5ZXJzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlNcIlxuICBsZXQgbWluX3Byb2dyYW1fdGV4ZWxfb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJNSU5fUFJPR1JBTV9URVhFTF9PRkZTRVRcIlxuICBsZXQgbWF4X3Byb2dyYW1fdGV4ZWxfb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVRcIlxuICBsZXQgbWF4X3ZhcnlpbmdfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZBUllJTkdfQ09NUE9ORU5UU1wiXG4gIGxldCB0ZXh0dXJlXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFXzJEX0FSUkFZXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZXCJcbiAgbGV0IHIxMWZfZzExZl9iMTBmID0gZ2V0X2ludCBnbDJjdHggXCJSMTFGX0cxMUZfQjEwRlwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWXCJcbiAgbGV0IHJnYjlfZTUgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjlfRTVcIlxuICBsZXQgdW5zaWduZWRfaW50XzVfOV85XzlfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfNV85XzlfOV9SRVZcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9tb2RlID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREVcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19zZXBhcmF0ZV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFNcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmdzJyA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc3RhcnQgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlRcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkVcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ByaW1pdGl2ZXNfd3JpdHRlbiA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTlwiXG4gIGxldCByYXN0ZXJpemVyX2Rpc2NhcmQgPSBnZXRfaW50IGdsMmN0eCBcIlJBU1RFUklaRVJfRElTQ0FSRFwiXG4gIGxldCBtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX2ludGVybGVhdmVkX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX3NlcGFyYXRlX2F0dHJpYnMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCU1wiXG4gIGxldCBpbnRlcmxlYXZlZF9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJJTlRFUkxFQVZFRF9BVFRSSUJTXCJcbiAgbGV0IHNlcGFyYXRlX2F0dHJpYnMgPSBnZXRfaW50IGdsMmN0eCBcIlNFUEFSQVRFX0FUVFJJQlNcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUlwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElOR1wiXG4gIGxldCByZ2JhMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTMyVUlcIlxuICBsZXQgcmdiMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJVSVwiXG4gIGxldCByZ2JhMTZ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTE2VUlcIlxuICBsZXQgcmdiMTZ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTZVSVwiXG4gIGxldCByZ2JhOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOFVJXCJcbiAgbGV0IHJnYjh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOFVJXCJcbiAgbGV0IHJnYmEzMmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkEzMklcIlxuICBsZXQgcmdiMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IzMklcIlxuICBsZXQgcmdiYTE2aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTE2SVwiXG4gIGxldCByZ2IxNmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjE2SVwiXG4gIGxldCByZ2JhOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkE4SVwiXG4gIGxldCByZ2I4aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOElcIlxuICBsZXQgcmVkX2ludGVnZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJFRF9JTlRFR0VSXCJcbiAgbGV0IHJnYl9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR0JfSU5URUdFUlwiXG4gIGxldCByZ2JhX2ludGVnZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkFfSU5URUdFUlwiXG4gIGxldCBzYW1wbGVyXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX0FSUkFZXCJcbiAgbGV0IHNhbXBsZXJfMmRfYXJyYXlfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX0FSUkFZX1NIQURPV1wiXG4gIGxldCBzYW1wbGVyX2N1YmVfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSX0NVQkVfU0hBRE9XXCJcbiAgbGV0IHVuc2lnbmVkX2ludF92ZWMyID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfVkVDMlwiXG4gIGxldCB1bnNpZ25lZF9pbnRfdmVjMyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1ZFQzNcIlxuICBsZXQgdW5zaWduZWRfaW50X3ZlYzQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9WRUM0XCJcbiAgbGV0IGludF9zYW1wbGVyXzJkID0gZ2V0X2ludCBnbDJjdHggXCJJTlRfU0FNUExFUl8yRFwiXG4gIGxldCBpbnRfc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfM0RcIlxuICBsZXQgaW50X3NhbXBsZXJfY3ViZSA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfQ1VCRVwiXG4gIGxldCBpbnRfc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfMkRfQVJSQVlcIlxuICBsZXQgdW5zaWduZWRfaW50X3NhbXBsZXJfMmQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzNkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8zRFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl9jdWJlID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWVwiXG4gIGxldCBkZXB0aF9jb21wb25lbnQzMmYgPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIX0NPTVBPTkVOVDMyRlwiXG4gIGxldCBkZXB0aDMyZl9zdGVuY2lsOCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEgzMkZfU1RFTkNJTDhcIlxuICBsZXQgZmxvYXRfMzJfdW5zaWduZWRfaW50XzI0XzhfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVZcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb2xvcl9lbmNvZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR1wiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2NvbXBvbmVudF90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcmVkX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9ncmVlbl9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9ibHVlX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQkxVRV9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYWxwaGFfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZGVwdGhfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfc3RlbmNpbF9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9kZWZhdWx0ID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9ERUZBVUxUXCJcbiAgbGV0IHVuc2lnbmVkX2ludF8yNF84ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfMjRfOFwiXG4gIGxldCBkZXB0aDI0X3N0ZW5jaWw4ID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSDI0X1NURU5DSUw4XCJcbiAgbGV0IHVuc2lnbmVkX25vcm1hbGl6ZWQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX05PUk1BTElaRURcIlxuICBsZXQgZHJhd19mcmFtZWJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmVhZF9mcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkVBRF9GUkFNRUJVRkZFUlwiXG4gIGxldCBkcmF3X2ZyYW1lYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0ZSQU1FQlVGRkVSXCJcbiAgbGV0IHJlYWRfZnJhbWVidWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zYW1wbGVzID0gZ2V0X2ludCBnbDJjdHggXCJSRU5ERVJCVUZGRVJfU0FNUExFU1wiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfbGF5ZXIgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUlwiXG4gIGxldCBtYXhfY29sb3JfYXR0YWNobWVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT0xPUl9BVFRBQ0hNRU5UU1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDFcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDIgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQyXCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQzID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UM1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NCA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDRcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ1XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ2ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UNlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDdcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDggPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ4XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ5ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UOVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTAgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTEgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTIgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTMgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxM1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTQgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxNFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxNVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX211bHRpc2FtcGxlID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFXCJcbiAgbGV0IG1heF9zYW1wbGVzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfU0FNUExFU1wiXG4gIGxldCBoYWxmX2Zsb2F0ID0gZ2V0X2ludCBnbDJjdHggXCJIQUxGX0ZMT0FUXCJcbiAgbGV0IHJnID0gZ2V0X2ludCBnbDJjdHggXCJSR1wiXG4gIGxldCByZ19pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR19JTlRFR0VSXCJcbiAgbGV0IHI4ID0gZ2V0X2ludCBnbDJjdHggXCJSOFwiXG4gIGxldCByZzggPSBnZXRfaW50IGdsMmN0eCBcIlJHOFwiXG4gIGxldCByMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSMTZGXCJcbiAgbGV0IHIzMmYgPSBnZXRfaW50IGdsMmN0eCBcIlIzMkZcIlxuICBsZXQgcmcxNmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHMTZGXCJcbiAgbGV0IHJnMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSRzMyRlwiXG4gIGxldCByOGkgPSBnZXRfaW50IGdsMmN0eCBcIlI4SVwiXG4gIGxldCByOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSOFVJXCJcbiAgbGV0IHIxNmkgPSBnZXRfaW50IGdsMmN0eCBcIlIxNklcIlxuICBsZXQgcjE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlIxNlVJXCJcbiAgbGV0IHIzMmkgPSBnZXRfaW50IGdsMmN0eCBcIlIzMklcIlxuICBsZXQgcjMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlIzMlVJXCJcbiAgbGV0IHJnOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHOElcIlxuICBsZXQgcmc4dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHOFVJXCJcbiAgbGV0IHJnMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2SVwiXG4gIGxldCByZzE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHMTZVSVwiXG4gIGxldCByZzMyaSA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMklcIlxuICBsZXQgcmczMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzMyVUlcIlxuICBsZXQgdmVydGV4X2FycmF5X2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlZFUlRFWF9BUlJBWV9CSU5ESU5HXCJcbiAgbGV0IHI4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSOF9TTk9STVwiXG4gIGxldCByZzhfc25vcm0gPSBnZXRfaW50IGdsMmN0eCBcIlJHOF9TTk9STVwiXG4gIGxldCByZ2I4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSR0I4X1NOT1JNXCJcbiAgbGV0IHJnYmE4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOF9TTk9STVwiXG4gIGxldCBzaWduZWRfbm9ybWFsaXplZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0lHTkVEX05PUk1BTElaRURcIlxuICBsZXQgY29weV9yZWFkX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9SRUFEX0JVRkZFUlwiXG4gIGxldCBjb3B5X3dyaXRlX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9XUklURV9CVUZGRVJcIlxuICBsZXQgY29weV9yZWFkX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJDT1BZX1JFQURfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgY29weV93cml0ZV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9XUklURV9CVUZGRVJfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2J1ZmZlcl9zdGFydCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfU1RBUlRcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfU0laRVwiXG4gIGxldCBtYXhfdmVydGV4X3VuaWZvcm1fYmxvY2tzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF9mcmFnbWVudF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF9jb21iaW5lZF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF91bmlmb3JtX2J1ZmZlcl9iaW5kaW5ncyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTXCJcbiAgbGV0IG1heF91bmlmb3JtX2Jsb2NrX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9VTklGT1JNX0JMT0NLX1NJWkVcIlxuICBsZXQgbWF4X2NvbWJpbmVkX3ZlcnRleF91bmlmb3JtX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IG1heF9jb21iaW5lZF9mcmFnbWVudF91bmlmb3JtX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFNcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfb2Zmc2V0X2FsaWdubWVudCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVFwiXG4gIGxldCBhY3RpdmVfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIkFDVElWRV9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCB1bmlmb3JtX3R5cGUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fVFlQRVwiXG4gIGxldCB1bmlmb3JtX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fU0laRVwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0lOREVYXCJcbiAgbGV0IHVuaWZvcm1fb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX09GRlNFVFwiXG4gIGxldCB1bmlmb3JtX2FycmF5X3N0cmlkZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9BUlJBWV9TVFJJREVcIlxuICBsZXQgdW5pZm9ybV9tYXRyaXhfc3RyaWRlID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX01BVFJJWF9TVFJJREVcIlxuICBsZXQgdW5pZm9ybV9pc19yb3dfbWFqb3IgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fSVNfUk9XX01BSk9SXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYmluZGluZycgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2RhdGFfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19EQVRBX1NJWkVcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19hY3RpdmVfdW5pZm9ybXMgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1faW5kaWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV92ZXJ0ZXhfc2hhZGVyID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUlwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX3JlZmVyZW5jZWRfYnlfZnJhZ21lbnRfc2hhZGVyID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSXCJcbiAgbGV0IGludmFsaWRfaW5kZXggPSBnZXRfaW50IGdsMmN0eCBcIklOVkFMSURfSU5ERVhcIlxuICBsZXQgbWF4X3ZlcnRleF9vdXRwdXRfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfaW5wdXRfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X3NlcnZlcl93YWl0X3RpbWVvdXQgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9TRVJWRVJfV0FJVF9USU1FT1VUXCJcbiAgbGV0IG9iamVjdF90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJPQkpFQ1RfVFlQRVwiXG4gIGxldCBzeW5jX2NvbmRpdGlvbiA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19DT05ESVRJT05cIlxuICBsZXQgc3luY19zdGF0dXMgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfU1RBVFVTXCJcbiAgbGV0IHN5bmNfZmxhZ3MgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkxBR1NcIlxuICBsZXQgc3luY19mZW5jZSA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19GRU5DRVwiXG4gIGxldCBzeW5jX2dwdV9jb21tYW5kc19jb21wbGV0ZSA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEVcIlxuICBsZXQgdW5zaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdOQUxFRFwiXG4gIGxldCBzaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0lHTkFMRURcIlxuICBsZXQgYWxyZWFkeV9zaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiQUxSRUFEWV9TSUdOQUxFRFwiXG4gIGxldCB0aW1lb3V0X2V4cGlyZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRJTUVPVVRfRVhQSVJFRFwiXG4gIGxldCBjb25kaXRpb25fc2F0aXNmaWVkID0gZ2V0X2ludCBnbDJjdHggXCJDT05ESVRJT05fU0FUSVNGSUVEXCJcbiAgbGV0IHdhaXRfZmFpbGVkID0gZ2V0X2ludCBnbDJjdHggXCJXQUlUX0ZBSUxFRFwiXG4gIGxldCBzeW5jX2ZsdXNoX2NvbW1hbmRzX2JpdCA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19GTFVTSF9DT01NQU5EU19CSVRcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9kaXZpc29yID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1JcIlxuICBsZXQgYW55X3NhbXBsZXNfcGFzc2VkID0gZ2V0X2ludCBnbDJjdHggXCJBTllfU0FNUExFU19QQVNTRURcIlxuICBsZXQgYW55X3NhbXBsZXNfcGFzc2VkX2NvbnNlcnZhdGl2ZSA9IGdldF9pbnQgZ2wyY3R4IFwiQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRVwiXG4gIGxldCBzYW1wbGVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlNBTVBMRVJfQklORElOR1wiXG4gIGxldCByZ2IxMF9hMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxMF9BMlVJXCJcbiAgbGV0IGludF8yXzEwXzEwXzEwX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UXzJfMTBfMTBfMTBfUkVWXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFjayA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19wYXVzZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19QQVVTRURcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2FjdGl2ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRVwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkdcIlxuICBsZXQgdGV4dHVyZV9pbW11dGFibGVfZm9ybWF0ID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRcIlxuICBsZXQgbWF4X2VsZW1lbnRfaW5kZXggPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9FTEVNRU5UX0lOREVYXCJcbiAgbGV0IHRleHR1cmVfaW1tdXRhYmxlX2xldmVscyA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTXCJcbiAgbGV0IHRpbWVvdXRfaWdub3JlZCA9IGdldF9pbnQgZ2wyY3R4IFwiVElNRU9VVF9JR05PUkVEXCJcbiAgbGV0IG1heF9jbGllbnRfd2FpdF90aW1lb3V0X3dlYmdsID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTFwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiSnYiLCJKc3RyIiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9MaXN0IiwiRnV0IiwiQnJyIiwiaXNfMmQiLCJtIiwiaXNfaWRlbnRpdHkiLCJpbnZlcnNlIiwibXVsdGlwbHkiLCJtMTEiLCJtMTIiLCJtMTMiLCJtMTQiLCJtMjEiLCJtMjIiLCJtMjMiLCJtMjQiLCJtMzEiLCJtMzIiLCJtMzMiLCJtMzQiLCJtNDEiLCJtNDIiLCJtNDMiLCJtNDQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImRvbW1hdHJpeHJvIiwidG9fZmxvYXQzMl9hcnJheSIsIm9mX2Zsb2F0MzJfYXJyYXkiLCJ0b19mbG9hdDY0X2FycmF5Iiwib2ZfZmxvYXQ2NF9hcnJheSIsInY0IiwidiIsIngiLCJ5IiwieiIsInciLCJ0ciIsInRvX2pzb24iLCJjc3RfaGVpZ2h0IiwiY3N0X3dpZHRoIiwiY3JlYXRlIiwiYXQiLCJvcHQiLCJjcyIsImgiLCJvZl9lbCIsInRvX2VsIiwic2V0X3ciLCJzZXRfaCIsInNldF9zaXplX3RvX2xheW91dF9zaXplIiwiaGlkcGkiLCJkcHIiLCJjdyIsImNoIiwiY3N0X3F1YWxpdHkiLCJjc3RfdHlwZSIsImltYWdlX2VuY29kZSIsInF1YWxpdHkiLCJwYXJhbSIsInR5cGUiLCJvIiwiZW5jIiwiZW5jb2RlIiwibWV0aCIsImFyZyIsInQiLCJxIiwiYXJncyIsInRvX2RhdGFfdXJsIiwiZXhuIiwidG9fYmxvYiIsIm1hdGNoIiwic2V0IiwiZnV0IiwiY2IiLCJibG9iIiwiY2FwdHVyZV9zdHJlYW0iLCJoeiIsInBhdGgiLCJvZl9zdmciLCJzdmciLCJvZl9wYXRoIiwicCIsImFkZCIsImNsb3NlIiwibW92ZV90byIsImxpbmVfdG8iLCJxY3VydmVfdG8iLCJjeCIsImN5IiwiY2N1cnZlX3RvIiwiYXJjX3RvIiwiciIsImFyYyIsInN0YXJ0Iiwic3RvcCIsImFudGljbG9ja3dpc2UiLCJyZWN0IiwiZWxsaXBzZSIsInJ4IiwicnkiLCJyb3QiLCJpbWFnZV9zcmNfb2ZfZWwiLCJpbWFnZV9zcmNfb2ZfanYiLCJjc3RfYWxwaGEiLCJjc3RfY29sb3JTcGFjZSIsImNzdF9kZXN5bmNocm9uaXplZCIsImNzdF93aWxsUmVhZEZyZXF1ZW50bHkiLCJjcmVhdGVfYXR0cnMiLCJhbHBoYSIsImNvbG9yX3NwYWNlIiwiZGVzeW5jaHJvbml6ZWQiLCJ3aWxsX3JlYWRfZnJlcXVlbnRseSIsImF0dHJzX2FscGhhIiwiYXR0cnNfY29sb3Jfc3BhY2UiLCJhdHRyc19kZXN5bmNocm9uaXplZCIsImF0dHJzX3dpbGxfcmVhZF9mcmVxdWVudGx5IiwiZ2V0X2NvbnRleHQiLCJjbnYiLCJhdHRycyIsImNzdF9jYW52YXMiLCJjYW52YXMiLCJzYXZlIiwicmVzdG9yZSIsImNzdF9pbWFnZVNtb290aGluZ0VuYWJsZWQiLCJpbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCIsInNldF9pbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCIsImNzdF9pbWFnZVNtb290aGluZ1F1YWxpdHkiLCJpbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSIsInNldF9pbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSIsImNzdF9nbG9iYWxBbHBoYSIsImdsb2JhbF9hbHBoYSIsInNldF9nbG9iYWxfYWxwaGEiLCJjc3RfZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwiZ2xvYmFsX2NvbXBvc2l0ZV9vcCIsInNldF9nbG9iYWxfY29tcG9zaXRlX29wIiwiY3N0X2ZpbHRlciIsImZpbHRlciIsInNldF9maWx0ZXIiLCJnZXRfdHJhbnNmb3JtIiwic2V0X3RyYW5zZm9ybSIsImN0eCIsInJlc2V0X3RyYW5zZm9ybSIsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSIsInJvdGF0ZSIsInNjYWxlIiwic3giLCJzeSIsInNldF9zdHJva2Vfc3R5bGUiLCJzIiwic2V0X2ZpbGxfc3R5bGUiLCJjb2xvciIsImdyYWRpZW50X3N0eWxlIiwibWFrZV9zdG9wcyIsImciLCJzdG9wcyIsIm9mZiIsImxpbmVhcl9ncmFkaWVudCIsIngwIiwieTAiLCJ4MSIsInkxIiwicmFkaWFsX2dyYWRpZW50IiwicjAiLCJyMSIsInBhdHRlcm4iLCJpbWciLCJwYXR0ZXJuX3N0eWxlIiwiY3N0X2xpbmVXaWR0aCIsImxpbmVfd2lkdGgiLCJzZXRfbGluZV93aWR0aCIsImNzdF9saW5lQ2FwIiwibGluZV9jYXAiLCJzZXRfbGluZV9jYXAiLCJjYXAiLCJjc3RfbGluZUpvaW4iLCJsaW5lX2pvaW4iLCJzZXRfbGluZV9qb2luIiwiam9pbiIsImNzdF9taXRlckxpbWl0IiwibWl0ZXJfbGltaXQiLCJzZXRfbWl0ZXJfbGltaXQiLCJsIiwibGluZV9kYXNoIiwic2V0X2xpbmVfZGFzaCIsImRzIiwiY3N0X2xpbmVEYXNoT2Zmc2V0IiwibGluZV9kYXNoX29mZnNldCIsInNldF9saW5lX2Rhc2hfb2Zmc2V0IiwiY3N0X3NoYWRvd0JsdXIiLCJzaGFkb3dfYmx1ciIsInNldF9zaGFkb3dfYmx1ciIsImNzdF9zaGFkb3dPZmZzZXRYIiwic2hhZG93X29mZnNldF94Iiwic2V0X3NoYWRvd19vZmZzZXRfeCIsImNzdF9zaGFkb3dPZmZzZXRZIiwic2hhZG93X29mZnNldF95Iiwic2V0X3NoYWRvd19vZmZzZXRfeSIsImNzdF9zaGFkb3dDb2xvciIsInNoYWRvd19jb2xvciIsInNldF9zaGFkb3dfY29sb3IiLCJjb2wiLCJjc3RfZm9udCIsImZvbnQiLCJzZXRfZm9udCIsImNzdF90ZXh0QWxpZ24iLCJ0ZXh0X2FsaWduIiwic2V0X3RleHRfYWxpZ24iLCJjc3RfdGV4dEJhc2VsaW5lIiwidGV4dF9iYXNlbGluZSIsInNldF90ZXh0X2Jhc2VsaW5lIiwiY3N0X2RpcmVjdGlvbiIsInRleHRfZGlyZWN0aW9uIiwic2V0X3RleHRfZGlyZWN0aW9uIiwiY2xlYXJfcmVjdCIsImZpbGxfcmVjdCIsInN0cm9rZV9yZWN0Iiwibm9uemVybyIsImZpbGwiLCJmaWxsX3J1bGUiLCJzdHJva2UiLCJjbGlwIiwiZHJhd19mb2N1c19pZl9uZWVkZWQiLCJzY3JvbGxfcGF0aF9pbnRvX3ZpZXciLCJpc19wb2ludF9pbl9maWxsIiwiaXNfcG9pbnRfaW5fc3Ryb2tlIiwiY2FsbF90ZXh0IiwibWF4X3dpZHRoIiwidHh0IiwiZmlsbF90ZXh0Iiwic3Ryb2tlX3RleHQiLCJ3aWR0aCIsImFjdHVhbF9ib3VuZGluZ19ib3hfbGVmdCIsImFjdHVhbF9ib3VuZGluZ19ib3hfcmlnaHQiLCJmb250X2JvdW5kaW5nX2JveF9hc2NlbnQiLCJmb250X2JvdW5kaW5nX2JveF9kZXNjZW50IiwiYWN0dWFsX2JvdW5kaW5nX2JveF9hc2NlbnQiLCJhY3R1YWxfYm91bmRpbmdfYm94X2Rlc2NlbnQiLCJlbV9oZWlnaHRfYXNjZW50IiwiZW1faGVpZ2h0X2Rlc2NlbnQiLCJoYW5naW5nX2Jhc2VsaW5lIiwiYWxwaGFiZXRpY19iYXNlbGluZSIsImlkZW9ncmFwaGljX2Jhc2VsaW5lIiwibWVhc3VyZV90ZXh0IiwiZHJhd19pbWFnZSIsImkiLCJkcmF3X2ltYWdlX2luX3JlY3QiLCJkcmF3X3N1Yl9pbWFnZV9pbl9yZWN0Iiwic3ciLCJzaCIsInNldHRpbmdzIiwiaW1hZ2VfZGF0YSIsImRhdGEiLCJjcmVhdGVfaW1hZ2VfZGF0YSIsImdldF9pbWFnZV9kYXRhIiwicHV0X2ltYWdlX2RhdGEiLCJwdXRfc3ViX2ltYWdlX2RhdGEiLCJjc3RfYW50aWFsaWFzIiwiY3N0X2RlcHRoIiwiY3N0X3Bvd2VyUHJlZmVyZW5jZSIsImNzdF9wcmVtdWx0aXBsaWVkQXBoYSIsImNzdF9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJjc3Rfc3RlbmNpbCIsImRlcHRoIiwic3RlbmNpbCIsImFudGlhbGlhcyIsInByZW11bHRpcGxpZWRfYWxwaGEiLCJwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciIsInBvd2VyX3ByZWZlcmVuY2UiLCJmYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmUiLCJ2MSIsIndlYmdsIiwiZHJhd2luZ19idWZmZXJfd2lkdGgiLCJkcmF3aW5nX2J1ZmZlcl9oZWlnaHQiLCJpc19jb250ZXh0X2xvc3QiLCJnZXRfc3VwcG9ydGVkX2V4dGVuc2lvbnMiLCJnZXRfZXh0ZW5zaW9uIiwiZXh0Iiwic2l6ZSIsIm5hbWUiLCJyYW5nZV9taW4iLCJyYW5nZV9tYXgiLCJwcmVjaXNpb24iLCJvZl9pbWFnZV9kYXRhIiwib2ZfaW1nX2VsIiwib2ZfY2FudmFzX2VsIiwib2ZfdmlkZW9fZWwiLCJvZl9vZmZzY3JlZW5fY2FudmFzIiwiYWN0aXZlX3RleHR1cmUiLCJ0ZXh0dXJlIiwiYXR0YWNoX3NoYWRlciIsInByb2dyYW0iLCJzaGFkZXIiLCJiZWdpbl9xdWVyeSIsInRhcmdldCIsInF1ZXJ5IiwiYmVnaW5fdHJhbnNmb3JtX2ZlZWRiYWNrIiwicHJpbWl0aXZlTW9kZSIsImJpbmRfYXR0cmliX2xvY2F0aW9uIiwiaW5kZXgiLCJiaW5kX2J1ZmZlciIsImJ1ZmZlciIsImJpbmRfYnVmZmVyX2Jhc2UiLCJiaW5kX2J1ZmZlcl9yYW5nZSIsIm9mZnNldCIsImJpbmRfZnJhbWVidWZmZXIiLCJmcmFtZWJ1ZmZlciIsImJpbmRfcmVuZGVyYnVmZmVyIiwicmVuZGVyYnVmZmVyIiwiYmluZF9zYW1wbGVyIiwidW5pdCIsInNhbXBsZXIiLCJiaW5kX3RleHR1cmUiLCJiaW5kX3RyYW5zZm9ybV9mZWVkYmFjayIsInRmIiwiYmluZF92ZXJ0ZXhfYXJyYXkiLCJhcnJheSIsImJsZW5kX2NvbG9yIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYmxlbmRfZXF1YXRpb24iLCJtb2RlIiwiYmxlbmRfZXF1YXRpb25fc2VwYXJhdGUiLCJtb2RlUkdCIiwibW9kZUFscGhhIiwiYmxlbmRfZnVuYyIsInNmYWN0b3IiLCJkZmFjdG9yIiwiYmxlbmRfZnVuY19zZXBhcmF0ZSIsInNyY1JHQiIsImRzdFJHQiIsInNyY0FscGhhIiwiZHN0QWxwaGEiLCJibGl0X2ZyYW1lYnVmZmVyIiwic3JjWDAiLCJzcmNZMCIsInNyY1gxIiwic3JjWTEiLCJkc3RYMCIsImRzdFkwIiwiZHN0WDEiLCJkc3RZMSIsIm1hc2siLCJidWZmZXJfZGF0YSIsInNyY0RhdGEiLCJ1c2FnZSIsImJ1ZmZlcl9kYXRhX3NpemUiLCJidWZmZXJfc3ViX2RhdGEiLCJkc3RCeXRlT2Zmc2V0IiwiY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzIiwiY2xlYXIiLCJjbGVhcl9idWZmZXJmaSIsImRyYXdidWZmZXIiLCJjbGVhcl9idWZmZXJmdiIsInZhbHVlcyIsImNsZWFyX2J1ZmZlcml2IiwiY2xlYXJfYnVmZmVydWl2IiwiY2xlYXJfY29sb3IiLCJjbGVhcl9kZXB0aCIsImNsZWFyX3N0ZW5jaWwiLCJjbGllbnRfd2FpdF9zeW5jIiwic3luYyIsImZsYWdzIiwidGltZW91dCIsImNvbG9yX21hc2siLCJjb21waWxlX3NoYWRlciIsImNvbXByZXNzZWRfdGV4X2ltYWdlMmQiLCJsZXZlbCIsImludGVybmFsZm9ybWF0IiwiaGVpZ2h0IiwiYm9yZGVyIiwiY29tcHJlc3NlZF90ZXhfaW1hZ2UyZF9zaXplIiwiaW1hZ2VTaXplIiwiY29tcHJlc3NlZF90ZXhfaW1hZ2UzZCIsImNvbXByZXNzZWRfdGV4X2ltYWdlM2Rfc2l6ZSIsImNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTJkIiwieG9mZnNldCIsInlvZmZzZXQiLCJmb3JtYXQiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZF9zaXoiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZCIsInpvZmZzZXQiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZF9zaXoiLCJjb3B5X2J1ZmZlcl9zdWJfZGF0YSIsInJlYWRUYXJnZXQiLCJ3cml0ZVRhcmdldCIsInJlYWRPZmZzZXQiLCJ3cml0ZU9mZnNldCIsImNvcHlfdGV4X2ltYWdlMmQiLCJjb3B5X3RleF9zdWJfaW1hZ2UyZCIsImNvcHlfdGV4X3N1Yl9pbWFnZTNkIiwiY3JlYXRlX2J1ZmZlciIsImNyZWF0ZV9mcmFtZWJ1ZmZlciIsImNyZWF0ZV9wcm9ncmFtIiwiY3JlYXRlX3F1ZXJ5IiwiY3JlYXRlX3JlbmRlcmJ1ZmZlciIsImNyZWF0ZV9zYW1wbGVyIiwiY3JlYXRlX3NoYWRlciIsImNyZWF0ZV90ZXh0dXJlIiwiY3JlYXRlX3RyYW5zZm9ybV9mZWVkYmFjayIsImNyZWF0ZV92ZXJ0ZXhfYXJyYXkiLCJjdWxsX2ZhY2UiLCJkZWxldGVfYnVmZmVyIiwiZGVsZXRlX2ZyYW1lYnVmZmVyIiwiZGVsZXRlX3Byb2dyYW0iLCJkZWxldGVfcXVlcnkiLCJkZWxldGVfcmVuZGVyYnVmZmVyIiwiZGVsZXRlX3NhbXBsZXIiLCJkZWxldGVfc2hhZGVyIiwiZGVsZXRlX3N5bmMiLCJkZWxldGVfdGV4dHVyZSIsImRlbGV0ZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJkZWxldGVfdmVydGV4X2FycmF5IiwidmVydGV4QXJyYXkiLCJkZXB0aF9mdW5jIiwiZnVuYyIsImRlcHRoX21hc2siLCJmbGFnIiwiZGV0YWNoX3NoYWRlciIsImRpc2FibGUiLCJkaXNhYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkiLCJkcmF3X2FycmF5cyIsImZpcnN0IiwiY291bnQiLCJkcmF3X2FycmF5c19pbnN0YW5jZWQiLCJpbnN0YW5jZUNvdW50IiwiZHJhd19idWZmZXJzIiwiYnVmZmVycyIsImRyYXdfZWxlbWVudHMiLCJkcmF3X2VsZW1lbnRzX2luc3RhbmNlZCIsImRyYXdfcmFuZ2VfZWxlbWVudHMiLCJlbmQiLCJlbmFibGUiLCJlbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSIsImVuZF9xdWVyeSIsImVuZF90cmFuc2Zvcm1fZmVlZGJhY2siLCJmZW5jZV9zeW5jIiwiY29uZGl0aW9uIiwiZmluaXNoIiwiZmx1c2giLCJmcmFtZWJ1ZmZlcl9yZW5kZXJidWZmZXIiLCJhdHRhY2htZW50IiwicmVuZGVyYnVmZmVydGFyZ2V0IiwiZnJhbWVidWZmZXJfdGV4dHVyZTJkIiwidGV4dGFyZ2V0IiwiZnJhbWVidWZmZXJfdGV4dHVyZV9sYXllciIsImxheWVyIiwiZnJvbnRfZmFjZSIsImdlbmVyYXRlX21pcG1hcCIsImdldF9hY3RpdmVfYXR0cmliIiwiZ2V0X2FjdGl2ZV91bmlmb3JtIiwiZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX25hbWUiLCJ1bmlmb3JtQmxvY2tJbmRleCIsImdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19wYXJhbSIsInBuYW1lIiwiZ2V0X2FjdGl2ZV91bmlmb3JtcyIsInVuaWZvcm1JbmRpY2VzIiwiZ2V0X2F0dGFjaGVkX3NoYWRlcnMiLCJnZXRfYXR0cmliX2xvY2F0aW9uIiwiZ2V0X2J1ZmZlcl9wYXJhbWV0ZXIiLCJnZXRfYnVmZmVyX3N1Yl9kYXRhIiwic3JjQnl0ZU9mZnNldCIsImRzdEJ1ZmZlciIsImdldF9lcnJvciIsImdldF9mcmFnX2RhdGFfbG9jYXRpb24iLCJnZXRfZnJhbWVidWZmZXJfYXR0YWNobWVudF9wYXIiLCJnZXRfaW5kZXhlZF9wYXJhbWV0ZXIiLCJnZXRfaW50ZXJuYWxmb3JtYXRfcGFyYW1ldGVyIiwiZ2V0X3BhcmFtZXRlciIsImdldF9wcm9ncmFtX2luZm9fbG9nIiwiZ2V0X3Byb2dyYW1fcGFyYW1ldGVyIiwiZ2V0X3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtZXRlciIsImdldF9yZW5kZXJidWZmZXJfcGFyYW1ldGVyIiwiZ2V0X3NhbXBsZXJfcGFyYW1ldGVyIiwiZ2V0X3NoYWRlcl9pbmZvX2xvZyIsImdldF9zaGFkZXJfcGFyYW1ldGVyIiwiZ2V0X3NoYWRlcl9wcmVjaXNpb25fZm9ybWF0Iiwic2hhZGVydHlwZSIsInByZWNpc2lvbnR5cGUiLCJnZXRfc2hhZGVyX3NvdXJjZSIsImdldF9zeW5jX3BhcmFtZXRlciIsImdldF90ZXhfcGFyYW1ldGVyIiwiZ2V0X3RyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5nIiwiZ2V0X3VuaWZvcm0iLCJsb2NhdGlvbiIsImdldF91bmlmb3JtX2Jsb2NrX2luZGV4IiwidW5pZm9ybUJsb2NrTmFtZSIsImdldF91bmlmb3JtX2luZGljZXMiLCJ1bmlmb3JtTmFtZXMiLCJnZXRfdW5pZm9ybV9sb2NhdGlvbiIsImdldF92ZXJ0ZXhfYXR0cmliIiwiZ2V0X3ZlcnRleF9hdHRyaWJfb2Zmc2V0IiwiaGludCIsImludmFsaWRhdGVfZnJhbWVidWZmZXIiLCJhdHRhY2htZW50cyIsImludmFsaWRhdGVfc3ViX2ZyYW1lYnVmZmVyIiwiaXNfYnVmZmVyIiwiaXNfZW5hYmxlZCIsImlzX2ZyYW1lYnVmZmVyIiwiaXNfcHJvZ3JhbSIsImlzX3F1ZXJ5IiwiaXNfcmVuZGVyYnVmZmVyIiwiaXNfc2FtcGxlciIsImlzX3NoYWRlciIsImlzX3RleHR1cmUiLCJpc190cmFuc2Zvcm1fZmVlZGJhY2siLCJpc192ZXJ0ZXhfYXJyYXkiLCJsaW5rX3Byb2dyYW0iLCJwYXVzZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJwaXhlbF9zdG9yZWkiLCJwb2x5Z29uX29mZnNldCIsImZhY3RvciIsInVuaXRzIiwicmVhZF9idWZmZXIiLCJzcmMiLCJyZWFkX3BpeGVsc190b19waXhlbF9wYWNrIiwicmVhZF9waXhlbHMiLCJkc3REYXRhIiwicmVuZGVyYnVmZmVyX3N0b3JhZ2UiLCJyZW5kZXJidWZmZXJfc3RvcmFnZV9tdWx0aXNhbXAiLCJzYW1wbGVzIiwicmVzdW1lX3RyYW5zZm9ybV9mZWVkYmFjayIsInNhbXBsZV9jb3ZlcmFnZSIsInZhbHVlIiwiaW52ZXJ0Iiwic2FtcGxlcl9wYXJhbWV0ZXJmIiwic2FtcGxlcl9wYXJhbWV0ZXJpIiwic2Npc3NvciIsInNoYWRlcl9zb3VyY2UiLCJzb3VyY2UiLCJzdGVuY2lsX2Z1bmMiLCJyZWYiLCJzdGVuY2lsX2Z1bmNfc2VwYXJhdGUiLCJmYWNlIiwic3RlbmNpbF9tYXNrIiwic3RlbmNpbF9tYXNrX3NlcGFyYXRlIiwic3RlbmNpbF9vcCIsImZhaWwiLCJ6ZmFpbCIsInpwYXNzIiwic3RlbmNpbF9vcF9zZXBhcmF0ZSIsInRleF9pbWFnZTJkIiwic3JjT2Zmc2V0IiwidGV4X2ltYWdlMmRfb2Zfc291cmNlIiwidGV4X2ltYWdlMmRfb2ZfcGl4ZWxfdW5wYWNrIiwicGJvT2Zmc2V0IiwidGV4X2ltYWdlM2QiLCJ0ZXhfaW1hZ2UzZF9vZl9zb3VyY2UiLCJ0ZXhfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2siLCJ0ZXhfcGFyYW1ldGVyZiIsInRleF9wYXJhbWV0ZXJpIiwidGV4X3N0b3JhZ2UyZCIsImxldmVscyIsInRleF9zdG9yYWdlM2QiLCJ0ZXhfc3ViX2ltYWdlMmQiLCJ0ZXhfc3ViX2ltYWdlMmRfb2Zfc291cmNlIiwidGV4X3N1Yl9pbWFnZTJkX29mX3BpeGVsX3VucGFjIiwidGV4X3N1Yl9pbWFnZTNkIiwidGV4X3N1Yl9pbWFnZTNkX29mX3NvdXJjZSIsInRleF9zdWJfaW1hZ2UzZF9vZl9waXhlbF91bnBhYyIsInRyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5ncyIsInZhcnlpbmdzIiwiYnVmZmVyTW9kZSIsInVuaWZvcm0xZiIsInVuaWZvcm0xZnYiLCJ1bmlmb3JtMWkiLCJ1bmlmb3JtMWl2IiwidW5pZm9ybTF1aSIsInYwIiwidW5pZm9ybTF1aXYiLCJ1bmlmb3JtMmYiLCJ1bmlmb3JtMmZ2IiwidW5pZm9ybTJpIiwidW5pZm9ybTJpdiIsInVuaWZvcm0ydWkiLCJ1bmlmb3JtMnVpdiIsInVuaWZvcm0zZiIsInVuaWZvcm0zZnYiLCJ1bmlmb3JtM2kiLCJ1bmlmb3JtM2l2IiwidW5pZm9ybTN1aSIsInYyIiwidW5pZm9ybTN1aXYiLCJ1bmlmb3JtNGYiLCJ1bmlmb3JtNGZ2IiwidW5pZm9ybTRpIiwidW5pZm9ybTRpdiIsInVuaWZvcm00dWkiLCJ2MyIsInVuaWZvcm00dWl2IiwidW5pZm9ybV9ibG9ja19iaW5kaW5nIiwidW5pZm9ybUJsb2NrQmluZGluZyIsInVuaWZvcm1fbWF0cml4MmZ2IiwidHJhbnNwb3NlIiwidW5pZm9ybV9tYXRyaXgyeDNmdiIsInVuaWZvcm1fbWF0cml4Mng0ZnYiLCJ1bmlmb3JtX21hdHJpeDNmdiIsInVuaWZvcm1fbWF0cml4M3gyZnYiLCJ1bmlmb3JtX21hdHJpeDN4NGZ2IiwidW5pZm9ybV9tYXRyaXg0ZnYiLCJ1bmlmb3JtX21hdHJpeDR4MmZ2IiwidW5pZm9ybV9tYXRyaXg0eDNmdiIsInVzZV9wcm9ncmFtIiwidmFsaWRhdGVfcHJvZ3JhbSIsInZlcnRleF9hdHRyaWIxZiIsInZlcnRleF9hdHRyaWIxZnYiLCJ2ZXJ0ZXhfYXR0cmliMmYiLCJ2ZXJ0ZXhfYXR0cmliMmZ2IiwidmVydGV4X2F0dHJpYjNmIiwidmVydGV4X2F0dHJpYjNmdiIsInZlcnRleF9hdHRyaWI0ZiIsInZlcnRleF9hdHRyaWI0ZnYiLCJ2ZXJ0ZXhfYXR0cmliX2Rpdmlzb3IiLCJkaXZpc29yIiwidmVydGV4X2F0dHJpYl9pNGkiLCJ2ZXJ0ZXhfYXR0cmliX2k0aXYiLCJ2ZXJ0ZXhfYXR0cmliX2k0dWkiLCJ2ZXJ0ZXhfYXR0cmliX2k0dWl2IiwidmVydGV4X2F0dHJpYl9pcG9pbnRlciIsInN0cmlkZSIsInZlcnRleF9hdHRyaWJfcG9pbnRlciIsIm5vcm1hbGl6ZWQiLCJ2aWV3cG9ydCIsIndhaXRfc3luYyIsImdldF9pbnQiLCJnbDFjdHgiLCJkZXB0aF9idWZmZXJfYml0Iiwic3RlbmNpbF9idWZmZXJfYml0IiwiY29sb3JfYnVmZmVyX2JpdCIsInBvaW50cyIsImxpbmVzIiwibGluZV9sb29wIiwibGluZV9zdHJpcCIsInRyaWFuZ2xlcyIsInRyaWFuZ2xlX3N0cmlwIiwidHJpYW5nbGVfZmFuIiwiemVybyIsIm9uZSIsInNyY19jb2xvciIsIm9uZV9taW51c19zcmNfY29sb3IiLCJzcmNfYWxwaGEiLCJvbmVfbWludXNfc3JjX2FscGhhIiwiZHN0X2FscGhhIiwib25lX21pbnVzX2RzdF9hbHBoYSIsImRzdF9jb2xvciIsIm9uZV9taW51c19kc3RfY29sb3IiLCJzcmNfYWxwaGFfc2F0dXJhdGUiLCJmdW5jX2FkZCIsImJsZW5kX2VxdWF0aW9uX3JnYiIsImJsZW5kX2VxdWF0aW9uX2FscGhhIiwiZnVuY19zdWJ0cmFjdCIsImZ1bmNfcmV2ZXJzZV9zdWJ0cmFjdCIsImJsZW5kX2RzdF9yZ2IiLCJibGVuZF9zcmNfcmdiIiwiYmxlbmRfZHN0X2FscGhhIiwiYmxlbmRfc3JjX2FscGhhIiwiY29uc3RhbnRfY29sb3IiLCJvbmVfbWludXNfY29uc3RhbnRfY29sb3IiLCJjb25zdGFudF9hbHBoYSIsIm9uZV9taW51c19jb25zdGFudF9hbHBoYSIsImFycmF5X2J1ZmZlciIsImVsZW1lbnRfYXJyYXlfYnVmZmVyIiwiYXJyYXlfYnVmZmVyX2JpbmRpbmciLCJlbGVtZW50X2FycmF5X2J1ZmZlcl9iaW5kaW5nIiwic3RyZWFtX2RyYXciLCJzdGF0aWNfZHJhdyIsImR5bmFtaWNfZHJhdyIsImJ1ZmZlcl9zaXplIiwiYnVmZmVyX3VzYWdlIiwiY3VycmVudF92ZXJ0ZXhfYXR0cmliIiwiZnJvbnQiLCJiYWNrIiwiZnJvbnRfYW5kX2JhY2siLCJibGVuZCIsImRpdGhlciIsInN0ZW5jaWxfdGVzdCIsImRlcHRoX3Rlc3QiLCJzY2lzc29yX3Rlc3QiLCJwb2x5Z29uX29mZnNldF9maWxsIiwic2FtcGxlX2FscGhhX3RvX2NvdmVyYWdlIiwibm9fZXJyb3IiLCJpbnZhbGlkX2VudW0iLCJpbnZhbGlkX3ZhbHVlIiwiaW52YWxpZF9vcGVyYXRpb24iLCJvdXRfb2ZfbWVtb3J5IiwiY2N3IiwiYWxpYXNlZF9wb2ludF9zaXplX3JhbmdlIiwiYWxpYXNlZF9saW5lX3dpZHRoX3JhbmdlIiwiY3VsbF9mYWNlX21vZGUiLCJkZXB0aF9yYW5nZSIsImRlcHRoX3dyaXRlbWFzayIsImRlcHRoX2NsZWFyX3ZhbHVlIiwic3RlbmNpbF9jbGVhcl92YWx1ZSIsInN0ZW5jaWxfZmFpbCIsInN0ZW5jaWxfcGFzc19kZXB0aF9mYWlsIiwic3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MiLCJzdGVuY2lsX3JlZiIsInN0ZW5jaWxfdmFsdWVfbWFzayIsInN0ZW5jaWxfd3JpdGVtYXNrIiwic3RlbmNpbF9iYWNrX2Z1bmMiLCJzdGVuY2lsX2JhY2tfZmFpbCIsInN0ZW5jaWxfYmFja19wYXNzX2RlcHRoX2ZhaWwiLCJzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9wYXNzIiwic3RlbmNpbF9iYWNrX3JlZiIsInN0ZW5jaWxfYmFja192YWx1ZV9tYXNrIiwic3RlbmNpbF9iYWNrX3dyaXRlbWFzayIsInNjaXNzb3JfYm94IiwiY29sb3JfY2xlYXJfdmFsdWUiLCJjb2xvcl93cml0ZW1hc2siLCJ1bnBhY2tfYWxpZ25tZW50IiwicGFja19hbGlnbm1lbnQiLCJtYXhfdGV4dHVyZV9zaXplIiwibWF4X3ZpZXdwb3J0X2RpbXMiLCJzdWJwaXhlbF9iaXRzIiwicmVkX2JpdHMiLCJncmVlbl9iaXRzIiwiYmx1ZV9iaXRzIiwiYWxwaGFfYml0cyIsImRlcHRoX2JpdHMiLCJzdGVuY2lsX2JpdHMiLCJwb2x5Z29uX29mZnNldF91bml0cyIsInBvbHlnb25fb2Zmc2V0X2ZhY3RvciIsInRleHR1cmVfYmluZGluZ18yZCIsInNhbXBsZV9idWZmZXJzIiwic2FtcGxlX2NvdmVyYWdlX3ZhbHVlIiwic2FtcGxlX2NvdmVyYWdlX2ludmVydCIsImNvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRzIiwiZG9udF9jYXJlIiwiZmFzdGVzdCIsIm5pY2VzdCIsImdlbmVyYXRlX21pcG1hcF9oaW50IiwiYnl0ZSIsInVuc2lnbmVkX2J5dGUiLCJzaG9ydCIsInVuc2lnbmVkX3Nob3J0IiwiaW50IiwidW5zaWduZWRfaW50IiwiZmxvYXQiLCJkZXB0aF9jb21wb25lbnQiLCJyZ2IiLCJyZ2JhIiwibHVtaW5hbmNlIiwibHVtaW5hbmNlX2FscGhhIiwidW5zaWduZWRfc2hvcnRfNF80XzRfNCIsInVuc2lnbmVkX3Nob3J0XzVfNV81XzEiLCJ1bnNpZ25lZF9zaG9ydF81XzZfNSIsImZyYWdtZW50X3NoYWRlciIsInZlcnRleF9zaGFkZXIiLCJtYXhfdmVydGV4X2F0dHJpYnMiLCJtYXhfdmVydGV4X3VuaWZvcm1fdmVjdG9ycyIsIm1heF92YXJ5aW5nX3ZlY3RvcnMiLCJtYXhfY29tYmluZWRfdGV4dHVyZV9pbWFnZV91bmkiLCJtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2VfdW5pdHMiLCJtYXhfdGV4dHVyZV9pbWFnZV91bml0cyIsIm1heF9mcmFnbWVudF91bmlmb3JtX3ZlY3RvcnMiLCJzaGFkZXJfdHlwZSIsImRlbGV0ZV9zdGF0dXMiLCJsaW5rX3N0YXR1cyIsInZhbGlkYXRlX3N0YXR1cyIsImF0dGFjaGVkX3NoYWRlcnMiLCJhY3RpdmVfdW5pZm9ybXMiLCJhY3RpdmVfYXR0cmlidXRlcyIsInNoYWRpbmdfbGFuZ3VhZ2VfdmVyc2lvbiIsImN1cnJlbnRfcHJvZ3JhbSIsIm5ldmVyIiwibGVzcyIsImVxdWFsIiwibGVxdWFsIiwiZ3JlYXRlciIsIm5vdGVxdWFsIiwiZ2VxdWFsIiwiYWx3YXlzIiwia2VlcCIsInJlcGxhY2UiLCJpbmNyIiwiZGVjciIsImluY3Jfd3JhcCIsImRlY3Jfd3JhcCIsInZlbmRvciIsInJlbmRlcmVyIiwidmVyc2lvbiIsIm5lYXJlc3QiLCJsaW5lYXIiLCJuZWFyZXN0X21pcG1hcF9uZWFyZXN0IiwibGluZWFyX21pcG1hcF9uZWFyZXN0IiwibmVhcmVzdF9taXBtYXBfbGluZWFyIiwibGluZWFyX21pcG1hcF9saW5lYXIiLCJ0ZXh0dXJlX21hZ19maWx0ZXIiLCJ0ZXh0dXJlX21pbl9maWx0ZXIiLCJ0ZXh0dXJlX3dyYXBfcyIsInRleHR1cmVfd3JhcF90IiwidGV4dHVyZV8yZCIsInRleHR1cmVfY3ViZV9tYXAiLCJ0ZXh0dXJlX2JpbmRpbmdfY3ViZV9tYXAiLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3giLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3giLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3kiLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3kiLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3oiLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3oiLCJtYXhfY3ViZV9tYXBfdGV4dHVyZV9zaXplIiwidGV4dHVyZTAiLCJ0ZXh0dXJlMSIsInRleHR1cmUyIiwidGV4dHVyZTMiLCJ0ZXh0dXJlNCIsInRleHR1cmU1IiwidGV4dHVyZTYiLCJ0ZXh0dXJlNyIsInRleHR1cmU4IiwidGV4dHVyZTkiLCJ0ZXh0dXJlMTAiLCJ0ZXh0dXJlMTEiLCJ0ZXh0dXJlMTIiLCJ0ZXh0dXJlMTMiLCJ0ZXh0dXJlMTQiLCJ0ZXh0dXJlMTUiLCJ0ZXh0dXJlMTYiLCJ0ZXh0dXJlMTciLCJ0ZXh0dXJlMTgiLCJ0ZXh0dXJlMTkiLCJ0ZXh0dXJlMjAiLCJ0ZXh0dXJlMjEiLCJ0ZXh0dXJlMjIiLCJ0ZXh0dXJlMjMiLCJ0ZXh0dXJlMjQiLCJ0ZXh0dXJlMjUiLCJ0ZXh0dXJlMjYiLCJ0ZXh0dXJlMjciLCJ0ZXh0dXJlMjgiLCJ0ZXh0dXJlMjkiLCJ0ZXh0dXJlMzAiLCJ0ZXh0dXJlMzEiLCJyZXBlYXQiLCJjbGFtcF90b19lZGdlIiwibWlycm9yZWRfcmVwZWF0IiwiZmxvYXRfdmVjMiIsImZsb2F0X3ZlYzMiLCJmbG9hdF92ZWM0IiwiaW50X3ZlYzIiLCJpbnRfdmVjMyIsImludF92ZWM0IiwiYm9vbCIsImJvb2xfdmVjMiIsImJvb2xfdmVjMyIsImJvb2xfdmVjNCIsImZsb2F0X21hdDIiLCJmbG9hdF9tYXQzIiwiZmxvYXRfbWF0NCIsInNhbXBsZXJfMmQiLCJzYW1wbGVyX2N1YmUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2VuYWJsZWQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3NpemUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3N0cmlkZSIsInZlcnRleF9hdHRyaWJfYXJyYXlfdHlwZSIsInZlcnRleF9hdHRyaWJfYXJyYXlfbm9ybWFsaXplZCIsInZlcnRleF9hdHRyaWJfYXJyYXlfcG9pbnRlciIsInZlcnRleF9hdHRyaWJfYXJyYXlfYnVmZmVyX2JpbiIsImltcGxlbWVudGF0aW9uX2NvbG9yX3JlYWRfdHlwZSIsImltcGxlbWVudGF0aW9uX2NvbG9yX3JlYWRfZm9ybSIsImNvbXBpbGVfc3RhdHVzIiwibG93X2Zsb2F0IiwibWVkaXVtX2Zsb2F0IiwiaGlnaF9mbG9hdCIsImxvd19pbnQiLCJtZWRpdW1faW50IiwiaGlnaF9pbnQiLCJyZ2JhNCIsInJnYjVfYTEiLCJyZ2I1NjUiLCJkZXB0aF9jb21wb25lbnQxNiIsInN0ZW5jaWxfaW5kZXg4IiwiZGVwdGhfc3RlbmNpbCIsInJlbmRlcmJ1ZmZlcl93aWR0aCIsInJlbmRlcmJ1ZmZlcl9oZWlnaHQiLCJyZW5kZXJidWZmZXJfaW50ZXJuYWxfZm9ybWF0IiwicmVuZGVyYnVmZmVyX3JlZF9zaXplIiwicmVuZGVyYnVmZmVyX2dyZWVuX3NpemUiLCJyZW5kZXJidWZmZXJfYmx1ZV9zaXplIiwicmVuZGVyYnVmZmVyX2FscGhhX3NpemUiLCJyZW5kZXJidWZmZXJfZGVwdGhfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9zdGVuY2lsX3NpemUiLCJmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdF8iLCJmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmUiLCJjb2xvcl9hdHRhY2htZW50MCIsImRlcHRoX2F0dGFjaG1lbnQiLCJzdGVuY2lsX2F0dGFjaG1lbnQiLCJkZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnQiLCJub25lIiwiZnJhbWVidWZmZXJfY29tcGxldGUiLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2F0dGFjaG0iLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX21pc3NpbmciLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2RpbWVuc2kiLCJmcmFtZWJ1ZmZlcl91bnN1cHBvcnRlZCIsImZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZW5kZXJidWZmZXJfYmluZGluZyIsIm1heF9yZW5kZXJidWZmZXJfc2l6ZSIsImludmFsaWRfZnJhbWVidWZmZXJfb3BlcmF0aW9uIiwidW5wYWNrX2ZsaXBfeV93ZWJnbCIsInVucGFja19wcmVtdWx0aXBseV9hbHBoYV93ZWJnbCIsImNvbnRleHRfbG9zdF93ZWJnbCIsInVucGFja19jb2xvcnNwYWNlX2NvbnZlcnNpb25fdyIsImJyb3dzZXJfZGVmYXVsdF93ZWJnbCIsImdsMmN0eCIsInVucGFja19yb3dfbGVuZ3RoIiwidW5wYWNrX3NraXBfcm93cyIsInVucGFja19za2lwX3BpeGVscyIsInBhY2tfcm93X2xlbmd0aCIsInBhY2tfc2tpcF9yb3dzIiwicGFja19za2lwX3BpeGVscyIsInJnYjgiLCJyZ2JhOCIsInJnYjEwX2EyIiwidGV4dHVyZV9iaW5kaW5nXzNkIiwidW5wYWNrX3NraXBfaW1hZ2VzIiwidW5wYWNrX2ltYWdlX2hlaWdodCIsInRleHR1cmVfM2QiLCJ0ZXh0dXJlX3dyYXBfciIsIm1heF8zZF90ZXh0dXJlX3NpemUiLCJ1bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYiLCJtYXhfZWxlbWVudHNfdmVydGljZXMiLCJtYXhfZWxlbWVudHNfaW5kaWNlcyIsInRleHR1cmVfbWluX2xvZCIsInRleHR1cmVfbWF4X2xvZCIsInRleHR1cmVfYmFzZV9sZXZlbCIsInRleHR1cmVfbWF4X2xldmVsIiwibWluIiwibWF4IiwiZGVwdGhfY29tcG9uZW50MjQiLCJtYXhfdGV4dHVyZV9sb2RfYmlhcyIsInRleHR1cmVfY29tcGFyZV9tb2RlIiwidGV4dHVyZV9jb21wYXJlX2Z1bmMiLCJjdXJyZW50X3F1ZXJ5IiwicXVlcnlfcmVzdWx0IiwicXVlcnlfcmVzdWx0X2F2YWlsYWJsZSIsInN0cmVhbV9yZWFkIiwic3RyZWFtX2NvcHkiLCJzdGF0aWNfcmVhZCIsInN0YXRpY19jb3B5IiwiZHluYW1pY19yZWFkIiwiZHluYW1pY19jb3B5IiwibWF4X2RyYXdfYnVmZmVycyIsImRyYXdfYnVmZmVyMCIsImRyYXdfYnVmZmVyMSIsImRyYXdfYnVmZmVyMiIsImRyYXdfYnVmZmVyMyIsImRyYXdfYnVmZmVyNCIsImRyYXdfYnVmZmVyNSIsImRyYXdfYnVmZmVyNiIsImRyYXdfYnVmZmVyNyIsImRyYXdfYnVmZmVyOCIsImRyYXdfYnVmZmVyOSIsImRyYXdfYnVmZmVyMTAiLCJkcmF3X2J1ZmZlcjExIiwiZHJhd19idWZmZXIxMiIsImRyYXdfYnVmZmVyMTMiLCJkcmF3X2J1ZmZlcjE0IiwiZHJhd19idWZmZXIxNSIsIm1heF9mcmFnbWVudF91bmlmb3JtX2NvbXBvbmVudCIsIm1heF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzIiwic2FtcGxlcl8zZCIsInNhbXBsZXJfMmRfc2hhZG93IiwiZnJhZ21lbnRfc2hhZGVyX2Rlcml2YXRpdmVfaGluIiwicGl4ZWxfcGFja19idWZmZXIiLCJwaXhlbF91bnBhY2tfYnVmZmVyIiwicGl4ZWxfcGFja19idWZmZXJfYmluZGluZyIsInBpeGVsX3VucGFja19idWZmZXJfYmluZGluZyIsImZsb2F0X21hdDJ4MyIsImZsb2F0X21hdDJ4NCIsImZsb2F0X21hdDN4MiIsImZsb2F0X21hdDN4NCIsImZsb2F0X21hdDR4MiIsImZsb2F0X21hdDR4MyIsInNyZ2IiLCJzcmdiOCIsInNyZ2I4X2FscGhhOCIsImNvbXBhcmVfcmVmX3RvX3RleHR1cmUiLCJyZ2JhMzJmIiwicmdiMzJmIiwicmdiYTE2ZiIsInJnYjE2ZiIsInZlcnRleF9hdHRyaWJfYXJyYXlfaW50ZWdlciIsIm1heF9hcnJheV90ZXh0dXJlX2xheWVycyIsIm1pbl9wcm9ncmFtX3RleGVsX29mZnNldCIsIm1heF9wcm9ncmFtX3RleGVsX29mZnNldCIsIm1heF92YXJ5aW5nX2NvbXBvbmVudHMiLCJ0ZXh0dXJlXzJkX2FycmF5IiwidGV4dHVyZV9iaW5kaW5nXzJkX2FycmF5IiwicjExZl9nMTFmX2IxMGYiLCJ1bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2IiwicmdiOV9lNSIsInVuc2lnbmVkX2ludF81XzlfOV85X3JldiIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfbW9kZSIsIm1heF90cmFuc2Zvcm1fZmVlZGJhY2tfc2VwYXJhdCIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc3RhciIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc2l6ZSIsInRyYW5zZm9ybV9mZWVkYmFja19wcmltaXRpdmVzXyIsInJhc3Rlcml6ZXJfZGlzY2FyZCIsIm1heF90cmFuc2Zvcm1fZmVlZGJhY2tfaW50ZXJsZSIsImludGVybGVhdmVkX2F0dHJpYnMiLCJzZXBhcmF0ZV9hdHRyaWJzIiwidHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlciIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfYmluZCIsInJnYmEzMnVpIiwicmdiMzJ1aSIsInJnYmExNnVpIiwicmdiMTZ1aSIsInJnYmE4dWkiLCJyZ2I4dWkiLCJyZ2JhMzJpIiwicmdiMzJpIiwicmdiYTE2aSIsInJnYjE2aSIsInJnYmE4aSIsInJnYjhpIiwicmVkX2ludGVnZXIiLCJyZ2JfaW50ZWdlciIsInJnYmFfaW50ZWdlciIsInNhbXBsZXJfMmRfYXJyYXkiLCJzYW1wbGVyXzJkX2FycmF5X3NoYWRvdyIsInNhbXBsZXJfY3ViZV9zaGFkb3ciLCJ1bnNpZ25lZF9pbnRfdmVjMiIsInVuc2lnbmVkX2ludF92ZWMzIiwidW5zaWduZWRfaW50X3ZlYzQiLCJpbnRfc2FtcGxlcl8yZCIsImludF9zYW1wbGVyXzNkIiwiaW50X3NhbXBsZXJfY3ViZSIsImludF9zYW1wbGVyXzJkX2FycmF5IiwidW5zaWduZWRfaW50X3NhbXBsZXJfMmQiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl8zZCIsInVuc2lnbmVkX2ludF9zYW1wbGVyX2N1YmUiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl8yZF9hcnJheSIsImRlcHRoX2NvbXBvbmVudDMyZiIsImRlcHRoMzJmX3N0ZW5jaWw4IiwiZmxvYXRfMzJfdW5zaWduZWRfaW50XzI0XzhfcmV2IiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb2xvcl9lIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb21wb25lIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9yZWRfc2l6IiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9ncmVlbl9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9ibHVlX3NpIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9hbHBoYV9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9kZXB0aF9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9zdGVuY2lsIiwiZnJhbWVidWZmZXJfZGVmYXVsdCIsInVuc2lnbmVkX2ludF8yNF84IiwiZGVwdGgyNF9zdGVuY2lsOCIsInVuc2lnbmVkX25vcm1hbGl6ZWQiLCJkcmF3X2ZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZWFkX2ZyYW1lYnVmZmVyIiwiZHJhd19mcmFtZWJ1ZmZlciIsInJlYWRfZnJhbWVidWZmZXJfYmluZGluZyIsInJlbmRlcmJ1ZmZlcl9zYW1wbGVzIiwibWF4X2NvbG9yX2F0dGFjaG1lbnRzIiwiY29sb3JfYXR0YWNobWVudDEiLCJjb2xvcl9hdHRhY2htZW50MiIsImNvbG9yX2F0dGFjaG1lbnQzIiwiY29sb3JfYXR0YWNobWVudDQiLCJjb2xvcl9hdHRhY2htZW50NSIsImNvbG9yX2F0dGFjaG1lbnQ2IiwiY29sb3JfYXR0YWNobWVudDciLCJjb2xvcl9hdHRhY2htZW50OCIsImNvbG9yX2F0dGFjaG1lbnQ5IiwiY29sb3JfYXR0YWNobWVudDEwIiwiY29sb3JfYXR0YWNobWVudDExIiwiY29sb3JfYXR0YWNobWVudDEyIiwiY29sb3JfYXR0YWNobWVudDEzIiwiY29sb3JfYXR0YWNobWVudDE0IiwiY29sb3JfYXR0YWNobWVudDE1IiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9tdWx0aXNhIiwibWF4X3NhbXBsZXMiLCJoYWxmX2Zsb2F0IiwicmciLCJyZ19pbnRlZ2VyIiwicjgiLCJyZzgiLCJyMTZmIiwicjMyZiIsInJnMTZmIiwicmczMmYiLCJyOGkiLCJyOHVpIiwicjE2aSIsInIxNnVpIiwicjMyaSIsInIzMnVpIiwicmc4aSIsInJnOHVpIiwicmcxNmkiLCJyZzE2dWkiLCJyZzMyaSIsInJnMzJ1aSIsInZlcnRleF9hcnJheV9iaW5kaW5nIiwicjhfc25vcm0iLCJyZzhfc25vcm0iLCJyZ2I4X3Nub3JtIiwicmdiYThfc25vcm0iLCJzaWduZWRfbm9ybWFsaXplZCIsImNvcHlfcmVhZF9idWZmZXIiLCJjb3B5X3dyaXRlX2J1ZmZlciIsImNvcHlfcmVhZF9idWZmZXJfYmluZGluZyIsImNvcHlfd3JpdGVfYnVmZmVyX2JpbmRpbmciLCJ1bmlmb3JtX2J1ZmZlciIsInVuaWZvcm1fYnVmZmVyX2JpbmRpbmciLCJ1bmlmb3JtX2J1ZmZlcl9zdGFydCIsInVuaWZvcm1fYnVmZmVyX3NpemUiLCJtYXhfdmVydGV4X3VuaWZvcm1fYmxvY2tzIiwibWF4X2ZyYWdtZW50X3VuaWZvcm1fYmxvY2tzIiwibWF4X2NvbWJpbmVkX3VuaWZvcm1fYmxvY2tzIiwibWF4X3VuaWZvcm1fYnVmZmVyX2JpbmRpbmdzIiwibWF4X3VuaWZvcm1fYmxvY2tfc2l6ZSIsIm1heF9jb21iaW5lZF92ZXJ0ZXhfdW5pZm9ybV9jbyIsIm1heF9jb21iaW5lZF9mcmFnbWVudF91bmlmb3JtXyIsInVuaWZvcm1fYnVmZmVyX29mZnNldF9hbGlnbm1lbiIsImFjdGl2ZV91bmlmb3JtX2Jsb2NrcyIsInVuaWZvcm1fdHlwZSIsInVuaWZvcm1fc2l6ZSIsInVuaWZvcm1fYmxvY2tfaW5kZXgiLCJ1bmlmb3JtX29mZnNldCIsInVuaWZvcm1fYXJyYXlfc3RyaWRlIiwidW5pZm9ybV9tYXRyaXhfc3RyaWRlIiwidW5pZm9ybV9pc19yb3dfbWFqb3IiLCJ1bmlmb3JtX2Jsb2NrX2RhdGFfc2l6ZSIsInVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1zIiwidW5pZm9ybV9ibG9ja19hY3RpdmVfdW5pZm9ybV9pIiwidW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X3ZlIiwidW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X2ZyIiwiaW52YWxpZF9pbmRleCIsIm1heF92ZXJ0ZXhfb3V0cHV0X2NvbXBvbmVudHMiLCJtYXhfZnJhZ21lbnRfaW5wdXRfY29tcG9uZW50cyIsIm1heF9zZXJ2ZXJfd2FpdF90aW1lb3V0Iiwib2JqZWN0X3R5cGUiLCJzeW5jX2NvbmRpdGlvbiIsInN5bmNfc3RhdHVzIiwic3luY19mbGFncyIsInN5bmNfZmVuY2UiLCJzeW5jX2dwdV9jb21tYW5kc19jb21wbGV0ZSIsInVuc2lnbmFsZWQiLCJzaWduYWxlZCIsImFscmVhZHlfc2lnbmFsZWQiLCJ0aW1lb3V0X2V4cGlyZWQiLCJjb25kaXRpb25fc2F0aXNmaWVkIiwid2FpdF9mYWlsZWQiLCJzeW5jX2ZsdXNoX2NvbW1hbmRzX2JpdCIsInZlcnRleF9hdHRyaWJfYXJyYXlfZGl2aXNvciIsImFueV9zYW1wbGVzX3Bhc3NlZCIsImFueV9zYW1wbGVzX3Bhc3NlZF9jb25zZXJ2YXRpdiIsInNhbXBsZXJfYmluZGluZyIsInJnYjEwX2EydWkiLCJpbnRfMl8xMF8xMF8xMF9yZXYiLCJ0cmFuc2Zvcm1fZmVlZGJhY2siLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfcGF1c2VkIiwidHJhbnNmb3JtX2ZlZWRiYWNrX2FjdGl2ZSIsInRyYW5zZm9ybV9mZWVkYmFja19iaW5kaW5nIiwidGV4dHVyZV9pbW11dGFibGVfZm9ybWF0IiwibWF4X2VsZW1lbnRfaW5kZXgiLCJ0ZXh0dXJlX2ltbXV0YWJsZV9sZXZlbHMiLCJ0aW1lb3V0X2lnbm9yZWQiLCJtYXhfY2xpZW50X3dhaXRfdGltZW91dF93ZWJnbCIsImNzdF9yb3VuZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLE1BQUFDLEdDV2dCLHNDQUFvQjtBQUFBLFlBQUFDLFlBQUFELEdBQ2QsNENBQTBCO0FBQUEsWUFBQUUsUUFBQUYsR0FDOUIsa0JBQXdCO0FBQUEsWUFBQUcsU0FBQUgsS0FBQUEsR0FDcEIsc0JBQTJCO0FBQUEsWUFBQUksSUFBQUosR0FFbkMscUNBQW9CO0FBQUEsWUFBQUssSUFBQUwsR0FDcEIscUNBQW9CO0FBQUEsWUFBQU0sSUFBQU4sR0FDcEIscUNBQW9CO0FBQUEsWUFBQU8sSUFBQVAsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVEsSUFBQVIsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVMsSUFBQVQsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVUsSUFBQVYsR0FDcEIs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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEaDZEcEYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDkxOCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvc2hhZGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMU0wgc2hhZGVyIGNvbXBpbGF0aW9uIHV0aWxpdGllcyBhbmQgZ2xvYmUgc2hhZGVyIHNvdXJjZXMuICopXG5cbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgY29tcGlsZSBnbCB0eXAgc3JjID1cbiAgbGV0IHNoYWRlciA9IEdsLmNyZWF0ZV9zaGFkZXIgZ2wgdHlwIGluXG4gIEdsLnNoYWRlcl9zb3VyY2UgZ2wgc2hhZGVyIChKc3RyLm9mX3N0cmluZyBzcmMpO1xuICBHbC5jb21waWxlX3NoYWRlciBnbCBzaGFkZXI7XG4gIHNoYWRlclxuXG5sZXQgcHJvZ3JhbSBnbCB+dmVydCB+ZnJhZyA9XG4gIGxldCB2cyA9IGNvbXBpbGUgZ2wgR2wudmVydGV4X3NoYWRlciB2ZXJ0IGluXG4gIGxldCBmcyA9IGNvbXBpbGUgZ2wgR2wuZnJhZ21lbnRfc2hhZGVyIGZyYWcgaW5cbiAgbGV0IHByb2cgPSBHbC5jcmVhdGVfcHJvZ3JhbSBnbCBpblxuICBHbC5hdHRhY2hfc2hhZGVyIGdsIHByb2cgdnM7XG4gIEdsLmF0dGFjaF9zaGFkZXIgZ2wgcHJvZyBmcztcbiAgR2wubGlua19wcm9ncmFtIGdsIHByb2c7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgdnM7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgZnM7XG4gIHByb2dcblxuKCogLS0tIEdsb2JlIGRvdCBjbG91ZCBzaGFkZXJzIC0tLSAqKVxuXG5sZXQgZWFydGhfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbnVuaWZvcm0gZmxvYXQgdV9wb2ludF9zaXplO1xuXG5vdXQgZmxvYXQgdl9icmlnaHRuZXNzO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemUgKiAoMC4zICsgYV9icmlnaHRuZXNzICogMC43KTtcbiAgdl9icmlnaHRuZXNzID0gYV9icmlnaHRuZXNzO1xufVxufH1cblxubGV0IGVhcnRoX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxuaW4gZmxvYXQgdl9icmlnaHRuZXNzO1xudW5pZm9ybSBmbG9hdCB1X2RpbTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcCgwLjUsIDAuMSwgZCk7XG4gIHZlYzMgY29sb3IgPSBtaXgodmVjMygwLjAzLCAwLjEwLCAwLjI1KSwgdmVjMygwLjM1LCAwLjkwLCAxLjApLCB2X2JyaWdodG5lc3MpO1xuICAvLyB1X2RpbTogMS4wID0gZnVsbCBicmlnaHRuZXNzLCAwLjAgPSBjb21wbGV0ZWx5IGRhcmtcbiAgZnJhZ0NvbG9yID0gdmVjNChjb2xvciAqIHVfZGltLCBhbHBoYSAqICgwLjMgKyB2X2JyaWdodG5lc3MgKiAwLjcpICogdV9kaW0pO1xufVxufH1cblxuKCogLS0tIFN0YXIgZmllbGQgc2hhZGVycyAtLS0gKilcblxubGV0IHN0YXJfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcblxub3V0IGZsb2F0IHZfYnJpZ2h0bmVzcztcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgZ2xfUG9pbnRTaXplID0gMS4wICsgYV9icmlnaHRuZXNzO1xuICB2X2JyaWdodG5lc3MgPSBhX2JyaWdodG5lc3M7XG59XG58fVxuXG5sZXQgc3Rhcl9mcmFnbWVudCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbmluIGZsb2F0IHZfYnJpZ2h0bmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZyYWdDb2xvciA9IHZlYzQodmVjMygxLjApLCB2X2JyaWdodG5lc3MgKiBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKSk7XG59XG58fVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiQnJyX2NhbnZhcyIsImNvbXBpbGUiLCJnbCIsInR5cCIsInNyYyIsInNoYWRlciIsInByb2dyYW0iLCJ2ZXJ0IiwiZnJhZyIsInZzIiwiZnMiLCJwcm9nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGFBQUE7QUFBQSxZQUFBQyxRQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxTQ1VlO0FBQUEsSUFDYjtBQUFBLHNDQUEyQjtBQUFBLElBQzNCO0FBQUEsSUFBMkI7QUFBQSxHQUNyQjtBQUFBLFlBQUFDLFFBQUFKLElBQUFLLE1BQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBR0c7QUFBQSxLQUFBQyxLQUNBO0FBQUEsS0FBQUMsT0FDRTtBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBc0I7QUFBQSxHQUNsQjtBQUFBLEdEeEJOIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDA5NzQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL3N0YXJzLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFN0YXIgZmllbGQgYmFja2dyb3VuZDogcmFuZG9tIHNtYWxsIHdoaXRlIHBvaW50cyBvbiBhIGZhciBzcGhlcmUuICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxudHlwZSB0ID0ge1xuICBwcm9nIDogR2wucHJvZ3JhbTtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgY291bnQgOiBpbnQ7XG4gIHVfcHJvamVjdGlvbiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG59XG5cbmxldCB2ID8oY291bnQgPSAyMDAwKSA/KGRpc3RhbmNlID0gNTAuMCkgZ2wgPVxuICBsZXQgZGF0YSA9IEFycmF5Lm1ha2UgKGNvdW50ICogNCkgMC4gaW5cbiAgbGV0IHNlZWQgPSByZWYgMTIzNDUgaW5cbiAgbGV0IHJhbmQgKCkgPVxuICAgIHNlZWQgOj0gKCFzZWVkICogMTEwMzUxNTI0NSkgKyAxMjM0NTtcbiAgICBGbG9hdC5vZl9pbnQgKGFicyAoIXNlZWQgLyA2NTUzNiBtb2QgMzI3NjgpKSAvLiAzMjc2OC5cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIGNvdW50IC0gMSBkb1xuICAgIGxldCB0aGV0YSA9IGFjb3MgKDEuIC0uICgyLiAqLiByYW5kICgpKSkgaW5cbiAgICBsZXQgcGhpID0gMi4gKi4gRmxvYXQucGkgKi4gcmFuZCAoKSBpblxuICAgIGxldCBvZmYgPSBpICogNCBpblxuICAgIGRhdGEuKG9mZikgPC0gZGlzdGFuY2UgKi4gc2luIHRoZXRhICouIGNvcyBwaGk7XG4gICAgZGF0YS4ob2ZmICsgMSkgPC0gZGlzdGFuY2UgKi4gY29zIHRoZXRhO1xuICAgIGRhdGEuKG9mZiArIDIpIDwtIGRpc3RhbmNlICouIHNpbiB0aGV0YSAqLiBzaW4gcGhpO1xuICAgIGRhdGEuKG9mZiArIDMpIDwtIDAuMyArLiAoMC43ICouIHJhbmQgKCkpXG4gIGRvbmU7XG4gIGxldCBidWZfZGF0YSA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID1cbiAgICBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpTaGFkZXIuc3Rhcl92ZXJ0ZXggfmZyYWc6U2hhZGVyLnN0YXJfZnJhZ21lbnRcbiAgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWZfZGF0YSBHbC5zdGF0aWNfZHJhdztcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAxNiAwO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMSAxIEdsLmZsb2F0IGZhbHNlIDE2IDEyO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgY291bnQ7XG4gICAgdV9wcm9qZWN0aW9uID1cbiAgICAgIEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIFwidV9wcm9qZWN0aW9uXCIpO1xuICAgIHVfdmlldyA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIFwidV92aWV3XCIpO1xuICB9XG5cbmxldCBkcmF3IGdsIHQgfnByb2plY3Rpb24gfnZpZXcgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIGxldCBwcm9qX2FyciA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uIGluXG4gIGxldCB2aWV3X2FyciA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3IGluXG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qZWN0aW9uIGZhbHNlIHByb2pfYXJyO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZSB2aWV3X2FycjtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICBHbC5kcmF3X2FycmF5cyBnbCBHbC5wb2ludHMgMCB0LmNvdW50O1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNyIsImE0IiwiYTUiLCJhNiIsImdsb2JhbF9kYXRhIiwiQnJyX2NhbnZhcyIsIkJyciIsIlN0ZGxpYiIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsImNvdW50IiwiZGlzdGFuY2UiLCJkYXRhIiwic2VlZCIsInJhbmQiLCJwYXJhbSIsImkiLCJ0aGV0YSIsInBoaSIsIm9mZiIsImJ1Zl9kYXRhIiwicHJvZyIsInZhbyIsInZibyIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwcm9qX2FyciIsInZpZXdfYXJyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxZQUFBQyxFQUFBLEdBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFFDa0JNO0FBQUEsS0FBQUMsV0FBQTtBQUFBLEtBQUFDLE9BQ087QUFBQSxLQUFBQyxPQUNYO0FBQUEsYUFBQUMsS0FBQUM7QUFBQUEsS0FFRTtBQUFBLEtBQ2Esd0VBQXlDO0FBQUE7QUFBQSxZQUV4RDtBQUFBO0FBQUEsU0FBQUMsSUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxRQUNjLG9CQUFtQjtBQUFBLFdBQ0g7QUFBQSxPQUFBQyxNQUFsQjtBQUFBLE9BQUFDLE1BQ1Y7QUFBQSxNQUNBO0FBQUEsa0JBQTBCLGtCQUFhO0FBQUEsY0FDQTtBQUFBLE1BQXZDLDhDQUE4QjtBQUFBLGNBQ29CO0FBQUEsTUFBbEQ7QUFBQSxrQkFBOEIsa0JBQWE7QUFBQSxjQUNGLGlCQUFSO0FBQUEsTUFBakM7QUFBQSxjQUF5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUU1QjtBQUFBLEtBQUFDO0FBQUFBLE9BRWI7QUFBQTtBQUFBLEtBQUFDLE1BRVE7QUFBQSxJQUNWO0FBQUEsUUFBQUMsTUFDVTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLFlBT1c7QUFBQSxJQURQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUErRDtBQUFBLEdBRWxFO0FBQUEsWUFBQUMsS0FBQWYsSUFBQWdCLEdBQUFDLFlBQUFDO0FBQUFBLElBR0Q7QUFBQTtBQUFBLEtBQUFDLFdBQ2U7QUFBQSxLQUFBQyxXQUNBO0FBQUEsSUFDZjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQXFDLDJDQUNUO0FBQUE7QUFBQSxHRGpFOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTA4NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvY2FtZXJhLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIE9yYml0IGNhbWVyYSB3aXRoIGRyYWcgcm90YXRpb24gYW5kIHNjcm9sbCB6b29tLiAqKVxuXG5vcGVuIEJyclxuXG50eXBlIHRhcmdldCA9IHsgdGhldGEgOiBmbG9hdDsgcGhpIDogZmxvYXQ7IGRpc3RhbmNlIDogZmxvYXQgfVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGhldGEgOiBmbG9hdDtcbiAgbXV0YWJsZSBwaGkgOiBmbG9hdDtcbiAgbXV0YWJsZSBkaXN0YW5jZSA6IGZsb2F0O1xuICBtdXRhYmxlIGRyYWdnaW5nIDogYm9vbDtcbiAgbXV0YWJsZSBsYXN0X3ggOiBmbG9hdDtcbiAgbXV0YWJsZSBsYXN0X3kgOiBmbG9hdDtcbiAgbXV0YWJsZSBhdXRvX3JvdGF0ZSA6IGJvb2w7XG4gIG11dGFibGUgdGFyZ2V0IDogdGFyZ2V0IG9wdGlvbjtcbiAgbXV0YWJsZSB0d2Vlbl9zcGVlZCA6IGZsb2F0O1xufVxuXG5sZXQgdiAoKSA9XG4gIHtcbiAgICB0aGV0YSA9IDAuO1xuICAgIHBoaSA9IDAuMztcbiAgICBkaXN0YW5jZSA9IDMuNTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGxhc3RfeCA9IDAuO1xuICAgIHRhcmdldCA9IE5vbmU7XG4gICAgdHdlZW5fc3BlZWQgPSA1LjtcbiAgICBsYXN0X3kgPSAwLjtcbiAgICBhdXRvX3JvdGF0ZSA9IHRydWU7XG4gIH1cblxubGV0IHZpZXdfbWF0cml4IGNhbSA9XG4gIGxldCBvcGVuIEdsb2JlLk1hdGggaW5cbiAgbGV0IHggPSBjYW0uZGlzdGFuY2UgKi4gY29zIGNhbS5waGkgKi4gc2luIGNhbS50aGV0YSBpblxuICBsZXQgeSA9IGNhbS5kaXN0YW5jZSAqLiBzaW4gY2FtLnBoaSBpblxuICBsZXQgeiA9IGNhbS5kaXN0YW5jZSAqLiBjb3MgY2FtLnBoaSAqLiBjb3MgY2FtLnRoZXRhIGluXG4gIGxldCBleWUgPSBWZWMzLmNyZWF0ZSB4IHkgeiBpblxuICBsZXQgY2VudGVyID0gVmVjMy56ZXJvIGluXG4gIGxldCB1cCA9IFZlYzMuY3JlYXRlIDAuIDEuIDAuIGluXG4gIE1hdDQubG9va19hdCB+ZXllIH5jZW50ZXIgfnVwXG5cbmxldCBsb29rX2F0X3Bvc2l0aW9uIGNhbSAocG9zIDogR2xvYmUuTWF0aC5WZWMzLnQpID1cbiAgbGV0IHIgPSBHbG9iZS5NYXRoLlZlYzMubGVuZ3RoIHBvcyBpblxuICBpZiByID4gMWUtNiB0aGVuIGJlZ2luXG4gICAgbGV0IHRhcmdldF90aGV0YSA9IGF0YW4yIHBvcy54IHBvcy56IGluXG4gICAgbGV0IHRhcmdldF9waGkgPSBhc2luIChwb3MueSAvLiByKSBpblxuICAgIGNhbS50YXJnZXQgPC1cbiAgICAgIFNvbWUgeyB0aGV0YSA9IHRhcmdldF90aGV0YTsgcGhpID0gdGFyZ2V0X3BoaTsgZGlzdGFuY2UgPSBjYW0uZGlzdGFuY2UgfTtcbiAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcbiAgZW5kXG5cbmxldCBhbmltYXRlX3RvIGNhbSB+dGhldGEgfnBoaSB+ZGlzdGFuY2UgPVxuICBjYW0udGFyZ2V0IDwtIFNvbWUgeyB0aGV0YTsgcGhpOyBkaXN0YW5jZSB9O1xuICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcblxubGV0IHNuYXBfdG8gY2FtIChwb3MgOiBHbG9iZS5NYXRoLlZlYzMudCkgPVxuICBsZXQgciA9IEdsb2JlLk1hdGguVmVjMy5sZW5ndGggcG9zIGluXG4gIGlmIHIgPiAxZS02IHRoZW4gYmVnaW5cbiAgICBjYW0ucGhpIDwtIGFzaW4gKHBvcy55IC8uIHIpO1xuICAgIGNhbS50aGV0YSA8LSBhdGFuMiBwb3MueCBwb3MuejtcbiAgICBjYW0udGFyZ2V0IDwtIE5vbmU7XG4gICAgY2FtLmF1dG9fcm90YXRlIDwtIGZhbHNlXG4gIGVuZFxuXG5sZXQgaXNfYW5pbWF0aW5nIGNhbSA9IE9wdGlvbi5pc19zb21lIGNhbS50YXJnZXRcblxuKCoqIExlcnAgd2l0aCBleHBvbmVudGlhbCBkZWNheTogc21vb3RoIGFwcHJvYWNoLCBuZXZlciBvdmVyc2hvb3RzLiAqKVxubGV0IGxlcnAgY3VycmVudCB0YXJnZXQgc3BlZWQgZHQgPVxuICBsZXQgdCA9IDEuIC0uIGV4cCAoLS5zcGVlZCAqLiBkdCkgaW5cbiAgY3VycmVudCArLiAodCAqLiAodGFyZ2V0IC0uIGN1cnJlbnQpKVxuXG5sZXQgdXBkYXRlIGNhbSBkdCA9XG4gICgqIFR3ZWVuIHRvd2FyZCB0YXJnZXQgKilcbiAgbWF0Y2ggY2FtLnRhcmdldCB3aXRoXG4gIHwgU29tZSB0Z3QgLT5cbiAgICAgIGNhbS50aGV0YSA8LSBsZXJwIGNhbS50aGV0YSB0Z3QudGhldGEgY2FtLnR3ZWVuX3NwZWVkIGR0O1xuICAgICAgY2FtLnBoaSA8LSBsZXJwIGNhbS5waGkgdGd0LnBoaSBjYW0udHdlZW5fc3BlZWQgZHQ7XG4gICAgICBjYW0uZGlzdGFuY2UgPC0gbGVycCBjYW0uZGlzdGFuY2UgdGd0LmRpc3RhbmNlIGNhbS50d2Vlbl9zcGVlZCBkdDtcbiAgICAgICgqIFN0b3Agd2hlbiBjbG9zZSBlbm91Z2ggKilcbiAgICAgIGxldCBkX3RoZXRhID0gYWJzX2Zsb2F0IChjYW0udGhldGEgLS4gdGd0LnRoZXRhKSBpblxuICAgICAgbGV0IGRfcGhpID0gYWJzX2Zsb2F0IChjYW0ucGhpIC0uIHRndC5waGkpIGluXG4gICAgICBsZXQgZF9kaXN0ID0gYWJzX2Zsb2F0IChjYW0uZGlzdGFuY2UgLS4gdGd0LmRpc3RhbmNlKSBpblxuICAgICAgaWYgZF90aGV0YSA8IDAuMDAxICYmIGRfcGhpIDwgMC4wMDEgJiYgZF9kaXN0IDwgMC4wMSB0aGVuXG4gICAgICAgIGNhbS50YXJnZXQgPC0gTm9uZVxuICB8IE5vbmUgLT5cbiAgICAgIGlmIGNhbS5hdXRvX3JvdGF0ZSAmJiBub3QgY2FtLmRyYWdnaW5nIHRoZW5cbiAgICAgICAgY2FtLnRoZXRhIDwtIGNhbS50aGV0YSArLiAwLjAwMlxuXG5sZXQgYXR0YWNoX2V2ZW50cyBjYW0gZWwgPVxuICBsZXQgX2wxID1cbiAgICBFdi5saXN0ZW4gRXYucG9pbnRlcmRvd25cbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHBldiA9IEV2LmFzX3R5cGUgZXYgaW5cbiAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgIGNhbS5kcmFnZ2luZyA8LSB0cnVlO1xuICAgICAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2U7XG4gICAgICAgIGNhbS5sYXN0X3ggPC0gRXYuTW91c2UuY2xpZW50X3ggbWV2O1xuICAgICAgICBjYW0ubGFzdF95IDwtIEV2Lk1vdXNlLmNsaWVudF95IG1ldilcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDIgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVybW92ZVxuICAgICAgKGZ1biBldiAtPlxuICAgICAgICBpZiBjYW0uZHJhZ2dpbmcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBwZXYgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgICAgbGV0IHggPSBFdi5Nb3VzZS5jbGllbnRfeCBtZXYgaW5cbiAgICAgICAgICBsZXQgeSA9IEV2Lk1vdXNlLmNsaWVudF95IG1ldiBpblxuICAgICAgICAgIGxldCBkeCA9IHggLS4gY2FtLmxhc3RfeCBpblxuICAgICAgICAgIGxldCBkeSA9IHkgLS4gY2FtLmxhc3RfeSBpblxuICAgICAgICAgIGNhbS50aGV0YSA8LSBjYW0udGhldGEgLS4gKGR4ICouIDAuMDA1KTtcbiAgICAgICAgICBjYW0ucGhpIDwtIGNhbS5waGkgKy4gKGR5ICouIDAuMDA1KTtcbiAgICAgICAgICBsZXQgbWF4X3BoaSA9IChGbG9hdC5waSAvLiAyLikgLS4gMC4wMSBpblxuICAgICAgICAgIGNhbS5waGkgPC0gRmxvYXQubWF4ICgtLm1heF9waGkpIChGbG9hdC5taW4gbWF4X3BoaSBjYW0ucGhpKTtcbiAgICAgICAgICBjYW0ubGFzdF94IDwtIHg7XG4gICAgICAgICAgY2FtLmxhc3RfeSA8LSB5XG4gICAgICAgIGVuZClcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDMgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVydXAgKGZ1biBfZXYgLT4gY2FtLmRyYWdnaW5nIDwtIGZhbHNlKSAoRWwuYXNfdGFyZ2V0IGVsKVxuICBpblxuICBsZXQgX2w0ID1cbiAgICBFdi5saXN0ZW4gRXYud2hlZWxcbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHdldiA6IEV2LldoZWVsLnQgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgIEV2LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgbGV0IGR5ID0gRXYuV2hlZWwuZGVsdGFfeSB3ZXYgaW5cbiAgICAgICAgY2FtLmRpc3RhbmNlIDwtIGNhbS5kaXN0YW5jZSArLiAoZHkgKi4gMC4wMDIpO1xuICAgICAgICBjYW0uZGlzdGFuY2UgPC0gRmxvYXQubWF4IDEuNSAoRmxvYXQubWluIDEwLiBjYW0uZGlzdGFuY2UpKVxuICAgICAgKEVsLmFzX3RhcmdldCBlbClcbiAgaW5cbiAgKClcblxubGV0IHBwIHBwZiBjYW0gPVxuICBGbXQucGYgcHBmIFwidGhldGE9JS4zZiBwaGk9JS4zZiBkaXN0PSUuMmZcIiBjYW0udGhldGEgY2FtLnBoaSBjYW0uZGlzdGFuY2VcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiZ2xvYmFsX2RhdGEiLCJGbXQiLCJCcnIiLCJTdGRsaWJfRmxvYXQiLCJTdGRsaWJfT3B0aW9uIiwiR2xvYmVfTWF0aCIsInYiLCJwYXJhbSIsInZpZXdfbWF0cml4IiwiY2FtIiwieCIsInkiLCJ6IiwiZXllIiwiY2VudGVyIiwidXAiLCJsb29rX2F0X3Bvc2l0aW9uIiwicG9zIiwiciIsInRhcmdldF90aGV0YSIsInRhcmdldF9waGkiLCJhbmltYXRlX3RvIiwidGhldGEiLCJwaGkiLCJkaXN0YW5jZSIsInNuYXBfdG8iLCJpc19hbmltYXRpbmciLCJsZXJwIiwiY3VycmVudCIsInRhcmdldCIsInNwZWVkIiwiZHQiLCJ0IiwidXBkYXRlIiwibWF0Y2giLCJ0Z3QiLCJkX3RoZXRhIiwiZF9waGkiLCJkX2Rpc3QiLCJhdHRhY2hfZXZlbnRzIiwiZWwiLCJldiIsImR4IiwiZHkiLCJtYXhfcGhpIiwicHAiLCJwcGYiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsRUFBQUMsT0N3QkUsOENBVUM7QUFBQSxZQUFBQyxZQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxJQUlPLFNBQWdCLG1CQUFlO0FBQUEsS0FBQUMsSUFDL0IsU0FBZ0I7QUFBQSxLQUFBQyxJQUNoQixTQUFnQixtQkFBZTtBQUFBLEtBQUFDLE1BQzdCO0FBQUEsS0FBQUMsU0FDVjtBQUFBLEtBQUFDLEtBQ1M7QUFBQSxJQUNULG1EQUE2QjtBQUFBO0FBQUEsWUFBQUMsaUJBQUFQLEtBQUFRO0FBQUFBLFFBQUFDLElBR3JCLHNDQUNSO0FBQUE7QUFBQTtBQUFBLE1BQUFDLGVBQ3FCO0FBQUEsTUFBQUMsYUFDRjtBQUFBLEtBQ2pCO0FBQUEsS0FFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBTEY7QUFBQTtBQUFBLEdBTUc7QUFBQSxZQUFBQyxXQUFBWixLQUFBYSxPQUFBQyxLQUFBQztBQUFBQSxJQUdIO0FBQUEsSUFDQTtBQUFBO0FBQUEsR0FBd0I7QUFBQSxZQUFBQyxRQUFBaEIsS0FBQVE7QUFBQUE7QUFBQUEsS0FBQUMsSUFHaEI7QUFBQSxTQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUNhO0FBQUEsbUJBQ0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRmY7QUFBQSxHQUtHO0FBQUEsWUFBQVEsYUFBQWpCLEtBRWtCLDJDQUF5QjtBQUFBLFlBQUFrQixLQUFBQyxTQUFBQyxRQUFBQyxPQUFBQztBQUFBQSxRQUFBQyxJQUl0QyxLQUFNO0FBQUEsSUFDdUI7QUFBQTtBQUFBLFlBQUFDLE9BQUF4QixLQUFBc0I7QUFBQUEsUUFBQUcsUUFJckM7QUFBQTtBQUFBO0FBQUEsVUFZSTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFBQUMsTUFaSjtBQUFBLElBRWlCO0FBQUEsSUFDRjtBQUFBLElBQ0s7QUFBQTtBQUFBLEtBQUFDLFVBRUY7QUFBQSxLQUFBQyxRQUNGO0FBQUEsS0FBQUMsU0FDQztBQUFBLFNBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUlpQztBQUFBLFlBQUFDLGNBQUE5QixLQUFBK0I7QUFBQUEsSUFJbkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBQztBQUFBQSxPQUlJO0FBQUEsT0FDQTtBQUFBLE9BQ2M7QUFBQSxPQUNBO0FBQUEsT0FBcUI7QUFBQTtBQUFBO0FBQUEsSUFJdkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBQTtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBO0FBQUEsU0FBQS9CLElBR1U7QUFBQSxTQUFBQyxJQUNBO0FBQUEsU0FBQStCLEtBQ0M7QUFBQSxTQUFBQyxLQUNBO0FBQUEsUUFDOEI7QUFBQSxRQUNKO0FBQUE7QUFBQSxTQUFBQyxVQUNyQjtBQUFBLGFBQ21CO0FBQUEsUUFBdEI7QUFBQSxRQUNYO0FBQUEsUUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQVpGO0FBQUE7QUFBQSxNQWFHO0FBQUE7QUFBQSxJQUlQO0FBQUEsMkNBQUFILElBQW1DLHFCQUFxQjtBQUFBLElBR3hEO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBQUE7QUFBQUEsT0FHSTtBQUFBLFdBQUFFLEtBQ1M7QUFBQSxPQUNvQztBQUFBLGVBQ2Y7QUFBQSxPQUFkO0FBQUEsT0FBMEM7QUFBQTtBQUFBO0FBQUEsSUFHaEU7QUFBQSxHQUFFO0FBQUE7QUFBQTtBQUFBLE1EeklKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFFLEdBQUFDLEtBQUFyQztBQUFBQSxRQUFBLElDNElFO0FBQUEseURBQXlFO0FBQUE7QUFBQSxHRDVJM0UiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTI4NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvY292ZXJhZ2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogU2F0ZWxsaXRlIGdyb3VuZCBjb3ZlcmFnZSByZW5kZXJpbmcuXG5cbiAgICBEcmF3cyBmaWxsZWQgY2lyY2xlcyBvbiB0aGUgZ2xvYmUgd2l0aCBhZGRpdGl2ZSBibGVuZGluZyBzbyB0aGV5IGJyaWdodGVuXG4gICAgd2hhdGV2ZXIgaXMgdW5kZXJuZWF0aCAoZG90cywgZ3JpZCwgZXRjLikg4oCUIGxpa2UgYSBzcG90bGlnaHQgZWZmZWN0LiBVc2VzXG4gICAgcGVyLXZlcnRleCByYWRpYWwgZmFsbG9mZjogYnJpZ2h0IGF0IHRoZSBzdWItc2F0ZWxsaXRlIHBvaW50LCBmYWRpbmcgdG8gemVyb1xuICAgIGF0IHRoZSBmb290cHJpbnQgZWRnZS4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgdmVydCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5sYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMzIGFfcG9zaXRpb247XG5sYXlvdXQobG9jYXRpb24gPSAxKSBpbiB2ZWMzIGFfY29sb3I7XG5sYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdCBhX2ZhZGU7XG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbm91dCB2ZWMzIHZfY29sb3I7XG5vdXQgZmxvYXQgdl9mYWRlO1xudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgdl9jb2xvciA9IGFfY29sb3I7XG4gIHZfZmFkZSA9IGFfZmFkZTtcbn1cbnx9XG5cbmxldCBmcmFnID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmluIHZlYzMgdl9jb2xvcjtcbmluIGZsb2F0IHZfZmFkZTtcbnVuaWZvcm0gZmxvYXQgdV9pbnRlbnNpdHk7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIC8vIFNtb290aCByYWRpYWwgZmFsbG9mZjogYnJpZ2h0IGNlbnRlciwgemVybyBhdCBlZGdlXG4gIGZsb2F0IGdsb3cgPSB2X2ZhZGUgKiB2X2ZhZGUgKiB1X2ludGVuc2l0eTtcbiAgZnJhZ0NvbG9yID0gdmVjNCh2X2NvbG9yICogZ2xvdywgZ2xvdyk7XG59XG58fVxuXG50eXBlIGZvb3RwcmludCA9IHtcbiAgcG9zIDogR2xvYmUuTWF0aC5WZWMzLnQ7XG4gIGNvbG9yIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0O1xuICBoYWxmX2FuZ2xlIDogZmxvYXQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIHZibyA6IEdsLmJ1ZmZlcjtcbiAgbXV0YWJsZSBudW1fdmVydGljZXMgOiBpbnQ7XG4gIHVfcHJvaiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfaW50ZW5zaXR5IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgZ2wgPVxuICBsZXQgcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0IH5mcmFnIGluXG4gIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gIGxldCB2Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICAoKiBwb3NpdGlvbiAoMykgKyBjb2xvciAoMykgKyBmYWRlICgxKSA9IDcgZmxvYXRzLCBzdHJpZGUgMjggKilcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAyOCAwO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMSAzIEdsLmZsb2F0IGZhbHNlIDI4IDEyO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAyO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMiAxIEdsLmZsb2F0IGZhbHNlIDI4IDI0O1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIHZibztcbiAgICBudW1fdmVydGljZXMgPSAwO1xuICAgIHVfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIjtcbiAgICB1X3ZpZXcgPSB1IFwidV92aWV3XCI7XG4gICAgdV9pbnRlbnNpdHkgPSB1IFwidV9pbnRlbnNpdHlcIjtcbiAgfVxuXG5sZXQgbG9hZCBnbCB0IChmb290cHJpbnRzIDogZm9vdHByaW50IGxpc3QpID1cbiAgaWYgZm9vdHByaW50cyA9IFtdIHRoZW4gdC5udW1fdmVydGljZXMgPC0gMFxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGFsbF92ZXJ0cyA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXBcbiAgICAgICAgKGZ1biAoZnAgOiBmb290cHJpbnQpIC0+XG4gICAgICAgICAgbGV0IGNlbnRlciA9IEdsb2JlLk1hdGguVmVjMy5ub3JtYWxpemUgZnAucG9zIGluXG4gICAgICAgICAgbGV0IHIsIGcsIGIgPSBmcC5jb2xvciBpblxuICAgICAgICAgIGxldCB0cmlzID1cbiAgICAgICAgICAgIEdsb2JlLkdlb21ldHJ5LmZpbGxlZF9jaXJjbGVfb25fc3BoZXJlIGNlbnRlclxuICAgICAgICAgICAgICB+aGFsZl9hbmdsZTpmcC5oYWxmX2FuZ2xlIH5zZWdtZW50czo0OFxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogRWFjaCB0cmlhbmdsZTogKGNlbnRlciwgZWRnZTAsIGVkZ2UxKS5cbiAgICAgICAgICAgICBjZW50ZXIgZ2V0cyBmYWRlPTEuMCwgZWRnZXMgZ2V0IGZhZGU9MC4wICopXG4gICAgICAgICAgbGV0IHJlYyB0YWcgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBjIDo6IHAwIDo6IHAxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICAoYywgciwgZywgYiwgMS4wKSA6OiAocDAsIHIsIGcsIGIsIDAuMCkgOjogKHAxLCByLCBnLCBiLCAwLjApXG4gICAgICAgICAgICAgICAgOjogdGFnIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGFnIHRyaXMpXG4gICAgICAgIGZvb3RwcmludHNcbiAgICBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggYWxsX3ZlcnRzIGluXG4gICAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNykgMC4gaW5cbiAgICBMaXN0Lml0ZXJpXG4gICAgICAoZnVuIGkgKCh2IDogR2xvYmUuTWF0aC5WZWMzLnQpLCByLCBnLCBiLCBmYWRlKSAtPlxuICAgICAgICBsZXQgb2ZmID0gaSAqIDcgaW5cbiAgICAgICAgZGF0YS4ob2ZmKSA8LSB2Lng7XG4gICAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHYueTtcbiAgICAgICAgZGF0YS4ob2ZmICsgMikgPC0gdi56O1xuICAgICAgICBkYXRhLihvZmYgKyAzKSA8LSByO1xuICAgICAgICBkYXRhLihvZmYgKyA0KSA8LSBnO1xuICAgICAgICBkYXRhLihvZmYgKyA1KSA8LSBiO1xuICAgICAgICBkYXRhLihvZmYgKyA2KSA8LSBmYWRlKVxuICAgICAgYWxsX3ZlcnRzO1xuICAgIGxldCBidWYgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgZGF0YSBpblxuICAgIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB0LnZibyk7XG4gICAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1ZiBHbC5keW5hbWljX2RyYXc7XG4gICAgdC5udW1fdmVydGljZXMgPC0gblxuICBlbmRcblxubGV0IGRyYXcgZ2wgdCB+cHJvamVjdGlvbiB+dmlldyA/KGludGVuc2l0eSA9IDAuNCkgKCkgPVxuICBpZiB0Lm51bV92ZXJ0aWNlcyA+IDAgdGhlbiBiZWdpblxuICAgICgqIEFkZGl0aXZlIGJsZW5kaW5nOiBicmlnaHRlbnMgdW5kZXJseWluZyBjb250ZW50ICopXG4gICAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lO1xuICAgIEdsLmRpc2FibGUgZ2wgR2wuZGVwdGhfdGVzdDtcbiAgICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gICAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2ogZmFsc2VcbiAgICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbik7XG4gICAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyk7XG4gICAgR2wudW5pZm9ybTFmIGdsIHQudV9pbnRlbnNpdHkgaW50ZW5zaXR5O1xuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgICBHbC5kcmF3X2FycmF5cyBnbCBHbC50cmlhbmdsZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICAgICgqIFJlc3RvcmUgbm9ybWFsIGJsZW5kaW5nICopXG4gICAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gICAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lX21pbnVzX3NyY19hbHBoYVxuICBlbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfTWF0aCIsIkdsb2JlX0dlb21ldHJ5IiwiU3RkbGliX0xpc3QiLCJHbG9iZV93ZWJnbF9TaGFkZXIiLCJ2IiwiZ2wiLCJwcm9nIiwidmFvIiwidmJvIiwidSIsIm5hbWUiLCJsb2FkIiwidCIsImZvb3RwcmludHMiLCJhbGxfdmVydHMiLCJmcCIsImNlbnRlciIsIm1hdGNoIiwiYiIsImciLCJyIiwidHJpcyIsInRhZyIsInBhcmFtIiwicmVzdCIsInAxIiwicDAiLCJjIiwibiIsImRhdGEiLCJpIiwiZmFkZSIsIm9mZiIsImJ1ZiIsImRyYXciLCJwcm9qZWN0aW9uIiwidmlldyIsIm9wdCIsImludGVuc2l0eSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxZQUFBQyxFQUFBQztBQUFBQTtBQUFBQSxLQUFBQztBQUFBQSxPQytEYTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDRDtBQUFBLEtBQUFDLE1BQ0E7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLElBRUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxhQUFBQyxFQUFBQztBQUFBQSxLQUM2QyxPQUFxQjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBQXJCLHNDQUFxQjtBQUFBO0FBQUEsWUFRbEQsc0JBREw7QUFBQSxJQURBLHNEQUFnQjtBQUFBLEdBRzFCO0FBQUEsWUFBQUMsS0FBQU4sSUFBQU8sR0FBQUM7QUFBQUEsSUFHRCxxQkFBd0I7QUFBQTtBQUFBLEtBQUFDO0FBQUFBLE9BR3BCO0FBQUE7QUFBQSxrQkFBQUM7QUFBQUE7QUFBQUEsV0FBQUMsU0FFaUI7QUFBQSxXQUFBQyxRQUNiO0FBQUEsV0FBQUMsSUFBQTtBQUFBLFdBQUFDLElBQUE7QUFBQSxXQUFBQyxJQUFBO0FBQUEsV0FBQUMsT0FFRTtBQUFBLG1CQUFBQyxJQUFBQztBQUFBQSxXQUtZO0FBQUE7QUFBQTtBQUFBLGlCQUFBTixRQUFBO0FBQUE7QUFBQSxrQkFBQU8sT0FBQSxVQUFBQyxLQUFBLFVBQUFDLEtBQUEsTUFBQUMsSUFBQTtBQUFBLGNBR0w7QUFBQTtBQUFBO0FBQUE7QUFBQSw2REFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQ1I7QUFBQSxVQUFFO0FBQUEsVUFFWCxnQkFBUTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxJQUdOO0FBQUEsS0FBQUMsT0FDRztBQUFBLElBQ1g7QUFBQTtBQUFBLGVBQUFDLEdBQUFQO0FBQUFBO0FBQUFBLFFBQUFRLE9BQ0U7QUFBQSxRQUFBYixJQUFBO0FBQUEsUUFBQUMsSUFBQTtBQUFBLFFBQUFDLElBQUE7QUFBQSxRQUFBaEIsSUFBQTtBQUFBLFFBQUE0QixNQUNFO0FBQUEsWUFDQTtBQUFBO0FBQUEsZUFBaUIsaUJBQ2pCO0FBQUE7QUFBQSxlQUFxQixpQkFDckI7QUFBQTtBQUFBLGVBQXFCO0FBQUEsT0FDckI7QUFBQSxlQUFtQjtBQUFBLE9BQ25CO0FBQUEsZUFBbUI7QUFBQSxPQUNuQjtBQUFBLGVBQW1CO0FBQUEsT0FDbkI7QUFBQSxPQUFzQjtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQUFDLE1BRWpCO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQXFEO0FBQUE7QUFBQSxHQUVwRDtBQUFBLFlBQUFDLEtBQUE3QixJQUFBTyxHQUFBdUIsWUFBQUMsTUFBQUMsS0FBQWQ7QUFBQUEsUUFBQWUsWUFFSSx3QkFDUDtBQUFBO0FBQUEsSUFFRTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsWUFFRTtBQUFBLElBREY7QUFBQSxZQUdFO0FBQUEsSUFERjtBQUFBLElBRUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUVBO0FBQUEsSUFBMEI7QUFBQSwyRUFFekI7QUFBQTtBQUFBLEdEbEpMIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDE0NTAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL2VhcnRoLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIERvdCBjbG91ZCBFYXJ0aCByZW5kZXJpbmcgdXNpbmcgR0xfUE9JTlRTLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV9wb2ludHMgOiBpbnQ7XG4gIHVfcHJvamVjdGlvbiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfcG9pbnRfc2l6ZSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfZGltIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgPyhudW1fcG9pbnRzID0gMzAwMDApIGdsID1cbiAgbGV0IHBvaW50cyA9IEdsb2JlLlNwaGVyZS5nZW5lcmF0ZV9jbG91ZCB+bnVtX3BvaW50cyBpblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwb2ludHMgaW5cbiAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNCkgMC4gaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgKHAgOiBHbG9iZS5TcGhlcmUucG9pbnQpIC0+XG4gICAgICBsZXQgb2ZmID0gaSAqIDQgaW5cbiAgICAgIGRhdGEuKG9mZikgPC0gcC5wb3MueDtcbiAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHAucG9zLnk7XG4gICAgICBkYXRhLihvZmYgKyAyKSA8LSBwLnBvcy56O1xuICAgICAgZGF0YS4ob2ZmICsgMykgPC0gcC5icmlnaHRuZXNzKVxuICAgIHBvaW50cztcbiAgbGV0IGJ1Zl9kYXRhID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgbGV0IHByb2cgPVxuICAgIFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OlNoYWRlci5lYXJ0aF92ZXJ0ZXggfmZyYWc6U2hhZGVyLmVhcnRoX2ZyYWdtZW50XG4gIGluXG4gIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gIGxldCB2Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmX2RhdGEgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMTYgMDtcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMTtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDEgMSBHbC5mbG9hdCBmYWxzZSAxNiAxMjtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgbGV0IHUgbmFtZSA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIG5hbWUpIGluXG4gIHtcbiAgICBwcm9nO1xuICAgIHZhbztcbiAgICBudW1fcG9pbnRzID0gbjtcbiAgICB1X3Byb2plY3Rpb24gPSB1IFwidV9wcm9qZWN0aW9uXCI7XG4gICAgdV92aWV3ID0gdSBcInVfdmlld1wiO1xuICAgIHVfcG9pbnRfc2l6ZSA9IHUgXCJ1X3BvaW50X3NpemVcIjtcbiAgICB1X2RpbSA9IHUgXCJ1X2RpbVwiO1xuICB9XG5cbmxldCBkcmF3IGdsIHQgfnByb2plY3Rpb24gfnZpZXcgPyhkaW0gPSAxLjApICgpID1cbiAgR2wudXNlX3Byb2dyYW0gZ2wgdC5wcm9nO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfcHJvamVjdGlvbiBmYWxzZVxuICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbik7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV92aWV3IGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3KTtcbiAgR2wudW5pZm9ybTFmIGdsIHQudV9wb2ludF9zaXplIDMuNTtcbiAgR2wudW5pZm9ybTFmIGdsIHQudV9kaW0gZGltO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0LnZhbyk7XG4gIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnBvaW50cyAwIHQubnVtX3BvaW50cztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDciLCJhNCIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkJycl9jYW52YXMiLCJCcnIiLCJHbG9iZV9TcGhlcmUiLCJTdGRsaWJfQXJyYXkiLCJHbG9iZV93ZWJnbF9TaGFkZXIiLCJ2Iiwib3B0IiwiZ2wiLCJudW1fcG9pbnRzIiwicG9pbnRzIiwibiIsImRhdGEiLCJpIiwicCIsIm9mZiIsImJ1Zl9kYXRhIiwicHJvZyIsInZhbyIsInZibyIsInUiLCJuYW1lIiwiZHJhdyIsInQiLCJwcm9qZWN0aW9uIiwidmlldyIsInBhcmFtIiwiZGltIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxZQUFBQyxFQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxhQ29CTTtBQUFBLEtBQUFDLFNBQ1M7QUFBQSxLQUFBQyxJQUNiO0FBQUEsS0FBQUMsT0FDVztBQUFBLElBQ1g7QUFBQTtBQUFBLGVBQUFDLEdBQUFDO0FBQUFBLFdBQUFDLE1BRUksZUFDQTtBQUFBO0FBQUEsZUFBcUIsaUJBQ3JCO0FBQUE7QUFBQSxlQUF5QixpQkFDekI7QUFBQTtBQUFBLGVBQXlCLGlCQUN6QjtBQUFBO0FBQUEsT0FBOEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUVuQjtBQUFBLEtBQUFDO0FBQUFBLE9BRWI7QUFBQTtBQUFBLEtBQUFDLE1BRVE7QUFBQSxJQUNWO0FBQUEsUUFBQUMsTUFDVTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF4RCxnQkFETyx1QkFETjtBQUFBLElBRE0sb0RBQWdCO0FBQUEsR0FJaEM7QUFBQSxZQUFBQyxLQUFBZCxJQUFBZSxHQUFBQyxZQUFBQyxNQUFBbEIsS0FBQW1CO0FBQUFBLFFBQUFDLE1BRU07QUFBQSxJQUNQO0FBQUEsWUFFRTtBQUFBLElBREY7QUFBQSxZQUdFO0FBQUEsSUFERjtBQUFBLElBRUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUEwQywyQ0FDZDtBQUFBO0FBQUEsR0RuRTlCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDE1NTQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL2dyaWQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGF0aXR1ZGUvbG9uZ2l0dWRlIGdyaWQgb3ZlcmxheSBvbiB0aGUgZ2xvYmUuXG5cbiAgICBVc2VzIHshR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lc30gZm9yIHZlcnRleCBnZW5lcmF0aW9uLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTsgfVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7IGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgdV9hbHBoYSk7IH1cbnx9XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfYWxwaGEgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiA/KHNwYWNpbmcgPSAzMC4pIGdsID1cbiAgbGV0IHZlcnRzID0gR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lcyB+c3BhY2luZyAoKSBpblxuICBsZXQgbiA9IExpc3QubGVuZ3RoIHZlcnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDMpIDAuIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgLT5cbiAgICAgIGRhdGEuKGkgKiAzKSA8LSB2Lng7XG4gICAgICBkYXRhLigoaSAqIDMpICsgMSkgPC0gdi55O1xuICAgICAgZGF0YS4oKGkgKiAzKSArIDIpIDwtIHYueilcbiAgICB2ZXJ0cztcbiAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMCAwO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIG51bV92ZXJ0aWNlcyA9IG47XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2NvbG9yID0gdSBcInVfY29sb3JcIjtcbiAgICB1X2FscGhhID0gdSBcInVfYWxwaGFcIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KSkgPyhhbHBoYSA9IDAuMykgKCkgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qIGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcpO1xuICBsZXQgciwgZywgYiA9IGNvbG9yIGluXG4gIEdsLnVuaWZvcm0zZiBnbCB0LnVfY29sb3IgciBnIGI7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfYWxwaGEgYWxwaGE7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsInNwYWNpbmciLCJ2ZXJ0cyIsIm4iLCJkYXRhIiwiaSIsImJ1ZiIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImNvbG9yIiwiYWxwaGEiLCJiIiwiZyIsInIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsVUN3Q007QUFBQSxLQUFBQyxRQUNRO0FBQUEsS0FBQUMsSUFDSjtBQUFBLEtBQUFDLE9BQ0c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBUDtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBLGVBQW1CLHlCQUNuQjtBQUFBO0FBQUEsZUFBeUIseUJBQ3pCO0FBQUE7QUFBQSxPQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFRLE1BRW5CO0FBQUEsS0FBQUM7QUFBQUEsT0FDQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDRDtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF0RCxrQkFEQSxrQkFERDtBQUFBLElBREEsb0RBQWdCO0FBQUEsR0FJMUI7QUFBQSxXRHJFSDtBQUFBLFlBQUFDLEtBQUFaLElBQUFhLEdBQUFDLFlBQUFDLE1BQUEsR0FBQWhCLEtBQUFpQjtBQUFBQSxRQUFBQyxRQ3VFUyxjQUFBQyxRQUFBO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxRQUFBQyxJQUM2QyxVQUFBQyxJQUFBLFVBQUFDLElBQUE7QUFBQSxJQUU3QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQTJDLDJDQUNmO0FBQUE7QUFBQSxHRGxGOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTY2NCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvb3JiaXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogT3JiaXQgdHJhaWwgYW5kIHNhdGVsbGl0ZSBkb3QgcmVuZGVyaW5nLlxuXG4gICAgT3JiaXQgcGF0aHMgYXJlIHJlbmRlcmVkIGFzIEdMX0xJTkVfU1RSSVAgd2l0aCBwZXItdmVydGV4IGFscGhhOiBicmlnaHQgYXRcbiAgICB0aGUgc2F0ZWxsaXRlJ3MgY3VycmVudCBwb3NpdGlvbiwgZmFkaW5nIHRvIHRyYW5zcGFyZW50IGluIHRoZSBwYXN0LiBBIHNtYWxsXG4gICAgcHJlZGljdGlvbiBkb3Qgc2hvd3Mgd2hlcmUgdGhlIHNhdGVsbGl0ZSBpcyBoZWFkaW5nLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbigqIC0tLSBTaGFkZXJzIC0tLSAqKVxuXG4oKiogVHJhaWwgbGluZTogcGVyLXZlcnRleCBwcm9ncmVzcyBbMD10YWlsLCAxPWhlYWRdIGNvbnRyb2xzIGFscGhhLiAqKVxubGV0IHRyYWlsX3ZlcnRleCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5sYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMzIGFfcG9zaXRpb247XG5sYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBhX3Byb2dyZXNzO1xudW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3ZpZXc7XG5vdXQgZmxvYXQgdl9wcm9ncmVzcztcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb24gKiB1X3ZpZXcgKiB2ZWM0KGFfcG9zaXRpb24sIDEuMCk7XG4gIHZfcHJvZ3Jlc3MgPSBhX3Byb2dyZXNzO1xufVxufH1cblxubGV0IHRyYWlsX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjMyB1X2NvbG9yO1xuaW4gZmxvYXQgdl9wcm9ncmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgLy8gRmFkZTogYnJpZ2h0IGF0IGhlYWQgKHByb2dyZXNzPTEpLCB0cmFuc3BhcmVudCBhdCB0YWlsIChwcm9ncmVzcz0wKVxuICBmbG9hdCBhbHBoYSA9IHZfcHJvZ3Jlc3MgKiB2X3Byb2dyZXNzICogMC45O1xuICBmcmFnQ29sb3IgPSB2ZWM0KHVfY29sb3IsIGFscGhhKTtcbn1cbnx9XG5cbigqKiBTYXRlbGxpdGUvcHJlZGljdGlvbiBkb3Qgd2l0aCByYWRpYWwgZ2xvdy4gKilcbmxldCBkb3RfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudW5pZm9ybSBmbG9hdCB1X3BvaW50X3NpemU7XG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemU7XG59XG58fVxuXG5sZXQgZG90X2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjMyB1X2NvbG9yO1xudW5pZm9ybSBmbG9hdCB1X2FscGhhO1xub3V0IHZlYzQgZnJhZ0NvbG9yO1xudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGdsb3cgPSBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKTtcbiAgZnJhZ0NvbG9yID0gdmVjNCh1X2NvbG9yICogZ2xvdywgZ2xvdyAqIHVfYWxwaGEpO1xufVxufH1cblxuKCogLS0tIFR5cGVzIC0tLSAqKVxuXG50eXBlIGNvbG9yID0gZmxvYXQgKiBmbG9hdCAqIGZsb2F0XG5cbnR5cGUgdHJhaWwgPSB7XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV9wb2ludHMgOiBpbnQ7XG4gIGhlYWRfaWR4IDogaW50O1xuICBjb2xvciA6IGNvbG9yO1xufVxuKCoqIEEgdHJhaWw6IGFycmF5IG9mIHBvc2l0aW9ucyBvcmRlcmVkIHBhc3TihpJmdXR1cmUuIFtoZWFkX2lkeF0gbWFya3Mgd2hlcmUgdGhlXG4gICAgc2F0ZWxsaXRlIGN1cnJlbnRseSBpcyAoMC1iYXNlZCkuIFBvaW50cyBiZWZvcmUgaGVhZF9pZHggYXJlIHRoZSBwYXN0IHRyYWlsO1xuICAgIGFmdGVyIGFyZSB0aGUgcHJlZGljdGlvbi4gKilcblxudHlwZSBkb3QgPSB7IHBvcyA6IEdsb2JlLk1hdGguVmVjMy50OyBjb2xvciA6IGNvbG9yIH1cblxudHlwZSB0ID0ge1xuICB0cmFpbF9wcm9nIDogR2wucHJvZ3JhbTtcbiAgdHJhaWxfdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdHJhaWxfdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdHJhaWxfdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF9wcm9nIDogR2wucHJvZ3JhbTtcbiAgZG90X3VfcHJvaiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICBkb3RfdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X3NpemUgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICBkb3RfdV9hbHBoYSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIG11dGFibGUgZ2hvc3RzIDogdHJhaWwgbGlzdDtcbiAgbXV0YWJsZSB0cmFpbHMgOiB0cmFpbCBsaXN0O1xuICBkb3RfdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgZG90X3ZibyA6IEdsLmJ1ZmZlcjtcbn1cblxuKCogLS0tIEFQSSAtLS0gKilcblxubGV0IHYgZ2wgPVxuICBsZXQgdHJhaWxfcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OnRyYWlsX3ZlcnRleCB+ZnJhZzp0cmFpbF9mcmFnbWVudCBpblxuICBsZXQgZG90X3Byb2cgPSBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpkb3RfdmVydGV4IH5mcmFnOmRvdF9mcmFnbWVudCBpblxuICBsZXQgZG90X3ZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgbGV0IGRvdF92Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIGRvdF92YW8pO1xuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgZG90X3Zibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhX3NpemUgZ2wgR2wuYXJyYXlfYnVmZmVyIDEyIEdsLmR5bmFtaWNfZHJhdztcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAwIDA7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgcHJvZyA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIG5hbWUpIGluXG4gIHtcbiAgICB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIiB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfdmlldyA9IHUgXCJ1X3ZpZXdcIiB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfY29sb3IgPSB1IFwidV9jb2xvclwiIHRyYWlsX3Byb2c7XG4gICAgZG90X3Byb2c7XG4gICAgZG90X3VfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIiBkb3RfcHJvZztcbiAgICBkb3RfdV92aWV3ID0gdSBcInVfdmlld1wiIGRvdF9wcm9nO1xuICAgIGRvdF91X2NvbG9yID0gdSBcInVfY29sb3JcIiBkb3RfcHJvZztcbiAgICBkb3RfdV9zaXplID0gdSBcInVfcG9pbnRfc2l6ZVwiIGRvdF9wcm9nO1xuICAgIGdob3N0cyA9IFtdO1xuICAgIGRvdF91X2FscGhhID0gdSBcInVfYWxwaGFcIiBkb3RfcHJvZztcbiAgICB0cmFpbHMgPSBbXTtcbiAgICBkb3RfdmFvO1xuICAgIGRvdF92Ym87XG4gIH1cblxubGV0IGFkZF90cmFpbCBnbCB0IHBvc2l0aW9ucyB+aGVhZF9pZHggfmNvbG9yID1cbiAgbGV0IHZhbGlkID1cbiAgICBBcnJheS50b19saXN0IHBvc2l0aW9ucyB8PiBMaXN0LmZpbHRlcl9tYXAgRnVuLmlkIHw+IEFycmF5Lm9mX2xpc3RcbiAgaW5cbiAgbGV0IHRvdGFsID0gQXJyYXkubGVuZ3RoIHZhbGlkIGluXG4gIGlmIHRvdGFsID4gMCB0aGVuIGJlZ2luXG4gICAgKCogT25seSBrZWVwIHBvaW50cyB1cCB0byBhbmQgaW5jbHVkaW5nIGhlYWQg4oCUIG5vIHByZWRpY3Rpb24gKilcbiAgICBsZXQgbiA9IG1pbiAoaGVhZF9pZHggKyAxKSB0b3RhbCB8PiBtYXggMSBpblxuICAgIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDQpIDAuIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgPSB2YWxpZC4oaSkgaW5cbiAgICAgIGxldCBvZmYgPSBpICogNCBpblxuICAgICAgZGF0YS4ob2ZmKSA8LSB2Lng7XG4gICAgICBkYXRhLihvZmYgKyAxKSA8LSB2Lnk7XG4gICAgICBkYXRhLihvZmYgKyAyKSA8LSB2Lno7XG4gICAgICAoKiBwcm9ncmVzczogMC4wIGF0IHRhaWwg4oaSIDEuMCBhdCBoZWFkICopXG4gICAgICBkYXRhLihvZmYgKyAzKSA8LSBGbG9hdC5vZl9pbnQgaSAvLiBGbG9hdC5vZl9pbnQgKG1heCAxIChuIC0gMSkpXG4gICAgZG9uZTtcbiAgICBsZXQgYnVmID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gICAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLnN0YXRpY19kcmF3O1xuICAgICgqIHBvc2l0aW9uOiBsb2MgMCwgc3RyaWRlIDE2LCBvZmZzZXQgMCAqKVxuICAgIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gICAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAxNiAwO1xuICAgICgqIHByb2dyZXNzOiBsb2MgMSwgc3RyaWRlIDE2LCBvZmZzZXQgMTIgKilcbiAgICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICAgIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgICB0LnRyYWlscyA8LSB7IHZhbzsgbnVtX3BvaW50cyA9IG47IGhlYWRfaWR4ID0gbiAtIDE7IGNvbG9yIH0gOjogdC50cmFpbHNcbiAgZW5kXG5cbmxldCBhZGRfbGluZSBnbCB0IHBvc2l0aW9ucyB+Y29sb3IgPVxuICBsZXQgbiA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBwIC0+IGlmIE9wdGlvbi5pc19zb21lIHAgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICAgICAgMCBwb3NpdGlvbnNcbiAgaW5cbiAgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeDoobiAtIDEpIH5jb2xvclxuXG5sZXQgYWRkX2dob3N0IGdsIHQgcG9zaXRpb25zIH5jb2xvciA9XG4gIGFkZF90cmFpbCBnbCB0IHBvc2l0aW9ucyB+aGVhZF9pZHg6MCB+Y29sb3I7XG4gICgqIE1vdmUgdGhlIGxhc3QgYWRkZWQgdHJhaWwgZnJvbSB0cmFpbHMgdG8gZ2hvc3RzICopXG4gIG1hdGNoIHQudHJhaWxzIHdpdGhcbiAgfCBuZXdlc3QgOjogcmVzdCAtPlxuICAgICAgdC5naG9zdHMgPC0gbmV3ZXN0IDo6IHQuZ2hvc3RzO1xuICAgICAgdC50cmFpbHMgPC0gcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCBjbGVhcl90cmFpbHMgdCA9IHQudHJhaWxzIDwtIFtdXG5sZXQgY2xlYXJfZ2hvc3RzIHQgPSB0Lmdob3N0cyA8LSBbXVxuXG5sZXQgY2xlYXJfbGluZXMgdCA9XG4gIHQuZ2hvc3RzIDwtIFtdO1xuICB0LnRyYWlscyA8LSBbXVxuXG5sZXQgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgcG9zIH5jb2xvciB+c2l6ZSB+YWxwaGEgPVxuICBsZXQgYnVmID1cbiAgICBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzJcbiAgICAgIFt8IHBvcy5HbG9iZS5NYXRoLlZlYzMueDsgcG9zLnk7IHBvcy56IHxdXG4gIGluXG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB0LmRvdF92Ym8pO1xuICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLmR5bmFtaWNfZHJhdztcbiAgR2wudXNlX3Byb2dyYW0gZ2wgdC5kb3RfcHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC5kb3RfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQuZG90X3VfdmlldyBmYWxzZSB2dztcbiAgbGV0IHIsIGcsIGIgPSBjb2xvciBpblxuICBHbC51bmlmb3JtM2YgZ2wgdC5kb3RfdV9jb2xvciByIGcgYjtcbiAgR2wudW5pZm9ybTFmIGdsIHQuZG90X3Vfc2l6ZSBzaXplO1xuICBHbC51bmlmb3JtMWYgZ2wgdC5kb3RfdV9hbHBoYSBhbHBoYTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC5kb3RfdmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wucG9pbnRzIDAgMTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuXG5sZXQgZHJhd190cmFpbHMgZ2wgdCB+cHJvaiB+dncgdHJhaWxzID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAodHIgOiB0cmFpbCkgLT5cbiAgICAgIGxldCByLCBnLCBiID0gdHIuY29sb3IgaW5cbiAgICAgIEdsLnVuaWZvcm0zZiBnbCB0LnRyYWlsX3VfY29sb3IgciBnIGI7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0ci52YW8pO1xuICAgICAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZV9zdHJpcCAwIHRyLm51bV9wb2ludHM7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lKVxuICAgIHRyYWlsc1xuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3IH5kb3RzID1cbiAgbGV0IHByb2ogPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbiBpblxuICBsZXQgdncgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyBpblxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnRyYWlsX3Byb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV92aWV3IGZhbHNlIHZ3O1xuICAoKiBHaG9zdCBvcmJpdHMgZmlyc3QgKGJlaGluZCB0cmFpbHMpICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQuZ2hvc3RzO1xuICAoKiBBY3RpdmUgdHJhaWxzICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQudHJhaWxzO1xuICAoKiBTYXRlbGxpdGUgZG90cyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChkIDogZG90KSAtPlxuICAgICAgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgZC5wb3MgfmNvbG9yOmQuY29sb3IgfnNpemU6OC4wIH5hbHBoYToxLjApXG4gICAgZG90c1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnIiLCJCcnJfY2FudmFzIiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0FycmF5IiwiU3RkbGliIiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsImdsIiwidHJhaWxfcHJvZyIsImRvdF9wcm9nIiwiZG90X3ZhbyIsImRvdF92Ym8iLCJ1IiwibmFtZSIsInByb2ciLCJjc3RfdV9jb2xvciIsImNzdF91X3ZpZXciLCJjc3RfdV9wcm9qZWN0aW9uIiwiYWRkX3RyYWlsIiwidCIsInBvc2l0aW9ucyIsImhlYWRfaWR4IiwiY29sb3IiLCJ2YWxpZCIsInRvdGFsIiwibiIsImRhdGEiLCJpIiwib2ZmIiwiYnVmIiwidmFvIiwidmJvIiwiYWRkX2xpbmUiLCJhY2MiLCJwIiwiYWRkX2dob3N0IiwibWF0Y2giLCJyZXN0IiwibmV3ZXN0IiwiY2xlYXJfdHJhaWxzIiwiY2xlYXJfZ2hvc3RzIiwiY2xlYXJfbGluZXMiLCJkcmF3X2RvdCIsInByb2oiLCJ2dyIsInBvcyIsInNpemUiLCJhbHBoYSIsImIiLCJnIiwiciIsImRyYXdfdHJhaWxzIiwidHJhaWxzIiwidHIiLCJkcmF3IiwicHJvamVjdGlvbiIsInZpZXciLCJkb3RzIiwiZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFB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QUFjO0FBQUEsWUFBQXNCLFlBQUF0QixHQUdqQyxXQUNBLG9CQUFjO0FBQUEsWUFBQXVCLFNBQUFuQyxJQUFBWSxHQUFBd0IsTUFBQUMsSUFBQUMsS0FBQXZCLE9BQUF3QixNQUFBQztBQUFBQSxRQUFBbEIsTUFJWjtBQUFBLElBR0Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxRQUFBbUIsSUFBNkMsVUFBQUMsSUFBQSxVQUFBQyxJQUFBO0FBQUEsSUFFN0M7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBK0IsMkNBQ0g7QUFBQTtBQUFBLFlBQUFDLFlBQUE1QyxJQUFBWSxHQUFBd0IsTUFBQUMsSUFBQVE7QUFBQUEsSUFHNUI7QUFBQTtBQUFBLHNCQUFBQztBQUFBQSxrQkFBQWpCLFFBRUksT0FBQVksSUFBQSxVQUFBQyxJQUFBLFVBQUFDLElBQUE7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQ0E7QUFBQSxjQUErQywyQ0FDbkI7QUFBQTtBQUFBLG9CQUN4QjtBQUFBO0FBQUEsWUFBQUksS0FBQS9DLElBQUFZLEdBQUFvQyxZQUFBQyxNQUFBQztBQUFBQTtBQUFBQSxLQUFBZCxPQUdHO0FBQUEsS0FBQUMsS0FDRjtBQUFBLElBQ1Q7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBRUE7QUFBQSxJQUVBO0FBQUEsSUFBbUM7QUFBQTtBQUFBLHNCQUFBYztBQUFBQSxjQUkvQixvREFBaUU7QUFBQTtBQUFBLGtCQUMvRDtBQUFBO0FBQUEsR0Q1T1IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTkwMSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvc2NlbmUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogR2xvYmUgc2NlbmU6IGNhbnZhcyBzZXR1cCwgc2F0ZWxsaXRlIG1hbmFnZW1lbnQsIGxheWVyIGNvbXBvc2l0aW5nLlxuXG4gICAgT3ducyB0aGUgc2F0ZWxsaXRlIGxpc3QgYW5kIGhhbmRsZXMgZ2hvc3QvdHJhaWwvZG90IGxpZmVjeWNsZSBpbnRlcm5hbGx5LlxuICAgIFRoZSBjbGllbnQganVzdCBjYWxscyB7IXNldF9zYXRlbGxpdGVzfSBhbmQgeyF1cGRhdGVfdGltZX0uICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgQ2FudmFzICsgR0wgc2V0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSBmcmFtZSA9IHtcbiAgcHJvamVjdGlvbiA6IGZsb2F0IGFycmF5O1xuICB2aWV3IDogZmxvYXQgYXJyYXk7XG4gIHdpZHRoIDogaW50O1xuICBoZWlnaHQgOiBpbnQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgZ2wgOiBHbC50O1xuICBjYW52YXNfZWwgOiBFbC50O1xuICBjYW1lcmEgOiBDYW1lcmEudDtcbiAgZWFydGggOiBFYXJ0aC50O1xuICBzdGFycyA6IFN0YXJzLnQ7XG4gIG11dGFibGUgZ3JpZCA6IEdyaWQudCBvcHRpb247XG4gIG9yYml0IDogT3JiaXQudDtcbiAgY292ZXJhZ2UgOiBDb3ZlcmFnZS50O1xuICBtdXRhYmxlIHNhdGVsbGl0ZXMgOiBHbG9iZS5TYXRlbGxpdGUudCBsaXN0O1xuICBtdXRhYmxlIGN1cnJlbnRfdW5peCA6IGZsb2F0O1xuICBtdXRhYmxlIGhvdmVyZWQgOiBpbnQgb3B0aW9uO1xuICBtdXRhYmxlIGxhc3RfZnJhbWUgOiBmcmFtZSBvcHRpb247XG59XG5cbmxldCB2ID8obnVtX3BvaW50cyA9IDMwMDAwKSA/KGdyaWRfc3BhY2luZyA9IDMwLikgY2FudmFzX2VsID1cbiAgbGV0IGNhbnZhcyA9IENhbnZhcy5vZl9lbCBjYW52YXNfZWwgaW5cbiAgbGV0IGdsID1cbiAgICBtYXRjaCBHbC5nZXRfY29udGV4dCBjYW52YXMgd2l0aFxuICAgIHwgU29tZSBnbCAtPiBnbFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIldlYkdMMiBub3Qgc3VwcG9ydGVkXCJcbiAgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgbGV0IHcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiaW5uZXJXaWR0aFwiIHw+IEp2LnRvX2ludCBpblxuICAgIGxldCBoID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImlubmVySGVpZ2h0XCIgfD4gSnYudG9faW50IGluXG4gICAgRWwuc2V0X2F0IChKc3RyLm9mX3N0cmluZyBcIndpZHRoXCIpIChTb21lIChKc3RyLm9mX2ludCB3KSkgY2FudmFzX2VsO1xuICAgIEVsLnNldF9hdCAoSnN0ci5vZl9zdHJpbmcgXCJoZWlnaHRcIikgKFNvbWUgKEpzdHIub2ZfaW50IGgpKSBjYW52YXNfZWw7XG4gICAgR2wudmlld3BvcnQgZ2wgMCAwIHcgaFxuICBpblxuICByZXNpemUgKCk7XG4gIGlnbm9yZSAoRXYubGlzdGVuIEV2LnJlc2l6ZSAoZnVuIF9ldiAtPiByZXNpemUgKCkpIEcudGFyZ2V0KTtcbiAgbGV0IGNhbWVyYSA9IENhbWVyYS52ICgpIGluXG4gIENhbWVyYS5hdHRhY2hfZXZlbnRzIGNhbWVyYSBjYW52YXNfZWw7XG4gIEdsLmVuYWJsZSBnbCBHbC5ibGVuZDtcbiAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lX21pbnVzX3NyY19hbHBoYTtcbiAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gIEdsLmNsZWFyX2NvbG9yIGdsIDAuMCAwLjAgMC4wMiAxLjA7XG4gIHtcbiAgICBnbDtcbiAgICBjYW52YXNfZWw7XG4gICAgY2FtZXJhO1xuICAgIGVhcnRoID0gRWFydGgudiB+bnVtX3BvaW50cyBnbDtcbiAgICBzdGFycyA9IFN0YXJzLnYgZ2w7XG4gICAgZ3JpZCA9IFNvbWUgKEdyaWQudiB+c3BhY2luZzpncmlkX3NwYWNpbmcgZ2wpO1xuICAgIG9yYml0ID0gT3JiaXQudiBnbDtcbiAgICBjb3ZlcmFnZSA9IENvdmVyYWdlLnYgZ2w7XG4gICAgc2F0ZWxsaXRlcyA9IFtdO1xuICAgIGN1cnJlbnRfdW5peCA9IDAuO1xuICAgIGhvdmVyZWQgPSBOb25lO1xuICAgIGxhc3RfZnJhbWUgPSBOb25lO1xuICB9XG5cbmxldCBnbCB0ID0gdC5nbFxubGV0IGNhbWVyYSB0ID0gdC5jYW1lcmFcbmxldCBvcmJpdCB0ID0gdC5vcmJpdFxubGV0IGNvdmVyYWdlIHQgPSB0LmNvdmVyYWdlXG5sZXQgc2F0ZWxsaXRlcyB0ID0gdC5zYXRlbGxpdGVzXG5sZXQgc2V0X2dyaWRfc3BhY2luZyB0IHNwYWNpbmcgPSB0LmdyaWQgPC0gU29tZSAoR3JpZC52IH5zcGFjaW5nIHQuZ2wpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFNhdGVsbGl0ZSBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBzZXRfc2F0ZWxsaXRlcyB0IHNhdHMgPVxuICB0LnNhdGVsbGl0ZXMgPC0gc2F0cztcbiAgT3JiaXQuY2xlYXJfbGluZXMgdC5vcmJpdDtcbiAgTGlzdC5pdGVyXG4gICAgKGZ1biBzYXQgLT5cbiAgICAgIE9yYml0LmFkZF9naG9zdCB0LmdsIHQub3JiaXRcbiAgICAgICAgKEdsb2JlLlNhdGVsbGl0ZS5naG9zdF9wb2ludHMgc2F0KVxuICAgICAgICB+Y29sb3I6R2xvYmUuQ29sb3IuZ2hvc3QpXG4gICAgc2F0c1xuXG5sZXQgc2F0X2R0IHNhdCBjdXJyZW50X3VuaXggPSBjdXJyZW50X3VuaXggLS4gR2xvYmUuU2F0ZWxsaXRlLmVwb2NoX3VuaXggc2F0XG5cbmxldCBjYW1lcmFfcG9zaXRpb24gKGNhbSA6IENhbWVyYS50KSA9XG4gIGxldCBkID0gY2FtLmRpc3RhbmNlIGluXG4gIGxldCB0aGV0YSA9IGNhbS50aGV0YSBhbmQgcGhpID0gY2FtLnBoaSBpblxuICBHbG9iZS5NYXRoLlZlYzMuY3JlYXRlXG4gICAgKGQgKi4gc2luIHRoZXRhICouIGNvcyBwaGkpXG4gICAgKGQgKi4gY29zIHRoZXRhKVxuICAgIChkICouIHNpbiB0aGV0YSAqLiBzaW4gcGhpKVxuXG5sZXQgdXBkYXRlX3RpbWUgdCBjdXJyZW50X3VuaXggPVxuICB0LmN1cnJlbnRfdW5peCA8LSBjdXJyZW50X3VuaXg7XG4gIGxldCBjYW1lcmFfcG9zID0gY2FtZXJhX3Bvc2l0aW9uIHQuY2FtZXJhIGluXG4gICgqIENvbXB1dGUgcG9zaXRpb25zICsgTE9EIGZvciBhbGwgc2F0ZWxsaXRlcyAqKVxuICBsZXQgc2F0X3Bvc2l0aW9ucyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gc2F0IC0+XG4gICAgICAgIGxldCBkdCA9IHNhdF9kdCBzYXQgY3VycmVudF91bml4IGluXG4gICAgICAgIChzYXQsIEdsb2JlLlNhdGVsbGl0ZS5wb3NpdGlvbl9hdCBzYXQgfmR0KSlcbiAgICAgIHQuc2F0ZWxsaXRlc1xuICBpblxuICBsZXQgcG9zaXRpb25zID0gTGlzdC5tYXAgc25kIHNhdF9wb3NpdGlvbnMgaW5cbiAgbGV0IGZ1bGwsIGRvdF9vbmx5LCBfaGlkZGVuID1cbiAgICBHbG9iZS5WaXNpYmlsaXR5LnBhcnRpdGlvbl9ieV9sb2QgfmNhbWVyYV9wb3MgcG9zaXRpb25zXG4gIGluXG4gICgqIFRyYWlscyBvbmx5IGZvciBGdWxsIExPRCBzYXRlbGxpdGVzICopXG4gIE9yYml0LmNsZWFyX3RyYWlscyB0Lm9yYml0O1xuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChpZHgsIF9wb3MpIC0+XG4gICAgICBsZXQgc2F0ID0gZnN0IChMaXN0Lm50aCBzYXRfcG9zaXRpb25zIGlkeCkgaW5cbiAgICAgIGxldCBkdCA9IHNhdF9kdCBzYXQgY3VycmVudF91bml4IGluXG4gICAgICBsZXQgdHJhaWwgPSBHbG9iZS5TYXRlbGxpdGUudHJhaWxfcG9zaXRpb25zIHNhdCB+ZHQgaW5cbiAgICAgIE9yYml0LmFkZF90cmFpbCB0LmdsIHQub3JiaXQgdHJhaWxcbiAgICAgICAgfmhlYWRfaWR4OihBcnJheS5sZW5ndGggdHJhaWwgLSAxKVxuICAgICAgICB+Y29sb3I6KEdsb2JlLlNhdGVsbGl0ZS5jb2xvciBzYXQpKVxuICAgIGZ1bGw7XG4gICgqIEFsc28gYWRkIHNob3J0IHRyYWlscyBmb3IgZG90X29ubHkgKGp1c3QgMyBwb2ludHMgZm9yIGRpcmVjdGlvbikgKilcbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoaWR4LCBfcG9zKSAtPlxuICAgICAgbGV0IHNhdCA9IGZzdCAoTGlzdC5udGggc2F0X3Bvc2l0aW9ucyBpZHgpIGluXG4gICAgICBsZXQgZHQgPSBzYXRfZHQgc2F0IGN1cnJlbnRfdW5peCBpblxuICAgICAgbGV0IHRyYWlsID0gR2xvYmUuU2F0ZWxsaXRlLnRyYWlsX3Bvc2l0aW9ucyBzYXQgfmR0IGluXG4gICAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB0cmFpbCBpblxuICAgICAgaWYgbiA+IDMgdGhlbiBiZWdpblxuICAgICAgICBsZXQgc2hvcnQgPSBBcnJheS5zdWIgdHJhaWwgKG4gLSAzKSAzIGluXG4gICAgICAgIE9yYml0LmFkZF90cmFpbCB0LmdsIHQub3JiaXQgc2hvcnQgfmhlYWRfaWR4OjJcbiAgICAgICAgICB+Y29sb3I6KEdsb2JlLlNhdGVsbGl0ZS5jb2xvciBzYXQpXG4gICAgICBlbmQpXG4gICAgZG90X29ubHk7XG4gICgqIENvdmVyYWdlIGZvb3RwcmludHMgZm9yIHZpc2libGUgc2F0ZWxsaXRlcyAqKVxuICBsZXQgdmlzaWJsZV9pbmRpY2VzID0gTGlzdC5tYXAgZnN0IGZ1bGwgQCBMaXN0Lm1hcCBmc3QgZG90X29ubHkgaW5cbiAgbGV0IGZvb3RwcmludHMgPVxuICAgIExpc3QuZmlsdGVyX21hcFxuICAgICAgKGZ1biBpZHggLT5cbiAgICAgICAgbGV0IHNhdCwgcG9zID0gTGlzdC5udGggc2F0X3Bvc2l0aW9ucyBpZHggaW5cbiAgICAgICAgbGV0IHIgPSBHbG9iZS5NYXRoLlZlYzMubGVuZ3RoIHBvcyBpblxuICAgICAgICBpZiByIDwgMS4wMSB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhbHRfa20gPSAociAtLiAxLikgKi4gQ29vcmRpbmF0ZS5lYXJ0aF9yYWRpdXMgaW5cbiAgICAgICAgICBsZXQgYW5nbGUgPVxuICAgICAgICAgICAgR2xvYmUuR2VvbWV0cnkuZm9vdHByaW50X2FuZ2xlIH5hbHRpdHVkZTphbHRfa20gfm1pbl9lbGV2YXRpb246MC5cbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIENvdmVyYWdlLlxuICAgICAgICAgICAgICB7IHBvczsgY29sb3IgPSBHbG9iZS5TYXRlbGxpdGUuY29sb3Igc2F0OyBoYWxmX2FuZ2xlID0gYW5nbGUgfSlcbiAgICAgIHZpc2libGVfaW5kaWNlc1xuICBpblxuICBDb3ZlcmFnZS5sb2FkIHQuZ2wgdC5jb3ZlcmFnZSBmb290cHJpbnRzXG5cbmxldCBzYXRlbGxpdGVfZG90cyB0ID1cbiAgbGV0IGNhbWVyYV9wb3MgPSBjYW1lcmFfcG9zaXRpb24gdC5jYW1lcmEgaW5cbiAgTGlzdC5maWx0ZXJfbWFwXG4gICAgKGZ1biBzYXQgLT5cbiAgICAgIGxldCBkdCA9IHNhdF9kdCBzYXQgdC5jdXJyZW50X3VuaXggaW5cbiAgICAgIGxldCBwb3MsIGNvbG9yID0gR2xvYmUuU2F0ZWxsaXRlLmRvdCBzYXQgfmR0IGluXG4gICAgICBtYXRjaCBHbG9iZS5WaXNpYmlsaXR5LmxvZCB+Y2FtZXJhX3BvcyBwb3Mgd2l0aFxuICAgICAgfCBHbG9iZS5WaXNpYmlsaXR5LkhpZGRlbiAtPiBOb25lXG4gICAgICB8IF8gLT4gU29tZSBPcmJpdC57IHBvczsgY29sb3IgfSlcbiAgICB0LnNhdGVsbGl0ZXNcblxubGV0IHNhdGVsbGl0ZV9wb3NpdGlvbnMgdCA9XG4gIExpc3QubWFwXG4gICAgKGZ1biBzYXQgLT5cbiAgICAgIGxldCBkdCA9IHNhdF9kdCBzYXQgdC5jdXJyZW50X3VuaXggaW5cbiAgICAgIEdsb2JlLlNhdGVsbGl0ZS5wb3NpdGlvbl9hdCBzYXQgfmR0KVxuICAgIHQuc2F0ZWxsaXRlc1xuXG5sZXQgYmVnaW5fZnJhbWUgdCA/KHByb2plY3Rpb25fb2Zmc2V0ID0gMC4pIGR0ID1cbiAgQ2FtZXJhLnVwZGF0ZSB0LmNhbWVyYSBkdDtcbiAgbGV0IHcgPSBHbC5kcmF3aW5nX2J1ZmZlcl93aWR0aCB0LmdsIGluXG4gIGxldCBoID0gR2wuZHJhd2luZ19idWZmZXJfaGVpZ2h0IHQuZ2wgaW5cbiAgbGV0IGFzcGVjdCA9IEZsb2F0Lm9mX2ludCB3IC8uIEZsb2F0Lm1heCAxLiAoRmxvYXQub2ZfaW50IGgpIGluXG4gIGxldCBwcm9qID1cbiAgICBHbG9iZS5NYXRoLk1hdDQucGVyc3BlY3RpdmUgfmZvdnk6KEZsb2F0LnBpIC8uIDQuKSB+YXNwZWN0IH5uZWFyOjAuMVxuICAgICAgfmZhcjoxMDAuXG4gIGluXG4gIGlmIHByb2plY3Rpb25fb2Zmc2V0IDw+IDAuIHRoZW4gcHJvai4oMTIpIDwtIHByb2plY3Rpb25fb2Zmc2V0O1xuICBsZXQgcHJvamVjdGlvbiA9IEdsb2JlLk1hdGguTWF0NC50b19mbG9hdF9hcnJheSBwcm9qIGluXG4gIGxldCB2aWV3ID0gR2xvYmUuTWF0aC5NYXQ0LnRvX2Zsb2F0X2FycmF5IChDYW1lcmEudmlld19tYXRyaXggdC5jYW1lcmEpIGluXG4gIEdsLmNsZWFyIHQuZ2wgKEdsLmNvbG9yX2J1ZmZlcl9iaXQgbG9yIEdsLmRlcHRoX2J1ZmZlcl9iaXQpO1xuICBsZXQgZnJhbWUgPSB7IHByb2plY3Rpb247IHZpZXc7IHdpZHRoID0gdzsgaGVpZ2h0ID0gaCB9IGluXG4gIHQubGFzdF9mcmFtZSA8LSBTb21lIGZyYW1lO1xuICBmcmFtZVxuXG5sZXQgcHJvamVjdGlvbiBmID0gZi5wcm9qZWN0aW9uXG5sZXQgdmlldyBmID0gZi52aWV3XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIExheWVyIGRyYXdpbmcgd2l0aCBjb3JyZWN0IGNvbXBvc2l0aW5nIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbnR5cGUgbGF5ZXJzID0ge1xuICBzaG93X3N0YXJzIDogYm9vbDtcbiAgc2hvd19lYXJ0aCA6IGJvb2w7XG4gIHNob3dfZ3JpZCA6IGJvb2w7XG4gIHNob3dfb3JiaXRzIDogYm9vbDtcbiAgc2hvd19jb3ZlcmFnZSA6IGJvb2w7XG4gIGVhcnRoX2RpbSA6IGZsb2F0O1xuICBncmlkX2NvbG9yIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0O1xuICBncmlkX2FscGhhIDogZmxvYXQ7XG4gIGNvdmVyYWdlX2ludGVuc2l0eSA6IGZsb2F0O1xuICBjdXN0b20gOiAocHJvamVjdGlvbjpmbG9hdCBhcnJheSAtPiB2aWV3OmZsb2F0IGFycmF5IC0+IHVuaXQpIGxpc3Q7XG59XG5cbmxldCBkZWZhdWx0X2xheWVycyA9XG4gIHtcbiAgICBzaG93X3N0YXJzID0gdHJ1ZTtcbiAgICBzaG93X2VhcnRoID0gdHJ1ZTtcbiAgICBzaG93X2dyaWQgPSBmYWxzZTtcbiAgICBzaG93X29yYml0cyA9IGZhbHNlO1xuICAgIHNob3dfY292ZXJhZ2UgPSBmYWxzZTtcbiAgICBlYXJ0aF9kaW0gPSAxLjA7XG4gICAgZ3JpZF9jb2xvciA9ICgwLjE1LCAwLjM1LCAwLjUpO1xuICAgIGdyaWRfYWxwaGEgPSAwLjM7XG4gICAgY292ZXJhZ2VfaW50ZW5zaXR5ID0gMC40O1xuICAgIGN1c3RvbSA9IFtdO1xuICB9XG5cbmxldCBkcmF3IHQgZnJhbWUgbGF5ZXJzID1cbiAgbGV0IGdsID0gdC5nbCBpblxuICBsZXQgcCA9IGZyYW1lLnByb2plY3Rpb24gYW5kIHYgPSBmcmFtZS52aWV3IGluXG4gIGlmIGxheWVycy5zaG93X3N0YXJzIHRoZW4gYmVnaW5cbiAgICBHbC5kaXNhYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gICAgU3RhcnMuZHJhdyBnbCB0LnN0YXJzIH5wcm9qZWN0aW9uOnAgfnZpZXc6djtcbiAgICBHbC5lbmFibGUgZ2wgR2wuZGVwdGhfdGVzdFxuICBlbmQ7XG4gIGlmIGxheWVycy5zaG93X2VhcnRoIHRoZW5cbiAgICBFYXJ0aC5kcmF3IGdsIHQuZWFydGggfnByb2plY3Rpb246cCB+dmlldzp2IH5kaW06bGF5ZXJzLmVhcnRoX2RpbSAoKTtcbiAgKGlmIGxheWVycy5zaG93X2dyaWQgdGhlblxuICAgICBtYXRjaCB0LmdyaWQgd2l0aFxuICAgICB8IFNvbWUgZ3JpZCAtPlxuICAgICAgICAgR3JpZC5kcmF3IGdsIGdyaWQgfnByb2plY3Rpb246cCB+dmlldzp2IH5jb2xvcjpsYXllcnMuZ3JpZF9jb2xvclxuICAgICAgICAgICB+YWxwaGE6bGF5ZXJzLmdyaWRfYWxwaGEgKClcbiAgICAgfCBOb25lIC0+ICgpKTtcbiAgaWYgbGF5ZXJzLnNob3dfb3JiaXRzIHRoZW4gYmVnaW5cbiAgICBsZXQgZG90cyA9IHNhdGVsbGl0ZV9kb3RzIHQgaW5cbiAgICBPcmJpdC5kcmF3IGdsIHQub3JiaXQgfnByb2plY3Rpb246cCB+dmlldzp2IH5kb3RzO1xuICAgICgqIERyYXcgaG92ZXJlZCBzYXRlbGxpdGUgbGFyZ2VyICopXG4gICAgbWF0Y2ggdC5ob3ZlcmVkIHdpdGhcbiAgICB8IFNvbWUgaWR4IC0+IChcbiAgICAgICAgbWF0Y2ggTGlzdC5udGhfb3B0IChzYXRlbGxpdGVfcG9zaXRpb25zIHQpIGlkeCB3aXRoXG4gICAgICAgIHwgU29tZSBwb3MgLT5cbiAgICAgICAgICAgIGxldCBjb2xvciA9XG4gICAgICAgICAgICAgIG1hdGNoIExpc3QubnRoX29wdCB0LnNhdGVsbGl0ZXMgaWR4IHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHNhdCAtPiBHbG9iZS5TYXRlbGxpdGUuY29sb3Igc2F0XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBHbG9iZS5Db2xvci53aGl0ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE9yYml0LmRyYXdfZG90IGdsIHQub3JiaXRcbiAgICAgICAgICAgICAgfnByb2o6KFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwKVxuICAgICAgICAgICAgICB+dnc6KFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2KVxuICAgICAgICAgICAgICBwb3MgfmNvbG9yIH5zaXplOjE0LjAgfmFscGhhOjEuMFxuICAgICAgICB8IE5vbmUgLT4gKCkpXG4gICAgfCBOb25lIC0+ICgpXG4gIGVuZDtcbiAgTGlzdC5pdGVyIChmdW4gZiAtPiBmIH5wcm9qZWN0aW9uOnAgfnZpZXc6dikgbGF5ZXJzLmN1c3RvbTtcbiAgaWYgbGF5ZXJzLnNob3dfY292ZXJhZ2UgdGhlblxuICAgIENvdmVyYWdlLmRyYXcgZ2wgdC5jb3ZlcmFnZSB+cHJvamVjdGlvbjpwIH52aWV3OnZcbiAgICAgIH5pbnRlbnNpdHk6bGF5ZXJzLmNvdmVyYWdlX2ludGVuc2l0eSAoKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBQaWNraW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgcGljayB0IGZyYW1lIH5zY3JlZW5feCB+c2NyZWVuX3kgPVxuICBtYXRjaFxuICAgIEdsb2JlLlJheWNhc3QucmF5X2Zyb21fc2NyZWVuIH5zY3JlZW5feCB+c2NyZWVuX3kgfndpZHRoOmZyYW1lLndpZHRoXG4gICAgICB+aGVpZ2h0OmZyYW1lLmhlaWdodCB+cHJvamVjdGlvbjpmcmFtZS5wcm9qZWN0aW9uIH52aWV3OmZyYW1lLnZpZXdcbiAgd2l0aFxuICB8IE5vbmUgLT4gYE1pc3NcbiAgfCBTb21lIHJheSAtPiAoXG4gICAgICBsZXQgcG9zaXRpb25zID0gc2F0ZWxsaXRlX3Bvc2l0aW9ucyB0IGluXG4gICAgICBtYXRjaCBHbG9iZS5SYXljYXN0LnBpY2tfbmVhcmVzdCByYXkgcG9zaXRpb25zIH50aHJlc2hvbGQ6MC4wNSB3aXRoXG4gICAgICB8IFNvbWUgaGl0IC0+IGBTYXRlbGxpdGUgaGl0Lkdsb2JlLlJheWNhc3QuaW5kZXhcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggR2xvYmUuUmF5Y2FzdC5waWNrX2VhcnRoIHJheSB3aXRoXG4gICAgICAgICAgfCBTb21lIHBvcyAtPiBgRWFydGggcG9zXG4gICAgICAgICAgfCBOb25lIC0+IGBNaXNzKSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgWm9vbSArIGhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHpvb21fdG9fc2F0ZWxsaXRlIHQgaWR4ID1cbiAgbWF0Y2ggTGlzdC5udGhfb3B0IHQuc2F0ZWxsaXRlcyBpZHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNhdCAtPlxuICAgICAgbGV0IGR0ID0gdC5jdXJyZW50X3VuaXggLS4gdC5jdXJyZW50X3VuaXggaW5cbiAgICAgIGxldCBwb3MgPSBHbG9iZS5TYXRlbGxpdGUucG9zaXRpb25fYXQgc2F0IH5kdCBpblxuICAgICAgQ2FtZXJhLmxvb2tfYXRfcG9zaXRpb24gdC5jYW1lcmEgcG9zO1xuICAgICAgdC5jYW1lcmEuZGlzdGFuY2UgPC0gMi4wXG5cbmxldCB6b29tX3RvX3Bvc2l0aW9uIHQgcG9zID1cbiAgQ2FtZXJhLmxvb2tfYXRfcG9zaXRpb24gdC5jYW1lcmEgcG9zO1xuICB0LmNhbWVyYS5kaXN0YW5jZSA8LSAyLjBcblxubGV0IGhvdmVyZWQgdCA9IHQuaG92ZXJlZFxuXG5sZXQgdXBkYXRlX2hvdmVyIHQgfnNjcmVlbl94IH5zY3JlZW5feSA9XG4gIG1hdGNoIHQubGFzdF9mcmFtZSB3aXRoXG4gIHwgTm9uZSAtPiB0LmhvdmVyZWQgPC0gTm9uZVxuICB8IFNvbWUgZnJhbWUgLT4gKFxuICAgICAgbWF0Y2hcbiAgICAgICAgR2xvYmUuUmF5Y2FzdC5yYXlfZnJvbV9zY3JlZW4gfnNjcmVlbl94IH5zY3JlZW5feSB+d2lkdGg6ZnJhbWUud2lkdGhcbiAgICAgICAgICB+aGVpZ2h0OmZyYW1lLmhlaWdodCB+cHJvamVjdGlvbjpmcmFtZS5wcm9qZWN0aW9uIH52aWV3OmZyYW1lLnZpZXdcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0LmhvdmVyZWQgPC0gTm9uZVxuICAgICAgfCBTb21lIHJheSAtPlxuICAgICAgICAgIGxldCBwb3NpdGlvbnMgPSBzYXRlbGxpdGVfcG9zaXRpb25zIHQgaW5cbiAgICAgICAgICB0LmhvdmVyZWQgPC1cbiAgICAgICAgICAgIChtYXRjaCBHbG9iZS5SYXljYXN0LnBpY2tfbmVhcmVzdCByYXkgcG9zaXRpb25zIH50aHJlc2hvbGQ6MC4wOCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaGl0IC0+IFNvbWUgaGl0Lkdsb2JlLlJheWNhc3QuaW5kZXhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKSlcblxubGV0IGNsaWNrIHQgfnNjcmVlbl94IH5zY3JlZW5feSA9XG4gIG1hdGNoIHQubGFzdF9mcmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBgTWlzc1xuICB8IFNvbWUgZnJhbWUgLT4gKFxuICAgICAgbWF0Y2ggcGljayB0IGZyYW1lIH5zY3JlZW5feCB+c2NyZWVuX3kgd2l0aFxuICAgICAgfCBgU2F0ZWxsaXRlIGlkeCAtPlxuICAgICAgICAgIHpvb21fdG9fc2F0ZWxsaXRlIHQgaWR4O1xuICAgICAgICAgIGBTYXRlbGxpdGUgaWR4XG4gICAgICB8IGBFYXJ0aCBwb3MgLT5cbiAgICAgICAgICB6b29tX3RvX3Bvc2l0aW9uIHQgcG9zO1xuICAgICAgICAgIGBFYXJ0aCBwb3NcbiAgICAgIHwgYE1pc3MgLT4gYE1pc3MpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJnbG9iYWxfZGF0YSIsIkdsb2JlX1JheWNhc3QiLCJHbG9iZV93ZWJnbF9DYW1lcmEiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX1NhdGVsbGl0ZSIsIkJycl9jYW52YXMiLCJHbG9iZV93ZWJnbF9TdGFycyIsIkdsb2JlX3dlYmdsX0VhcnRoIiwiR2xvYmVfd2ViZ2xfR3JpZCIsIkdsb2JlX3dlYmdsX09yYml0IiwiR2xvYmVfQ29sb3IiLCJCcnIiLCJHbG9iZV93ZWJnbF9Db3ZlcmFnZSIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX01hdGgiLCJHbG9iZV9WaXNpYmlsaXR5IiwiQ29vcmRpbmF0ZSIsIkdsb2JlX0dlb21ldHJ5IiwiU3RkbGliX0FycmF5IiwiU3RkbGliIiwiSnYiLCJKc3RyIiwidiIsIm9wdCIsImNhbnZhc19lbCIsIm51bV9wb2ludHMiLCJncmlkX3NwYWNpbmciLCJjYW52YXMiLCJtYXRjaCIsImdsIiwicmVzaXplIiwicGFyYW0iLCJ3IiwiaCIsImV2IiwiY2FtZXJhIiwidCIsIm9yYml0IiwiY292ZXJhZ2UiLCJzYXRlbGxpdGVzIiwic2V0X2dyaWRfc3BhY2luZyIsInNwYWNpbmciLCJzZXRfc2F0ZWxsaXRlcyIsInNhdHMiLCJzYXQiLCJzYXRfZHQiLCJjdXJyZW50X3VuaXgiLCJjYW1lcmFfcG9zaXRpb24iLCJjYW0iLCJkIiwidGhldGEiLCJwaGkiLCJ1cGRhdGVfdGltZSIsImNhbWVyYV9wb3MiLCJzYXRfcG9zaXRpb25zIiwiZHQiLCJwb3NpdGlvbnMiLCJkb3Rfb25seSIsImZ1bGwiLCJpZHgiLCJ0cmFpbCIsIm4iLCJzaG9ydCIsInZpc2libGVfaW5kaWNlcyIsImZvb3RwcmludHMiLCJwb3MiLCJyIiwiYWx0X2ttIiwiYW5nbGUiLCJzYXRlbGxpdGVfcG9zaXRpb25zIiwiYmVnaW5fZnJhbWUiLCJwcm9qZWN0aW9uX29mZnNldCIsImFzcGVjdCIsInByb2oiLCJwcm9qZWN0aW9uIiwidmlldyIsImZyYW1lIiwiZHJhdyIsImxheWVycyIsInAiLCJncmlkIiwiZG90cyIsImNvbG9yIiwicGljayIsInNjcmVlbl94Iiwic2NyZWVuX3kiLCJyYXkiLCJoaXQiLCJ6b29tX3RvX3NhdGVsbGl0ZSIsInpvb21fdG9fcG9zaXRpb24iLCJob3ZlcmVkIiwidXBkYXRlX2hvdmVyIiwiY2xpY2siLCJ2YXJpYW50Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLFlBQUFDLEVBQUEsR0FBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsYUN1Q007QUFBQSxLQUFBQyxlQUFBO0FBQUEsS0FBQUMsU0FDUztBQUFB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MEQsTUFGNEQ7QUFBQSxLQUFBOUIsWUFJbEQ7QUFBQSxLQUFBNUIsVUFFUDtBQUFBLElBQXdELGdCQUFBMkQsTUFBQSxnQkFDakQsMEJBQ0o7QUFBQSxJQUZxRDtBQUFBO0FBQUEsR0FFL0M7QUFBQSxZQUFBSyxNQUFBeEQsR0FBQWdELFVBQUFDO0FBQUFBLFFBQUF6RCxRQUcxQjtBQUFBLGdCQUNVO0FBQUEsUUFBQWdELFFBRFYsVUFBQWhELFVBR1U7QUFBQSxJQUFnQyxnQ0FPM0I7QUFBQSxRQUFBaUUsVUFQMkI7QUFBQTtBQUFBLFNBQUE1QixNQUFBO0FBQUEsS0FLbEM7QUFBQSxLQUFzQjtBQUFBO0FBQUEsUUFBQU4sTUFMWTtBQUFBLElBRWxDO0FBQUEsSUFBdUI7QUFBQSxHQUtWO0FBQUEsR0RyVnZCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDIyOTMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9zaWduYWwvU2lnbmFsLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIExpc3RfZXh0ID0gc3RydWN0XG4gIGxldCBtZW0gPyhlcSA9IFN0ZGxpYi4oID0gKSkgeCBsID1cbiAgICBsZXQgcmVjIHNlYXJjaCBlcSB4IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGZhbHNlIHwgeSA6OiBsJyAtPiBlcSB4IHkgfHwgc2VhcmNoIGVxIHggbCdcbiAgICBpblxuICAgIHNlYXJjaCBlcSB4IGxcblxuICBsZXQgcmVtb3ZlX29uZSB+ZXEgeCBsID1cbiAgICBsZXQgcmVjIHJlbW92ZV9vbmUgfmVxIHggYWNjIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCB5IDo6IHRsIHdoZW4gZXEgeCB5IC0+ICh5LCBMaXN0LnJldl9hcHBlbmQgYWNjIHRsKVxuICAgICAgfCB5IDo6IHRsIC0+IHJlbW92ZV9vbmUgfmVxIHggKHkgOjogYWNjKSB0bFxuICAgIGluXG4gICAgaWYgbWVtIH5lcSB4IGwgdGhlbiByZW1vdmVfb25lIH5lcSB4IFtdIGxcbiAgICBlbHNlIGludmFsaWRfYXJnIFwiY291bGQgbm90IHJlbW92ZSwgZWxlbWVudCBpcyBub3QgYSBtZW1iZXJcIlxuZW5kXG5cbigqIHBoeXNpY2FsIGVxdWFsaXR5ICopXG5sZXQgZGVmYXVsdF9lcXVhbCA9IFN0ZGxpYi4oID09IClcblxuKCogU3Vic2NyaXB0aW9uIHJlZ2lzdHJ5IGZvciBzaWduYWxzLiAqKVxubW9kdWxlIFN1YnMgOiBzaWdcbiAgdHlwZSAnYSBzdWIgPSAnYSAtPiB1bml0XG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gICgqIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludCAqKVxuICB2YWwgYWRkIDogP2xhYmVsOnN0cmluZyAtPiAnYSBzdWIgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBkaXNwYXRjaCA6ICdhIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogJ2Egc3ViIC0+ICdhIHQgLT4gdW5pdFxuICAoKiB2YWwgbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0ICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzdWIgPSAnYSAtPiB1bml0XG4gIHR5cGUgJ2EgdCA9IChzdHJpbmcgKiAnYSBzdWIgcmVmKSBsaXN0IHJlZlxuXG4gIGxldCBlbXB0eSAoKSA9IHJlZiBbXVxuXG4gICgqIGxldCBsZW5ndGggc3VicyA9IExpc3QubGVuZ3RoICFzdWJzICopXG4gIGxldCBhZGQgPyhsYWJlbCA9IFwiXCIpIChrIDogJ2Egc3ViKSBzdWJzID1cbiAgICBzdWJzIDo9IExpc3QuYXBwZW5kICFzdWJzIFsgKGxhYmVsLCByZWYgaykgXVxuXG4gIGxldCBkaXNwYXRjaCB4IHN1YnMgPSBMaXN0Lml0ZXIgKGZ1biAoXywgaykgLT4gIWsgeCkgIXN1YnNcblxuICBsZXQgcmVtb3ZlIGsgc3VicyA9XG4gICAgbGV0IChfLCBrJyksIHN1YnMnID1cbiAgICAgIExpc3RfZXh0LnJlbW92ZV9vbmVcbiAgICAgICAgfmVxOihmdW4gKF8sIHMxKSAoXywgczIpIC0+ICFzMSA9PSAhczIpXG4gICAgICAgIChcIlwiLCByZWYgaylcbiAgICAgICAgIXN1YnNcbiAgICBpblxuICAgICgqIElmIHJlbW92ZSBpcyBjYWxsZWQgZHVyaW5nIGRpc3BhdGNoLCBkaXNwYXRjaCB3aWxsIGhhdmUgcmVmZXJyZWQgdG8gdGhlIG9yaWdpbmFsIGxpc3QuIFdlIHNldCB0aGVcbiAgICAgICByZW1vdmVkIGsgdG8gaWdub3JlIHRvIGF2b2lkIGNhbGxpbmcgaXQuICopXG4gICAgaycgOj0gaWdub3JlO1xuICAgIHN1YnMgOj0gc3VicydcblxuICAoKiBsZXQgbmFtZXMgc3VicyA9IExpc3QubWFwIGZzdCAhc3VicyAqKVxuZW5kXG5cbigqIE5vdGlmaWNhdGlvbiAqKVxuXG50eXBlIG5vdGlmaWNhdGlvbiA9IHsgYWRkIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdDsgcnVuIDogdW5pdCAtPiB1bml0IH1cblxubW9kdWxlIE5vdGlmaWNhdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFrZSAoKSA6IG5vdGlmaWNhdGlvbiA9XG4gICAgbGV0IGZzID0gcmVmIFtdIGluXG4gICAgbGV0IGFkZCBmID0gZnMgOj0gZiA6OiAhZnMgaW5cbiAgICBsZXQgcnVuICgpID0gTGlzdC5pdGVyIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWZzKSBpblxuICAgIHsgYWRkOyBydW4gfVxuXG4gIGxldCBub3cgPVxuICAgIGxldCBhZGQgZiA9IGYgKCkgaW5cbiAgICB7IGFkZDsgcnVuID0gaWdub3JlIH1cblxuICBsZXQgbmV2ZXIgPSB7IGFkZCA9IGlnbm9yZTsgcnVuID0gaWdub3JlIH1cbmVuZFxuXG5sZXQgbmV2ZXIgPSBOb3RpZmljYXRpb24ubmV2ZXJcbmxldCBub3cgPSBOb3RpZmljYXRpb24ubm93XG5cbmxldCBzY29wZSBmID1cbiAgbGV0IG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvbi5tYWtlICgpIGluXG4gIGYgbm90aWZpY2F0aW9uO1xuICBub3RpZmljYXRpb24ucnVuICgpXG5cbigqIFNpZ25hbCAqKVxuXG50eXBlIHN1YiA9IHVuaXQgLT4gdW5pdFxuXG50eXBlICdhIHQgPSB7XG4gIG5hbWUgOiBzdHJpbmc7XG4gIG11dGFibGUgdmFsdWUgOiAnYTtcbiAgZW1pdCA6ID9ub3RpZnk6bm90aWZpY2F0aW9uIC0+ICdhIC0+IHVuaXQ7XG4gIHN1YiA6ID9sYWJlbDpzdHJpbmcgLT4gKCdhIC0+IHVuaXQpIC0+IHN1Yjtcbn1cblxubGV0IGdlbl9pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciBpO1xuICAgIHN0cmluZ19vZl9pbnQgIWlcblxubGV0IGJhc2UgPyhlcXVhbCA9IGRlZmF1bHRfZXF1YWwpIH5uYW1lIHZhbHVlID1cbiAgbGV0IG5hbWUgPSBuYW1lIF4gXCIjXCIgXiBnZW5faWQgKCkgaW5cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgcmVjIHMgPSB7IG5hbWU7IHZhbHVlOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IG5vdykgeCA9XG4gICAgaWYgbm90IChlcXVhbCBzLnZhbHVlIHgpIHRoZW4gKFxuICAgICAgcy52YWx1ZSA8LSB4O1xuICAgICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKSlcbiAgaW5cbiAgc1xuXG5sZXQgbWFrZSA/ZXF1YWwgPyhsYWJlbCA9IFwibWFrZVwiKSB2YWx1ZSA9IGJhc2UgP2VxdWFsIH5uYW1lOmxhYmVsIHZhbHVlXG5sZXQgbGFiZWwgcyA9IHMubmFtZVxuXG5sZXQgbnVsbCA9XG4gIGxldCBzdWIgP2xhYmVsOl8gXyAoKSA9ICgpIGluXG4gIGxldCByZWMgcyA9IHsgbmFtZSA9IFwibnVsbFwiOyB2YWx1ZSA9ICgpOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/bm90aWZ5Ol8gX3ggPSAoKSBpblxuICBzXG5cbmxldCBnZXQgcyA9IHMudmFsdWVcbmxldCBlbWl0ID9ub3RpZnkgeCBzID0gcy5lbWl0ID9ub3RpZnkgeFxubGV0IHNldCB4IHMgPSBlbWl0IH5ub3RpZnk6bmV2ZXIgeCBzXG5sZXQgdXBkYXRlID9ub3RpZnkgZiBzID0gcy5lbWl0ID9ub3RpZnkgKGYgcy52YWx1ZSlcbmxldCB0cmlnZ2VyIHMgPSBzLmVtaXQgcy52YWx1ZVxuXG5sZXQgc3ViIGsgcyA9XG4gIGxldCBfIDogc3ViID0gcy5zdWIgayBpblxuICAoKVxuXG5sZXQgc3ViJyBrIHMgPSBzLnN1YiBrXG5cbmxldCBzdWIyIGsgczEgczIgPVxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGsgeDEgczIudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gayBzMS52YWx1ZSB4MikgaW5cbiAgKClcblxubGV0IHVzZSBrIHMgPVxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGsgaW5cbiAgayBzLnZhbHVlXG5cbmxldCB1c2UnID9sYWJlbCBrIHMgPVxuICBsZXQgdW5zdWIgOiBzdWIgPSBzLnN1YiA/bGFiZWwgayBpblxuICBrIHMudmFsdWU7XG4gIHVuc3ViXG5cbmxldCB1c2UyIGsgczEgczIgPVxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGsgeDEgczIudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gayBzMS52YWx1ZSB4MikgaW5cbiAgayBzMS52YWx1ZSBzMi52YWx1ZVxuXG5sZXQgdW5zdWIgc3ViID0gc3ViICgpXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcIm1hcFwiIChmIHMudmFsdWUpIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biB4IC0+IHMnLmVtaXQgKGYgeCkpIGluXG4gIHMnXG5cbmxldCBjb25zdCB4IHMgPVxuICBsZXQgcycgPSBiYXNlIH5uYW1lOlwiY29uc3RcIiB4IGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biBfIC0+IHMnLmVtaXQgeCkgaW5cbiAgcydcblxubGV0IHRhcCBmIHMgPVxuICBsZXQgcycgPSBiYXNlIH5uYW1lOlwidGFwXCIgcy52YWx1ZSBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgcy5zdWIgKGZ1biB4IC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgcycuZW1pdCB4KVxuICBpblxuICBzJ1xuXG5sZXQgcGFpciBzMSBzMiA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJwYWlyXCI7IHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSk7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyKSkgaW5cbiAgcydcblxubGV0IHRyaXBsZSBzMSBzMiBzMyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID1cbiAgICB7IG5hbWUgPSBcInRyaXBsZVwiOyB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlKTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoeDEsIHMyLnZhbHVlLCBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczMuc3ViIChmdW4geDMgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCB4MykpIGluXG4gIHMnXG5cbmxldCB0NSBzMSBzMiBzMyBzNCBzNSA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID1cbiAgICB7XG4gICAgICBuYW1lID0gXCJ0NVwiO1xuICAgICAgdmFsdWUgPSAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMi5zdWIgKGZ1biB4MiAtPiBlbWl0IChzMS52YWx1ZSwgeDIsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczMuc3ViIChmdW4geDMgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCB4MywgczQudmFsdWUsIHM1LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM0LnN1YiAoZnVuIHg0IC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHg0LCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNS5zdWIgKGZ1biB4NSAtPiBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgeDUpKVxuICBpblxuICBzJ1xuXG5sZXQgdDYgczEgczIgczMgczQgczUgczYgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwidDZcIjtcbiAgICAgIHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczEuc3ViIChmdW4geDEgLT5cbiAgICAgICAgZW1pdCAoeDEsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMi5zdWIgKGZ1biB4MiAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgeDIsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMzLnN1YiAoZnVuIHgzIC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczQuc3ViIChmdW4geDQgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgeDQsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNS5zdWIgKGZ1biB4NSAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgeDUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM2LnN1YiAoZnVuIHg2IC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgeDYpKVxuICBpblxuICBzJ1xuXG5sZXQgZmlsdGVyIHByZWQgfnNlZWQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwiZmlsdGVyXCI7XG4gICAgICB2YWx1ZSA9IChpZiBwcmVkIHMudmFsdWUgdGhlbiBzLnZhbHVlIGVsc2Ugc2VlZCk7XG4gICAgICBlbWl0O1xuICAgICAgc3ViO1xuICAgIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBpZiBwcmVkIHggdGhlbiAoXG4gICAgICBzJy52YWx1ZSA8LSB4O1xuICAgICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBlbWl0IGluXG4gIHMnXG5cbmxldCBmaWx0ZXJfbWFwIGYgfnNlZWQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwiZmlsdGVyX21hcFwiO1xuICAgICAgdmFsdWUgPSAobWF0Y2ggZiBzLnZhbHVlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHNlZWQpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzLnN1YiAoZnVuIHggLT4gbWF0Y2ggZiB4IHdpdGggU29tZSB4JyAtPiBlbWl0IHgnIHwgTm9uZSAtPiAoKSlcbiAgaW5cbiAgcydcblxubGV0IHJlZHVjZSBmIGluaXQgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwicmVkdWNlXCI7IHZhbHVlID0gZiBpbml0IHMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgKGZ1biB2YWx1ZSAtPiBzJy5lbWl0IChmIHMnLnZhbHVlIHZhbHVlKSkgaW5cbiAgcydcblxubGV0IHJlZHVjZXIgZiBpbml0ID1cbiAgbGV0IGV2ZW50cyA9IGJhc2Ugfm5hbWU6XCJyZWR1Y2VyXCIgTm9uZSBpblxuICBsZXQgc3RhdGVfc2lnbmFsID1cbiAgICByZWR1Y2VcbiAgICAgIChmdW4gc3RhdGUgZXZlbnRfb3B0IC0+XG4gICAgICAgIG1hdGNoIGV2ZW50X29wdCB3aXRoIFNvbWUgZXZlbnQgLT4gZiBzdGF0ZSBldmVudCB8IE5vbmUgLT4gc3RhdGUpXG4gICAgICBpbml0IGV2ZW50c1xuICBpblxuICBsZXQgZGlzcGF0Y2ggZXZlbnQgPSBlbWl0IChTb21lIGV2ZW50KSBldmVudHMgaW5cbiAgKHN0YXRlX3NpZ25hbCwgZGlzcGF0Y2gpXG5cbmxldCBzZWxlY3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiU2lnbmFsLnNlbGVjdDogZW1wdHkgc2lnbmFsIGxpc3RcIlxuICB8IHMxIDo6IF8gLT5cbiAgICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gICAgaW5cbiAgICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJzZWxlY3RcIjsgdmFsdWUgPSBzMS52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgICBpblxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBzIC0+XG4gICAgICAgIGxldCBfIDogc3ViID0gcy5zdWIgZW1pdCBpblxuICAgICAgICAoKSlcbiAgICAgIGw7XG4gICAgcydcblxubGV0IHVuaXEgPyhlcXVhbCA9ICggPT0gKSkgcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJ1bmlxXCI7IHZhbHVlID0gcy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBpZiBub3QgKGVxdWFsIHggcycudmFsdWUpIHRoZW4gKFxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGVtaXQgaW5cbiAgcydcblxubGV0IG1hcDIgZiBzMSBzMiA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJtYXAyXCI7IHZhbHVlID0gZiBzMS52YWx1ZSBzMi52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoZiB4MSBzMi52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoZiBzMS52YWx1ZSB4MikpIGluXG4gIHMnXG5cbmxldCBtYXAzIGYgczEgczIgczMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAgeyBuYW1lID0gXCJtYXAzXCI7IHZhbHVlID0gZiBzMS52YWx1ZSBzMi52YWx1ZSBzMy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4geDEgLT4gZW1pdCAoZiB4MSBzMi52YWx1ZSBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczIuc3ViIChmdW4geDIgLT4gZW1pdCAoZiBzMS52YWx1ZSB4MiBzMy52YWx1ZSkpIGluXG4gIGxldCBfIDogc3ViID0gczMuc3ViIChmdW4geDMgLT4gZW1pdCAoZiBzMS52YWx1ZSBzMi52YWx1ZSB4MykpIGluXG4gIHMnXG5cbmxldCBzYW1wbGUgP2VxdWFsIH5vbjpzMSBzMiA9XG4gIGxldCBzJyA9IGJhc2UgP2VxdWFsIH5uYW1lOlwic2FtcGxlXCIgczIudmFsdWUgaW5cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biBfIC0+IHMnLmVtaXQgczIudmFsdWUpIGluXG4gIHMnXG5cbmxldCBhcHBseSBmX3MgeF9zID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPSB7IG5hbWUgPSBcImFwcGx5XCI7IHZhbHVlID0gZl9zLnZhbHVlIHhfcy52YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID0gZl9zLnN1YiAoZnVuIGYgLT4gZW1pdCAoZiB4X3MudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHhfcy5zdWIgKGZ1biB4IC0+IGVtaXQgKGZfcy52YWx1ZSB4KSkgaW5cbiAgcydcblxuKCogbGV0IGZvcndhcmQgczEgczIgPVxuICAgc3ViIChmdW4geCAtPiBlbWl0IHggczIpICopXG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KyApIHMgZiA9IG1hcCBmIHNcbiAgbGV0ICggYW5kKyApID0gcGFpclxuICBsZXQgKCA8fiApID0gbWFwXG4gIGxldCAoIH5+ICkgPSBhcHBseVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0xpc3QiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiZGVmYXVsdF9lcXVhbCIsImVtcHR5IiwicGFyYW0iLCJjc3QiLCJhZGQiLCJvcHQiLCJrIiwic3VicyIsImxhYmVsIiwiZGlzcGF0Y2giLCJ4IiwicmVtb3ZlIiwibCIsImVxIiwiczIiLCJzMSIsInkiLCJhY2MiLCJ0bCIsIm5vdyIsIm5ldmVyIiwic2NvcGUiLCJmcyIsInJ1biIsIm5vdGlmaWNhdGlvbiIsImkiLCJiYXNlIiwibmFtZSIsInZhbHVlIiwiZXF1YWwiLCJzdWIiLCJzIiwiZW1pdCIsIm5vdGlmeSIsIm1ha2UiLCJudWxsJCIsImdldCIsInNldCIsInVwZGF0ZSIsInRyaWdnZXIiLCJzdWIyIiwieDEiLCJ4MiIsInVzZSIsInVuc3ViIiwidXNlMiIsIm1hcCIsImNvbnN0JCIsInRhcCIsInBhaXIiLCJ0cmlwbGUiLCJzMyIsIngzIiwidDUiLCJzNCIsInM1IiwieDQiLCJ4NSIsInQ2IiwiczYiLCJ4NiIsImZpbHRlciIsInByZWQiLCJzZWVkIiwiZXRhIiwiZmlsdGVyX21hcCIsIm1hdGNoIiwicmVkdWNlIiwiaW5pdCIsInJlZHVjZXIiLCJldmVudHMiLCJzdGF0ZV9zaWduYWwiLCJzdGF0ZSIsImV2ZW50X29wdCIsImV2ZW50Iiwic2VsZWN0IiwidW5pcSIsIm1hcDIiLCJtYXAzIiwic2FtcGxlIiwiYXBwbHkiLCJmX3MiLCJ4X3MiLCJsZXQkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFD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QUEsZUFBQUMsSUFBdUIsT0FBd0IsUUFBeEIsZ0NBQXdCO0FBQUEsSUFDL0M7QUFBQTtBQUFBO0FBQUEsZUFBQVUsSUFBdUIsT0FBd0IsUUFBeEIsZ0NBQXdCO0FBQUEsSUFBQztBQUFBLEdBQzVEO0FBQUEsWUFBQTJCLE9BQUFsRCxPQUFBZCxJQUFBRDtBQUFBQSxRQUFBaUIsSUFHTztBQUFBLElBQ0ssOEJBQUE3QixPQUFpQixpQ0FBZ0I7QUFBQSxJQUFDO0FBQUEsR0FDOUM7QUFBQSxZQUFBOEUsTUFBQUMsS0FBQUM7QUFBQUEsUUFBQTNFLE9BR1MsVUFBQXdCLElBQ1g7QUFBQSxhQUFBQyxLQUFBM0IsS0FBQUs7QUFBQUEsU0FBQXVCLFNBQ1M7QUFBQSxLQUNQO0FBQUEsS0FDQSxzQ0FBQS9CLE9BQXNCLHdCQUFvQixHQUFDO0FBQUE7QUFBQSxhQUFBNEIsSUFBQXRCLE9BQUFGO0FBQUFBLEtBRTNDO0FBQUEsS0FBc0IsZ0JBQUFKLE9BQ1osc0JBQWtCLEVBRE47QUFBQSxJQUNNO0FBQUEsSUFONEIsa0NBQW5CO0FBQUEsSUFRekIsK0JBQUFiLEdBQXVCLE9BQWEsUUFBYixzQkFBYTtBQUFBLElBQ3BDLCtCQUFBcUIsR0FBdUIsT0FBYSxRQUFiLHNCQUFhO0FBQUEsSUFBQztBQUFBLEdBQ2pEO0FBQUEsWUFBQXlFLEtBQUFwRCxHQUFBMUMsR0FNaUIsZ0JBQU87QUFBQSxHQTNUMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN0hGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDI4MzgsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianhfanNvby5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvangvanNvby9KeF9mZmkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHRcblxuZXh0ZXJuYWwgcmF3IDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbmxldCBnbG9iYWxfdGhpcyA9IHJhdyBcImdsb2JhbFRoaXNcIlxubGV0IG51bGwgPSByYXcgXCJudWxsXCJcbmxldCB1bmRlZmluZWQgPSByYXcgXCJ1bmRlZmluZWRcIlxuXG5leHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuZXh0ZXJuYWwgc3RyaWN0X2VxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbigqIFByaW1pdGl2ZXMgKilcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcbmV4dGVybmFsIG9mX2Jvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcbmV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5leHRlcm5hbCB0b19mbG9hdCA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4oKiBBcnJheSAqKVxuZXh0ZXJuYWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuKCogTGlzdCAqKVxuZXh0ZXJuYWwgb2ZfbGlzdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuZXh0ZXJuYWwgdG9fbGlzdCA6IHQgLT4gdCBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4oKiBPYmogKilcbmV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWwgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcbmV4dGVybmFsIG9ial9uZXcgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuZXh0ZXJuYWwgb2JqX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuKCogRnVuICopXG5leHRlcm5hbCBjYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuZXh0ZXJuYWwgb2ZfZnVuIDogaW50IC0+IChfIC0+IF8pIC0+IHQgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4oKiB0eXBlX29mICopXG5cbmV4dGVybmFsIHR5cGVfb2YgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4oKiBpbnN0YW5jZV9vZiAqKVxuXG5leHRlcm5hbCBpbnN0YW5jZV9vZiA6IHQgLT4gY29uc3RyOnQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX3RoaXMiLCJudWxsJCIsInVuZGVmaW5lZCQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsY0NJa0I7QUFBQSxJQUFBQyxRQUNQO0FBQUEsSUFBQUMsYUFDSztBQUFBLEdBQWU7QUFBQTtBQUFBO0FBQUEsRUROL0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0Mjg1NCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJqeF9qc29vLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2dldCIsImNhbWxfanNfaW5zdGFuY2VvZiIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9qc19zZXQiLCJjYW1sX2pzX3RvX2FycmF5IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiSnhfSnhfZmZpIiwiU3RkbGliX0Zsb2F0IiwiU3RkbGliX1N0cmluZyIsIm51bGwkIiwidW5kZWZpbmVkJCIsImVxdWFsIiwic3RyaWN0X2VxdWFsIiwiZGVidWdnZXIkIiwiaXNfbnVsbCIsInYiLCJpc191bmRlZmluZWQiLCJpc19kZWZpbmVkIiwiaXNfbnVtYmVyIiwianMiLCJpc19ib29sZWFuIiwiaXNfc3RyaW5nIiwiaXNfb2JqZWN0IiwicmF3IiwiaXNfaW50IiwiVW5kZWZpbmVkX3Byb3BlcnR5IiwiZ2xvYmFsIiwiayIsIngiLCJvZl9qcyIsInRvX2pzIiwib2JqIiwidCIsImVtcHR5IiwicGFyYW0iLCJvZl9saXN0IiwiZW50cmllcyIsIm5hbWUiLCJ0b19saXN0IiwiZW50cnlfYXJyIiwib2ZfYXJyYXkiLCJjcmVhdGUiLCJnZXRfcHJvdG90eXBlIiwic2V0X3Byb3RvdHlwZSIsInByb3RvIiwiZ2V0IiwiZGVjb2RlIiwiZ2V0X29wdCIsImdldF9wYXRoIiwicGF0aCIsImdldF9wYXRoX29wdCIsInNldCIsImVuY29kZSIsInhfanMiLCJzZXRfcGF0aCIsImRlbCIsImhhcyIsImhhc19qcyIsImtfanMiLCJjYWxsX2pzX3VuaXQiLCJ0aGlzJCIsImFyZ3MiLCJjYWxsMCIsImZfayIsInJldHVybiQiLCJjYWxsMSIsImEiLCJjYWxsMiIsImVuY29kZV9hIiwiZW5jb2RlX2IiLCJiIiwiY2FsbDMiLCJlbmNvZGVfYyIsImMiLCJjYWxsNCIsImVuY29kZV9kIiwiZCIsImNhbGw1IiwiZW5jb2RlX2UiLCJlIiwiY2FsbDYiLCJlbmNvZGVfZiIsImNhbGw3IiwiZW5jb2RlX2ciLCJnIiwiY2FsbDgiLCJlbmNvZGVfaCIsImgiLCJjYWxsOSIsImVuY29kZV9pIiwiaSIsImNhbGwwX3VuaXQiLCJjYWxsMV91bml0IiwiY2FsbDJfdW5pdCIsImNhbGwzX3VuaXQiLCJjYWxsNF91bml0IiwiY2FsbDVfdW5pdCIsImNhbGw2X3VuaXQiLCJjYWxsN191bml0IiwiY2FsbDhfdW5pdCIsImNhbGw5X3VuaXQiLCJuZXcwIiwibmV3MSIsIm5ldzIiLCJuZXczIiwibmV3NCIsIm5ldzUiLCJuZXc2IiwibmV3NyIsIm5ldzgiLCJuZXc5IiwibmV3X2pzIiwiaXNfYXJyYXkiLCJhcnIiLCJ1bml0IiwiaW50IiwiZmxvYXQiLCJib29sIiwiYXJyYXkiLCJwYWlyIiwidG9fanNfeCIsInRvX2pzX3kiLCJ5IiwidHJpcGxlIiwidG9fanNfeiIsInoiLCJudWxsYWJsZSIsIm9wdGlvbmFsIiwiZnVuMCIsImZ1bjEiLCJmdW4yIiwiZnVuMyIsImZ1bjQiLCJmdW41IiwiZnVuNiIsImZ1bjciLCJmdW44IiwiZnVuOSIsImFueSIsImFycmF5X2pzIiwib2ZfanNfeCIsIm9mX2pzX3kiLCJsZW4iLCJ5X2pzIiwib2ZfanNfeiIsInpfanMiLCJmaWVsZCIsImRlY29kZXIiLCJvciIsImRlY29kZXIxIiwiZGVjb2RlcjIiLCJleG4iLCJmX2pzIiwiY29uc29sZSIsImxvZyIsInN0cmluZyIsImRlYnVnIiwibHN0IiwiZ2xvYmFsX3RoaXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsK0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxVQUFBO0FBQUEsWUFBQUMsUUFBQUMs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QSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQTtBQUFBLG9CQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWU7QUFBQUEsSUFBQXBFO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBcEI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBO0FBQUEsb0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBYTtBQUFBQSxJQUFBckU7QUFBQUEsSUFBQWdDO0FBQUFBLElBQUFLO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUF2QjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBO0FBQUEsb0JBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBVyxLQUFBdEUsS0FBQSxjQUFBO0FBQUEsWUFBQXVFLEtBQUF2RSxLQUFBcUIsUUFBQWMsR0FBQSxPQUFBLFFBQUEsc0JBQUE7QUFBQSxZQUFBcUMsS0FBQXhFLEtBQUFxQyxVQUFBQyxVQUFBSCxHQUFBSTtBQUFBQSxRQUFBLElBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSwyQkFBQTtBQUFBO0FBQUEsWUFBQWtDLEtBQUF6RSxLQUFBcUMsVUFBQUMsVUFBQUcsVUFBQU4sR0FBQUksR0FBQUc7QUFBQUEsUUFBQSxJQUFBLDZCQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsOEJBQUE7QUFBQTtBQUFBLFlBQUFnQyxLQUFBMUUsS0FBQXFDLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFULEdBQUFJLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsaUNBQUE7QUFBQTtBQUFBLFlBQUE4QjtBQUFBQSxJQUFBM0UsS0FBQXFDLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFHLFVBQUFaLEdBQUFJLEdBQUFHLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxRQUFBLG9DQUFBO0FBQUE7QUFBQSxZQUFBNEI7QUFBQUEsSUFBQTVFO0FBQUFBLElBQUFxQztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxRQUFBLHVDQUFBO0FBQUE7QUFBQSxZQUFBNEc7QUFBQUEsSUFBQTdFO0FBQUFBLElBQUFxQztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBakI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxRQUFBLDBDQUFBO0FBQUE7QUFBQSxZQUFBeUI7QUFBQUEsSUFBQTlFO0FBQUFBLElBQUFxQztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBcEI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSw2Q0FBQTtBQUFBO0FBQUEsWUFBQXVCO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXZCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFB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QSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxvQkFBQSxLQUFBLHdDQUFBO0FBQUE7QUFBQSxZQUFBa0Y7QUFBQUEsSUFBQXNFO0FBQUFBLElBQUF4RjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBakI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQTtBQUFBLHNCQUFBLEtBQUEsMkNBQUE7QUFBQTtBQUFBLFlBQUFDO0FBQUFBLElBQUFtRTtBQUFBQSxJQUFBeEY7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXBCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsc0JBQUEsS0FBQSw4Q0FBQTtBQUFBO0FBQUEsWUFBQUM7QUFBQUEsSUFBQWdFO0FBQUFBLElBQUF4RjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBdkI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxPQUFBO0FBQUEsc0JBQUEsS0FBQSxpREFBQTtBQUFBO0FBQUEsWUFBQUMsYUFBQTZELE1BQUF0SCxPQUFBLFFBQUE7QUFBQSxZQUFBMEQsYUFBQTRELE1BQUFwRyxRQUFBYztBQUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBMkIsYUFBQTJELE1BQUFwRixVQUFBQyxVQUFBSCxHQUFBSTtBQUFBQSxRQUFBLElBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBd0IsYUFBQTBELE1BQUFwRixVQUFBQyxVQUFBRyxVQUFBTixHQUFBSSxHQUFBRztBQUFBQSxRQUFBLElBQUEsNkJBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBc0I7QUFBQUEsSUFBQXlELE1BQUFwRixVQUFBQyxVQUFBRyxVQUFBRyxVQUFBVCxHQUFBSSxHQUFBRyxHQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFvQjtBQUFBQSxJQUFBd0QsTUFBQXBGLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFHLFVBQUFaLEdBQUFJLEdBQUFHLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFrQjtBQUFBQSxJQUFBdUQ7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFmO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWtHO0FBQUFBLElBQUFzRDtBQUFBQSxJQUFBcEY7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQWpCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBZTtBQUFBQSxJQUFBcUQ7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFwQjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFhO0FBQUFBLElBQUFvRDtBQUFBQSxJQUFBcEY7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXZCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUEvQixlQUFBM0QsR0FBQTZELE1BQUEsMkJBQUEsU0FBQTtBQUFBLE9BQUE0RixVQUFBO0FBQUEsWUFBQUMsSUFBQTlILEdBQUEsMkNBQUE7QUFBQSxPQUFBK0gsU0FBQTtBQUFBLFlBQUFDLE1BQUFDO0FBQUFBLElBQUEsT0FBQSxJQUFBLGNBQUEsa0NBQUE7QUFBQTtBQUFBLE9BQUFDLGNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0MDQzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9nbG9iYWwubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJsZXQgd2luZG93ID0gSnguZ2xvYmFsIFwid2luZG93XCJcbmxldCBkb2N1bWVudCA9IEp4Lmdsb2JhbCBcImRvY3VtZW50XCJcbmxldCBjb25zb2xlID0gSnguZ2xvYmFsIFwiY29uc29sZVwiXG5sZXQgbmF2aWdhdG9yID0gSnguZ2xvYmFsIFwibmF2aWdhdG9yXCJcblxubGV0IGVuY29kZV91cmlfY29tcG9uZW50ID1cbiAgbGV0IGYgPSBKeC5nbG9iYWwgXCJlbmNvZGVVUklDb21wb25lbnRcIiBpblxuICBKeC5GdW4uY2FsbDEgZiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuc3RyaW5nXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsIkp4Iiwid2luZG93IiwiZG9jdW1lbnQiLCJjb25zb2xlIiwibmF2aWdhdG9yIiwiZW5jb2RlX3VyaV9jb21wb25lbnQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQ0FhO0FBQUEsSUFBQUMsV0FDRTtBQUFBLElBQUFDLFVBQ0Q7QUFBQSxJQUFBQyxZQUNFO0FBQUEsSUFBQVQsSUFHTjtBQUFBLElBQUFVLHVCQUNSO0FBQUEsR0FBMEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEUDVEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQwNzUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3Byb21pc2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG50eXBlICgnYSwgJ2VycikgZXhlY3V0b3IgPSAoJ2EgLT4gdW5pdCkgLT4gKCdlcnIgLT4gdW5pdCkgLT4gdW5pdFxuXG5sZXQgdG9fanMgcCA9IHBcbmxldCBvZl9qcyBqcyA9IGpzXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIlByb21pc2VcIlxubGV0IG1ha2UgZXhlY3V0b3IgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuZnVuMSBleGVjdXRvclxubGV0IHJlc29sdmUgdiA9IEp4Lk9iai5jYWxsMSB0IFwicmVzb2x2ZVwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5hbnkgdlxubGV0IHJlamVjdCBlcnIgPSBKeC5PYmouY2FsbDEgdCBcInJlamVjdFwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5hbnkgZXJyXG5sZXQgYW5kX3RoZW4gZiBwID0gSnguT2JqLmNhbGwxIHAgXCJ0aGVuXCIgfnJldHVybjpvZl9qcyBKeC5FbmNvZGVyLmZ1bjEgZlxubGV0IG1hcCBmIHAgPSBhbmRfdGhlbiAoZnVuIHggLT4gcmVzb2x2ZSAoZiB4KSkgcFxubGV0IHVzZSBmIHAgPSBKeC5PYmouY2FsbDFfdW5pdCBwIFwidGhlblwiIEp4LkVuY29kZXIuZnVuMSBmXG5sZXQgY2F0Y2ggZiBwID0gSnguT2JqLmNhbGwxX3VuaXQgcCBcImNhdGNoXCIgSnguRW5jb2Rlci5mdW4xIGZcbmxldCBpZ25vcmUgcCA9IHVzZSBpZ25vcmUgcFxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCogKSBwIGYgPSBhbmRfdGhlbiBmIHBcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJKeCIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJ0IiwibWFrZSIsImV4ZWN1dG9yIiwicmVzb2x2ZSIsInYiLCJyZWplY3QiLCJlcnIiLCJjc3RfdGhlbiIsImFuZF90aGVuIiwibWFwIiwieCIsInVzZSIsImNhdGNoJCIsImlnbm9yZSIsImxldCQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVAsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLEtBQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ0djLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxPQUFBQyxJQUNUO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsSUFDWSxzREFBc0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLElBQzFDLGlFQUF1RDtBQUFBO0FBQUEsWUFBQUMsT0FBQUM7QUFBQUEsSUFDdEQsa0VBQXdEO0FBQUE7QUFBQSxPQUFBQyxXRFJ6RTtBQUFBLFlBQUFDLFNBQUF0QixHQUFBVztBQUFBQSxJQ1NtQixnRUFBcUQ7QUFBQTtBQUFBLFlBQUFZLElBQUF2QixHQUFBVztBQUFBQSxJQUMxRCx5QkFBQWEsR0FBMkIsT0FBSyxRQUFMLGlCQUFLLE1BQUc7QUFBQTtBQUFBLFlBQUFDLElBQUF6QixHQUFBVztBQUFBQSxJQUNuQyx5REFBNEM7QUFBQTtBQUFBLFlBQUFlLE9BQUExQixHQUFBVztBQUFBQSxJQUMxQyx3REFBNkM7QUFBQTtBQUFBLFlBQUFnQixPQUFBaEIsR0FDOUMsdUJEYmYsY0NhMkI7QUFBQSxZQUFBaUIsS0FBQWpCLEdBQUFYLEdBR04scUJBQVk7QUFBQSxHQVhOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREwzQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0MTQ5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxuXG50eXBlIG5vZGUgPSBKeC50XG50eXBlIGV2ZW50ID0gSngudFxuXG4oKiBTdHlsZSAqKVxuXG50eXBlIHN0eWxlID0gSngudFxuXG5tb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3R5bGVcblxuICBsZXQgdGV4dCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY3NzVGV4dFwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBsZW5ndGggdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImxlbmd0aFwiIEp4LkRlY29kZXIuaW50XG5cbiAgbGV0IHNldCB0aGlzIG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInNldFByb3BlcnR5XCJcbiAgICAgIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWU7IEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlIHxdXG5cbiAgbGV0IHVuc2V0IHRhcmdldCBuYW1lID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRhcmdldCBcInJlbW92ZVByb3BlcnR5XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBnZXQgdGhpcyBuYW1lID1cbiAgICBKeC5EZWNvZGVyLnN0cmluZ1xuICAgICAgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJzZXRQcm9wZXJ0eVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF0pXG5lbmRcblxuKCogRE9NIGV2ZW50cyAqKVxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSBuYW1lID0gSngudFxuXG4gIG1vZHVsZSBOYW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSngudFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEp4LkRlY29kZXIuc3RyaW5nXG4gICAgbGV0IG1ha2UgPSBKeC5FbmNvZGVyLnN0cmluZ1xuICBlbmRcblxuICB0eXBlIHQgPSBldmVudFxuXG4gIGxldCB0YXJnZXQgdCA9IEp4Lk9iai5nZXQgdCBcInRhcmdldFwiIEp4LkRlY29kZXIuYW55XG4gIGxldCBwcmV2ZW50X2RlZmF1bHQgdCA9IEp4Lk9iai5jYWxsMF91bml0IHQgXCJwcmV2ZW50RGVmYXVsdFwiICgpXG5cbiAgKCogR2VuZXJpYyBldmVudHMgKilcblxuICBsZXQgY2hhbmdlID0gTmFtZS5tYWtlIFwiY2hhbmdlXCJcblxuICAoKiBVSSBldmVudHMgKilcblxuICBsZXQgcmVzaXplID0gTmFtZS5tYWtlIFwicmVzaXplXCJcblxuICAoKiBNb3VzZSAqKVxuXG4gIGxldCBjbGljayA9IEp4LkVuY29kZXIuc3RyaW5nIFwiY2xpY2tcIlxuICBsZXQgZGJsY2xpY2sgPSBKeC5FbmNvZGVyLnN0cmluZyBcImRibGNsaWNrXCJcbiAgbGV0IG1vdXNlbW92ZSA9IEp4LkVuY29kZXIuc3RyaW5nIFwibW91c2Vtb3ZlXCJcbiAgbGV0IHBhZ2VfeCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwicGFnZVhcIiBKeC5EZWNvZGVyLmZsb2F0XG4gIGxldCBwYWdlX3kgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhZ2VZXCIgSnguRGVjb2Rlci5mbG9hdFxuXG4gICgqIEtleWJvYXJkIGV2ZW50cyAqKVxuXG4gIGxldCBrZXlkb3duID0gTmFtZS5tYWtlIFwia2V5ZG93blwiXG4gIGxldCBrZXkgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImtleVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBjb2RlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJrZXlDb2RlXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBJbnB1dCAqKVxuXG4gIGxldCBiZWZvcmVfaW5wdXQgPSBOYW1lLm1ha2UgXCJiZWZvcmVpbnB1dFwiXG4gIGxldCBpbnB1dCA9IE5hbWUubWFrZSBcImlucHV0XCJcbiAgbGV0IGNhbmNlbCA9IE5hbWUubWFrZSBcImNhbmNlbFwiXG4gIGxldCBkYXRhIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJkYXRhXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBGdWxsc2NyZWVuIGV2ZW50cyAqKVxuICBsZXQgZnVsbHNjcmVlbl9jaGFuZ2UgPSBOYW1lLm1ha2UgXCJmdWxsc2NyZWVuY2hhbmdlXCJcbiAgbGV0IGZ1bGxzY3JlZW5fZXJyb3IgPSBOYW1lLm1ha2UgXCJmdWxsc2NyZWVuZXJyb3JcIlxuXG4gICgqIFBvcCBzdGF0ZSBldmVudHMgKilcbiAgbGV0IHBvcHN0YXRlID0gTmFtZS5tYWtlIFwicG9wc3RhdGVcIlxuXG4gICgqIEhhc2ggY2hhbmdlIGV2ZW50cyAqKVxuICBsZXQgaGFzaGNoYW5nZSA9IE5hbWUubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gICgqIEZvY3VzIGV2ZW50cyAqKVxuICBsZXQgYmx1ciA9IE5hbWUubWFrZSBcImJsdXJcIlxuICBsZXQgZm9jdXNpbiA9IE5hbWUubWFrZSBcImZvY3VzaW5cIlxuICBsZXQgZm9jdXNvdXQgPSBOYW1lLm1ha2UgXCJmb2N1c291dFwiXG5cbiAgKCogU3VibWl0IGV2ZW50cyAqKVxuICBsZXQgc3VibWl0ID0gTmFtZS5tYWtlIFwic3VibWl0XCJcbmVuZFxuXG5tb2R1bGUgVG9rZW5fbGlzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHRvZ2dsZSB0aGlzIG5hbWUgPSBKeC5PYmouY2FsbDFfdW5pdCB0aGlzIFwidG9nZ2xlXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuICBsZXQgYWRkIHRoaXMgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJhZGRcIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG4gIGxldCByZW1vdmUgdGhpcyBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcInJlbW92ZVwiIEp4LkVuY29kZXIuc3RyaW5nIG5hbWVcbmVuZFxuXG5tb2R1bGUgQmxvYiA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHNpemUgdCA9IEp4Lk9iai5nZXQgdCBcInNpemVcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgdHlwZScgdCA9IEp4Lk9iai5nZXQgdCBcInR5cGVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuXG4gIGxldCB0ZXh0IHQgPVxuICAgIEp4Lk9iai5jYWxsMCB0IFwidGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyAoKVxuICAgIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuc3RyaW5nXG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBsYXN0X21vZGlmaWVkIHQgPSBKeC5PYmouZ2V0IHQgXCJsYXN0X21vZGlmaWVkXCIgSnguRGVjb2Rlci5mbG9hdFxuICBsZXQgbmFtZSB0ID0gSnguT2JqLmdldCB0IFwibmFtZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCB0b19ibG9iIHQgPSB0XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbm9kZVxuXG4gICgqIENvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2pzIHQgPSB0XG5cbiAgKCogVHJhdmVyc2FsICopXG5cbiAgbGV0IHBhcmVudCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwicGFyZW50Tm9kZVwiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgZmlyc3RfY2hpbGQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImZpcnN0Q2hpbGRcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IGxhc3RfY2hpbGQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImxhc3RDaGlsZFwiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgbmV4dF9zaWJsaW5nIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJuZXh0U2libGluZ1wiIEp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICBsZXQgX25leHRfc2libGluZ19qcyB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwibmV4dFNpYmxpbmdcIiBKeC5EZWNvZGVyLmpzXG5cbiAgbGV0IGl0ZXJfY2hpbGRyZW4gdGhpcyBmID1cbiAgICBsZXQgbm9kZV9saXN0ID0gSnguT2JqLmdldCB0aGlzIFwiY2hpbGROb2Rlc1wiIEp4LkRlY29kZXIuanMgaW5cbiAgICBKeC5PYmouY2FsbF9qc191bml0IG5vZGVfbGlzdCBcImZvckVhY2hcIiBbfCBKeC5FbmNvZGVyLmZ1bjEgZiB8XVxuXG4gIGxldCBjaGlsZHJlbiB0aGlzID1cbiAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgaXRlcl9jaGlsZHJlbiB0aGlzIChmdW4gYyAtPiBhY2MgOj0gYyA6OiAhYWNjKTtcbiAgICBMaXN0LnJldiAhYWNjXG5cbiAgKCogTm9kZSBvcGVyYXRpb25zICopXG5cbiAgbGV0IGNsb25lX25vZGUgdGhpcyB+ZGVlcCA9XG4gICAgSnguT2JqLmNhbGwxIHRoaXMgXCJjbG9uZU5vZGVcIiBKeC5FbmNvZGVyLmJvb2wgZGVlcCB+cmV0dXJuOkp4LkRlY29kZXIuanNcblxuICBsZXQgaXNfc2FtZV9ub2RlIHRoaXMgb3RoZXIgPVxuICAgIEp4LkRlY29kZXIuYm9vbCAoSnguT2JqLmNhbGxfanMgdGhpcyBcImlzU2FtZU5vZGVcIiBbfCBvdGhlciB8XSlcblxuICBsZXQgcmVtb3ZlIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwicmVtb3ZlXCIgKClcblxuICBsZXQgcmVwbGFjZV93aXRoIHRoaXMgb3RoZXIgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VXaXRoXCIgW3wgb3RoZXIgfF1cblxuICAoKiBDaGlsZHJlbiBtYW5pcHVsYXRpb24gKilcblxuICBsZXQgYXBwZW5kX3RleHQgfnBhcmVudCB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDFfdW5pdCBwYXJlbnQgXCJhcHBlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IGFwcGVuZF9jaGlsZCB+cGFyZW50IG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcImFwcGVuZENoaWxkXCIgW3wgb3RoZXIgfF1cblxuICBsZXQgcmVtb3ZlX2NoaWxkIH5wYXJlbnQgb3RoZXIgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwicmVtb3ZlQ2hpbGRcIiBbfCBvdGhlciB8XVxuXG4gIGxldCBpbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZSBuZXdfbm9kZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBwYXJlbnQgXCJpbnNlcnRCZWZvcmVcIiBbfCBuZXdfbm9kZTsgcmVmZXJlbmNlIHxdXG5cbiAgbGV0IGluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIGluc2VydF9iZWZvcmUgfnBhcmVudCB+cmVmZXJlbmNlOihfbmV4dF9zaWJsaW5nX2pzIHJlZmVyZW5jZSkgbmV3X25vZGVcblxuICBsZXQgcmVwbGFjZV9jaGlsZCB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwicmVwbGFjZUNoaWxkXCIgW3wgbmV3X25vZGU7IHJlZmVyZW5jZSB8XVxuXG4gIGxldCByZXBsYWNlX2NoaWxkcmVuIHRoaXMgY2hpbGRyZW4gPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VDaGlsZHJlblwiIGNoaWxkcmVuXG5cbiAgbGV0IGluc2VydF9hZGphY2VudF9lbGVtZW50IHRoaXMgcG9zaXRpb24gbm9kZSA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImluc2VydEFkamFjZW50RWxlbWVudFwiIEp4LkVuY29kZXIuc3RyaW5nXG4gICAgICBKeC5FbmNvZGVyLmpzIHBvc2l0aW9uIG5vZGVcblxuICBsZXQgaW5zZXJ0X2JlZm9yZV9iZWdpbiB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImJlZm9yZWJlZ2luXCIgbm9kZVxuXG4gIGxldCBpbnNlcnRfYWZ0ZXJfYmVnaW4gfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJhZnRlcmJlZ2luXCIgbm9kZVxuXG4gIGxldCBpbnNlcnRfYmVmb3JlX2VuZCB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImJlZm9yZWVuZFwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2FmdGVyX2VuZCB+cmVmZXJlbmNlIG5vZGUgPVxuICAgIGluc2VydF9hZGphY2VudF9lbGVtZW50IHJlZmVyZW5jZSBcImFmdGVyZW5kXCIgbm9kZVxuXG4gICgqIFRleHQgY29udGVudCAqKVxuXG4gIGxldCBzZXRfdGV4dF9jb250ZW50IHRoaXMgdGV4dCA9XG4gICAgSnguT2JqLnNldCB0aGlzIFwidGV4dENvbnRlbnRcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IGdldF90ZXh0X2NvbnRlbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInRleHRDb250ZW50XCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBIVE1MIGNvbnRlbnQgKilcblxuICBsZXQgc2V0X2lubmVyX2h0bWwgdGhpcyB0ZXh0ID1cbiAgICBKeC5PYmouc2V0IHRoaXMgXCJpbm5lckhUTUxcIiBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgKCogRXZlbnQgaGFuZGxpbmcgKilcblxuICBsZXQgYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImFkZEV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgbGV0IHVuYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcInJlbW92ZUV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgKCogU3RhdGUgY2hhbmdlcyAqKVxuXG4gIGxldCBibHVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiYmx1clwiICgpXG4gIGxldCBjbGljayB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImNsaWNrXCIgKClcbiAgbGV0IGZvY3VzIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiZm9jdXNcIiAoKVxuXG4gICgqIFBvcG92ZXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBoaWRlX3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJoaWRlUG9wb3ZlclwiICgpXG4gIGxldCBzaG93X3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJzaG93UG9wb3ZlclwiICgpXG4gIGxldCB0b2dnbGVfcG9wb3ZlciB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInRvZ2dsZVBvcG92ZXJcIiAoKVxuXG4gICgqIFNlbGVjdG9ycyAqKVxuXG4gIGxldCBtYXRjaGVzIHRoaXMgc2VsZWN0b3JzID1cbiAgICBKeC5EZWNvZGVyLmJvb2xcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwibWF0Y2hlc1wiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9ycyB8XSlcblxuICBsZXQgY2xvc2VzdCB0aGlzIHNlbGVjdG9ycyA9XG4gICAgSnguRGVjb2Rlci5udWxsYWJsZSBKeC5EZWNvZGVyLmFueVxuICAgICAgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJjbG9zZXN0XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgc2VsZWN0b3JzIHxdKVxuXG4gICgqIGlucHV0ICopXG5cbiAgbGV0IHNlbGVjdCB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInNlbGVjdFwiICgpXG5cbiAgKCogYSAqKVxuXG4gIGxldCB0b19zdHJpbmcgdGhpcyA9IEp4Lk9iai5jYWxsMCB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIHRoaXMgXCJ0b1N0cmluZ1wiICgpXG5cbiAgKCogQXR0cmlidXRlcyAqKVxuXG4gIGxldCBzZXRfYXR0ciB0aGlzIG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInNldEF0dHJpYnV0ZVwiXG4gICAgICBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lOyBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZSB8XVxuXG4gIGxldCBnZXRfYXR0ciB0aGlzIG5hbWUgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiZ2V0QXR0cmlidXRlXCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZ1xuICAgICAgbmFtZVxuXG4gIGxldCB1bnNldF9hdHRyIHRoaXMgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCB0aGlzIFwicmVtb3ZlQXR0cmlidXRlXCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBnZXRfY2xhc3NfbGlzdCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2xhc3NMaXN0XCIgSnguRGVjb2Rlci5qc1xuICBsZXQgc2V0X3N0eWxlIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcInN0eWxlXCIgSnguRW5jb2Rlci5zdHJpbmcgeFxuICBsZXQgZ2V0X3N0eWxlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJzdHlsZVwiIEp4LkRlY29kZXIuanNcbiAgbGV0IHJlc2V0X3N0eWxlIHRoaXMgPSBKeC5PYmouc2V0IHRoaXMgXCJzdHlsZVwiIEp4LkVuY29kZXIuc3RyaW5nIFwiXCJcbiAgbGV0IGdldF9ocmVmIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJocmVmXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9ocmVmIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImhyZWZcIiBKeC5FbmNvZGVyLnN0cmluZyB4XG4gIGxldCBnZXRfdmFsdWUgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInZhbHVlXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF92YWx1ZSB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkVuY29kZXIuc3RyaW5nIHhcbiAgbGV0IHJlc2V0X3ZhbHVlIHRoaXMgPSBKeC5PYmouc2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkVuY29kZXIuc3RyaW5nIFwiXCJcbiAgbGV0IHNldF9kaXNhYmxlZCB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJkaXNhYmxlZFwiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBzZXRfYXV0b2ZvY3VzIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImF1dG9mb2N1c1wiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBnZXRfb2Zmc2V0X3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJvZmZzZXRXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfY2xpZW50X3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJjbGllbnRXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfc2Nyb2xsX3dpZHRoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJzY3JvbGxXaWR0aFwiIEp4LkRlY29kZXIuaW50XG4gIGxldCBnZXRfY2hlY2tlZCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2hlY2tlZFwiIEp4LkRlY29kZXIuYm9vbFxuICBsZXQgc2V0X2NoZWNrZWQgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwiY2hlY2tlZFwiIEp4LkVuY29kZXIuYm9vbCB4XG4gIGxldCBnZXRfZmlsZXMgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImZpbGVzXCIgSnguRGVjb2Rlci5hcnJheV9qc1xuZW5kXG5cbm1vZHVsZSBUZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIlRleHRcIlxuICBsZXQgdG9fY2hhcmFjdGVyX2RhdGEgdCA9IHRcbmVuZFxuXG5tb2R1bGUgQ29tbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJDb21tZW50XCJcbiAgbGV0IHRvX2NoYXJhY3Rlcl9kYXRhIHQgPSB0XG4gIGxldCBtYWtlIGRhdGEgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIGRhdGFcbmVuZFxuXG5tb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiRG9jdW1lbnRGcmFnbWVudFwiXG4gIGxldCB0b19ub2RlIHQgPSB0XG4gIGxldCBtYWtlICgpID0gSnguT2JqLm5ldzAgdFxuXG4gIGxldCByZXBsYWNlX2NoaWxkcmVuIHRoaXMgY2hpbGRyZW4gPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlcGxhY2VDaGlsZHJlblwiIGNoaWxkcmVuXG5lbmRcblxubW9kdWxlIERvY3VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdGhpcyA9IEdsb2JhbC5kb2N1bWVudFxuICBsZXQgdG9fbm9kZSB0aGlzID0gdGhpc1xuICBsZXQgZ2V0X2Nvb2tpZXMgKCkgPSBKeC5PYmouZ2V0IEdsb2JhbC5kb2N1bWVudCBcImNvb2tpZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfY29va2llcyBjb29raWVzID0gSnguT2JqLnNldCB0aGlzIFwiY29va2llXCIgSnguRW5jb2Rlci5zdHJpbmcgY29va2llc1xuXG4gIGxldCBnZXRfZWxlbWVudF9ieV9pZCBpZCA9XG4gICAgSnguRGVjb2Rlci5udWxsYWJsZVxuICAgICAgKGZ1biB4IC0+IHgpXG4gICAgICAoSnguT2JqLmNhbGxfanMgR2xvYmFsLmRvY3VtZW50IFwiZ2V0RWxlbWVudEJ5SWRcIlxuICAgICAgICAgW3wgSnguRW5jb2Rlci5zdHJpbmcgaWQgfF1cbiAgICAgIClcblxuICBsZXQgcXVlcnlfc2VsZWN0b3Igc2VsZWN0b3IgPVxuICAgIEp4Lk9iai5jYWxsMSBHbG9iYWwuZG9jdW1lbnQgXCJxdWVyeVNlbGVjdG9yXCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gICAgICBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvclxuXG4gIGxldCBxdWVyeSBzZWxlY3RvciA9XG4gICAgSnguT2JqLmNhbGwxIEdsb2JhbC5kb2N1bWVudCBcInF1ZXJ5U2VsZWN0b3JcIlxuICAgICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgICAgIEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9yXG5cbiAgbGV0IHF1ZXJ5X3NlbGVjdG9yX2FsbCBfc2VsZWN0b3IgPSBmYWlsd2l0aCBcInRvZG9cIlxuXG4gIGxldCBjcmVhdGVfdGV4dF9ub2RlIHRleHQgPVxuICAgIEp4Lk9iai5jYWxsX2pzIEdsb2JhbC5kb2N1bWVudCBcImNyZWF0ZVRleHROb2RlXCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgdGV4dCB8XVxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCBuYW1lID1cbiAgICBKeC5PYmouY2FsbF9qcyBHbG9iYWwuZG9jdW1lbnQgXCJjcmVhdGVFbGVtZW50XCIgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB8XVxuXG4gIGxldCBhY3RpdmVfZWxlbWVudCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiYWN0aXZlRWxlbWVudFwiIEp4LkRlY29kZXIuanNcbmVuZFxuXG5tb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBoYXNoIHQgPSBKeC5PYmouZ2V0IHQgXCJoYXNoXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9oYXNoIHQgdiA9IEp4Lk9iai5zZXQgdCBcImhhc2hcIiBKeC5FbmNvZGVyLnN0cmluZyB2XG4gIGxldCBocmVmIHQgPSBKeC5PYmouZ2V0IHQgXCJocmVmXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNldF9ocmVmIHQgdiA9IEp4Lk9iai5zZXQgdCBcImhyZWZcIiBKeC5FbmNvZGVyLnN0cmluZyB2XG4gIGxldCByZXBsYWNlIHQgdXJsID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInJlcGxhY2VcIiBKeC5FbmNvZGVyLnN0cmluZyB1cmxcbiAgbGV0IGFzc2lnbiB0IHVybCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJhc3NpZ25cIiBKeC5FbmNvZGVyLnN0cmluZyB1cmxcbiAgbGV0IHJlbG9hZCB0ID0gSnguT2JqLmNhbGwwIHQgXCJyZWxvYWRcIiB+cmV0dXJuOkp4LkRlY29kZXIuYW55ICgpXG4gIGxldCBob3N0bmFtZSB0ID0gSnguT2JqLmdldCB0IFwiaG9zdG5hbWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgc2VhcmNoIHQgPSBKeC5PYmouZ2V0IHQgXCJzZWFyY2hcIiBKeC5EZWNvZGVyLnN0cmluZ1xuZW5kXG5cbm1vZHVsZSBXaW5kb3cgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0aGlzID0gR2xvYmFsLndpbmRvd1xuICBsZXQgdG9fZXZlbnRfdGFyZ2V0IHQgPSB0XG4gIGxldCBsb2NhdGlvbiA9IEp4Lk9iai5nZXQgdGhpcyBcImxvY2F0aW9uXCIgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBzZXRfaW50ZXJ2YWwgZiBtcyA9XG4gICAgSnguT2JqLmNhbGwyIEdsb2JhbC53aW5kb3cgXCJzZXRJbnRlcnZhbFwiIH5yZXR1cm46SnguRGVjb2Rlci5pbnRcbiAgICAgIEp4LkVuY29kZXIuZnVuMSBKeC5FbmNvZGVyLmludCBmIG1zXG5cbiAgbGV0IHNldF90aW1lb3V0IGYgbXMgPVxuICAgIEp4Lk9iai5jYWxsMiBHbG9iYWwud2luZG93IFwic2V0VGltZW91dFwiIH5yZXR1cm46SnguRGVjb2Rlci5pbnRcbiAgICAgIEp4LkVuY29kZXIuZnVuMSBKeC5FbmNvZGVyLmludCBmIG1zXG5cbiAgbGV0IGNsZWFyX3RpbWVvdXQgaWQgPVxuICAgIEp4Lk9iai5jYWxsMV91bml0IEdsb2JhbC53aW5kb3cgXCJjbGVhclRpbWVvdXRcIiBKeC5FbmNvZGVyLmludCBpZFxuXG4gIGxldCBhbGVydCB0ZXh0ID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcImFsZXJ0XCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBjb25maXJtIHRleHQgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiY29uZmlybVwiIH5yZXR1cm46SnguRGVjb2Rlci5ib29sIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICBsZXQgcHJvbXB0IHRleHQgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwicHJvbXB0XCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUgc3RyaW5nKVxuICAgICAgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gICgqIEV2ZW50IGhhbmRsaW5nICopXG5cbiAgbGV0IGJpbmQgZXZlbnRfdHlwZSBmID1cbiAgICBKeC5PYmouY2FsbDJfdW5pdCB0aGlzIFwiYWRkRXZlbnRMaXN0ZW5lclwiIEp4LkVuY29kZXIuanMgSnguRW5jb2Rlci5mdW4xXG4gICAgICBldmVudF90eXBlIGZcblxuICBsZXQgdW5iaW5kIGV2ZW50X3R5cGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlbW92ZUV2ZW50TGlzdGVyXCIgW3wgSnguRW5jb2Rlci5qcyBldmVudF90eXBlIHxdXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZGxpYiIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwidGV4dCIsInRoaXMkIiwibGVuZ3RoIiwiY3N0X3NldFByb3BlcnR5Iiwic2V0IiwibmFtZSIsInZhbHVlIiwidW5zZXQiLCJ0YXJnZXQiLCJnZXQiLCJ0b19zdHJpbmciLCJtYWtlIiwidCIsInByZXZlbnRfZGVmYXVsdCIsImNoYW5nZSIsInJlc2l6ZSIsImNzdF9jbGljayIsImNsaWNrIiwiZGJsY2xpY2siLCJtb3VzZW1vdmUiLCJwYWdlX3giLCJwYWdlX3kiLCJrZXlkb3duIiwia2V5IiwiY29kZSIsImJlZm9yZV9pbnB1dCIsImlucHV0IiwiY2FuY2VsIiwiZGF0YSIsImZ1bGxzY3JlZW5fY2hhbmdlIiwiZnVsbHNjcmVlbl9lcnJvciIsInBvcHN0YXRlIiwiaGFzaGNoYW5nZSIsImNzdF9ibHVyIiwiYmx1ciIsImZvY3VzaW4iLCJmb2N1c291dCIsInN1Ym1pdCIsInRvZ2dsZSIsImFkZCIsImNzdF9yZW1vdmUiLCJyZW1vdmUiLCJzaXplIiwidHlwZSIsImxhc3RfbW9kaWZpZWQiLCJ0b19ibG9iIiwidG9fanMiLCJwYXJlbnQiLCJmaXJzdF9jaGlsZCIsImxhc3RfY2hpbGQiLCJjc3RfbmV4dFNpYmxpbmciLCJuZXh0X3NpYmxpbmciLCJuZXh0X3NpYmxpbmdfanMiLCJpdGVyX2NoaWxkcmVuIiwibm9kZV9saXN0IiwiY2hpbGRyZW4iLCJhY2MiLCJjIiwiY2xvbmVfbm9kZSIsImRlZXAiLCJpc19zYW1lX25vZGUiLCJvdGhlciIsInJlcGxhY2Vfd2l0aCIsImFwcGVuZF90ZXh0IiwiYXBwZW5kX2NoaWxkIiwicmVtb3ZlX2NoaWxkIiwiaW5zZXJ0X2JlZm9yZSIsInJlZmVyZW5jZSIsIm5ld19ub2RlIiwiaW5zZXJ0X2FmdGVyIiwicmVwbGFjZV9jaGlsZCIsImNzdF9yZXBsYWNlQ2hpbGRyZW4iLCJyZXBsYWNlX2NoaWxkcmVuIiwiaW5zZXJ0X2FkamFjZW50X2VsZW1lbnQiLCJwb3NpdGlvbiIsIm5vZGUiLCJpbnNlcnRfYmVmb3JlX2JlZ2luIiwiaW5zZXJ0X2FmdGVyX2JlZ2luIiwiaW5zZXJ0X2JlZm9yZV9lbmQiLCJpbnNlcnRfYWZ0ZXJfZW5kIiwiY3N0X3RleHRDb250ZW50Iiwic2V0X3RleHRfY29udGVudCIsImdldF90ZXh0X2NvbnRlbnQiLCJzZXRfaW5uZXJfaHRtbCIsImNzdF9hZGRFdmVudExpc3RlbmVyIiwiYmluZCIsImV2ZW50X3R5cGUiLCJ1bmJpbmQiLCJmb2N1cyIsImhpZGVfcG9wb3ZlciIsInNob3dfcG9wb3ZlciIsInRvZ2dsZV9wb3BvdmVyIiwibWF0Y2hlcyIsInNlbGVjdG9ycyIsImNsb3Nlc3QiLCJzZWxlY3QiLCJzZXRfYXR0ciIsImdldF9hdHRyIiwidW5zZXRfYXR0ciIsImdldF9jbGFzc19saXN0IiwiY3N0X3N0eWxlIiwic2V0X3N0eWxlIiwieCIsImdldF9zdHlsZSIsImNzdCIsInJlc2V0X3N0eWxlIiwiY3N0X2hyZWYiLCJnZXRfaHJlZiIsInNldF9ocmVmIiwiY3N0X3ZhbHVlIiwiZ2V0X3ZhbHVlIiwic2V0X3ZhbHVlIiwicmVzZXRfdmFsdWUiLCJzZXRfZGlzYWJsZWQiLCJzZXRfYXV0b2ZvY3VzIiwiZ2V0X29mZnNldF93aWR0aCIsImdldF9jbGllbnRfd2lkdGgiLCJnZXRfc2Nyb2xsX3dpZHRoIiwiY3N0X2NoZWNrZWQiLCJnZXRfY2hlY2tlZCIsInNldF9jaGVja2VkIiwiZ2V0X2ZpbGVzIiwidG9fY2hhcmFjdGVyX2RhdGEiLCJ0b19ub2RlIiwicGFyYW0iLCJjc3RfY29va2llIiwiZ2V0X2Nvb2tpZXMiLCJzZXRfY29va2llcyIsImNvb2tpZXMiLCJnZXRfZWxlbWVudF9ieV9pZCIsImlkIiwiY3N0X3F1ZXJ5U2VsZWN0b3IiLCJxdWVyeV9zZWxlY3RvciIsInNlbGVjdG9yIiwicXVlcnkiLCJxdWVyeV9zZWxlY3Rvcl9hbGwiLCJjcmVhdGVfdGV4dF9ub2RlIiwiY3JlYXRlX2VsZW1lbnQiLCJhY3RpdmVfZWxlbWVudCIsImNzdF9oYXNoIiwiaGFzaCIsInNldF9oYXNoIiwidiIsImhyZWYiLCJyZXBsYWNlIiwidXJsIiwiYXNzaWduIiwicmVsb2FkIiwiaG9zdG5hbWUiLCJzZWFyY2giLCJ0b19ldmVudF90YXJnZXQiLCJsb2NhdGlvbiIsInNldF9pbnRlcnZhbCIsIm1zIiwic2V0X3RpbWVvdXQiLCJjbGVhcl90aW1lb3V0IiwiYWxlcnQiLCJjb25maXJtIiwicHJvbXB0Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFaLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsSUNh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fSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfd2Vic29ja2V0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIEdsb2JhbCA9IFN0ZHdlYl9nbG9iYWxcbiAgbW9kdWxlIEV2ZW50ID0gU3Rkd2ViX2RvbS5FdmVudFxuZW5kXG5cbnR5cGUgdCA9IEp4LnRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCBkYXRhIHQgPSBKeC5PYmouZ2V0IHQgXCJkYXRhXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICAoKiBHZW5lcmljIGV2ZW50cyAqKVxuXG4gIGxldCBvcGVuJyA9IEV2ZW50Lk5hbWUubWFrZSBcIm9wZW5cIlxuICBsZXQgbWVzc2FnZSA9IEV2ZW50Lk5hbWUubWFrZSBcIm1lc3NhZ2VcIlxuICBsZXQgY2xvc2UgPSBFdmVudC5OYW1lLm1ha2UgXCJjbG9zZVwiXG4gIGxldCBlcnJvciA9IEV2ZW50Lk5hbWUubWFrZSBcImVycm9yXCJcbmVuZFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIldlYlNvY2tldFwiXG5sZXQgbWFrZSB1cmwgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHVybFxuXG5sZXQgYmluZCB0aGlzIGV2ZW50X3R5cGUgZiA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJhZGRFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICBldmVudF90eXBlIGZcblxubGV0IHVuYmluZCB0aGlzIGV2ZW50X3R5cGUgPVxuICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlclwiIFt8IEp4LkVuY29kZXIuanMgZXZlbnRfdHlwZSB8XVxuXG4oKiBUT0RPOiBwYXJhbWV0ZXJzIGBjb2RlYCBhbmQgYHJlYXNvbmAgbm90IGltcGxlbWVudGVkIHlldCAqKVxubGV0IGNsb3NlID9jb2RlID9yZWFzb24gdCA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJjbG9zZVwiXG4gICAgKEp4LkVuY29kZXIub3B0aW9uYWwgSnguRW5jb2Rlci5pbnQpXG4gICAgKEp4LkVuY29kZXIub3B0aW9uYWwgSnguRW5jb2Rlci5zdHJpbmcpXG4gICAgY29kZSByZWFzb25cblxubGV0IHNlbmQgdCBkYXRhID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInNlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyBkYXRhXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfZG9tIiwiZGF0YSIsInQiLCJvcGVuIiwibWVzc2FnZSIsImNzdF9jbG9zZSIsImNsb3NlIiwiZXJyb3IiLCJtYWtlIiwidXJsIiwiYmluZCIsInRoaXMkIiwiZXZlbnRfdHlwZSIsInVuYmluZCIsImNvZGUiLCJyZWFzb24iLCJzZW5kIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFQLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQ1FlLG1EQUFxQztBQUFBO0FBQUEsSUFBQUMsT0FJdEM7QUFBQSxJQUFBQyxVQUNFO0FBQUEsSUFBQUMsWURiaEI7QUFBQSxJQUFBQyxRQ2NjO0FBQUEsSUFBQUMsUUFDQTtBQUFBLElBQUFMLElBR047QUFBQSxZQUFBTSxLQUFBQyxLQUNPLGdEQUFtQztBQUFBLFlBQUFDLEtBQUFDLE9BQUFDLFlBQUF4QjtBQUFBQSxJQUdoRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQ2M7QUFBQTtBQUFBLFlBQUF5QixPQUFBRixPQUFBQztBQUFBQSxRQUFBLElBR2tDO0FBQUEsSUFBd0IsNERBQUc7QUFBQTtBQUFBLFlBQUFOLFFBQUFRLE1BQUFDLFFBQUFiO0FBQUFBO0FBQUFBLEtBQUEsSUFNekU7QUFBQSxTQURBO0FBQUEsSUFBb0MsK0RBRXpCO0FBQUE7QUFBQSxZQUFBYyxLQUFBZCxHQUFBRDtBQUFBQSxJQUVHLHlEQUFpRDtBQUFBO0FBQUEsR0FqQnRDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEbEI3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0ODU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl91cmxfc2VhcmNoX3BhcmFtcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG5lbmRcblxudHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIlVSTFNlYXJjaFBhcmFtc1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHNcbmxldCBlbXB0eSAoKSA9IEp4Lk9iai5uZXcwIHRcblxubGV0IG1ha2UgaXRlbXMgPVxuICBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIub2JqXG4gICAgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IChrLCBKeC5FbmNvZGVyLnN0cmluZyB2KSkgaXRlbXMpXG5cbmxldCBnZXQgdCBwYXJhbSA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZ2V0XCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBwYXJhbVxuXG5sZXQgZGVsZXRlIHQgP3ZhbHVlIHBhcmFtID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IEp4LnVuZGVmaW5lZFxuICAgIHwgU29tZSB2YWx1ZSAtPiBKeC5lbmNvZGUgSnguRW5jb2Rlci5zdHJpbmcgdmFsdWVcbiAgaW5cbiAgSnguT2JqLmNhbGwyX3VuaXQgdCBcImRlbGV0ZVwiIEp4LkVuY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55IHBhcmFtIHZhbHVlXG5cbmxldCBoYXMgdCA/dmFsdWUgdGV4dCA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgdmFsdWUgLT4gSnguZW5jb2RlIEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlXG4gIGluXG4gIEp4Lk9iai5jYWxsMiB0IFwiaGFzXCIgfnJldHVybjpKeC5EZWNvZGVyLmJvb2wgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5hbnlcbiAgICB0ZXh0IHZhbHVlXG5cbmxldCB0b19zdHJpbmcgdCA9IEp4Lk9iai5jYWxsMCB0IFwidG9TdHJpbmdcIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nICgpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3RkbGliX0xpc3QiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsImVtcHR5IiwicGFyYW0iLCJtYWtlIiwiaXRlbXMiLCJ2IiwiayIsImdldCIsImRlbGV0ZSQiLCJ2YWx1ZSIsImhhcyIsInRleHQiLCJ0b19zdHJpbmciXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVosR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsSUNNUTtBQUFBLFlBQUFDLFVBQUFDLEdBQ1UsOENBQWlDO0FBQUEsWUFBQUMsTUFBQUMsT0FDcEMsZ0NBQWE7QUFBQSxZQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBO0FBQUEsT0FJeEI7QUFBQTtBQUFBLGtCQUFBRjtBQUFBQSxjQUFBRyxJQUFVLFVBQUFDLElBQUE7QUFBQSxVQUFtQix1Q0FBbUI7QUFBQSxTQUFFO0FBQUE7QUFBQSxJQUFPO0FBQUE7QUFBQSxZQUFBQyxJQUFBVCxHQUFBSTtBQUFBQSxRQUFBLElBSXJDO0FBQUEsSUFBZSxvREFDWjtBQUFBO0FBQUEsWUFBQU0sUUFBQVYsR0FBQVcsT0FBQVA7QUFBQUEsSUFHekI7QUFBQSxTQUFBTyxVQUFBLFVBQUFBLFVBR2tCO0FBQUE7QUFBQSxTQUFBQSxVQUROO0FBQUEsSUFHWjtBQUFBLDRFQUF5RTtBQUFBO0FBQUEsWUFBQUMsSUFBQVosR0FBQVcsT0FBQUU7QUFBQUEsSUFHekU7QUFBQSxTQUFBRixVQUFBLFVBQUFBLFVBR2tCO0FBQUE7QUFBQSxTQUFBQSxVQUROO0FBQUEsSUFHWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBQ1k7QUFBQTtBQUFBLFlBQUFHLFVBQUFkO0FBQUFBLElBRUksMERBQXNEO0FBQUE7QUFBQSxHQTlCckM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVETm5DIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQ5NTcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3N0b3JhZ2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHQgPSBKeC50XG5cbmxldCBsb2NhbCA9IEp4Lmdsb2JhbCBcImxvY2FsU3RvcmFnZVwiXG5cbmxldCBnZXQgdCBuYW1lID1cbiAgSnguT2JqLmNhbGwxIHQgXCJnZXRJdGVtXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG5cbmxldCBzZXQgdCBuYW1lIHZhbHVlID1cbiAgSnguT2JqLmNhbGwyX3VuaXQgdCBcInNldEl0ZW1cIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHZhbHVlXG5cbmxldCBkZWwgdCBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcInJlbW92ZUl0ZW1cIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGw0IiwiYTEiLCJhMiIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNiIsImE1IiwiSngiLCJsb2NhbCIsImdldCIsInQiLCJuYW1lIiwic2V0IiwidmFsdWUiLCJkZWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFFDRVk7QUFBQSxZQUFBQyxJQUFBQyxHQUFBQztBQUFBQSxRQUFBLElBSVk7QUFBQSxJQUFlLHVEQUNiO0FBQUE7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxNQUFBRTtBQUFBQSxJQUd4QjtBQUFBLHlFQUE0RTtBQUFBO0FBQUEsWUFBQUMsSUFBQUosR0FBQUM7QUFBQUEsSUFFN0QsK0RBQXVEO0FBQUE7QUFBQSxHQVZwQztBQUFBO0FBQUE7QUFBQSxFREZwQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1MDAzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9vYmplY3QubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiT2JqZWN0XCJcblxubGV0IGZyb21fZW50cmllcyA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZnJvbUVudHJpZXNcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgSnguRW5jb2Rlci5qc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNCIsImExIiwiYTIiLCJhMyIsIkp4IiwidCIsImZyb21fZW50cmllcyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLElDRVE7QUFBQSxJQUFBQztBQUFBQSxNQUdOO0FBQUEsR0FBZ0U7QUFBQTtBQUFBO0FBQUEsRURMbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTAzMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfaXRlcmF0b3IubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG50eXBlICdhIG5leHQgPSBKeC50XG5cbmxldCBuZXh0IHQgPSBKeC5PYmouY2FsbF9qcyB0IFwibmV4dFwiIFt8fF1cbmxldCBuZXh0X2lzX2RvbmUgbmV4dCA9IEp4Lk9iai5nZXQgbmV4dCBcImRvbmVcIiBKeC5EZWNvZGVyLmJvb2xcbmxldCBuZXh0X3ZhbHVlIG5leHQgPSBKeC5PYmouZ2V0IG5leHQgXCJ2YWx1ZVwiIEp4LkRlY29kZXIuYW55XG5cbmxldCBpdGVyIGYgdCA9XG4gIGxldCBpc19kb25lID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlIG5vdCAhaXNfZG9uZSBkb1xuICAgIGxldCBuID0gbmV4dCB0IGluXG4gICAgaWYgbmV4dF9pc19kb25lIG4gdGhlbiBpc19kb25lIDo9IHRydWVcbiAgICBlbHNlXG4gICAgICBsZXQgdiA9IG5leHRfdmFsdWUgbiBpblxuICAgICAgZiB2XG4gIGRvbmVcblxubGV0IHVuc2FmZV9vZl9qcyBqcyA9IGpzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsIkp4IiwibmV4dCIsInQiLCJuZXh0X2lzX2RvbmUiLCJuZXh0X3ZhbHVlIiwiaXRlciIsImlzX2RvbmUiLCJuIiwidiIsInVuc2FmZV9vZl9qcyIsImpzIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsS0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDR2EsNkNBQTRCO0FBQUEsWUFBQUMsYUFBQUY7QUFBQUEsSUFDakIsc0RBQXNDO0FBQUE7QUFBQSxZQUFBRyxXQUFBSDtBQUFBQSxJQUN4Qyx3REFBc0M7QUFBQTtBQUFBLFlBQUFJLEtBQUFWLEdBQUFPO0FBQUFBLFFBQUFJLFVBSTFEO0FBQUE7QUFBQTtBQUFBLFNBQUFDLElBQ1U7QUFBQSxLQUNMO0FBQUEsTUFBb0I7QUFBQSxjQUFBQyxJQUViLGVBQ1I7QUFBQTtBQUFBLEdBQ0E7QUFBQSxZQUFBQyxhQUFBQyxJQUVnQixVQUFFO0FBQUEsR0RqQnhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDUwNzMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX21hcC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYl9pdGVyYXRvclxuXG50eXBlICdhIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiTWFwXCJcbmxldCB0b19qcyB0ID0gdFxubGV0IG9mX2pzIHQgPSB0XG5sZXQgbWFrZSAoKSA9IEp4Lk9iai5uZXcwIHRcbmxldCBjbGVhciB0ID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwiY2xlYXJcIiBbfHxdXG5sZXQgc2V0IHQgayB2ID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwic2V0XCIgW3wgazsgSnguRW5jb2Rlci5hbnkgdiB8XVxubGV0IGdldCB0IGsgPSBKeC5EZWNvZGVyLm9wdGlvbmFsIEp4LkRlY29kZXIuYW55IChKeC5PYmouY2FsbF9qcyB0IFwiZ2V0XCIgW3wgayB8XSlcbmxldCBkZWxldGUgdCBrID0gSnguT2JqLmNhbGxfanNfdW5pdCB0IFwiZGVsZXRlXCIgW3wgayB8XVxubGV0IGtleXMgdCA9IEp4Lk9iai5jYWxsX2pzIHQgXCJrZXlzXCIgW3x8XVxubGV0IHNpemUgdCA9IEp4Lk9iai5nZXQgdCBcInNpemVcIiBKeC5EZWNvZGVyLmludFxubGV0IHZhbHVlcyB0ID0gSnguT2JqLmNhbGxfanMgdCBcInZhbHVlc1wiIFt8fF1cblxubGV0IGZpcnN0X2tleSB0ID1cbiAgbGV0IGl0ZXIgPSBrZXlzIHQgaW5cbiAgbGV0IG5leHQgPSBJdGVyYXRvci5uZXh0IGl0ZXIgaW5cbiAgaWYgSXRlcmF0b3IubmV4dF9pc19kb25lIG5leHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSXRlcmF0b3IubmV4dF92YWx1ZSBuZXh0KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWJfU3Rkd2ViX2l0ZXJhdG9yIiwiSngiLCJ0IiwidG9fanMiLCJvZl9qcyIsIm1ha2UiLCJwYXJhbSIsImNsZWFyIiwic2V0IiwiayIsInYiLCJnZXQiLCJkZWxldGUkIiwia2V5cyIsInNpemUiLCJ2YWx1ZXMiLCJmaXJzdF9rZXkiLCJpdGVyIiwibmV4dCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxJQ0lRO0FBQUEsWUFBQUMsTUFBQUQsR0FDTSxTQUFDO0FBQUEsWUFBQUUsTUFBQUYsR0FDRCxTQUFDO0FBQUEsWUFBQUcsS0FBQUMsT0FDRCxnQ0FBYTtBQUFBLFlBQUFDLE1BQUFMLEdBQ2IsOENBQWtDO0FBQUEsWUFBQU0sSUFBQU4sR0FBQU8sR0FBQUM7QUFBQUEsUUFBQSxJQUNFO0FBQUEsSUFBZ0IsMENBQUc7QUFBQTtBQUFBLFlBQUFDLElBQUFULEdBQUFPO0FBQUFBLFFBQUEsSUFDcEI7QUFBQSxJQUFnQztBQUFBO0FBQUEsWUFBQUcsUUFBQVYsR0FBQU8sR0FDaEUsa0RBQXNDO0FBQUEsWUFBQUksS0FBQVgsR0FDMUMsNkNBQTRCO0FBQUEsWUFBQVksS0FBQVosR0FDNUIsbURBQWtDO0FBQUEsWUFBQWEsT0FBQWIsR0FDaEMsK0NBQThCO0FBQUEsWUFBQWMsVUFBQWQ7QUFBQUEsUUFBQWUsT0FHaEMsU0FBQUMsT0FDQTtBQUFBLElBQ1I7QUFBQTtBQUFBLGtCQUErQywyQ0FBMEI7QUFBQTtBQUFBLEdBZnZEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREp2QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1MTQxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9qc29uLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIkpTT05cIlxuXG5sZXQgc3RyaW5naWZ5ID8ocmVwbGFjZXIgPSBKeC51bmRlZmluZWQpID8oc3BhY2UgPSBKeC51bmRlZmluZWQpIHZhbHVlID1cbiAgSnguT2JqLmNhbGwzIHQgXCJzdHJpbmdpZnlcIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55XG4gICAgSnguRW5jb2Rlci5hbnkgSnguRW5jb2Rlci5hbnkgdmFsdWUgcmVwbGFjZXIgc3BhY2VcblxubGV0IHBhcnNlID9yZXZpdmVyIHRleHQgPVxuICBsZXQgcmV2aXZlciA9XG4gICAgbWF0Y2ggcmV2aXZlciB3aXRoXG4gICAgfCBOb25lIC0+IEp4LnVuZGVmaW5lZFxuICAgIHwgU29tZSByZXZpdmVyIC0+IHJldml2ZXJcbiAgaW5cbiAgSnguT2JqLmNhbGwyIHQgXCJwYXJzZVwiIH5yZXR1cm46SnguRGVjb2Rlci5qcyBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueVxuICAgIHRleHQgcmV2aXZlclxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNyIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiSngiLCJ0Iiwic3RyaW5naWZ5Iiwib3B0IiwidmFsdWUiLCJyZXBsYWNlciIsInNwYWNlIiwicGFyc2UiLCJyZXZpdmVyIiwidGV4dCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFULEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxLQUFBLG1DQUFBQyxJQ0VRO0FBQUEsWUFBQUMsVUFBQSxHQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxXQUVNLGtCQUFBQyxRQUFBO0FBQUEsSUFDWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUNvRDtBQUFBO0FBQUEsWUFBQUMsTUFBQUMsU0FBQUM7QUFBQUEsSUFHcEQ7QUFBQSxTQUFBRCxZQUFBLFlBQUFBLFlBR29CO0FBQUE7QUFBQSxTQUFBQSxZQURSO0FBQUEsSUFHWjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsdUJBQ2M7QUFBQTtBQUFBLEdBYlE7QUFBQTtBQUFBO0FBQUEsRURGeEIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTE5OSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZm9ybV9kYXRhLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIERvbSA9IFN0ZHdlYl9kb21cbiAgbW9kdWxlIE9iamVjdCA9IFN0ZHdlYl9vYmplY3RcbmVuZFxuXG50eXBlIHQgPSBKeC50XG5cbmxldCBjb25zdHIgPSBKeC5nbG9iYWwgXCJGb3JtRGF0YVwiXG5cbmxldCBtYWtlID9zdWJtaXR0ZXIgZm9ybSA9XG4gIG1hdGNoIHN1Ym1pdHRlciB3aXRoXG4gIHwgTm9uZSAtPiBKeC5PYmoubmV3MSBjb25zdHIgRG9tLk5vZGUudG9fanMgZm9ybVxuICB8IFNvbWUgc3VibWl0dGVyIC0+XG4gICAgSnguT2JqLm5ldzIgY29uc3RyIERvbS5Ob2RlLnRvX2pzIERvbS5Ob2RlLnRvX2pzIGZvcm0gc3VibWl0dGVyXG5cbmxldCBlbnRyaWVzIHQgPVxuICBsZXQgaXRlcl9qcyA9IEp4Lk9iai5jYWxsX2pzIHQgXCJlbnRyaWVzXCIgW3x8XSBpblxuICBTdGR3ZWJfaXRlcmF0b3IudW5zYWZlX29mX2pzIGl0ZXJfanNcblxubGV0IHRvX2pzb24gPSBPYmplY3QuZnJvbV9lbnRyaWVzXG5sZXQgdG9fanMgdCA9IHRcblxubGV0IHRvX2Fzc29jIHQgPVxuICBsZXQgaXQgPSBlbnRyaWVzIHQgaW5cbiAgbGV0IG91dCA9IHJlZiBbXSBpblxuICBTdGR3ZWJfaXRlcmF0b3IuaXRlclxuICAgIChmdW4geCAtPlxuICAgICAgbGV0IGFyciA9IEp4LkRlY29kZXIuYXJyYXkgSnguRGVjb2Rlci5zdHJpbmcgeCBpblxuICAgICAgbGV0IGl0ZW0gPSAoQXJyYXkuZ2V0IGFyciAwLCBBcnJheS5nZXQgYXJyIDEpIGluXG4gICAgICBvdXQgOj0gaXRlbSA6OiAhb3V0XG4gICAgKVxuICAgIGl0O1xuICBMaXN0LnJldiAhb3V0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9kb20iLCJTdGR3ZWJfU3Rkd2ViX29iamVjdCIsImNvbnN0ciIsIm1ha2UiLCJzdWJtaXR0ZXIiLCJmb3JtIiwiZW50cmllcyIsInQiLCJpdGVyX2pzIiwidG9fanNvbiIsInRvX2pzIiwidG9fYXNzb2MiLCJpdCIsIm91dCIsIngiLCJhcnIiLCJpdGVtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsU0NPYTtBQUFBLFlBQUFDLEtBQUFDLFdBQUFDO0FBQUFBLElBR1g7QUFBQSxLQUNVLG9FQUV1RDtBQUFBLFFBQUFELGNBSGpFO0FBQUEsSUFHRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBK0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFDO0FBQUFBLFFBQUFDLFVBR25EO0FBQUEsSUFDZCxvREFBb0M7QUFBQTtBQUFBLE9BQUFDLFVBVkw7QUFBQSxZQUFBQyxNQUFBSCxHQWFuQixTQUFDO0FBQUEsWUFBQUksU0FBQUo7QUFBQUEsUUFBQUssS0FHSixZQUFBQyxNQUNUO0FBQUEsSUFDQTtBQUFBO0FBQUEsZUFBQUM7QUFBQUE7QUFBQUEsUUFBQUMsTUFFYztBQUFBLFlBQ21CO0FBQUEsUUFBQUMsT0FBakI7QUFBQSxPQUNaO0FBQUE7QUFBQSxNQUFtQjtBQUFBO0FBQUEsSUFFbkIseUNBQ1M7QUFBQTtBQUFBLEdBekJrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURQakMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTI3NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZmV0Y2gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG4gIG1vZHVsZSBGb3JtX2RhdGEgPSBTdGR3ZWJfZm9ybV9kYXRhXG5lbmRcblxuKCogUmVxdWVzdCAqKVxuXG50eXBlIHJlcXVlc3QgPSBKeC50XG5cbm1vZHVsZSBSZXF1ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlcXVlc3RcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIlJlcXVlc3RcIlxuXG4gIGxldCBtYWtlID9vcHRpb25zIHVybCA9XG4gICAgbWF0Y2ggb3B0aW9ucyB3aXRoXG4gICAgfCBTb21lIG9wdGlvbnMgLT4gSnguT2JqLm5ldzIgdCBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmpzIHVybCBvcHRpb25zXG4gICAgfCBOb25lIC0+IEp4Lk9iai5uZXcxIHQgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG5cbiAgbGV0IG9mX2pzID0gSnguRGVjb2Rlci5qc1xuICBsZXQgdG9fanMgPSBKeC5FbmNvZGVyLmpzXG5lbmRcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBvZl9zdHJpbmcgPSBKeC5FbmNvZGVyLnN0cmluZ1xuICBsZXQgb2ZfZm9ybV9kYXRhID0gRm9ybV9kYXRhLnRvX2pzXG4gIGxldCB0b19qcyB0ID0gdFxuICBsZXQgdW5zYWZlX29mX2pzIHQgPSB0XG5lbmRcblxuKCogT3B0aW9ucyAqKVxuXG50eXBlIG1ldGggPVxuICBbIGBHZXQgfCBgUHV0IHwgYFBvc3QgfCBgRGVsZXRlIHwgYEhlYWQgfCBgQ29ubmVjdCB8IGBUcmFjZSB8IGBPcHRpb25zIF1cblxudHlwZSBtb2RlID0gWyBgQ29ycyB8IGBOb19jb3JzIF1cbnR5cGUgY3JlZGVudGlhbHMgPSBbIGBPbWl0IHwgYFNhbWVfb3JpZ2luIHwgYEluY2x1ZGUgXVxudHlwZSBvcHRpb25zID0gSngudFxudHlwZSBoZWFkZXJzID0gSngudFxuXG5tb2R1bGUgSGVhZGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBoZWFkZXJzXG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJIZWFkZXJzXCJcbiAgbGV0IG1ha2UgKCkgPSBKeC5PYmoubmV3MCB0XG5cbiAgbGV0IGFwcGVuZCB0IG5hbWUgdmFsdWUgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHQgXCJhcHBlbmRcIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHZhbHVlXG5cbiAgbGV0IGVudHJpZXMgdCA9IEp4Lk9iai5jYWxsMCB0IFwiZW50cmllc1wiIH5yZXR1cm46SnguRGVjb2Rlci5qcyAoKVxuZW5kXG5cbm1vZHVsZSBPcHRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IG9wdGlvbnNcblxuICBsZXQgbWFrZSA/Ym9keSA/bWV0aCA/KGhlYWRlcnMgPSBbXSkgP21vZGUgP2NyZWRlbnRpYWxzICgpID1cbiAgICBsZXQgb3BlbiBKeC5FbmNvZGVyIGluXG4gICAgbGV0IGZpZWxkcyA9IFtdIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgICAgIHwgW10gLT4gZmllbGRzXG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IGhzID0gSGVhZGVycy5tYWtlICgpIGluXG4gICAgICAgIExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gSGVhZGVycy5hcHBlbmQgaHMgbmFtZSB2YWx1ZSkgaGVhZGVycztcbiAgICAgICAgKFwiaGVhZGVyc1wiLCBocykgOjogZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIG1vZGUgd2l0aFxuICAgICAgfCBTb21lIGBDb3JzIC0+IChcIm1vZGVcIiwgc3RyaW5nIFwiY29yc1wiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgTm9fY29ycyAtPiAoXCJtb2RlXCIsIHN0cmluZyBcIm5vLWNvcnNcIikgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIGNyZWRlbnRpYWxzIHdpdGhcbiAgICAgIHwgU29tZSBgT21pdCAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJvbWl0XCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBTYW1lX29yaWdpbiAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJzYW1lLW9yaWdpblwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgSW5jbHVkZSAtPiAoXCJjcmVkZW50aWFsc1wiLCBzdHJpbmcgXCJpbmNsdWRlXCIpIDo6IGZpZWxkc1xuICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgIHwgU29tZSBib2R5IC0+IChcImJvZHlcIiwgQm9keS50b19qcyBib2R5KSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggbWV0aCB3aXRoXG4gICAgICB8IFNvbWUgYEdldCAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiR0VUXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBQdXQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIlBVVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgUG9zdCAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiUE9TVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgRGVsZXRlIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJERUxFVEVcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYEhlYWQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkhFQURcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYENvbm5lY3QgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkNPTk5FQ1RcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYE9wdGlvbnMgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIk9QVElPTlNcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYFRyYWNlIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJUUkFDRVwiKSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIEp4Lk9iai5vZl9saXN0IGZpZWxkc1xuXG4gIGxldCBvZl9qcyA9IEp4LkRlY29kZXIuanNcbiAgbGV0IHRvX2pzID0gSnguRW5jb2Rlci5qc1xuZW5kXG5cbigqIFJlc3BvbnNlICopXG5cbnR5cGUgcmVzcG9uc2UgPSBKeC5qc1xuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVzcG9uc2VcblxuICBsZXQgb2sgdCA9IEp4Lk9iai5nZXQgdCBcIm9rXCIgSnguRGVjb2Rlci5ib29sXG4gIGxldCBzdGF0dXMgdCA9IEp4Lk9iai5nZXQgdCBcInN0YXR1c1wiIEp4LkRlY29kZXIuaW50XG5cbiAgbGV0IHRleHQgdCA9XG4gICAgSnguT2JqLmNhbGwwIHQgXCJ0ZXh0XCIgfnJldHVybjpQcm9taXNlLm9mX2pzICgpXG4gICAgfD4gUHJvbWlzZS5tYXAgSnguRGVjb2Rlci5zdHJpbmdcblxuICBsZXQganNvbiB0ID1cbiAgICBKeC5PYmouY2FsbDAgdCBcImpzb25cIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgKCkgfD4gUHJvbWlzZS5tYXAgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBoZWFkZXJzIHQgPSBKeC5PYmouZ2V0IHQgXCJoZWFkZXJzXCIgSnguRGVjb2Rlci5qc1xuICBsZXQgb2ZfanMgPSBKeC5EZWNvZGVyLmpzXG4gIGxldCB0b19qcyA9IEp4LkVuY29kZXIuanNcbmVuZFxuXG5sZXQgZmV0Y2ggP2JvZHkgPyhtZXRoID0gYEdldCkgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIHVybCA9XG4gIGxldCBvcHRzID0gT3B0aW9ucy5tYWtlIH5tZXRoID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyA/Ym9keSAoKSBpblxuICBKeC5PYmouY2FsbDIgU3Rkd2ViX2dsb2JhbC53aW5kb3cgXCJmZXRjaFwiIH5yZXR1cm46UmVzcG9uc2Uub2ZfanNcbiAgICBKeC5FbmNvZGVyLnN0cmluZyBPcHRpb25zLnRvX2pzIHVybCBvcHRzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsIlN0ZGxpYl9MaXN0IiwiU3Rkd2ViX1N0ZHdlYl9mb3JtX2RhdGEiLCJ0IiwibWFrZSIsIm9wdGlvbnMiLCJ1cmwiLCJvZl9qcyIsInRvX2pzIiwib2Zfc3RyaW5nIiwib2ZfZm9ybV9kYXRhIiwidW5zYWZlX29mX2pzIiwicGFyYW0iLCJhcHBlbmQiLCJuYW1lIiwidmFsdWUiLCJlbnRyaWVzIiwiY3N0X2hlYWRlcnMiLCJib2R5IiwibWV0aCIsIm9wdCIsIm1vZGUiLCJjcmVkZW50aWFscyIsImhlYWRlcnMiLCJmaWVsZHMiLCJocyIsImNzdF9tb2RlIiwibWF0Y2giLCJjc3RfY3JlZGVudGlhbHMiLCJjc3RfbWV0aG9kIiwib2siLCJzdGF0dXMiLCJ0ZXh0IiwianNvbiIsImZldGNoIiwib3B0cyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVQsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFYLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLElDWVU7QUFBQSxZQUFBQyxLQUFBQyxTQUFBQztBQUFBQSxJQUdOLGNBRVUsZ0RBQW1DO0FBQUEsUUFBQUQsWUFGN0M7QUFBQSxJQUNrQixzRUFDMkI7QUFBQTtBQUFBO0FBQUEsSUFBQUUsUUFMcEI7QUFBQSxJQUFBQyxRQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBRixRQUFBTCxHQWdCYixTQUFDO0FBQUEsWUFBQVEsYUFBQVIsR0FDTSxTQUFDO0FBQUEsT0FBQUEsTUFnQmQ7QUFBQSxZQUFBQyxPQUFBUSxPQUNNLGtDQUFhO0FBQUEsWUFBQUMsT0FBQVYsR0FBQVcsTUFBQUM7QUFBQUEsSUFHekI7QUFBQSx3RUFBMkU7QUFBQTtBQUFBLFlBQUFDLFFBQUFiO0FBQUFBLElBRTdELHlEQUFpRDtBQUFBO0FBQUEsT0FBQWMsY0RuRG5FO0FBQUEsWUFBQWIsT0FBQWMsTUFBQUMsTUFBQUMsS0FBQUMsTUFBQUMsYUFBQVY7QUFBQUEsUUFBQVcsVUN5RFcsa0JBQUFDLFNBQUE7QUFBQSxJQUdQO0FBQUEsU0FBQUMsS0FJYTtBQUFBLEtBQ1Q7QUFBQTtBQUFBLGdCQUFBYjtBQUFBQSxZQUFBRyxRQUFVLFVBQUFELE9BQUE7QUFBQSxRQUFzQiw4QkFBNkI7QUFBQTtBQUFBO0FBQUEsU0FBQVUsV0FBUTtBQUFBO0FBQUE7QUFBQSxTQUFBQSxXQUx6RTtBQUFBO0FBQUEsS0FBQUUsV0Q1REo7QUFBQSxLQUFBRjtBQUFBQSxPQ29FSTtBQUFBO0FBQUE7QUFBQSw4QkFFMkI7QUFBQSw4QkFDRztBQUFBO0FBQUEsSUFHOUI7QUFBQTtBQUFBLE1BQUFHLFFBQUE7QUFBQSxNQUFBQyxrQkQxRUo7QUFBQSxNQUFBSjtBQUFBQSxRQzBFSTtBQUFBLG9DQUVrQztBQUFBO0FBQUE7QUFBQTtBQUFBLGtDQUNPO0FBQUE7QUFBQTtBQUFBLGtDQUNKO0FBQUE7QUFBQTtBQUFBLFNBQUFBLFdBSnJDO0FBQUEsSUFPQTtBQUFBLFNBQUFOLFNBQUEsU0FBQU0sV0FFeUM7QUFBQTtBQUFBLFNBQUFBLFdBRnpDO0FBQUEsSUFLQTtBQUFBO0FBQUEsTUFBQUcsVUFBQTtBQUFBLE1BQUFFLGFEdEZKO0FBQUEsTUFBQUw7QUFBQUEsUUNzRkk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1DQUk2QjtBQUFBLG1DQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUEsK0JBRUc7QUFBQTtBQUFBLG1DQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQ0FKQztBQUFBLG1DQUZIO0FBQUE7QUFBQTtBQUFBLG1DQURBO0FBQUE7QUFBQSwrQkFLSTtBQUFBO0FBQUE7QUFBQSxTQUFBQSxXQVBoQztBQUFBLElBWUEsc0NBQXFCO0FBQUE7QUFBQSxPQUFBakIsVUFyREksV0FBQUMsVUFBQTtBQUFBLFlBQUFzQixHQUFBM0IsR0FrRWhCLGlEQUFpQztBQUFBLFlBQUE0QixPQUFBNUIsR0FDN0IscURBQW9DO0FBQUEsWUFBQTZCLEtBQUE3QjtBQUFBQSxRQUFBLElBR2pEO0FBQUEsSUFDRyx3REFBNkI7QUFBQTtBQUFBLFlBQUE4QixLQUFBOUI7QUFBQUEsUUFBQSxJQUdoQztBQUFBLElBQWtELHdEQUF5QjtBQUFBO0FBQUEsWUFBQW9CLFFBQUFwQjtBQUFBQSxJQUU3RCx3REFBb0M7QUFBQTtBQUFBLE9BQUFJLFVBNUV6QixXQUFBQyxVQUFBO0FBQUEsWUFBQTBCLE1BQUFoQixNQUFBRSxLQUFBRyxTQUFBRixNQUFBQyxhQUFBaEI7QUFBQUE7QUFBQUEsS0FBQWEsT0FpRm5CO0FBQUEsS0FBQWdCLE9BQ0c7QUFBQSxJQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxrQkFDMEM7QUFBQTtBQUFBLEdBcEZmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRDdDN0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTQ2MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZGljdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBTdGRsaWJfb2JqID0gT2JqXG5tb2R1bGUgU3RkbGliX2FycmF5ID0gQXJyYXlcblxudHlwZSAnYSB0ID0gSnguT2JqLnRcblxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IHRvX29iaiBwID0gcFxubGV0IG9mX29iaiBvYmogPSBvYmpcbmxldCBlbXB0eSA9IEp4Lk9iai5lbXB0eVxuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IGFyciA9XG4gICAgKFN0ZGxpYl9vYmoubWFnaWMgOiAoc3RyaW5nICogJ2EpIGFycmF5IC0+IChzdHJpbmcgKiBKeC50KSBhcnJheSkgYXJyXG4gIGluXG4gIEp4Lk9iai5vZl9hcnJheSBhcnJcblxubGV0IG9mX2xpc3QgbCA9IG9mX2FycmF5IChTdGRsaWJfYXJyYXkub2ZfbGlzdCBsKVxubGV0IGdldCBkaWN0IGtleSA9IEp4Lk9iai5nZXQgZGljdCBrZXkgSnguRGVjb2Rlci5hbnlcbmxldCBnZXRfb3B0IGRpY3Qga2V5ID0gSnguT2JqLmdldF9vcHQgZGljdCBrZXkgSnguRGVjb2Rlci5hbnlcbmxldCBzZXQgZGljdCBrZXkgeCA9IEp4Lk9iai5zZXQgZGljdCBrZXkgSnguRW5jb2Rlci5hbnkgeFxubGV0IGRlbCA9IEp4Lk9iai5kZWxcblxubGV0IGVudHJ5X29mX2pzIGVudHJ5X2pzID1cbiAgbWF0Y2ggSnguRGVjb2Rlci5hcnJheV9qcyBlbnRyeV9qcyB3aXRoXG4gIHwgW3wga2V5OyB2IHxdIC0+IChKeC5EZWNvZGVyLnN0cmluZyBrZXksIEp4LkRlY29kZXIuYW55IHYpXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIk9iamVjdCBlbnRyaWVzIGlzIG5vdCBhIHBhaXJcIlxuXG5sZXQgZW50cmllcyBkaWN0ID1cbiAgSnguT2JqLmNhbGwxIEp4Lk9iai50IFwiZW50cmllc1wiXG4gICAgfnJldHVybjooSnguRGVjb2Rlci5hcnJheSBlbnRyeV9vZl9qcylcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IGtleXMgZGljdCA9XG4gIEp4Lk9iai5jYWxsMSBKeC5PYmoudCBcImtleXNcIlxuICAgIH5yZXR1cm46SnguRGVjb2Rlci4oYXJyYXkgc3RyaW5nKVxuICAgIEp4LkVuY29kZXIuanMgZGljdFxuXG5sZXQgdmFsdWVzIGRpY3QgPVxuICBKeC5PYmouY2FsbDEgSnguT2JqLnQgXCJ2YWx1ZXNcIlxuICAgIH5yZXR1cm46SnguRGVjb2Rlci4oYXJyYXkgYW55KVxuICAgIEp4LkVuY29kZXIuanMgZGljdFxuXG5sZXQgbWFwIGRpY3QgZiA9XG4gIGxldCBvdXQgPSBlbXB0eSAoKSBpblxuICBsZXQga2V5cyA9IGtleXMgZGljdCBpblxuICBmb3IgaSA9IDAgdG8gU3RkbGliX2FycmF5Lmxlbmd0aCBrZXlzIC0gMSBkb1xuICAgIGxldCBrZXkgPSBTdGRsaWJfYXJyYXkudW5zYWZlX2dldCBrZXlzIGkgaW5cbiAgICBsZXQgeCA9IGdldCBkaWN0IGtleSBpblxuICAgIGxldCB4JyA9IGYgeCBpblxuICAgIHNldCBvdXQga2V5IHgnXG4gIGRvbmU7XG4gIG91dFxuXG5sZXQgdXBkYXRlIGRpY3QgZiA9XG4gIGxldCBrZXlzID0ga2V5cyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIGtleXMgLSAxIGRvXG4gICAgbGV0IGtleSA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IGtleXMgaSBpblxuICAgIGxldCB4ID0gZ2V0IGRpY3Qga2V5IGluXG4gICAgbGV0IHgnID0gZiB4IGluXG4gICAgc2V0IGRpY3Qga2V5IHgnXG4gIGRvbmVcblxubGV0IGZvbGRfbGVmdCBkaWN0IGYgaW5pdCA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgdmFsdWVzID0gdmFsdWVzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGggdmFsdWVzIC0gMSBkb1xuICAgIGxldCB4ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQgdmFsdWVzIGkgaW5cbiAgICBhY2MgOj0gZiAhYWNjIHhcbiAgZG9uZTtcbiAgIWFjY1xuXG5sZXQgaXRlciBkaWN0IGYgPVxuICBsZXQgdmFsdWVzID0gdmFsdWVzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGggdmFsdWVzIC0gMSBkb1xuICAgIGxldCB4ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQgdmFsdWVzIGkgaW5cbiAgICBmIHhcbiAgZG9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJ0b19vYmoiLCJvZl9vYmoiLCJvYmoiLCJlbXB0eSIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJnZXQiLCJkaWN0Iiwia2V5IiwiZ2V0X29wdCIsInNldCIsIngiLCJkZWwiLCJlbnRyeV9vZl9qcyIsImVudHJ5X2pzIiwibWF0Y2giLCJsZW4iLCJ2IiwiZW50cmllcyIsImtleXMiLCJ2YWx1ZXMiLCJtYXAiLCJvdXQiLCJpIiwidXBkYXRlIiwiZm9sZF9sZWZ0IiwiaW5pdCIsImFjYyIsIml0ZXIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxNQUFBQyxHQ0tjLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxZQUFBQyxPQUFBSCxHQUNGLFNBQUM7QUFBQSxZQUFBSSxPQUFBQyxLQUNDLFdBQUc7QUFBQSxPQUFBQyxRRFJwQjtBQUFBLFlBQUFDLFNBQUFDLEtDZUUsaUNBQW1CO0FBQUEsWUFBQUMsUUFBQUMsR0FFSSxPQUF3QixTQUF4QiwrQkFBd0I7QUFBQSxZQUFBQyxJQUFBQyxNQUFBQztBQUFBQSxJQUM5QixvREFBa0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFGLE1BQUFDO0FBQUFBLElBQzlCLG9EQUFzQztBQUFBO0FBQUEsWUFBQUUsSUFBQUgsTUFBQUMsS0FBQUc7QUFBQUEsSUFDeEMsdURBQW9DO0FBQUE7QUFBQSxPQUFBQyxNRHBCekQ7QUFBQSxZQUFBQyxZQUFBQztBQUFBQSxRQUFBQyxRQ3dCUSxpQ0FBQUMsTUFBNEI7QUFBQSxrQkFFM0IsMkRBQTBDO0FBQUEsUUFBQVIsTUFGZixVQUFBUyxJQUFBLGNBQ1E7QUFBQSxJQUF2Qix5Q0FBcUI7QUFBQSxHQUNTO0FBQUEsWUFBQUMsUUFBQVg7QUFBQUEsUUFBQSxJQUl2QztBQUFBLElBQThCLCtEQUNwQjtBQUFBO0FBQUEsWUFBQVksS0FBQVo7QUFBQUEsUUFBQSxJQUlFO0FBQUEsSUFBWSw0REFDZDtBQUFBO0FBQUEsWUFBQWEsT0FBQWI7QUFBQUEsUUFBQSxJQUlFO0FBQUEsSUFBUyw4REFDWDtBQUFBO0FBQUEsWUFBQWMsSUFBQWQsTUFBQTNCO0FBQUFBO0FBQUFBLEtBQUEwQyxNQUdWO0FBQUEsS0FBQUgsU0FDQztBQUFBLFNBQ1g7QUFBQTtBQUFBLFNBQUFJLElBQUE7QUFBQTtBQUFBLFVBQUFmLE1BQ0UsZUFBQUcsSUFDUSxnQkFBQUEsTUFDQztBQUFBLE1BQ1Q7QUFBQSxjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVoQjtBQUFBLEdBQUc7QUFBQSxZQUFBYSxPQUFBakIsTUFBQTNCO0FBQUFBLFFBQUF1QyxTQUdRLGdCQUNYO0FBQUE7QUFBQSxTQUFBSSxJQUFBO0FBQUE7QUFBQSxVQUFBZixNQUNFLGVBQUFHLElBQ1EsZ0JBQUFBLE1BQ0M7QUFBQSxNQUNUO0FBQUEsY0FBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFKakI7QUFBQSxHQUtJO0FBQUEsWUFBQWMsVUFBQWxCLE1BQUEzQixHQUFBOEM7QUFBQUEsUUFBQU4sV0FJUyxrQkFDYjtBQUFBO0FBQUEsU0FBQU8sUUFBQTtBQUFBO0FBQUEsU0FBQUEsTUFBQSxNQUFBSixJQUFBO0FBQUE7QUFBQSxVQUFBWixJQUNVLHFCQUNELDJCQUFRO0FBQUEsc0JBQUFnQixRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVqQjtBQUFBLEdBQUk7QUFBQSxZQUFBQyxLQUFBckIsTUFBQTNCO0FBQUFBLFFBQUF3QyxXQUdTLGtCQUNiO0FBQUE7QUFBQSxTQUFBRyxJQUFBO0FBQUE7QUFBQSxVQUFBWixJQUNVO0FBQUEsTUFDUjtBQUFBLGNBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRkw7QUFBQSxHQUdJO0FBQUEsR0Q3RU4iLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTYyMSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfY29uc29sZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBHbG9iYWwuY29uc29sZVxubGV0IGxvZyB4ID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcImxvZ1wiIEp4LkVuY29kZXIuYW55IHhcbmxldCBlcnJvciB4ID0gSnguT2JqLmNhbGwxX3VuaXQgdCBcImVycm9yXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IGluZm8geCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJpbmZvXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IHdhcm4geCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJ3YXJuXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IGVuc3VyZSBiIHggPSBKeC5PYmouY2FsbDJfdW5pdCB0IFwiYXNzZXJ0XCIgSnguRW5jb2Rlci5ib29sIEp4LkVuY29kZXIuYW55IGIgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw0IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiY2FtbF9jYWxsNiIsImE0IiwiYTUiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJ0IiwibG9nIiwieCIsImVycm9yIiwiaW5mbyIsIndhcm4iLCJlbnN1cmUiLCJiIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsSUFBQTtBQUFBLFlBQUFDLElBQUFDLEdDS1ksc0RBQTBDO0FBQUEsWUFBQUMsTUFBQUQ7QUFBQUEsSUFDeEMsd0RBQTRDO0FBQUE7QUFBQSxZQUFBRSxLQUFBRixHQUM3Qyx1REFBMkM7QUFBQSxZQUFBRyxLQUFBSCxHQUMzQyx1REFBMkM7QUFBQSxZQUFBSSxPQUFBQyxHQUFBTDtBQUFBQSxJQUN2Qyx1RUFBK0Q7QUFBQTtBQUFBLEdEVGhGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDU2NTcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2NsaXBib2FyZC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBQcm9taXNlID0gU3Rkd2ViX3Byb21pc2VcblxudHlwZSB0ID0gSngudFxuXG5sZXQgd3JpdGVfdGV4dCB0IHRleHQgPVxuICBKeC5PYmouY2FsbDEgdCBcIndyaXRlVGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDUiLCJmIiwiYTAiLCJhMSIsImEyIiwiYTMiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX3Byb21pc2UiLCJ3cml0ZV90ZXh0IiwidCIsInRleHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElDS0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQXVFO0FBQUE7QUFBQSxHREx6RSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1Njg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9hcnJheS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgJ2EgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJBcnJheVwiXG5sZXQgdG9fanMgcCA9IHBcbmxldCBvZl9qcyBqcyA9IGpzXG5sZXQgbWFrZSBuID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLmludCBuXG5sZXQgZW1wdHkgKCkgPSBtYWtlIDBcbmxldCBzZXQgYXJyIChpIDogaW50KSB4ID0gSnguT2JqLnNldF9qcyBhcnIgKEp4LkVuY29kZXIuaW50IGkpIChKeC5FbmNvZGVyLmFueSB4KVxuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgb3V0ID0gbWFrZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHNldCBvdXQgaSAoZiBpKVxuICBkb25lO1xuICBvdXRcblxubGV0IGdldCBhcnIgaSA9IEp4LkRlY29kZXIuYW55IChKeC5PYmouZ2V0X2pzIGFyciAoSnguRW5jb2Rlci5pbnQgaSkpXG5cbmxldCBnZXRfb3B0IGFyciBpID1cbiAgbGV0IHggPSBnZXQgYXJyIGkgaW5cbiAgbGV0IHhfanMgPSBKeC5FbmNvZGVyLmFueSB4IGluXG4gIGlmIEp4LmlzX3VuZGVmaW5lZCB4X2pzIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2UgeFxuXG5sZXQgcHVzaCBhcnIgeCA9IEp4Lk9iai5jYWxsMV91bml0IGFyciBcInB1c2hcIiBKeC5FbmNvZGVyLmFueSB4XG5sZXQgcG9wIGFyciA9IEp4Lk9iai5jYWxsMCBhcnIgXCJwb3BcIiB+cmV0dXJuOkp4LkRlY29kZXIuYW55ICgpXG5sZXQgcG9wX29wdCBhcnIgPSBKeC5PYmouY2FsbDAgYXJyIFwicG9wXCIgfnJldHVybjpKeC5EZWNvZGVyLihvcHRpb25hbCBhbnkpICgpXG5sZXQgbGVuZ3RoIGFyciA9IEp4Lk9iai5nZXQgYXJyIFwibGVuZ3RoXCIgSnguRGVjb2Rlci5pbnRcblxubGV0IGNvbmNhdCBhcnIxIGFycjIgPVxuICBKeC5PYmouY2FsbDEgfnJldHVybjpKeC5EZWNvZGVyLmpzIGFycjEgXCJjb25jYXRcIiBKeC5FbmNvZGVyLmpzIGFycjJcblxubGV0IHNsaWNlIGFyciBpIGogPVxuICBKeC5PYmouY2FsbDIgfnJldHVybjpKeC5EZWNvZGVyLmpzIGFyciBcInNsaWNlXCIgSnguRW5jb2Rlci5pbnQgSnguRW5jb2Rlci5pbnQgaVxuICAgIGpcblxubGV0IGl0ZXIgYXJyIGYgPSBKeC5PYmouY2FsbDFfdW5pdCBhcnIgXCJmb3JFYWNoXCIgSnguRW5jb2Rlci5mdW4xIGZcblxubGV0IG9mX2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGVtcHR5ICgpXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgb3V0ID0gbWFrZSAxIGluXG4gICAgc2V0IG91dCAwIGhkO1xuICAgIExpc3QuaXRlcmkgKGZ1biBpIHggLT4gc2V0IG91dCAoaSArIDEpIHgpIHRsO1xuICAgIG91dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNyIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiSngiLCJTdGRsaWIiLCJ0IiwidG9fanMiLCJwIiwib2ZfanMiLCJqcyIsIm1ha2UiLCJuIiwiZW1wdHkiLCJwYXJhbSIsInNldCIsImFyciIsImkiLCJ4IiwiaW5pdCIsIm91dCIsImdldCIsImdldF9vcHQiLCJ4X2pzIiwicHVzaCIsImNzdF9wb3AiLCJwb3AiLCJwb3Bfb3B0IiwibGVuZ3RoIiwiY29uY2F0IiwiYXJyMSIsImFycjIiLCJzbGljZSIsImoiLCJpdGVyIiwib2ZfbGlzdCIsImwiLCJ0bCIsImhkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsSUNFUTtBQUFBLFlBQUFDLE1BQUFDLEdBQ00sU0FBQztBQUFBLFlBQUFDLE1BQUFDLElBQ0EsVUFBRTtBQUFBLFlBQUFDLEtBQUFDLEdBQ0osOENBQThCO0FBQUEsWUFBQUMsTUFBQUMsT0FDNUIsY0FBTTtBQUFBLFlBQUFDLElBQUFDLEtBQUFDLEdBQUFDO0FBQUFBLFFBQUEsSUFDMEMsK0JBQW5CO0FBQUEsSUFBa0Isd0NBQW1CO0FBQUE7QUFBQSxZQUFBQyxLQUFBUCxHQUFBdkI7QUFBQUEsUUFBQStCLE1BR3JFLGFBQ1Y7QUFBQTtBQUFBLFNBQUFILElBQUE7QUFBQTtBQUFBLE1BQ0UsWUFBVTtBQUFBLGNBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRWpCO0FBQUEsR0FBRztBQUFBLFlBQUFJLElBQUFMLEtBQUFDO0FBQUFBLFFBQUEsSUFFNkMsOEJBQW5CO0FBQUEsSUFBc0M7QUFBQTtBQUFBLFlBQUFLLFFBQUFOLEtBQUFDO0FBQUFBLFFBQUFDLElBRzNELGFBQUFLLE9BQ0c7QUFBQSxJQUNSO0FBQUEsS0FBMEI7QUFBQSxJQUFxQjtBQUFBLEdBQUM7QUFBQSxZQUFBQyxLQUFBUixLQUFBRTtBQUFBQSxJQUVwQyx5REFBNkM7QUFBQTtBQUFBLE9BQUFPLFVEdkI5RDtBQUFBLFlBQUFDLElBQUFWO0FBQUFBLElDd0JjLDBEQUFnRDtBQUFBO0FBQUEsWUFBQVcsUUFBQVg7QUFBQUEsUUFBQSxJQUNEO0FBQUEsSUFBWSxpREFBSTtBQUFBO0FBQUEsWUFBQVksT0FBQVo7QUFBQUEsSUFDNUQsdURBQXNDO0FBQUE7QUFBQSxZQUFBYSxPQUFBQyxNQUFBQztBQUFBQSxJQUdyRCx5RUFBbUU7QUFBQTtBQUFBLFlBQUFDLE1BQUFoQixLQUFBQyxHQUFBZ0I7QUFBQUEsSUFHbkU7QUFBQSw2RUFDRztBQUFBO0FBQUEsWUFBQUMsS0FBQWxCLEtBQUEzQjtBQUFBQSxJQUVZLDREQUFpRDtBQUFBO0FBQUEsWUFBQThDLFFBQUFDO0FBQUFBLElBR2hFLFFBQ1EsZUFLSDtBQUFBLFFBQUFDLEtBTkwsTUFBQUMsS0FBQSxNQUFBbEIsTUFHWTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUEscUJBQUFILEdBQUFDLEdBQXVCLDZCQUFpQjtBQUFBLElBQUk7QUFBQSxHQUN6QztBQUFBLEdBMUNrQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVERnpCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDU4MTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEFycmF5ID0gU3Rkd2ViX2FycmF5XG5tb2R1bGUgQ29uc29sZSA9IFN0ZHdlYl9jb25zb2xlXG5tb2R1bGUgRGljdCA9IFN0ZHdlYl9kaWN0XG5tb2R1bGUgRG9tID0gU3Rkd2ViX2RvbVxubW9kdWxlIEl0ZXJhdG9yID0gU3Rkd2ViX2l0ZXJhdG9yXG5tb2R1bGUgT2JqZWN0ID0gU3Rkd2ViX29iamVjdFxubW9kdWxlIEZvcm1fZGF0YSA9IFN0ZHdlYl9mb3JtX2RhdGFcbm1vZHVsZSBNYXAgPSBTdGR3ZWJfbWFwXG5tb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG5tb2R1bGUgRmV0Y2ggPSBTdGR3ZWJfZmV0Y2hcbm1vZHVsZSBTdG9yYWdlID0gU3Rkd2ViX3N0b3JhZ2Vcbm1vZHVsZSBDbGlwYm9hcmQgPSBTdGR3ZWJfY2xpcGJvYXJkXG5tb2R1bGUgSnNvbiA9IFN0ZHdlYl9qc29uXG5tb2R1bGUgV2Vic29ja2V0ID0gU3Rkd2ViX3dlYnNvY2tldFxubW9kdWxlIFVybF9zZWFyY2hfcGFyYW1zID0gU3Rkd2ViX3VybF9zZWFyY2hfcGFyYW1zXG5cbm1vZHVsZSBOYXZpZ2F0b3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBjbGlwYm9hcmQgdCA9IEp4Lk9iai5nZXQgdCBcImNsaXBib2FyZFwiIEp4LkRlY29kZXIuanNcbmVuZFxuXG5tb2R1bGUgTnVtYmVyID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IHRvX3ByZWNpc2lvbiB0IG4gPVxuICAgIGxldCB0X2pzID0gSnguRW5jb2Rlci5mbG9hdCB0IGluXG4gICAgSnguT2JqLmNhbGwxIHRfanMgXCJ0b1ByZWNpc2lvblwiIH5yZXR1cm46SnguRGVjb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5pbnQgblxuZW5kXG5cbmluY2x1ZGUgU3Rkd2ViX2dsb2JhbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw1IiwiYTMiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2dsb2JhbCIsIlN0ZHdlYl9TdGR3ZWJfdXJsX3NlYXJjaF9wYXJhbSIsIlN0ZHdlYl9TdGR3ZWJfd2Vic29ja2V0IiwiU3Rkd2ViX1N0ZHdlYl9jbGlwYm9hcmQiLCJTdGR3ZWJfU3Rkd2ViX3N0b3JhZ2UiLCJTdGR3ZWJfU3Rkd2ViX2ZldGNoIiwiU3Rkd2ViX1N0ZHdlYl9mb3JtX2RhdGEiLCJTdGR3ZWJfU3Rkd2ViX2pzb24iLCJTdGR3ZWJfU3Rkd2ViX2RvbSIsIlN0ZHdlYl9TdGR3ZWJfb2JqZWN0IiwiU3Rkd2ViX1N0ZHdlYl9tYXAiLCJTdGR3ZWJfU3Rkd2ViX2l0ZXJhdG9yIiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwiU3Rkd2ViX1N0ZHdlYl9kaWN0IiwiU3Rkd2ViX1N0ZHdlYl9hcnJheSIsIlN0ZHdlYl9TdGR3ZWJfY29uc29sZSIsImNsaXBib2FyZCIsInQiLCJ0b19wcmVjaXNpb24iLCJuIiwidF9qcyIsIndpbmRvdyIsImRvY3VtZW50IiwiY29uc29sZSIsIm5hdmlnYXRvciIsImVuY29kZV91cmlfY29tcG9uZW50IiwiU3Rkd2ViIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUNtQm9CLHdEQUFzQztBQUFBO0FBQUEsWUFBQUMsYUFBQUQsR0FBQUU7QUFBQUEsUUFBQUMsT0FPM0M7QUFBQSxJQUNYO0FBQUEsc0VBQTBFO0FBQUE7QUFBQTtBQUFBLElBQUFDLFNEM0I5RTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDYwODQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvaHRtbC9IdG1sLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBTdGR3ZWJcblxubW9kdWxlIEN0eCA9IHN0cnVjdFxuICBsZXQgZ2VuX2lkID1cbiAgICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gICAgZnVuICgpIC0+XG4gICAgICBpbmNyIGk7XG4gICAgICAoT2JqLm1hZ2ljICFpIDogc3RyaW5nKVxuXG4gIHR5cGUgdCA9IHsgaWQgOiBzdHJpbmc7IG11dGFibGUgY2xlYW51cCA6ICh1bml0IC0+IHVuaXQpIGxpc3Q7IHRyZWUgOiB0IFN0ZHdlYi5EaWN0LnQgfVxuXG4gIGxldCBtYWtlICgpID0geyBpZCA9IGdlbl9pZCAoKTsgY2xlYW51cCA9IFtdOyB0cmVlID0gU3Rkd2ViLkRpY3QuZW1wdHkgKCkgfVxuICBsZXQgb25fY2xlYW51cCB0IGYgPSB0LmNsZWFudXAgPC0gZiA6OiB0LmNsZWFudXBcbiAgbGV0IGNsZWFudXAgdCA9IExpc3QuaXRlciAoZnVuIGMgLT4gYyAoKSkgdC5jbGVhbnVwXG4gIGxldCBsaW5rIHQgdDIgPSBTdGR3ZWIuRGljdC5zZXQgdC50cmVlIHQyLmlkIHQyXG4gIGxldCB1bmxpbmsgdCBzdWJjdHggPSBTdGR3ZWIuRGljdC5kZWwgdC50cmVlIHN1YmN0eC5pZFxuZW5kXG5cbigqIEF0dHJpYnV0ZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IHNldCBcImF0dHJpYnV0ZXNcIiBvbiBlbGVtZW50cy5cbiAgIEh0bWwgdmFsdWVzIGFyZSBmdW5jdGlvbnMgdGhhdCBtb3VudCBhbmQgdW5tb3VudCBjaGlsZHJlbi5cblxuICAgQ2xlYW51cDpcbiAgIC0gZnJlZSBtdXN0IGJlIGFsd2F5cyBjYWxsZWQsIGlmIGRlZmluZWQ7XG4gICAtIHJlbW92ZSBtdXN0IGJlIGNhbGxlZCB0byBkZWFjdGl2YXRlIHRoZSBhdHRyIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZFxuICAgICB3aGVuIHRoZSBub2RlIGlzIHJlbW92ZWQuXG4qKVxuXG5tb2R1bGUgQXR0ciA9IHN0cnVjdFxuICB0eXBlIHN0YXRlID0geyBzZXQgOiB1bml0IC0+IHVuaXQ7IHVuc2V0IDogdW5pdCAtPiB1bml0IH1cbiAgdHlwZSB0ID0gQ3R4LnQgLT4gRG9tLk5vZGUudCAtPiBzdGF0ZVxuXG4gIGxldCBub3AgX2N0eCBfbm9kZSA9IHsgc2V0ID0gaWdub3JlOyB1bnNldCA9IGlnbm9yZSB9XG4gIGxldCBvbiBib29sIGF0dHIgPSBpZiBib29sIHRoZW4gYXR0ciBlbHNlIG5vcFxuXG4gIGxldCBvbl9zb21lID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gbm9wXG4gICAgfCBTb21lIGF0IC0+IGF0XG5cbiAgbGV0IG9uX29rID0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gLT4gbm9wXG4gICAgfCBPayBhdHRyIC0+IGF0dHJcblxuICBsZXQgc3RyaW5nIG5hbWUgdmFsdWUgX2N0eCBub2RlID1cbiAgICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuc2V0X2F0dHIgbm9kZSBuYW1lIHZhbHVlIGluXG4gICAgbGV0IHVuc2V0ICgpID0gRG9tLk5vZGUudW5zZXRfYXR0ciBub2RlIG5hbWUgaW5cbiAgICB7IHNldDsgdW5zZXQgfVxuXG4gIGxldCBib29sIG5hbWUgYm9vbCA9IGlmIGJvb2wgdGhlbiBzdHJpbmcgbmFtZSBcIlwiIGVsc2Ugbm9wXG4gIGxldCBpbnQgbmFtZSBpID0gc3RyaW5nIG5hbWUgKHN0cmluZ19vZl9pbnQgaSlcblxuICBsZXQgb25fbW91bnQgZiBfY3R4IG5vZGUgPVxuICAgIGxldCBzZXQgKCkgPSBmIG5vZGUgaW5cbiAgICB7IHNldDsgdW5zZXQgPSBpZ25vcmUgfVxuXG4gIGxldCBzZXQgYXR0ciBub2RlID0gYXR0ciBub2RlXG4gIGxldCB1bnNldCBzdGF0ZSA9IHN0YXRlLnVuc2V0ICgpXG5cbiAgbGV0IGNvbWJpbmUgYTEgYTIgY3R4IG5vZGUgPVxuICAgIGxldCBhMV9zdGF0ZSA9IGExIGN0eCBub2RlIGluXG4gICAgbGV0IGEyX3N0YXRlID0gYTIgY3R4IG5vZGUgaW5cbiAgICBsZXQgc2V0ICgpID1cbiAgICAgIGExX3N0YXRlLnNldCAoKTtcbiAgICAgIGEyX3N0YXRlLnNldCAoKVxuICAgIGluXG4gICAgbGV0IHVuc2V0ICgpID1cbiAgICAgIGExX3N0YXRlLnVuc2V0ICgpO1xuICAgICAgYTJfc3RhdGUudW5zZXQgKClcbiAgICBpblxuICAgIHsgc2V0OyB1bnNldCB9XG5cbiAgbGV0IGxpc3QgYXR0cnMgPSBMaXN0LmZvbGRfbGVmdCBjb21iaW5lIG5vcCBhdHRyc1xuICBsZXQgbGFiZWwgPSBzdHJpbmcgXCJsYWJlbFwiXG5lbmRcblxudHlwZSBhdHRyID0gQXR0ci50XG5cbmxldCBhdHRyID0gQXR0ci5zdHJpbmdcblxuKCogU3RhbmRhcmQgY29uc3RydWN0b3JzLiAqKVxubGV0IGFjY2VwdCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYWNjZXB0XCIgdmFsdWVcbmxldCBhY2Nlc3NrZXkgdmFsdWUgPSBBdHRyLnN0cmluZyBcImFjY2Vzc2tleVwiIHZhbHVlXG5sZXQgYWN0aW9uIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJhY3Rpb25cIiB2YWx1ZVxubGV0IGF1dG9jb21wbGV0ZSB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYXV0b2NvbXBsZXRlXCIgdmFsdWVcbmxldCBhdXRvZm9jdXMgdmFsdWUgPSBBdHRyLmJvb2wgXCJhdXRvZm9jdXNcIiB2YWx1ZVxubGV0IGNoYXJzZXQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImNoYXJzZXRcIiB2YWx1ZVxubGV0IGNoZWNrZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJjaGVja2VkXCIgdmFsdWVcbmxldCBjbGFzc19uYW1lIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJjbGFzc1wiIHZhbHVlXG5sZXQgY29scyB2YWx1ZSA9IEF0dHIuaW50IFwiY29sc1wiIHZhbHVlXG5sZXQgY29udGVudCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiY29udGVudFwiIHZhbHVlXG5sZXQgY29udGVudGVkaXRhYmxlIHZhbHVlID0gQXR0ci5ib29sIFwiY29udGVudGVkaXRhYmxlXCIgdmFsdWVcbmxldCBkZWZlciB2YWx1ZSA9IEF0dHIuYm9vbCBcImRlZmVyXCIgdmFsdWVcbmxldCBkaXIgdmFsdWUgPSBBdHRyLnN0cmluZyBcImRpclwiIHZhbHVlXG5sZXQgZGlzYWJsZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJkaXNhYmxlZFwiIHZhbHVlXG5sZXQgZHJhZ2dhYmxlIHZhbHVlID0gQXR0ci5ib29sIFwiZHJhZ2dhYmxlXCIgdmFsdWVcbmxldCBmb3InIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJmb3JcIiB2YWx1ZVxubGV0IGZvcm1hY3Rpb24gdmFsdWUgPSBBdHRyLnN0cmluZyBcImZvcm1hY3Rpb25cIiB2YWx1ZVxubGV0IGhlaWdodCB2YWx1ZSA9IEF0dHIuaW50IFwiaGVpZ2h0XCIgdmFsdWVcbmxldCBoaWRkZW4gdmFsdWUgPSBBdHRyLmJvb2wgXCJoaWRkZW5cIiB2YWx1ZVxubGV0IGhyZWYgdmFsdWUgPSBBdHRyLnN0cmluZyBcImhyZWZcIiB2YWx1ZVxubGV0IGlkIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJpZFwiIHZhbHVlXG5sZXQgbGFuZyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibGFuZ1wiIHZhbHVlXG5sZXQgbGlzdCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibGlzdFwiIHZhbHVlXG5sZXQgbWVkaWEgdmFsdWUgPSBBdHRyLnN0cmluZyBcIm1lZGlhXCIgdmFsdWVcbmxldCBtZXRob2QnIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJtZXRob2RcIiB2YWx1ZVxubGV0IG5hbWUgdmFsdWUgPSBBdHRyLnN0cmluZyBcIm5hbWVcIiB2YWx1ZVxubGV0IG9wZW4nIHZhbHVlID0gQXR0ci5ib29sIFwib3BlblwiIHZhbHVlXG5sZXQgcGxhY2Vob2xkZXIgdmFsdWUgPSBBdHRyLnN0cmluZyBcInBsYWNlaG9sZGVyXCIgdmFsdWVcbmxldCByZWwgdmFsdWUgPSBBdHRyLnN0cmluZyBcInJlbFwiIHZhbHVlXG5sZXQgcmVxdWlyZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJyZXF1aXJlZFwiIHZhbHVlXG5sZXQgcm93cyB2YWx1ZSA9IEF0dHIuaW50IFwicm93c1wiIHZhbHVlXG5sZXQgc2VsZWN0ZWQgdmFsdWUgPSBBdHRyLmJvb2wgXCJzZWxlY3RlZFwiIHZhbHVlXG5sZXQgc3BlbGxjaGVjayB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwic3BlbGxjaGVja1wiIHZhbHVlXG5sZXQgc3JjIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJzcmNcIiB2YWx1ZVxubGV0IHRhYmluZGV4IHZhbHVlID0gQXR0ci5pbnQgXCJ0YWJpbmRleFwiIHZhbHVlXG5sZXQgdGl0bGUgdmFsdWUgPSBBdHRyLnN0cmluZyBcInRpdGxlXCIgdmFsdWVcbmxldCB0eXBlJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwidHlwZVwiIHZhbHVlXG5cbmxldCB2YWx1ZSB4IF9jdHggbm9kZSA9XG4gIGxldCBzZXQgKCkgPSBEb20uTm9kZS5zZXRfdmFsdWUgbm9kZSB4IGluXG4gIGxldCB1bnNldCAoKSA9IERvbS5Ob2RlLnJlc2V0X3ZhbHVlIG5vZGUgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgdmFsdWVfb3IgZGVmYXVsdCBvcHQgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiB2YWx1ZSB4XG4gIHwgTm9uZSAtPiB2YWx1ZSBkZWZhdWx0XG5cbmxldCB3cmFwIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJ3cmFwXCIgdmFsdWVcbmxldCB3aWR0aCB2YWx1ZSA9IEF0dHIuaW50IFwid2lkdGhcIiB2YWx1ZVxubGV0IHN0eWxlIHggPSBBdHRyLnN0cmluZyBcInN0eWxlXCIgeFxubGV0IHJvbGUgeCA9IEF0dHIuc3RyaW5nIFwicm9sZVwiIHhcblxubGV0IHN0eWxlX2xpc3QgaXRlbXMgX2N0eCBub2RlID1cbiAgbGV0IHN0eWxlID0gRG9tLk5vZGUuZ2V0X3N0eWxlIG5vZGUgaW5cbiAgbGV0IHNldCAoKSA9IExpc3QuaXRlciAoZnVuIChuYW1lLCB2YWx1ZSkgLT4gRG9tLlN0eWxlLnNldCBzdHlsZSBuYW1lIHZhbHVlKSBpdGVtcyBpblxuICBsZXQgdW5zZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgX3ZhbHVlKSAtPiBEb20uU3R5bGUudW5zZXQgc3R5bGUgbmFtZSkgaXRlbXMgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgY2xhc3NfbGlzdCBpdGVtcyBfY3R4IG5vZGUgPVxuICBsZXQgY2wgPSBEb20uTm9kZS5nZXRfY2xhc3NfbGlzdCBub2RlIGluXG4gIGxldCBzZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biBuYW1lIC0+IERvbS5Ub2tlbl9saXN0LmFkZCBjbCBuYW1lKSBpdGVtcyBpblxuICBsZXQgdW5zZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biBuYW1lIC0+IERvbS5Ub2tlbl9saXN0LnJlbW92ZSBjbCBuYW1lKSBpdGVtcyBpblxuICB7IEF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBjbGFzc19mbGFncyBvcHRpb25zID1cbiAgbGV0IGxpc3QgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoYywgYikgLT4gaWYgYiB0aGVuIGMgOjogYWNjIGVsc2UgYWNjKSBbXSBvcHRpb25zIGluXG4gIGNsYXNzX2xpc3QgbGlzdFxuXG4oKiBEbyB3ZSBuZWVkIHRvIHVuYmluZCB0aGUgZXZlbnQgZXhwbGljaXRseT8gSW4gdGhlb3J5LCB0aGUgYnJvd3NlciBzaG91bGRcbiAgIHJlbW92ZSB0aGUgbGlzdGVuZXJzIHdoZW4gdGhlIG5vZGUgaXMgZ2MnZWQuICopXG5sZXQgb24gPyhkZWZhdWx0ID0gdHJ1ZSkgP2NvbmZpcm0gKG5hbWUgOiBEb20uRXZlbnQubmFtZSkgZiBfY3R4IG5vZGUgPVxuICBsZXQgZicgPVxuICAgIG1hdGNoIGNvbmZpcm0gd2l0aFxuICAgIHwgTm9uZSB3aGVuIG5vdCBkZWZhdWx0IC0+XG4gICAgICBmdW4gZXYgLT5cbiAgICAgICAgRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgZiBldlxuICAgIHwgTm9uZSAtPiBmXG4gICAgfCBTb21lIG1zZyAtPlxuICAgICAgZnVuIGV2IC0+XG4gICAgICAgIGlmIERvbS5XaW5kb3cuY29uZmlybSBtc2cgdGhlblxuICAgICAgICAgIGxldCAoKSA9IGlmIG5vdCBkZWZhdWx0IHRoZW4gRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldiBpblxuICAgICAgICAgIGYgZXZcbiAgICAgICAgZWxzZSBEb20uRXZlbnQucHJldmVudF9kZWZhdWx0IGV2XG4gIGluXG4gIGxldCBzZXQgKCkgPSBEb20uTm9kZS5iaW5kIG5vZGUgbmFtZSBmJyBpblxuICBsZXQgdW5zZXQgKCkgPSBEb20uTm9kZS51bmJpbmQgbm9kZSBuYW1lIGYnIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IG9uX2NoYW5nZSA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmNoYW5nZSAoZnVuIGV2IC0+XG4gICAgICBoYW5kbGVyIChEb20uTm9kZS5nZXRfdmFsdWUgKERvbS5FdmVudC50YXJnZXQgZXYpKSlcblxubGV0IG9uX2NoZWNrZWQgP2NvbmZpcm0gaGFuZGxlciA9XG4gIG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jaGFuZ2UgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X2NoZWNrZWQgKERvbS5FdmVudC50YXJnZXQgZXYpKSlcblxubGV0IG9uX2lucHV0ID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuaW5wdXQgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X3ZhbHVlIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9jbGljayA/Y29uZmlybSBoYW5kbGVyID0gb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmNsaWNrIChmdW4gXyAtPiBoYW5kbGVyICgpKVxuXG5sZXQgb25fZG91YmxlX2NsaWNrID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuZGJsY2xpY2sgKGZ1biBfIC0+IGhhbmRsZXIgKCkpXG5cbigqIEVsZW1cblxuICAgIGh0bWwgc3RhdGUgaXMgY29tcG9zZWQgb2YgdHdvIGNsZWFudXAgZnVuY3Rpb25zOlxuICAgIC0gZnJlZTogY2xlYW5zIHVwIGFueSBub24tZG9tIHJlc291cmNlcyAobGlrZSBzaWduYWwgc3Vic2NyaXB0aW9ucyk7XG4gICAgLSByZW1vdmU6IGNhbGxzIGZyZWUgYW5kIGFsc28gcmVtb3ZlcyB0aGUgdG9wLWxldmVsIGRvbSByZXNvdXJjZXMuXG5cbiAgIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG5lZWRlZCBzaW5jZSBkZWxldGluZyBhIHRvcC1sZXZlbCBkb20gbm9kZSxcbiAgIGF1dG9tYXRpY2FsbHkgZGVsZXRlcyB0aGUgY2hpbGRyZW4gbm9kZXMsIGJ1dCB3aWxsIG5vdCBmcmVlIGFueSBtYW51YWxseVxuICAgYWNxdWlyZWQgcmVzb3VyY2VzLlxuKilcblxuKCogRXh0cmEgY29uc3RydWN0b3JzLiAqKVxubW9kdWxlIEVsZW0gPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IHsgdW5tb3VudCA6IHVuaXQgLT4gdW5pdDsgbW91bnQgOiAoRG9tLm5vZGUgLT4gdW5pdCkgLT4gdW5pdCB9XG4gIHR5cGUgdCA9IEN0eC50IC0+IERvbS5ub2RlIC0+IHN0YXRlXG5cbiAgbGV0IG51bGxfc3RhdGUgPSB7IHVubW91bnQgPSBpZ25vcmU7IG1vdW50ID0gKGZ1biBfaW5zZXJ0IC0+ICgpKSB9XG4gIGxldCBudWxsIF9jdHggX3BhcmVudCA9IG51bGxfc3RhdGVcblxuICAoKlxuICAgIFtOT1RFXSBJbnZhcmlhbnRcbiAgICBUaGUgcGFyZW50IE1VU1QgTk9UIGNoYW5nZS5cblxuICAgIFtOT1RFXSBPcmVkclxuICAgIFRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBNVVNUIGJlOlxuICAgIDEuIGNyZWF0ZSBlbGVtXG4gICAgMi4gaW5zZXJ0IGVsZW1cbiAgICAzLiBzZXQgYXR0cnNcbiAgICAyLiBhZGQgY2hpbGRyZW5cblxuICAgIElmIHRoaXMgb3JkZXIgaXNuJ3QgZm9sbG93ZWQsIGFsbCBraW5kcyBvZiB0aGluZ3Mgd2lsbCBicmVhay4gRm9yIGV4YW1wbGUsXG4gICAgYHNlbGVjdGAgcmVxdWlyZXMgdGhhdCBjaGlsZHJlbiBhcmUgcHJlc2VudCBmb3IgdGhlIGB2YWx1ZWAgYXR0ciB0byB3b3JrLlxuXG4gICAgVGhlIGBjb25kaXRpb25hbGAgYXR0cmlidXRlIHJlcXVpcmVzIHRoYXQgdGhlIG5vZGUgaXMgbW91bnRlZCBvbiBhIHBhcmVudC5cbiAgKilcblxuICBsZXQgbWFrZSBuYW1lIGF0dHJzIGNoaWxkcmVuIGN0eCBwYXJlbnQgPVxuICAgIGxldCBtb3VudGVkID0gcmVmIGZhbHNlIGluXG4gICAgKCogQ3JlYXRlIG5vZGUgKilcbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfZWxlbWVudCBuYW1lIGluXG4gICAgbGV0IG1vdW50IGluc2VydCA9XG4gICAgICBpbnNlcnQgbm9kZTtcbiAgICAgIGlmIG5vdCAhbW91bnRlZCB0aGVuIChcbiAgICAgICAgKCogU2V0IG5vZGUncyBhdHRyaWJ1dGVzICopXG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gKGF0dHIgOiBBdHRyLnQpIC0+XG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gICAgICAgICAgICBzdGF0ZS5zZXQgKCkpXG4gICAgICAgICAgYXR0cnM7XG4gICAgICAgICgqIENyZWF0ZSBhbmQgbW91bnQgY2hpbGRyZW4gKilcbiAgICAgICAgbGV0IG5vZGVfaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6bm9kZSBpblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjaGlsZCA6IHQpIC0+XG4gICAgICAgICAgICBsZXQgY2hpbGRfc3RhdGUgPSBjaGlsZCBjdHggbm9kZSBpblxuICAgICAgICAgICAgY2hpbGRfc3RhdGUubW91bnQgbm9kZV9pbnNlcnQpXG4gICAgICAgICAgY2hpbGRyZW47XG4gICAgICAgIG1vdW50ZWQgOj0gdHJ1ZSlcbiAgICBpblxuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IERvbS5Ob2RlLnJlbW92ZV9jaGlsZCB+cGFyZW50IG5vZGUpO1xuICAgICAgKCogQWxsb3cgbW91bnRpbmcgbm9kZSBvbiBwYXJlbnQgKilcbiAgICAgIG1vdW50O1xuICAgIH1cblxuICBsZXQgdGV4dCBkYXRhIF9jdHggcGFyZW50ID1cbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfdGV4dF9ub2RlIGRhdGEgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IG5vZGUpO1xuICAgIH1cblxuICBsZXQgb2Zfc29tZSB0b19odG1sIG9wdGlvbiA9XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB0b19odG1sIHhcbiAgICB8IE5vbmUgLT4gbnVsbFxuXG4gIGxldCBvZl9vayB0b19odG1sIHJlc3VsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE9rIHggLT4gdG9faHRtbCB4XG4gICAgfCBFcnJvciBfIC0+IG51bGxcblxuICBsZXQgb25fdW5tb3VudCBmIGVsZW0gY3R4ID1cbiAgICBDdHgub25fY2xlYW51cCBjdHggZjtcbiAgICBlbGVtIGN0eFxuXG4gIGxldCB1bnNhZmUgbmFtZSBhdHRycyBjb250ZW50IGN0eCBwYXJlbnQgPVxuICAgIGxldCBub2RlID0gRG9tLkRvY3VtZW50LmNyZWF0ZV9lbGVtZW50IG5hbWUgaW5cbiAgICBEb20uTm9kZS5zZXRfaW5uZXJfaHRtbCBub2RlIGNvbnRlbnQ7XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChhdHRyIDogQXR0ci50KSAtPlxuICAgICAgICBsZXQgc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gICAgICAgIHN0YXRlLnNldCAoKSlcbiAgICAgIGF0dHJzO1xuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IERvbS5Ob2RlLnJlbW92ZV9jaGlsZCB+cGFyZW50IG5vZGUpO1xuICAgICAgbW91bnQgPSAoZnVuIGluc2VydCAtPiBpbnNlcnQgbm9kZSk7XG4gICAgfVxuXG4gIGxldCBmcmFnbWVudCBjaGlsZHJlbiBjdHggcGFyZW50ID1cbiAgICBsZXQgZnJhZyA9IERvbS5GcmFnbWVudC5tYWtlICgpIGluXG4gICAgbGV0IGZyYWdfaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyBpblxuICAgIGxldCBzdGF0ZXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biAoY2hpbGQgOiB0KSAtPlxuICAgICAgICAgIGxldCBzID0gY2hpbGQgY3R4IHBhcmVudCBpblxuICAgICAgICAgIHMubW91bnQgZnJhZ19pbnNlcnQ7XG4gICAgICAgICAgcylcbiAgICAgICAgY2hpbGRyZW5cbiAgICBpblxuICAgIHtcbiAgICAgIHVubW91bnQgPSAoZnVuICgpIC0+IExpc3QuaXRlciAoZnVuIChzIDogc3RhdGUpIC0+IHMudW5tb3VudCAoKSkgc3RhdGVzKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IGZyYWcpO1xuICAgIH1cbmVuZFxuXG50eXBlIGh0bWwgPSBFbGVtLnRcblxubGV0IGVsZW0gPSBFbGVtLm1ha2VcbmxldCB0ZXh0ID0gRWxlbS50ZXh0XG5sZXQgbnVsbCA9IEVsZW0ubnVsbFxubGV0IGZyYWdtZW50ID0gRWxlbS5mcmFnbWVudFxubGV0IGludCBuID0gdGV4dCAoc3RyaW5nX29mX2ludCBuKVxubGV0IG5ic3AgPSB0ZXh0IFwiXFx1ezAwQTB9XCJcbmxldCBhIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFcIiBhdHRycyBjaGlsZHJlblxubGV0IGFiYnIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYWJiclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYWRkcmVzcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhZGRyZXNzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhcmVhIGF0dHJzID0gZWxlbSBcImFyZWFcIiBhdHRycyBbXVxubGV0IGFydGljbGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYXJ0aWNsZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYXNpZGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYXNpZGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGF1ZGlvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImF1ZGlvXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJcIiBhdHRycyBjaGlsZHJlblxubGV0IGJhc2UgYXR0cnMgPSBlbGVtIFwiYmFzZVwiIGF0dHJzIFtdXG5sZXQgYmRpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJkaVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYmRvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJkb1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYmxvY2txdW90ZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJibG9ja3F1b3RlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiciBhdHRycyA9IGVsZW0gXCJiclwiIGF0dHJzIFtdXG5sZXQgYnV0dG9uIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImJ1dHRvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2FudmFzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNhbnZhc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2FwdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjYXB0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjaXRlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNpdGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvZGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29kZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY29sIGF0dHJzID0gZWxlbSBcImNvbFwiIGF0dHJzIFtdXG5sZXQgY29sZ3JvdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29sZ3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvbW1hbmQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY29tbWFuZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGF0YWxpc3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGF0YWxpc3RcIiBhdHRycyBjaGlsZHJlblxubGV0IGRkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGVsXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZXRhaWxzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRldGFpbHNcIiBhdHRycyBjaGlsZHJlblxubGV0IGRmbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZm5cIiBhdHRycyBjaGlsZHJlblxubGV0IGRpdiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkaXZcIiBhdHRycyBjaGlsZHJlblxubGV0IGRsIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRsXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkdCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZW0gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZW1cIiBhdHRycyBjaGlsZHJlblxubGV0IGVtYmVkIGF0dHJzID0gZWxlbSBcImVtYmVkXCIgYXR0cnMgW11cbmxldCBmaWVsZHNldCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmaWVsZHNldFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZmlnY2FwdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmaWdjYXB0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmaWd1cmUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmlndXJlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmb290ZXIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZm9vdGVyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBmb3JtIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZvcm1cIiBhdHRycyBjaGlsZHJlblxubGV0IGgxIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImgxXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoMiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoMlwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDMgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDNcIiBhdHRycyBjaGlsZHJlblxubGV0IGg0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImg0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoNSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoNVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDZcIiBhdHRycyBjaGlsZHJlblxubGV0IGhlYWQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaGVhZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaGVhZGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhlYWRlclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhncm91cFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaHIgYXR0cnMgPSBlbGVtIFwiaHJcIiBhdHRycyBbXVxuXG4oKiBsZXQgaHRtbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJodG1sXCIgYXR0cnMgY2hpbGRyZW4gKilcbmxldCBpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImlcIiBhdHRycyBjaGlsZHJlblxubGV0IGlmcmFtZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJpZnJhbWVcIiBhdHRycyBjaGlsZHJlblxubGV0IGltZyBhdHRycyA9IGVsZW0gXCJpbWdcIiBhdHRycyBbXVxubGV0IGlucHV0IGF0dHJzID0gZWxlbSBcImlucHV0XCIgYXR0cnMgW11cbmxldCBpbnMgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaW5zXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBrYmQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwia2JkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBrZXlnZW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwia2V5Z2VuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBsYWJlbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJsYWJlbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGVnZW5kIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImxlZ2VuZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibGlcIiBhdHRycyBjaGlsZHJlblxubGV0IG1haW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWFpblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWFwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1hcFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWFyayBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtYXJrXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtZW51IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1lbnVcIiBhdHRycyBjaGlsZHJlblxubGV0IG1ldGEgYXR0cnMgPSBlbGVtIFwibWV0YVwiIGF0dHJzIFtdXG5sZXQgbWV0ZXIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWV0ZXJcIiBhdHRycyBjaGlsZHJlblxubGV0IG5hdiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJuYXZcIiBhdHRycyBjaGlsZHJlblxubGV0IG9iamVjdCcgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib2JqZWN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgb3B0Z3JvdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3B0Z3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IG9wdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvcHRpb25cIiBhdHRycyBjaGlsZHJlblxubGV0IG91dHB1dCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJvdXRwdXRcIiBhdHRycyBjaGlsZHJlblxubGV0IHAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcGFyYW0gYXR0cnMgPSBlbGVtIFwicGFyYW1cIiBhdHRycyBbXVxubGV0IHByZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJwcmVcIiBhdHRycyBjaGlsZHJlblxubGV0IHByb2dyZXNzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInByb2dyZXNzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBxIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInFcIiBhdHRycyBjaGlsZHJlblxubGV0IHJwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInJwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBydCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJydFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcnVieSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJydWJ5XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNcIiBhdHRycyBjaGlsZHJlblxubGV0IHNhbXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2FtcFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc2VjdGlvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzZWN0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzZWxlY3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2VsZWN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzbWFsbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzbWFsbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc291cmNlIGF0dHJzID0gZWxlbSBcInNvdXJjZVwiIGF0dHJzIFtdXG5sZXQgc3BhbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzcGFuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdHJvbmcgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3Ryb25nXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdWIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3ViXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdW1tYXJ5IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN1bW1hcnlcIiBhdHRycyBjaGlsZHJlblxubGV0IHN1cCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IHRhYmxlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRhYmxlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0Ym9keSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0Ym9keVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGRcIiBhdHRycyBjaGlsZHJlblxubGV0IHRleHRhcmVhIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRleHRhcmVhXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0Zm9vdCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0Zm9vdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGggYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGhcIiBhdHRycyBjaGlsZHJlblxubGV0IHRoZWFkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRoZWFkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0aW1lIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRpbWVcIiBhdHRycyBjaGlsZHJlblxubGV0IHRyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0cmFjayBhdHRycyA9IGVsZW0gXCJ0cmFja1wiIGF0dHJzIFtdXG5sZXQgdSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ1XCIgYXR0cnMgY2hpbGRyZW5cbmxldCB1bCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ1bFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdmFyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInZhclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdmlkZW8gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidmlkZW9cIiBhdHRycyBjaGlsZHJlblxubGV0IHdiciBhdHRycyA9IGVsZW0gXCJ3YnJcIiBhdHRycyBbXVxuXG5sZXQgb25fbW91bnQgZiBodG1sIGN0eCBwYXJlbnQgPVxuICBsZXQgc3RhdGUgOiBFbGVtLnN0YXRlID0gaHRtbCBjdHggcGFyZW50IGluXG4gIHtcbiAgICBzdGF0ZSB3aXRoXG4gICAgbW91bnQgPVxuICAgICAgKGZ1biBpbnNlcnQgLT5cbiAgICAgICAgc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgICAgICBmICgpKTtcbiAgfVxuXG5sZXQgcmVzb3VyY2UgfmluaXQgfmZyZWUgKHVzZSA6ICdhIC0+IEVsZW0udCkgY3R4IHBhcmVudCA9XG4gIGxldCByID0gaW5pdCAoKSBpblxuICBsZXQgaHRtbCA9IHVzZSByIGluXG4gIGxldCBzdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICBDdHgub25fY2xlYW51cCBjdHggKGZ1biAoKSAtPiBmcmVlIHIpO1xuICBzdGF0ZVxuXG4oKiBET00gaGVscGVycyAqKVxuXG5sZXQgbW91bnQgcGFyZW50IGh0bWwgPVxuICBsZXQgY3R4ID0gQ3R4Lm1ha2UgKCkgaW5cbiAgbGV0IHN0YXRlIDogRWxlbS5zdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICBsZXQgaW5zZXJ0ID0gRG9tLk5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQgaW5cbiAgc3RhdGUubW91bnQgaW5zZXJ0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZHdlYiIsIlN0ZGxpYiIsIlN0ZGxpYl9MaXN0IiwiaSIsIm1ha2UiLCJwYXJhbSIsIm9uX2NsZWFudXAiLCJ0IiwiY2xlYW51cCIsImMiLCJsaW5rIiwidDIiLCJ1bmxpbmsiLCJzdWJjdHgiLCJub3AiLCJjdHgiLCJub2RlIiwib24iLCJib29sIiwiYXR0ciIsIm9uX3NvbWUiLCJhdCIsIm9uX29rIiwic3RyaW5nIiwibmFtZSIsInZhbHVlIiwic2V0IiwidW5zZXQiLCJpbnQiLCJvbl9tb3VudCIsImNvbWJpbmUiLCJhMV9zdGF0ZSIsImEyX3N0YXRlIiwibGlzdCIsImF0dHJzIiwiY3N0X2xhYmVsIiwibGFiZWwiLCJhY2NlcHQiLCJhY2Nlc3NrZXkiLCJhY3Rpb24iLCJhdXRvY29tcGxldGUiLCJhdXRvZm9jdXMiLCJjaGFyc2V0IiwiY2hlY2tlZCIsImNsYXNzX25hbWUiLCJjb2xzIiwiY29udGVudCIsImNvbnRlbnRlZGl0YWJsZSIsImRlZmVyIiwiZGlyIiwiZGlzYWJsZWQiLCJkcmFnZ2FibGUiLCJmb3IkIiwiZm9ybWFjdGlvbiIsImhlaWdodCIsImhpZGRlbiIsImhyZWYiLCJpZCIsImxhbmciLCJtZWRpYSIsIm1ldGhvZCIsIm9wZW4iLCJwbGFjZWhvbGRlciIsInJlbCIsInJlcXVpcmVkIiwicm93cyIsInNlbGVjdGVkIiwic3BlbGxjaGVjayIsInNyYyIsInRhYmluZGV4IiwidGl0bGUiLCJ0eXBlIiwieCIsInZhbHVlX29yIiwiZGVmYXVsdCQiLCJvcHQiLCJ3cmFwIiwid2lkdGgiLCJzdHlsZSIsInJvbGUiLCJzdHlsZV9saXN0IiwiaXRlbXMiLCJjbGFzc19saXN0IiwiY2wiLCJjbGFzc19mbGFncyIsIm9wdGlvbnMiLCJhY2MiLCJiIiwiY29uZmlybSIsIm1zZyIsImV2Iiwib25fY2hhbmdlIiwiaGFuZGxlciIsIm9uX2NoZWNrZWQiLCJvbl9pbnB1dCIsIm9uX2NsaWNrIiwib25fZG91YmxlX2NsaWNrIiwibnVsbF9zdGF0ZSIsImluc2VydCIsIm51bGwkIiwicGFyZW50IiwiY2hpbGRyZW4iLCJtb3VudGVkIiwibW91bnQiLCJzdGF0ZSIsIm5vZGVfaW5zZXJ0IiwiY2hpbGQiLCJjaGlsZF9zdGF0ZSIsInRleHQiLCJkYXRhIiwib2Zfc29tZSIsInRvX2h0bWwiLCJvcHRpb24iLCJvZl9vayIsInJlc3VsdCIsIm9uX3VubW91bnQiLCJlbGVtIiwidW5zYWZlIiwiZnJhZ21lbnQiLCJmcmFnIiwiZnJhZ19pbnNlcnQiLCJzdGF0ZXMiLCJzIiwibiIsIm5ic3AiLCJhIiwiYWJiciIsImFkZHJlc3MiLCJhcmVhIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiYXNlIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNpdGUiLCJjb2RlIiwiY29sIiwiY29sZ3JvdXAiLCJjb21tYW5kIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImlucyIsImtiZCIsImtleWdlbiIsImxlZ2VuZCIsImxpIiwibWFpbiIsIm1hcCIsIm1hcmsiLCJtZW51IiwibWV0YSIsIm1ldGVyIiwibmF2Iiwib2JqZWN0Iiwib2wiLCJvcHRncm91cCIsIm91dHB1dCIsInAiLCJwcmUiLCJwcm9ncmVzcyIsInEiLCJycCIsInJ0IiwicnVieSIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFuIiwic3Ryb25nIiwic3ViIiwic3VtbWFyeSIsInN1cCIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGltZSIsInRyIiwidHJhY2siLCJ1IiwidWwiLCJ2YXIkIiwidmlkZW8iLCJ3YnIiLCJodG1sIiwicmVzb3VyY2UiLCJpbml0IiwiZnJlZSIsInVzZSIsInIiLCJIdG1sIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxZQUFBQyxLQUFBQztBQUFBQSxRQUFBLElDV3VEO0FBQUEsSUFMakQ7QUFBQSxJQUswQjtBQUFBLEdBQTZDO0FBQUEsWUFBQUMsV0FBQUMsR0FBQWQsR0FDdEQsOEJBQTJCO0FBQUEsWUFBQWUsUUFBQUQ7QUFBQUEsSUFDaEM7QUFBQSw0QkFBQUUsR0FBb0IsdUJBQUksU0FBVztBQUFBO0FBQUEsWUFBQUMsS0FBQUgsR0FBQUksSUFDbkMsaURBQStCO0FBQUEsWUFBQUMsT0FBQUwsR0FBQU07QUFBQUEsSUFDekIsaURBQWdDO0FBQUE7QUFBQSxZQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxJQWdCakMsdUJEL0J2QixtQ0MrQnVCO0FBQUEsR0FBZ0M7QUFBQSxZQUFBQyxHQUFBQyxNQUFBQyxNQUNsQyx3QkFBMEI7QUFBQSxZQUFBQyxRQUFBZjtBQUFBQSxJQUUvQixZQUNGO0FBQUEsUUFBQWdCLEtBREU7QUFBQSxJQUVDO0FBQUEsR0FBRTtBQUFBLFlBQUFDLE1BQUFqQjtBQUFBQSxJQUVMLG1CQUNHO0FBQUEsUUFBQWMsT0FESDtBQUFBLElBRUc7QUFBQSxHQUFJO0FBQUEsWUFBQUksT0FBQUMsTUFBQUMsT0FBQVYsS0FBQUM7QUFBQUEsYUFBQVUsSUFBQXJCO0FBQUFBLEtBR0osc0RBQWlDO0FBQUE7QUFBQSxhQUFBc0IsTUFBQXRCLE9BQy9CLCtDQUE2QjtBQUFBLElBQzVDO0FBQUEsR0FBYztBQUFBLFlBQUFhLEtBQUFNLE1BQUFOO0FBQUFBLElBRUssNkJBQWEscUNBQXVCO0FBQUE7QUFBQSxZQUFBVSxJQUFBSixNQUFBckI7QUFBQUEsUUFBQSxJQUM1QjtBQUFBLElBQWlCO0FBQUE7QUFBQSxZQUFBMEIsU0FBQXBDLEdBQUFzQixLQUFBQztBQUFBQSxhQUFBVSxJQUFBckIsT0FHL0IsMEJBQU07QUFBQSxJQUNuQiw0QkRwREosV0NvREk7QUFBQSxHQUF1QjtBQUFBLFlBQUF5QixRQUFBbEMsSUFBQUUsSUFBQWlCLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFlLFdBTVI7QUFBQSxLQUFBQyxXQUNBO0FBQUEsYUFBQU4sSUFBQXJCO0FBQUFBLEtBRWI7QUFBQSxLQUFlLGlDQUNBO0FBQUE7QUFBQSxhQUFBc0IsTUFBQXRCO0FBQUFBLEtBR2Y7QUFBQSxLQUFpQixpQ0FDQTtBQUFBO0FBQUEsSUFFbkI7QUFBQSxHQUFjO0FBQUEsWUFBQTRCLEtBQUFDO0FBQUFBLElBRUMsc0RBQWdDO0FBQUE7QUFBQSxPQUFBQyxZRHRFbkQ7QUFBQSxZQUFBQyxNQUFBLFNDdUVjO0FBQUEsWUFBQUMsT0FBQVo7QUFBQUEsSUFRSyxzQkQvRW5CLHNDQytFbUI7QUFBQSxHQUEwQjtBQUFBLFlBQUFhLFVBQUFiO0FBQUFBLElBQ3ZCLHNCRGhGdEIseUNDZ0ZzQjtBQUFBLEdBQTZCO0FBQUEsWUFBQWMsT0FBQWQ7QUFBQUEsSUFDaEMsc0JEakZuQixzQ0NpRm1CO0FBQUEsR0FBMEI7QUFBQSxZQUFBZSxhQUFBZjtBQUFBQSxJQUNwQixzQkRsRnpCLDRDQ2tGeUI7QUFBQSxHQUFnQztBQUFBLFlBQUFnQixVQUFBaEIsT0FDbkMsK0JBQTJCO0FBQUEsWUFBQWlCLFFBQUFqQjtBQUFBQSxJQUM3QixzQkRwRnBCLHVDQ29Gb0I7QUFBQSxHQUEyQjtBQUFBLFlBQUFrQixRQUFBbEIsT0FDM0IsNkJBQXlCO0FBQUEsWUFBQW1CLFdBQUFuQjtBQUFBQSxJQUN0QixzQkR0RnZCLHFDQ3NGdUI7QUFBQSxHQUF5QjtBQUFBLFlBQUFvQixLQUFBcEIsT0FDL0IseUJBQXFCO0FBQUEsWUFBQXFCLFFBQUFyQjtBQUFBQSxJQUNsQixzQkR4RnBCLHVDQ3dGb0I7QUFBQSxHQUEyQjtBQUFBLFlBQUFzQixnQkFBQXRCLE9BQ25CLHFDQUFpQztBQUFBLFlBQUF1QixNQUFBdkIsT0FDM0MsMkJBQXVCO0FBQUEsWUFBQXdCLElBQUF4QjtBQUFBQSxJQUN6QixzQkQzRmhCLG1DQzJGZ0I7QUFBQSxHQUF1QjtBQUFBLFlBQUF5QixTQUFBekIsT0FDbEIsOEJBQTBCO0FBQUEsWUFBQTBCLFVBQUExQixPQUN6QiwrQkFBMkI7QUFBQSxZQUFBMkIsS0FBQTNCO0FBQUFBLElBQ2hDLHNCRDlGakIsbUNDOEZpQjtBQUFBLEdBQXVCO0FBQUEsWUFBQTRCLFdBQUE1QjtBQUFBQSxJQUNqQixzQkQvRnZCLDBDQytGdUI7QUFBQSxHQUE4QjtBQUFBLFlBQUE2QixPQUFBN0IsT0FDbEMsMkJBQXVCO0FBQUEsWUFBQThCLE9BQUE5QixPQUN2Qiw0QkFBd0I7QUFBQSxZQUFBK0IsS0FBQS9CO0FBQUFBLElBQzFCLHNCRGxHakIsb0NDa0dpQjtBQUFBLEdBQXdCO0FBQUEsWUFBQWdDLEdBQUFoQztBQUFBQSxJQUMxQixzQkRuR2Ysa0NDbUdlO0FBQUEsR0FBc0I7QUFBQSxZQUFBaUMsS0FBQWpDO0FBQUFBLElBQ3BCLHNCRHBHakIsb0NDb0dpQjtBQUFBLEdBQXdCO0FBQUEsWUFBQVEsT0FBQVI7QUFBQUEsSUFDeEIsc0JEckdqQixvQ0NxR2lCO0FBQUEsR0FBd0I7QUFBQSxZQUFBa0MsTUFBQWxDO0FBQUFBLElBQ3ZCLHNCRHRHbEIscUNDc0drQjtBQUFBLEdBQXlCO0FBQUEsWUFBQW1DLE9BQUFuQztBQUFBQSxJQUN2QixzQkR2R3BCLHNDQ3VHb0I7QUFBQSxHQUEwQjtBQUFBLFlBQUFELEtBQUFDO0FBQUFBLElBQzdCLHNCRHhHakIsb0NDd0dpQjtBQUFBLEdBQXdCO0FBQUEsWUFBQW9DLEtBQUFwQyxPQUN2QiwwQkFBc0I7QUFBQSxZQUFBcUMsWUFBQXJDO0FBQUFBLElBQ2hCLHNCRDFHeEIsMkNDMEd3QjtBQUFBLEdBQStCO0FBQUEsWUFBQXNDLElBQUF0QztBQUFBQSxJQUN2QyxzQkQzR2hCLG1DQzJHZ0I7QUFBQSxHQUF1QjtBQUFBLFlBQUF1QyxTQUFBdkMsT0FDbEIsOEJBQTBCO0FBQUEsWUFBQXdDLEtBQUF4QyxPQUM5Qix5QkFBcUI7QUFBQSxZQUFBeUMsU0FBQXpDLE9BQ2pCLDhCQUEwQjtBQUFBLFlBQUEwQyxXQUFBMUM7QUFBQUEsSUFDeEIsc0JEL0d2QiwwQ0MrR3VCO0FBQUEsR0FBOEI7QUFBQSxZQUFBMkMsSUFBQTNDO0FBQUFBLElBQ3JDLHNCRGhIaEIsbUNDZ0hnQjtBQUFBLEdBQXVCO0FBQUEsWUFBQTRDLFNBQUE1QyxPQUNsQiw2QkFBeUI7QUFBQSxZQUFBNkMsTUFBQTdDO0FBQUFBLElBQzVCLHNCRGxIbEIscUNDa0hrQjtBQUFBLEdBQXlCO0FBQUEsWUFBQThDLEtBQUE5QztBQUFBQSxJQUN6QixzQkRuSGxCLG9DQ21Ia0I7QUFBQSxHQUF3QjtBQUFBLFlBQUFBLE1BQUErQyxHQUFBekQsS0FBQUM7QUFBQUEsYUFBQVUsSUFBQXJCLE9BRzNCLDRDQUF5QjtBQUFBLGFBQUFzQixNQUFBdEIsT0FDdkIseUNBQXlCO0FBQUEsSUFDeEM7QUFBQSxHQUFtQjtBQUFBLFlBQUFvRSxTQUFBQyxVQUFBQztBQUFBQSxJQUduQixVQUVVO0FBQUEsUUFBQUgsSUFGVjtBQUFBLElBQ1k7QUFBQSxHQUNXO0FBQUEsWUFBQUksS0FBQW5EO0FBQUFBLElBRVIsc0JEL0hqQixvQ0MrSGlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBb0QsTUFBQXBELE9BQ3ZCLDBCQUFzQjtBQUFBLFlBQUFxRCxNQUFBTixHQUMxQixzQkRqSWQsaUNDaUljLENBQXFCO0FBQUEsWUFBQU8sS0FBQVAsR0FDdEIsc0JEbEliLGdDQ2tJYSxDQUFvQjtBQUFBLFlBQUFRLFdBQUFDLE9BQUFsRSxLQUFBQztBQUFBQSxRQUFBOEQsUUFHbkI7QUFBQSxhQUFBcEQsSUFBQXJCO0FBQUFBLEtBQ0M7QUFBQTtBQUFBLHVCQUFBQTtBQUFBQSxtQkFBQW9CLFFBQVUsVUFBQUQsT0FBQTtBQUFBLGVBQXNCLHNEQUErQjtBQUFBO0FBQUEsb0JBQU07QUFBQTtBQUFBLGFBQUFHLE1BQUF0QjtBQUFBQSxLQUNuRTtBQUFBO0FBQUEsdUJBQUFBO0FBQUFBLG1CQUFBbUIsT0FBVTtBQUFBLGVBQXVCLCtDQUEyQjtBQUFBO0FBQUEsb0JBQU07QUFBQTtBQUFBLElBQ2pGO0FBQUEsR0FBbUI7QUFBQSxZQUFBMEQsV0FBQUQsT0FBQWxFLEtBQUFDO0FBQUFBLFFBQUFtRSxLQUdWO0FBQUEsYUFBQXpELElBQUFyQjtBQUFBQSxLQUNJO0FBQUE7QUFBQSx1QkFBQW1CLE1BQXVCLDRDQUEwQjtBQUFBLG9CQUFPO0FBQUE7QUFBQSxhQUFBRyxNQUFBdEI7QUFBQUEsS0FDdEQ7QUFBQTtBQUFBLHVCQUFBbUIsTUFBdUIsNENBQTZCO0FBQUEsb0JBQU87QUFBQTtBQUFBLElBQzFFO0FBQUEsR0FBbUI7QUFBQSxZQUFBNEQsWUFBQUM7QUFBQUE7QUFBQUEsS0FBQXBEO0FBQUFBLE9BR1I7QUFBQTtBQUFBLGtCQUFBcUQsS0FBQWpGO0FBQUFBLGNBQUFrRixJQUFlLFVBQUE5RSxJQUFBO0FBQUEsVUFBbUIsNEJBQTRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFDekU7QUFBQSxHQUFlO0FBQUEsWUFBQVEsS0FBQTBELEtBQUFhLFNBQUFoRSxNQUFBL0IsR0FBQXNCLEtBQUFDO0FBQUFBLFFBQUEwRCxXQUlWO0FBQUEsSUFDTDtBQUFBO0FBQUEsTUFBQWUsTUFBQTtBQUFBLE1BQUFoRztBQUFBQSxRQVFJLFNBQUFpRztBQUFBQSxTQUNLO0FBQUEsVUFHRSxzQ0FBNEI7QUFBQSxTQUYvQixpQkFBNkI7QUFBQSxTQUM3Qix3QkFDK0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUFBakc7QUFBQUEsUUFWekI7QUFBQTtBQUFBO0FBQUEsV0FBQWlHO0FBQUFBLFdBRVI7QUFBQSxXQUE0Qix3QkFDeEI7QUFBQTtBQUFBLGFBQUFoRSxJQUFBckIsT0FTRyxvREFBMEI7QUFBQSxhQUFBc0IsTUFBQXRCO0FBQUFBLEtBQ3hCLG9EQUE0QjtBQUFBO0FBQUEsSUFDM0M7QUFBQSxHQUFtQjtBQUFBLFdBaEdPO0FBQUEsWUFBQXNGLFVBQUFILFNBQUFJO0FBQUFBLGFBQUEsRUFBQUY7QUFBQUEsU0FBQSxJQW9HTTtBQUFBLEtBQXBCLE9BQTBDLG9CQUExQyxnQ0FBMEM7QUFBQTtBQUFBLFlBRHREO0FBQUEsMEJEMUtGLHFDQzBLRTtBQUFBLEdBQ3VEO0FBQUEsV0FwRzdCO0FBQUEsWUFBQUcsV0FBQUwsU0FBQUk7QUFBQUEsYUFBQSxFQUFBRjtBQUFBQSxTQUFBLElBd0dRO0FBQUEsS0FBdEIsT0FBNEMsb0JBQTVDLGdDQUE0QztBQUFBO0FBQUEsWUFEeEQ7QUFBQSwwQkQ5S0YscUNDOEtFO0FBQUEsR0FDeUQ7QUFBQSxXQXhHL0I7QUFBQSxZQUFBSSxTQUFBTixTQUFBSTtBQUFBQSxhQUFBLEVBQUFGO0FBQUFBLFNBQUEsSUE0R007QUFBQSxLQUFwQixPQUEwQyxvQkFBMUMsZ0NBQTBDO0FBQUE7QUFBQSxZQUR0RDtBQUFBLDBCRGxMRixxQ0NrTEU7QUFBQSxHQUN1RDtBQUFBLFdBNUc3QjtBQUFBLFlBQUFLLFNBQUFQLFNBQUFJO0FBQUFBLGFBQUEsRUFBQXZGLE9BOEd5RCw2QkFBVTtBQUFBLFlBQS9EO0FBQUEsMEJEckxoQyxxQ0NxTGdDO0FBQUEsR0FBZ0U7QUFBQSxXQTlHcEU7QUFBQSxZQUFBMkYsZ0JBQUFSLFNBQUFJO0FBQUFBLGFBQUEsRUFBQXZGLE9BaUg4Qiw2QkFBVTtBQUFBLFlBQWxFO0FBQUEsMEJEeExGLHFDQ3dMRTtBQUFBLEdBQW1FO0FBQUEsT0FBQTRGLGFBakh6QyxnQkR2RTVCLHFCQUFBQyxRQzBNK0QsU0FBRTtBQUFBLFlBQUFDLE1BQUFwRixLQUFBcUYsUUFDdkMsa0JBQVU7QUFBQSxZQUFBaEcsT0FBQW9CLE1BQUFVLE9BQUFtRSxVQUFBdEYsS0FBQXFGO0FBQUFBLFFBQUFwRixPQXNCckIsb0NBQUFzRixVQUZYO0FBQUEsYUFBQUMsTUFBQUw7QUFBQUEsS0FJRTtBQUFBLGFBQVc7QUFBQTtBQUFBLE1BR1Q7QUFBQTtBQUFBLGlCQUFBL0U7QUFBQUEsYUFBQXFGLFFBRWdCO0FBQUEsU0FDWiw4QkFBWTtBQUFBO0FBQUE7QUFBQSxVQUFBQyxjQUdFO0FBQUEsTUFDbEI7QUFBQTtBQUFBLGlCQUFBQztBQUFBQSxhQUFBQyxjQUVzQjtBQUFBLFNBQ2xCLDhDQUE2QjtBQUFBO0FBQUE7QUFBQSxNQUN2QjtBQUFBO0FBQUE7QUFBQTtBQUFBLGNBZEQ7QUFBQTtBQUFBLElBZU87QUFBQSxJQUVwQjtBQUFBLHFCQUFBdEc7QUFBQUEsYUFDdUIsaURBQWtDO0FBQUE7QUFBQSxrQkFEekQ7QUFBQSxHQUlDO0FBQUEsWUFBQXVHLEtBQUFDLE1BQUE5RixLQUFBcUY7QUFBQUEsUUFBQXBGLE9BR1U7QUFBQSxJQUNYO0FBQUEscUJBQUFYO0FBQUFBLGFBQ3VCLGlEQUFrQztBQUFBO0FBQUEscUJBQUE2RixRQUNoQywrQkFBVyxHQUZwQztBQUFBLEdBR0M7QUFBQSxZQUFBWSxRQUFBQyxTQUFBQztBQUFBQSxJQUdELGFBRVU7QUFBQSxRQUFBeEMsSUFGVjtBQUFBLElBQ1ksNkJBQ0U7QUFBQTtBQUFBLFlBQUF5QyxNQUFBRixTQUFBRztBQUFBQSxJQUdkLG9CQUVhO0FBQUEsUUFBQTFDLElBRmI7QUFBQSxJQUNVLDZCQUNPO0FBQUE7QUFBQSxZQUFBMkMsV0FBQTFILEdBQUEySCxNQUFBckc7QUFBQUEsSUFHakI7QUFBQSxJQUFvQiw0QkFDWjtBQUFBO0FBQUEsWUFBQXNHLE9BQUE3RixNQUFBVSxPQUFBWSxTQUFBL0IsS0FBQXFGO0FBQUFBLFFBQUFwRixPQUdHO0FBQUEsSUFDWDtBQUFBLElBQ0E7QUFBQTtBQUFBLGVBQUFHO0FBQUFBLFdBQUFxRixRQUVnQjtBQUFBLE9BQ1osOEJBQVk7QUFBQTtBQUFBO0FBQUEsSUFDVDtBQUFBLHFCQUFBbkc7QUFBQUEsYUFFZ0IsaURBQWtDO0FBQUE7QUFBQSxxQkFBQTZGLFFBQ2hDLCtCQUFXLEdBSDdCO0FBQUEsR0FJTjtBQUFBLFlBQUFvQixTQUFBakIsVUFBQXRGLEtBQUFxRjtBQUFBQTtBQUFBQSxLQUFBbUIsT0FHVTtBQUFBLEtBQUFDLGNBQ087QUFBQSxLQUFBQztBQUFBQSxPQUVoQjtBQUFBO0FBQUEsa0JBQUFmO0FBQUFBLGNBQUFnQixJQUVZO0FBQUEsVUFDUjtBQUFBLFVBQW1CO0FBQUEsU0FDbEI7QUFBQTtBQUFBLElBR1A7QUFBQSxxQkFBQXJIO0FBQUFBLGFBQ3VCO0FBQUEscUNBQUFxSCxHQUE4QiwwQkFBWSxXQUFRO0FBQUE7QUFBQSxxQkFBQXhCLFFBQ2hELCtCQUFXLEdBRnBDO0FBQUEsR0FHQztBQUFBLFlBQUF0RSxNQUFBK0Y7QUFBQUEsUUFBQSxJQVNZO0FBQUEsSUFBaUI7QUFBQTtBQUFBLFlBQUFDLEtBQUEsTUFDdkI7QUFBQSxZQUFBQyxFQUFBM0YsT0FBQW1FO0FBQUFBLElBQ1k7QUFBQSxHQUF1QjtBQUFBLFlBQUF5QixLQUFBNUYsT0FBQW1FO0FBQUFBLElBQ3BCO0FBQUEsR0FBMEI7QUFBQSxZQUFBMEIsUUFBQTdGLE9BQUFtRTtBQUFBQSxJQUN2QjtBQUFBLEdBQTZCO0FBQUEsWUFBQTJCLEtBQUE5RjtBQUFBQSxJQUN6QyxzQkR4VGpCLHVDQ3dUaUI7QUFBQSxHQUFvQjtBQUFBLFlBQUErRixRQUFBL0YsT0FBQW1FO0FBQUFBLElBQ1I7QUFBQSxHQUE2QjtBQUFBLFlBQUE2QixNQUFBaEcsT0FBQW1FO0FBQUFBLElBQy9CO0FBQUEsR0FBMkI7QUFBQSxZQUFBOEIsTUFBQWpHLE9BQUFtRTtBQUFBQSxJQUMzQjtBQUFBLEdBQTJCO0FBQUEsWUFBQWQsRUFBQXJELE9BQUFtRTtBQUFBQSxJQUMvQjtBQUFBLEdBQXVCO0FBQUEsWUFBQStCLEtBQUFsRztBQUFBQSxJQUM3QixzQkQ3VGpCLHVDQzZUaUI7QUFBQSxHQUFvQjtBQUFBLFlBQUFtRyxJQUFBbkcsT0FBQW1FO0FBQUFBLElBQ1o7QUFBQSxHQUF5QjtBQUFBLFlBQUFpQyxJQUFBcEcsT0FBQW1FO0FBQUFBLElBQ3pCO0FBQUEsR0FBeUI7QUFBQSxZQUFBa0MsV0FBQXJHLE9BQUFtRTtBQUFBQSxJQUNsQjtBQUFBO0FBQUEsR0FBZ0M7QUFBQSxZQUFBbUMsR0FBQXRHO0FBQUFBLElBQ2pELHNCRGpVZixxQ0NpVWU7QUFBQSxHQUFrQjtBQUFBLFlBQUF1RyxPQUFBdkcsT0FBQW1FO0FBQUFBLElBQ0w7QUFBQSxHQUE0QjtBQUFBLFlBQUFxQyxPQUFBeEcsT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBNEI7QUFBQSxZQUFBc0MsUUFBQXpHLE9BQUFtRTtBQUFBQSxJQUMzQjtBQUFBLEdBQTZCO0FBQUEsWUFBQXVDLEtBQUExRyxPQUFBbUU7QUFBQUEsSUFDaEM7QUFBQSxHQUEwQjtBQUFBLFlBQUF3QyxLQUFBM0csT0FBQW1FO0FBQUFBLElBQzFCO0FBQUEsR0FBMEI7QUFBQSxZQUFBeUMsSUFBQTVHO0FBQUFBLElBQ3BDLHNCRHZVaEIsc0NDdVVnQjtBQUFBLEdBQW1CO0FBQUEsWUFBQTZHLFNBQUE3RyxPQUFBbUU7QUFBQUEsSUFDTDtBQUFBLEdBQThCO0FBQUEsWUFBQTJDLFFBQUE5RyxPQUFBbUU7QUFBQUEsSUFDL0I7QUFBQSxHQUE2QjtBQUFBLFlBQUE0QyxTQUFBL0csT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBOEI7QUFBQSxZQUFBNkMsR0FBQWhILE9BQUFtRTtBQUFBQSxJQUNwQztBQUFBLEdBQXdCO0FBQUEsWUFBQThDLElBQUFqSCxPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUF5QjtBQUFBLFlBQUErQyxRQUFBbEgsT0FBQW1FO0FBQUFBLElBQ3JCO0FBQUEsR0FBNkI7QUFBQSxZQUFBZ0QsSUFBQW5ILE9BQUFtRTtBQUFBQSxJQUNqQztBQUFBLEdBQXlCO0FBQUEsWUFBQWlELElBQUFwSCxPQUFBbUU7QUFBQUEsSUFDekI7QUFBQSxHQUF5QjtBQUFBLFlBQUFrRCxHQUFBckgsT0FBQW1FO0FBQUFBLElBQzFCO0FBQUEsR0FBd0I7QUFBQSxZQUFBbUQsR0FBQXRILE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQXdCO0FBQUEsWUFBQW9ELEdBQUF2SCxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUFxRCxNQUFBeEg7QUFBQUEsSUFDOUIsc0JEblZsQix3Q0NtVmtCO0FBQUEsR0FBcUI7QUFBQSxZQUFBeUgsU0FBQXpILE9BQUFtRTtBQUFBQSxJQUNUO0FBQUEsR0FBOEI7QUFBQSxZQUFBdUQsV0FBQTFILE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBO0FBQUEsR0FBZ0M7QUFBQSxZQUFBd0QsT0FBQTNILE9BQUFtRTtBQUFBQSxJQUNwQztBQUFBLEdBQTRCO0FBQUEsWUFBQXlELE9BQUE1SCxPQUFBbUU7QUFBQUEsSUFDNUI7QUFBQSxHQUE0QjtBQUFBLFlBQUEwRCxLQUFBN0gsT0FBQW1FO0FBQUFBLElBQzlCO0FBQUEsR0FBMEI7QUFBQSxZQUFBMkQsR0FBQTlILE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQXdCO0FBQUEsWUFBQTRELEdBQUEvSCxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUE2RCxHQUFBaEksT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBd0I7QUFBQSxZQUFBOEQsR0FBQWpJLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQXdCO0FBQUEsWUFBQStELEdBQUFsSSxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUFnRSxHQUFBbkksT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBd0I7QUFBQSxZQUFBaUUsS0FBQXBJLE9BQUFtRTtBQUFBQSxJQUN0QjtBQUFBLEdBQTBCO0FBQUEsWUFBQWtFLE9BQUFySSxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUE0QjtBQUFBLFlBQUFtRSxPQUFBdEksT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBNEI7QUFBQSxZQUFBb0UsR0FBQXZJO0FBQUFBLElBQ3pDLHNCRGxXZixxQ0NrV2U7QUFBQSxHQUFrQjtBQUFBLFlBQUEvQixJQUFBK0IsT0FBQW1FO0FBQUFBLElBR1Y7QUFBQSxHQUF1QjtBQUFBLFlBQUFxRSxPQUFBeEksT0FBQW1FO0FBQUFBLElBQ2xCO0FBQUEsR0FBNEI7QUFBQSxZQUFBc0UsSUFBQXpJO0FBQUFBLElBQ3hDLHNCRHZXaEIsc0NDdVdnQjtBQUFBLEdBQW1CO0FBQUEsWUFBQTBJLE1BQUExSTtBQUFBQSxJQUNqQixzQkR4V2xCLHdDQ3dXa0I7QUFBQSxHQUFxQjtBQUFBLFlBQUEySSxJQUFBM0ksT0FBQW1FO0FBQUFBLElBQ2Q7QUFBQSxHQUF5QjtBQUFBLFlBQUF5RSxJQUFBNUksT0FBQW1FO0FBQUFBLElBQ3pCO0FBQUEsR0FBeUI7QUFBQSxZQUFBMEUsT0FBQTdJLE9BQUFtRTtBQUFBQSxJQUN0QjtBQUFBLEdBQTRCO0FBQUEsWUFBQWpFLFFBQUFGLE9BQUFtRTtBQUFBQSxJQUM3QjtBQUFBLEdBQTJCO0FBQUEsWUFBQTJFLE9BQUE5SSxPQUFBbUU7QUFBQUEsSUFDMUI7QUFBQSxHQUE0QjtBQUFBLFlBQUE0RSxHQUFBL0ksT0FBQW1FO0FBQUFBLElBQ2hDO0FBQUEsR0FBd0I7QUFBQSxZQUFBNkUsS0FBQWhKLE9BQUFtRTtBQUFBQSxJQUN0QjtBQUFBLEdBQTBCO0FBQUEsWUFBQThFLElBQUFqSixPQUFBbUU7QUFBQUEsSUFDM0I7QUFBQSxHQUF5QjtBQUFBLFlBQUErRSxLQUFBbEosT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBMEI7QUFBQSxZQUFBZ0YsS0FBQW5KLE9BQUFtRTtBQUFBQSxJQUMxQjtBQUFBLEdBQTBCO0FBQUEsWUFBQWlGLEtBQUFwSjtBQUFBQSxJQUNuQyxzQkRuWGpCLHVDQ21YaUI7QUFBQSxHQUFvQjtBQUFBLFlBQUFxSixNQUFBckosT0FBQW1FO0FBQUFBLElBQ1Y7QUFBQSxHQUEyQjtBQUFBLFlBQUFtRixJQUFBdEosT0FBQW1FO0FBQUFBLElBQzdCO0FBQUEsR0FBeUI7QUFBQSxZQUFBb0YsT0FBQXZKLE9BQUFtRTtBQUFBQSxJQUNyQjtBQUFBLEdBQTRCO0FBQUEsWUFBQXFGLEdBQUF4SixPQUFBbUU7QUFBQUEsSUFDakM7QUFBQSxHQUF3QjtBQUFBLFlBQUFzRixTQUFBekosT0FBQW1FO0FBQUFBLElBQ2xCO0FBQUEsR0FBOEI7QUFBQSxZQUFBVyxPQUFBOUUsT0FBQW1FO0FBQUFBLElBQ2hDO0FBQUEsR0FBNEI7QUFBQSxZQUFBdUYsT0FBQTFKLE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQTRCO0FBQUEsWUFBQXdGLEVBQUEzSixPQUFBbUU7QUFBQUEsSUFDakM7QUFBQSxHQUF1QjtBQUFBLFlBQUF5RixJQUFBNUosT0FBQW1FO0FBQUFBLElBRXJCO0FBQUEsR0FBeUI7QUFBQSxZQUFBMEYsU0FBQTdKLE9BQUFtRTtBQUFBQSxJQUNwQjtBQUFBLEdBQThCO0FBQUEsWUFBQTJGLEVBQUE5SixPQUFBbUU7QUFBQUEsSUFDckM7QUFBQSxHQUF1QjtBQUFBLFlBQUE0RixHQUFBL0osT0FBQW1FO0FBQUFBLElBQ3RCO0FBQUEsR0FBd0I7QUFBQSxZQUFBNkYsR0FBQWhLLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQXdCO0FBQUEsWUFBQThGLEtBQUFqSyxPQUFBbUU7QUFBQUEsSUFDdEI7QUFBQSxHQUEwQjtBQUFBLFlBQUFxQixFQUFBeEYsT0FBQW1FO0FBQUFBLElBQzdCO0FBQUEsR0FBdUI7QUFBQSxZQUFBK0YsS0FBQWxLLE9BQUFtRTtBQUFBQSxJQUNwQjtBQUFBLEdBQTBCO0FBQUEsWUFBQWdHLFFBQUFuSyxPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUE2QjtBQUFBLFlBQUFpRyxPQUFBcEssT0FBQW1FO0FBQUFBLElBQzlCO0FBQUEsR0FBNEI7QUFBQSxZQUFBa0csTUFBQXJLLE9BQUFtRTtBQUFBQSxJQUM3QjtBQUFBLEdBQTJCO0FBQUEsWUFBQW1HLE9BQUF0SztBQUFBQSxJQUNuQyxzQkR4WW5CLHlDQ3dZbUI7QUFBQSxHQUFzQjtBQUFBLFlBQUF1SyxLQUFBdkssT0FBQW1FO0FBQUFBLElBQ2Y7QUFBQSxHQUEwQjtBQUFBLFlBQUFxRyxPQUFBeEssT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBNEI7QUFBQSxZQUFBc0csSUFBQXpLLE9BQUFtRTtBQUFBQSxJQUMvQjtBQUFBLEdBQXlCO0FBQUEsWUFBQXVHLFFBQUExSyxPQUFBbUU7QUFBQUEsSUFDckI7QUFBQSxHQUE2QjtBQUFBLFlBQUF3RyxJQUFBM0ssT0FBQW1FO0FBQUFBLElBQ2pDO0FBQUEsR0FBeUI7QUFBQSxZQUFBeUcsTUFBQTVLLE9BQUFtRTtBQUFBQSxJQUN2QjtBQUFBLEdBQTJCO0FBQUEsWUFBQTBHLE1BQUE3SyxPQUFBbUU7QUFBQUEsSUFDM0I7QUFBQSxHQUEyQjtBQUFBLFlBQUEyRyxHQUFBOUssT0FBQW1FO0FBQUFBLElBQzlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBNEcsU0FBQS9LLE9BQUFtRTtBQUFBQSxJQUNsQjtBQUFBLEdBQThCO0FBQUEsWUFBQTZHLE1BQUFoTCxPQUFBbUU7QUFBQUEsSUFDakM7QUFBQSxHQUEyQjtBQUFBLFlBQUE4RyxHQUFBakwsT0FBQW1FO0FBQUFBLElBQzlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBK0csTUFBQWxMLE9BQUFtRTtBQUFBQSxJQUNyQjtBQUFBLEdBQTJCO0FBQUEsWUFBQWdILEtBQUFuTCxPQUFBbUU7QUFBQUEsSUFDNUI7QUFBQSxHQUEwQjtBQUFBLFlBQUFpSCxHQUFBcEwsT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBd0I7QUFBQSxZQUFBa0gsTUFBQXJMO0FBQUFBLElBQzlCLHNCRHZabEIsd0NDdVprQjtBQUFBLEdBQXFCO0FBQUEsWUFBQXNMLEVBQUF0TCxPQUFBbUU7QUFBQUEsSUFDaEI7QUFBQSxHQUF1QjtBQUFBLFlBQUFvSCxHQUFBdkwsT0FBQW1FO0FBQUFBLElBQ3RCO0FBQUEsR0FBd0I7QUFBQSxZQUFBcUgsS0FBQXhMLE9BQUFtRTtBQUFBQSxJQUN2QjtBQUFBLEdBQXlCO0FBQUEsWUFBQXNILE1BQUF6TCxPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUEyQjtBQUFBLFlBQUF1SCxJQUFBMUw7QUFBQUEsSUFDdEMsc0JENVpoQixzQ0M0WmdCO0FBQUEsR0FBbUI7QUFBQSxZQUFBTCxXQUFBcEMsR0FBQW9PLE1BQUE5TSxLQUFBcUY7QUFBQUEsUUFBQUksUUFHUjtBQUFBLElBQ3pCO0FBQUE7QUFBQSxxQkFBQU47QUFBQUEsYUFJTTtBQUFBLGFBQWtCLHVCQUNkO0FBQUEsY0FMVjtBQUFBLEdBTUM7QUFBQSxZQUFBNEgsU0FBQUMsTUFBQUMsTUFBQUMsS0FBQWxOLEtBQUFxRjtBQUFBQTtBQUFBQSxLQUFBOEgsSUFHTztBQUFBLEtBQUFMLE9BQ0c7QUFBQSxLQUFBckgsUUFDQztBQUFBLElBQ1oseUJBQUFuRyxPQUE4QiwwQkFBTTtBQUFBLElBQUM7QUFBQSxHQUNoQztBQUFBLFlBQUFrRyxNQUFBSCxRQUFBeUg7QUFBQUE7QUFBQUEsS0FBQTlNLE1BS0s7QUFBQSxLQUFBeUYsUUFDZTtBQUFBLEtBQUFOLFNBQ1o7QUFBQSxJQUNiLG1DQUFrQjtBQUFBO0FBQUE7QUFBQSxJQUFBaUk7QUFBQUEsTUFqSU07QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBak07QUFBQUEsUUF3RVIsc0JENVhsQix3Q0M0WGtCO0FBQUEsT0FBcUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0F4RWI7QUFBQTtBQUFBLEVEcFQxQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3MDA5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9WaWV3Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIENvbW1lbnQgPSBTdGR3ZWIuRG9tLkNvbW1lbnRcbm1vZHVsZSBGcmFnbWVudCA9IFN0ZHdlYi5Eb20uRnJhZ21lbnRcbm1vZHVsZSBEb2N1bWVudCA9IFN0ZHdlYi5Eb20uRG9jdW1lbnRcbm1vZHVsZSBOb2RlID0gU3Rkd2ViLkRvbS5Ob2RlXG5tb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5cbm1vZHVsZSBMaXN0X2V4dCA9IHN0cnVjdFxuICBsZXQgcmV2X21hcGkgZiBsMCA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCB4IDo6IGwnIC0+IGxvb3AgKGkgKyAxKSAoZiBpIHggOjogYWNjKSBsJ1xuICAgIGluXG4gICAgbG9vcCAwIFtdIGwwXG5lbmRcblxubGV0IG9wdGlvbl9nZXQgb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5cbmxldCBvcl9mYWlsIG1zZyBvcHRpb24gPVxuICBtYXRjaCBvcHRpb24gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBtc2dcblxubGV0IGluc2VydF9hZnRlcl9hbmNob3IgfnBhcmVudCB+YW5jaG9yIG5vZGUgPVxuICBtYXRjaCBOb2RlLm5leHRfc2libGluZyBhbmNob3Igd2l0aFxuICB8IFNvbWUgYW5jaG9yX3NpYmxpbmcgLT4gTm9kZS5pbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZTphbmNob3Jfc2libGluZyBub2RlXG4gIHwgTm9uZSAtPiBOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50IG5vZGVcblxuKCogU2hvdyAqKVxuXG5sZXQgZmFrZV9kZWJ1Z19odG1sIF9yZW5kZXJfY291bnQgX2NvbW1lbnRfZGF0YSBodG1sID0gaHRtbFxuXG5sZXQgcmVhbF9kZWJ1Z19odG1sID1cbiAgbGV0IGNvbG9ycyA9IFt8IFwibWFnZW50YVwiOyBcImN5YW5cIjsgXCJzYWxtb25cIjsgXCJhcXVhbWFyaW5lXCI7IFwibGltZVwiOyBcInllbGxvd1wiOyBcInBhbGVncmVlblwiIHxdIGluXG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgbGV0IGdldF9jb2xvciAoKSA9XG4gICAgaWYgIWkgKyAxID49IEFycmF5Lmxlbmd0aCBjb2xvcnMgdGhlbiBpIDo9IDAgZWxzZSBpbmNyIGk7XG4gICAgQXJyYXkuZ2V0IGNvbG9ycyAhaVxuICBpblxuICBmdW4gcmVuZGVyX2NvdW50IGNvbW1lbnRfZGF0YSBodG1sIC0+XG4gICAgbGV0IGMgPSBnZXRfY29sb3IgKCkgaW5cbiAgICBIdG1sLmRpdlxuICAgICAgW1xuICAgICAgICBIdG1sLnN0eWxlX2xpc3RcbiAgICAgICAgICBbIChcImRpc3BsYXlcIiwgXCJmbGV4XCIpOyAoXCJmbGV4LWRpcmVjdGlvblwiLCBcImNvbHVtblwiKTsgKFwiYm9yZGVyXCIsIFwiMnB4IHNvbGlkIFwiIF4gYykgXTtcbiAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5zdHlsZV9saXN0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIGMpO1xuICAgICAgICAgICAgICAgIChcImZvbnQtc2l6ZVwiLCBcInNtYWxsXCIpO1xuICAgICAgICAgICAgICAgIChcImZvbnQtd2VpZ2h0XCIsIFwiYm9sZFwiKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LWZhbWlseVwiLCBcImNvdXJpZXJcIik7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50ZXh0IGNvbW1lbnRfZGF0YTsgSHRtbC50ZXh0IFwiI1wiOyBIdG1sLmludCByZW5kZXJfY291bnQgXTtcbiAgICAgICAgaHRtbDtcbiAgICAgIF1cblxubGV0IGRlYnVnX2h0bWwgOiAoaW50IC0+IHN0cmluZyAtPiBIdG1sLmh0bWwgLT4gSHRtbC5odG1sKSByZWYgPSByZWYgZmFrZV9kZWJ1Z19odG1sXG5sZXQgZW5hYmxlX2RlYnVnIGZsYWcgPSBkZWJ1Z19odG1sIDo9IGlmIGZsYWcgdGhlbiByZWFsX2RlYnVnX2h0bWwgZWxzZSBmYWtlX2RlYnVnX2h0bWxcblxubGV0IGdlbl9zaG93X2lkID1cbiAgbGV0IGkgPSByZWYgKC0xKSBpblxuICBmdW4gbGFiZWwgLT5cbiAgICBpbmNyIGk7XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiXG4gICAgICBbXG4gICAgICAgIFwic2hvdzpcIjtcbiAgICAgICAgc3RyaW5nX29mX2ludCAhaTtcbiAgICAgICAgKG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHggLT4gXCIvXCIgXiB4KTtcbiAgICAgIF1cblxubGV0IHNob3cgP2xhYmVsICh0b19odG1sIDogJ2EgLT4gSHRtbC5odG1sKSBzaWduYWwgOiBIdG1sLmh0bWwgPVxuIGZ1biBjdHggcGFyZW50IC0+XG4gIGxldCBjb3VudCA9IHJlZiAwIGluXG4gIGxldCBjb21tZW50X2RhdGEgPSBnZW5fc2hvd19pZCBsYWJlbCBpblxuICBsZXQgYW5jaG9yID0gQ29tbWVudC5tYWtlIGNvbW1lbnRfZGF0YSBpblxuICBsZXQgdGhpc19jdHggPSBIdG1sLkN0eC5tYWtlICgpIGluXG4gIGxldCBjdXJyX3N0YXRlID1cbiAgICBsZXQgaHRtbCA9IHRvX2h0bWwgKFNpZ25hbC5nZXQgc2lnbmFsKSBpblxuICAgIGxldCBodG1sID0gIWRlYnVnX2h0bWwgIWNvdW50IGNvbW1lbnRfZGF0YSBodG1sIGluXG4gICAgaW5jciBjb3VudDtcbiAgICByZWYgKGh0bWwgdGhpc19jdHggcGFyZW50KVxuICBpblxuICBsZXQgdW5zdWIgPVxuICAgIGxldCBpbnNlcnQgPSBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGluXG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgaHRtbCA9IHRvX2h0bWwgeCBpblxuICAgICAgICBsZXQgaHRtbCA9ICFkZWJ1Z19odG1sICFjb3VudCBjb21tZW50X2RhdGEgaHRtbCBpblxuICAgICAgICBpbmNyIGNvdW50O1xuICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IGh0bWwgdGhpc19jdHggcGFyZW50IGluXG4gICAgICAgICFjdXJyX3N0YXRlLnVubW91bnQgKCk7XG4gICAgICAgIG5leHRfc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgICAgICBjdXJyX3N0YXRlIDo9IG5leHRfc3RhdGUpXG4gICAgICBzaWduYWxcbiAgaW5cbiAgSHRtbC5DdHgub25fY2xlYW51cCB0aGlzX2N0eCB1bnN1YjtcbiAgbGV0IG1vdW50IGluc2VydCA9XG4gICAgaW5zZXJ0IGFuY2hvcjtcbiAgICAhY3Vycl9zdGF0ZS5tb3VudCBpbnNlcnQ7XG4gICAgSHRtbC5DdHgubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgbGV0IHVubW91bnQgKCkgPVxuICAgIE5vZGUucmVtb3ZlIGFuY2hvcjtcbiAgICAhY3Vycl9zdGF0ZS51bm1vdW50ICgpO1xuICAgIEh0bWwuQ3R4LmNsZWFudXAgdGhpc19jdHg7XG4gICAgSHRtbC5DdHgudW5saW5rIGN0eCB0aGlzX2N0eFxuICBpblxuICB7IG1vdW50OyB1bm1vdW50IH1cblxubGV0IHNob3dfc29tZSA/bGFiZWwgdG9faHRtbCBvcHRfc2lnbmFsID1cbiAgc2hvdyA/bGFiZWxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBIdG1sLm51bGxcbiAgICAgIHwgU29tZSB4IC0+IHRvX2h0bWwgeClcbiAgICBvcHRfc2lnbmFsXG5cbmxldCBzaG93X29rID9sYWJlbCB0b19odG1sIHJlc19zaWduYWwgPVxuICBzaG93ID9sYWJlbFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBfIC0+IEh0bWwubnVsbFxuICAgICAgfCBPayB4IC0+IHRvX2h0bWwgeClcbiAgICByZXNfc2lnbmFsXG5cbigqIENvbmRpdGlvbmFsICopXG5cbmxldCBnZW5fY29uZGl0aW9uYWxfaWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBcImNvbmRpdGlvbmFsOlwiIF4gc3RyaW5nX29mX2ludCAhaVxuXG5sZXQgY29uZGl0aW9uYWwgfm9uOnByZWQgc2lnbmFsIGh0bWwgOiBIdG1sLmh0bWwgPVxuICBzaG93IH5sYWJlbDpcImNvbmRpdGlvbmFsXCIgKGZ1biB4IC0+IGlmIHByZWQgeCB0aGVuIGh0bWwgZWxzZSBIdG1sLm51bGwpIHNpZ25hbFxuXG4oKiBFYWNoICopXG5cbm1vZHVsZSBFYWNoX2NhY2hlIDogc2lnXG4gIHR5cGUgdFxuICB0eXBlIHNsb3RzXG4gIHR5cGUga2V5XG5cbiAgdmFsIGtleSA6ICdhIC0+IGtleVxuICB2YWwgbWFrZSA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiBrZXk6a2V5IC0+IHNsb3RzIC0+IHVuaXRcbiAgdmFsIGdldCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyBvcHRpb25cbiAgdmFsIGdldF9maXJzdF9zbG90IDogc2xvdHMgLT4gaW50ICogSHRtbC5FbGVtLnN0YXRlXG4gIHZhbCBhZGRfc2xvdCA6IHQgLT4ga2V5OmtleSAtPiBpbnQgLT4gSHRtbC5FbGVtLnN0YXRlIC0+IHVuaXRcbiAgdmFsIGRlbF9zbG90IDogdCAtPiBrZXk6a2V5IC0+IHNsb3RzIC0+IGludCAtPiB1bml0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBNYXAgPSBTdGR3ZWIuTWFwXG4gIG1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYi5JdGVyYXRvclxuICBtb2R1bGUgRGljdCA9IFN0ZHdlYi5EaWN0XG5cbiAgdHlwZSBrZXkgPSBKeC50XG4gIHR5cGUgc2xvdHMgPSBIdG1sLkVsZW0uc3RhdGUgTWFwLnRcbiAgdHlwZSB0ID0gc2xvdHMgTWFwLnRcblxuICBsZXQga2V5IHggPSBKeC5FbmNvZGVyLmFueSB4XG4gIGxldCBtYWtlID0gTWFwLm1ha2VcbiAgbGV0IG1ha2Vfc2xvdHMgPSBNYXAubWFrZVxuXG4gIGxldCBnZXRfZmlyc3Rfc2xvdCAoc2xvdHMgOiBzbG90cykgPVxuICAgIG1hdGNoIE1hcC5maXJzdF9rZXkgc2xvdHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkJVRzogZ2V0X3Nsb3Q6IHNsb3RzIG11c3Qgbm90IGJlIGVtcHR5XCJcbiAgICB8IFNvbWUgaWR4X2pzIC0+XG4gICAgICBsZXQgaWR4ID0gSnguRGVjb2Rlci5pbnQgaWR4X2pzIGluXG4gICAgICBsZXQgaHRtbCA9IE1hcC5nZXQgc2xvdHMgaWR4X2pzIHw+IE9wdGlvbi5nZXQgaW5cbiAgICAgIChpZHgsIGh0bWwpXG5cbiAgbGV0IHNldCBjYWNoZSB+a2V5IChzbG90cyA6IHNsb3RzKSA9IE1hcC5zZXQgY2FjaGUga2V5IHNsb3RzXG4gIGxldCBnZXQgKGNhY2hlIDogdCkgfmtleSA9IE1hcC5nZXQgY2FjaGUga2V5XG5cbiAgbGV0IGFkZF9zbG90IChjYWNoZSA6IHQpIH5rZXkgaWR4IGh0bWwgPVxuICAgIGxldCBzbG90cyA6IHNsb3RzID1cbiAgICAgIG1hdGNoIGdldCBjYWNoZSB+a2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBtYWtlX3Nsb3RzICgpXG4gICAgICB8IFNvbWUgc2xvdHMgLT4gc2xvdHNcbiAgICBpblxuICAgIE1hcC5zZXQgc2xvdHMgKEp4LkVuY29kZXIuaW50IGlkeCkgaHRtbDtcbiAgICBzZXQgY2FjaGUgfmtleSBzbG90c1xuXG4gIGxldCBkZWxfc2xvdCBjYWNoZSB+a2V5IHNsb3RzIGlkeCA9XG4gICAgTWFwLmRlbGV0ZSBzbG90cyAoSnguRW5jb2Rlci5pbnQgaWR4KTtcbiAgICBpZiBNYXAuc2l6ZSBzbG90cyA9IDAgdGhlbiBNYXAuZGVsZXRlIGNhY2hlIGtleVxuXG4gIGxldCBjbGVhciBjYWNoZSA9XG4gICAgTWFwLnZhbHVlcyBjYWNoZVxuICAgIHw+IEl0ZXJhdG9yLml0ZXIgKGZ1biAoc2xvdHMgOiBzbG90cykgLT5cbiAgICAgICAgICAgbGV0IHN0YXRlcyA9IE1hcC52YWx1ZXMgc2xvdHMgaW5cbiAgICAgICAgICAgSXRlcmF0b3IuaXRlciAoZnVuIChzIDogSHRtbC5FbGVtLnN0YXRlKSAtPiBzLnVubW91bnQgKCkpIHN0YXRlcztcbiAgICAgICAgICAgTWFwLmNsZWFyIHNsb3RzKVxuZW5kXG5cbmxldCBnZW5fZWFjaF9pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciBpO1xuICAgIFwiZWFjaDpcIiBeIHN0cmluZ19vZl9pbnQgIWlcblxuZXh0ZXJuYWwgZGVmYXVsdF9rZXkgOiAnYSAtPiBzdHJpbmcgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBlYWNoID9rZXk6KHRvX2tleSA9IGRlZmF1bHRfa2V5KSAodG9faHRtbCA6ICdhIC0+IEh0bWwuaHRtbCkgaXRlbXNfc2lnbmFsIDogSHRtbC5odG1sID1cbiBmdW4gY3R4IHBhcmVudCAtPlxuICBsZXQgYW5jaG9yID0gQ29tbWVudC5tYWtlIChnZW5fZWFjaF9pZCAoKSkgaW5cbiAgbGV0IGZyYWcgPSBGcmFnbWVudC5tYWtlICgpIGluXG4gIGxldCBjdXJyX2NhY2hlID0gcmVmIChFYWNoX2NhY2hlLm1ha2UgKCkpIGluXG4gIGxldCB0aGlzX2N0eCA9IEh0bWwuQ3R4Lm1ha2UgKCkgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwuc3ViJ1xuICAgICAgKGZ1biBuZXdfaXRlbXMgLT5cbiAgICAgICAgbGV0IG5leHRfY2FjaGUgPSBFYWNoX2NhY2hlLm1ha2UgKCkgaW5cbiAgICAgICAgTGlzdC5pdGVyaVxuICAgICAgICAgIChmdW4gaiBpdGVtIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gRWFjaF9jYWNoZS5rZXkgKHRvX2tleSBpdGVtKSBpblxuICAgICAgICAgICAgbWF0Y2ggRWFjaF9jYWNoZS5nZXQgIWN1cnJfY2FjaGUgfmtleSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IGh0bWwgOiBIdG1sLmh0bWwgPSB0b19odG1sIGl0ZW0gaW5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID0gaHRtbCB0aGlzX2N0eCBwYXJlbnQgaW5cbiAgICAgICAgICAgICAgc3RhdGUubW91bnQgKE5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyk7XG4gICAgICAgICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgbmV4dF9jYWNoZSB+a2V5IGogc3RhdGVcbiAgICAgICAgICAgIHwgU29tZSBvbGRfc2xvdHMgLT5cbiAgICAgICAgICAgICAgbGV0IGksIGlfc3RhdGUgPSBFYWNoX2NhY2hlLmdldF9maXJzdF9zbG90IG9sZF9zbG90cyBpblxuICAgICAgICAgICAgICBpX3N0YXRlLm1vdW50IChOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmRlbF9zbG90ICFjdXJyX2NhY2hlIH5rZXkgb2xkX3Nsb3RzIGk7XG4gICAgICAgICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgbmV4dF9jYWNoZSB+a2V5IGogaV9zdGF0ZSlcbiAgICAgICAgICBuZXdfaXRlbXM7XG4gICAgICAgIEVhY2hfY2FjaGUuY2xlYXIgIWN1cnJfY2FjaGU7XG4gICAgICAgIE5vZGUuaW5zZXJ0X2FmdGVyIH5wYXJlbnQgfnJlZmVyZW5jZTphbmNob3IgZnJhZztcbiAgICAgICAgY3Vycl9jYWNoZSA6PSBuZXh0X2NhY2hlKVxuICAgICAgaXRlbXNfc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgdGhpc19jdHggdW5zdWI7XG4gIGxldCBtb3VudCBpbnNlcnQgPVxuICAgIGluc2VydCBhbmNob3I7XG4gICAgbGV0IGl0ZW1zID0gU2lnbmFsLmdldCBpdGVtc19zaWduYWwgaW5cbiAgICBMaXN0Lml0ZXJpXG4gICAgICAoZnVuIGkgaXRlbSAtPlxuICAgICAgICBsZXQgaHRtbCA6IEh0bWwuaHRtbCA9IHRvX2h0bWwgaXRlbSBpblxuICAgICAgICBsZXQgc3RhdGUgPSBodG1sIHRoaXNfY3R4IHBhcmVudCBpblxuICAgICAgICBzdGF0ZS5tb3VudCAoTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudDpmcmFnKTtcbiAgICAgICAgbGV0IGtleSA9IEVhY2hfY2FjaGUua2V5IGl0ZW0gaW5cbiAgICAgICAgRWFjaF9jYWNoZS5hZGRfc2xvdCAhY3Vycl9jYWNoZSB+a2V5IGkgc3RhdGUpXG4gICAgICBpdGVtcztcbiAgICBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGZyYWc7XG4gICAgSHRtbC5DdHgubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgbGV0IHVubW91bnQgKCkgPVxuICAgIEVhY2hfY2FjaGUuY2xlYXIgIWN1cnJfY2FjaGU7XG4gICAgSHRtbC5DdHguY2xlYW51cCB0aGlzX2N0eDtcbiAgICBIdG1sLkN0eC51bmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIHsgbW91bnQ7IHVubW91bnQgfVxuXG4oKiBCaW5kICopXG5cbmxldCBiaW5kIHRvX2F0dHIgc2lnbmFsIGN0eCBub2RlID1cbiAgbGV0IGN1cnJfc3RhdGUgPSByZWYgeyBIdG1sLkF0dHIuc2V0ID0gaWdub3JlOyB1bnNldCA9IGlnbm9yZSB9IGluXG4gIGxldCB1bnN1YiA9XG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4geCAtPlxuICAgICAgICAhY3Vycl9zdGF0ZS51bnNldCAoKTtcbiAgICAgICAgbGV0IG5leHRfYXR0ciA6IEh0bWwuYXR0ciA9IHRvX2F0dHIgeCBpblxuICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9IG5leHRfYXR0ciBjdHggbm9kZSBpblxuICAgICAgICBuZXh0X3N0YXRlLnNldCAoKTtcbiAgICAgICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlKVxuICAgICAgc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgY3R4IHVuc3ViO1xuICBsZXQgc2V0ICgpID1cbiAgICBsZXQgbmV4dF9hdHRyIDogSHRtbC5hdHRyID0gdG9fYXR0ciAoU2lnbmFsLmdldCBzaWduYWwpIGluXG4gICAgbGV0IG5leHRfc3RhdGUgPSBuZXh0X2F0dHIgY3R4IG5vZGUgaW5cbiAgICBuZXh0X3N0YXRlLnNldCAoKTtcbiAgICBjdXJyX3N0YXRlIDo9IG5leHRfc3RhdGVcbiAgaW5cbiAgbGV0IHVuc2V0ICgpID0gIWN1cnJfc3RhdGUudW5zZXQgKCkgaW5cbiAgeyBIdG1sLkF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBiaW5kX3NvbWUgdG9fYXR0ciBvcHRfc2lnbmFsID1cbiAgYmluZFxuICAgIChmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IEh0bWwuQXR0ci5ub3BcbiAgICAgIHwgU29tZSB4IC0+IHRvX2F0dHIgeClcbiAgICBvcHRfc2lnbmFsXG5cbmxldCBiaW5kX29rIHRvX2F0dHIgcmVzX3NpZ25hbCA9XG4gIGJpbmRcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgXyAtPiBIdG1sLkF0dHIubm9wXG4gICAgICB8IE9rIHggLT4gdG9fYXR0ciB4KVxuICAgIHJlc19zaWduYWxcblxuKCogVG9nZ2xlICopXG5cbmxldCB0b2dnbGUgfm9uOnByZWQgc2lnbmFsIGF0dHIgOiBIdG1sLmF0dHIgPVxuIGZ1biBjdHggbm9kZSAtPlxuICBsZXQgYWN0aXZlX3NpZyA9IFNpZ25hbC51bmlxIH5lcXVhbDooID09ICkgKFNpZ25hbC5tYXAgcHJlZCBzaWduYWwpIGluXG4gIGxldCBzdGF0ZSA6IEh0bWwuQXR0ci5zdGF0ZSA9IGF0dHIgY3R4IG5vZGUgaW5cbiAgbGV0IGlzX2FjdGl2ZSA9IHJlZiBmYWxzZSBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC51c2UnXG4gICAgICAoZnVuIGFjdGl2ZSAtPlxuICAgICAgICBpZiBhY3RpdmUgdGhlbiBzdGF0ZS5zZXQgKCkgZWxzZSBzdGF0ZS51bnNldCAoKTtcbiAgICAgICAgaXNfYWN0aXZlIDo9IGFjdGl2ZSlcbiAgICAgIGFjdGl2ZV9zaWdcbiAgaW5cbiAgSHRtbC5DdHgub25fY2xlYW51cCBjdHggdW5zdWI7XG4gIGxldCBzZXQgKCkgPVxuICAgIGlzX2FjdGl2ZSA6PSBTaWduYWwuZ2V0IGFjdGl2ZV9zaWc7XG4gICAgaWYgIWlzX2FjdGl2ZSB0aGVuIHN0YXRlLnNldCAoKSBlbHNlIHN0YXRlLnVuc2V0ICgpXG4gIGluXG4gIGxldCB1bnNldCAoKSA9IGlmICFpc19hY3RpdmUgdGhlbiBzdGF0ZS51bnNldCAoKSBpblxuICB7IEh0bWwuQXR0ci5zZXQ7IHVuc2V0IH1cblxuKCogVmlzaWJsZSAqKVxuXG5sZXQgdmlzaWJsZSB+b246cHJlZCBzaWduYWwgOiBIdG1sLkF0dHIudCA9XG4gIHRvZ2dsZSB+b246KGZ1biB4IC0+IG5vdCAocHJlZCB4KSkgc2lnbmFsIChIdG1sLnN0eWxlX2xpc3QgWyAoXCJkaXNwbGF5XCIsIFwibm9uZVwiKSBdKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJIdG1sIiwiU2lnbmFsIiwiU3Rkd2ViIiwiU3RkbGliX0xpc3QiLCJTdGRsaWIiLCJKeCIsIlN0ZGxpYl9PcHRpb24iLCJTdGRsaWJfU3RyaW5nIiwicmV2X21hcGkiLCJsMCIsImkiLCJhY2MiLCJsIiwieCIsIm9wdGlvbl9nZXQiLCJvcHRpb24iLCJvcl9mYWlsIiwibXNnIiwiaW5zZXJ0X2FmdGVyX2FuY2hvciIsInBhcmVudCIsImFuY2hvciIsIm5vZGUiLCJtYXRjaCIsImFuY2hvcl9zaWJsaW5nIiwiZmFrZV9kZWJ1Z19odG1sIiwicmVuZGVyX2NvdW50IiwiY29tbWVudF9kYXRhIiwiaHRtbCIsImNvbG9ycyIsImNzdF9kaXNwbGF5IiwicmVhbF9kZWJ1Z19odG1sIiwiYyIsImRlYnVnX2h0bWwiLCJlbmFibGVfZGVidWciLCJmbGFnIiwiZ2VuX3Nob3dfaWQiLCJsYWJlbCIsImNzdCIsInNob3ciLCJ0b19odG1sIiwic2lnbmFsIiwiY3R4IiwidGhpc19jdHgiLCJjb3VudCIsImN1cnJfc3RhdGUiLCJpbnNlcnQiLCJ1bnN1YiIsIm5leHRfc3RhdGUiLCJtb3VudCIsInVubW91bnQiLCJwYXJhbSIsInNob3dfc29tZSIsIm9wdF9zaWduYWwiLCJzaG93X29rIiwicmVzX3NpZ25hbCIsImdlbl9jb25kaXRpb25hbF9pZCIsImNvbmRpdGlvbmFsIiwicHJlZCIsImtleSIsIm1ha2UiLCJtYWtlX3Nsb3RzIiwiZ2V0X2ZpcnN0X3Nsb3QiLCJzbG90cyIsImlkeF9qcyIsImlkeCIsInNldCIsImNhY2hlIiwiZ2V0IiwiYWRkX3Nsb3QiLCJkZWxfc2xvdCIsImNsZWFyIiwic3RhdGVzIiwicyIsImR1bW15IiwiZ2VuX2VhY2hfaWQiLCJlYWNoIiwib3B0IiwiaXRlbXNfc2lnbmFsIiwidG9fa2V5IiwiZnJhZyIsImN1cnJfY2FjaGUiLCJuZXdfaXRlbXMiLCJuZXh0X2NhY2hlIiwiaiIsIml0ZW0iLCJvbGRfc2xvdHMiLCJpX3N0YXRlIiwic3RhdGUiLCJpdGVtcyIsImJpbmQiLCJ0b19hdHRyIiwibmV4dF9hdHRyIiwidW5zZXQiLCJiaW5kX3NvbWUiLCJiaW5kX29rIiwidG9nZ2xlIiwiYXR0ciIsImFjdGl2ZV9zaWciLCJpc19hY3RpdmUiLCJhY3RpdmUiLCJ2aXNpYmxlIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxX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O0FBQUE7QUFBQTtBQUFBLEVEOU1GIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc0NDMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L1RpbWUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcblxubGV0IHRpY2sgfm1zID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSB+ZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpICgpIGluXG4gIGxldCBfID0gV2luZG93LnNldF9pbnRlcnZhbCAoZnVuICgpIC0+IFNpZ25hbC5lbWl0ICgpIHMpIG1zIGluXG4gIHNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMiIsImYiLCJhMCIsImExIiwiZ2xvYmFsX2RhdGEiLCJTaWduYWwiLCJTdGR3ZWIiLCJ0aWNrIiwibXMiLCJzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQUMsSUNHVSxxQ0FBQUMsT0FBK0IsU0FBSztBQUFBLElBQ3BDO0FBQUE7QUFBQSxlQUFBQSxPQUErQixvQ0FBZ0I7QUFBQTtBQUFBLElBQUk7QUFBQSxHQUMxRDtBQUFBLEdETEgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NzQ3MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvUm91dGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19tYXAgPSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gIHR5cGUgJ2Egc2lnbmFsID0gJ2EgU2lnbmFsLnRcblxuICBsZXQgKCBvciApIG9wdCBkZWZhdWx0ID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZGVmYXVsdFxuXG4gIGxldCBvcl9mYWlsIG1zZyBvcHQgPVxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBtc2dcblxuICBsZXQgcmVjIGxpc3Rfc3RhcnRzX3dpdGggfmVxdWFsIH5wcmVmaXg6cCBsID1cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IHAwIDo6IHAnIC0+IChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBsMCA6OiBsJyB3aGVuIGVxdWFsIHAwIGwwIC0+IGxpc3Rfc3RhcnRzX3dpdGggfmVxdWFsIH5wcmVmaXg6cCcgbCdcbiAgICAgIHwgXyAtPiBmYWxzZSlcbmVuZFxuXG50eXBlICdhIHZhciA9IHtcbiAgbGFiZWwgOiBzdHJpbmc7XG4gIHRvX3N0cmluZyA6ICdhIC0+IHN0cmluZztcbiAgb2Zfc3RyaW5nIDogc3RyaW5nIC0+ICdhIG9wdGlvbjtcbiAgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sO1xufVxuXG5sZXQgdmFyIH5vZl9zdHJpbmcgfnRvX3N0cmluZyA/KGVxdWFsID0gU3RkbGliLiggPSApKSBsYWJlbCA9IHsgbGFiZWw7IHRvX3N0cmluZzsgb2Zfc3RyaW5nOyBlcXVhbCB9XG5cbmxldCBpbnQgPVxuICB7IGxhYmVsID0gXCJpbnRcIjsgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludDsgb2Zfc3RyaW5nID0gaW50X29mX3N0cmluZ19vcHQ7IGVxdWFsID0gSW50LmVxdWFsIH1cblxubGV0IHN0cmluZyA9IHsgbGFiZWwgPSBcInN0cmluZ1wiOyB0b19zdHJpbmcgPSBGdW4uaWQ7IG9mX3N0cmluZyA9IE9wdGlvbi5zb21lOyBlcXVhbCA9IFN0cmluZy5lcXVhbCB9XG5cbmxldCBxdWVyeSA9XG4gIHtcbiAgICBsYWJlbCA9IFwicXVlcnlcIjtcbiAgICB0b19zdHJpbmcgPSBTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nO1xuICAgIG9mX3N0cmluZyA9IChmdW4gc3RyIC0+IFNvbWUgKFN0ZHdlYi5Vcmxfc2VhcmNoX3BhcmFtcy5vZl9zdHJpbmcgc3RyKSk7XG4gICAgZXF1YWwgPVxuICAgICAgKGZ1biB4MSB4MiAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgKFN0ZHdlYi5Vcmxfc2VhcmNoX3BhcmFtcy50b19zdHJpbmcgeDEpIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nIHgyKSk7XG4gIH1cblxudHlwZSB0ID0geyBwcmVmaXggOiBzdHJpbmcgbGlzdCBzaWduYWw7IHJlc3QgOiBzdHJpbmcgbGlzdCBzaWduYWwgfVxuXG50eXBlICgndmlldywgJ2xpbmssICdhKSBwYXRoID1cbiAgfCBDb25zdCA6IHN0cmluZyAqICgndmlldywgJ2xpbmssICdhKSBwYXRoIC0+ICgndmlldywgJ2xpbmssICdhKSBwYXRoXG4gIHwgVmFyIDpcbiAgICAgICd2IHZhciAqICd2IHNpZ25hbCBvcHRpb24gKiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aFxuICAgICAgLT4gKCd2IHNpZ25hbCAtPiAndmlldywgJ3YgLT4gJ2xpbmssICdhKSBwYXRoXG4gIHwgUmVzdCA6ICh0IC0+ICdhLCAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCAtPiAnbGluaywgJ2EpIHBhdGhcbiAgfCBFbmQgOiAodW5pdCAtPiAnYSwgJ2EsICdhKSBwYXRoXG5cbnR5cGUgcm91dGUgPVxuICB8IFJvdXRlIDogKCd2aWV3LCAnbGluaywgSHRtbC5odG1sKSBwYXRoICogJ3ZpZXcgLT4gcm91dGVcbiAgfCBBbGlhcyA6ICh1bml0IC0+ICdhLCAnYSwgJ2EpIHBhdGggKiBzdHJpbmcgbGlzdCAtPiByb3V0ZVxuXG50eXBlIGxvb2t1cCA9IHsgcm91dGUgOiByb3V0ZTsgbWF0Y2hlZCA6IHN0cmluZyBsaXN0OyBhcmdzIDogc3RyaW5nIGxpc3QgfVxuKCogUm91dGluZyB0YWJsZSBsb29rdXAgcmVzdWx0LiAqKVxuXG50eXBlIGNhcHR1cmUgPSBNYXRjaCBvZiByb3V0ZSB8IE5vX21hdGNoIHwgUGFydGlhbCBvZiByb3V0ZVxuKCogV2hhdCBkb2VzIGEgcGF0aCBpbiBhIHJvdXRpbmcgdGFibGUgY2FwdHVyZT8uICopXG5cbnR5cGUgdGFibGUgPSB7IGNhcHR1cmUgOiBjYXB0dXJlOyBjaGlsZHJlbiA6IHRhYmxlIFN0cmluZ19tYXAudCB9XG5cbmxldCByb3V0ZSBwYXRoIHJlbmRlciA9IFJvdXRlIChwYXRoLCByZW5kZXIpXG5cbmxldCBzdHJpbmdfb2ZfcGF0aCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgPVxuIGZ1biBwYXRoMCAtPlxuICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nID1cbiAgIGZ1biBwYXRoIC0+XG4gICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgfCBFbmQgLT4gXCJcIlxuICAgIHwgUmVzdCAtPiBcIioqXCJcbiAgICB8IENvbnN0IChjb25zdCwgRW5kKSAtPiBjb25zdFxuICAgIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPiBTdHJpbmcuY29uY2F0IFwiL1wiIFsgY29uc3Q7IGxvb3AgdGFpbCBdXG4gICAgfCBWYXIgKHZhciwgXywgRW5kKSAtPiBcIjpcIiBeIHZhci5sYWJlbFxuICAgIHwgVmFyICh2YXIsIF8sIHRhaWwpIC0+IFN0cmluZy5jb25jYXQgXCIvXCIgWyB2YXIubGFiZWw7IGxvb3AgdGFpbCBdXG4gIGluXG4gIG1hdGNoIHBhdGgwIHdpdGhcbiAgfCBFbmQgLT4gXCIvXCJcbiAgfCBfIC0+IFN0cmluZy5jb25jYXQgXCJcIiBbIFwiL1wiOyBsb29wIHBhdGgwIF1cblxubGV0IGxpc3Rfb2ZfcGF0aCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgbGlzdCA9XG4gZnVuIHBhdGgwIC0+XG4gIGxldCByZWMgbG9vcCA6IHR5cGUgYSBrIG91dC4gKGEsIGssIG91dCkgcGF0aCAtPiBzdHJpbmcgbGlzdCA9XG4gICBmdW4gcGF0aCAtPlxuICAgIG1hdGNoIHBhdGggd2l0aFxuICAgIHwgRW5kIC0+IFtdXG4gICAgfCBSZXN0IC0+IFsgXCIqKlwiIF1cbiAgICB8IENvbnN0IChjb25zdCwgRW5kKSAtPiBbIGNvbnN0IF1cbiAgICB8IENvbnN0IChjb25zdCwgdGFpbCkgLT4gWyBjb25zdCBdIEAgbG9vcCB0YWlsXG4gICAgfCBWYXIgKHZhciwgXywgRW5kKSAtPiBbIFwiOlwiIF4gdmFyLmxhYmVsIF1cbiAgICB8IFZhciAodmFyLCBfLCB0YWlsKSAtPiBbIHZhci5sYWJlbCBdIEAgbG9vcCB0YWlsXG4gIGluXG4gIG1hdGNoIHBhdGgwIHdpdGhcbiAgfCBFbmQgLT4gW11cbiAgfCBfIC0+IGxvb3AgcGF0aDBcblxubW9kdWxlIFRhYmxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHRhYmxlXG5cbiAgbGV0IGVtcHR5ID0geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG5cbiAgbGV0IHJlZ2lzdGVyIHJvdXRlMCByb290ID1cbiAgICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gdCAtPiB0ID1cbiAgICAgZnVuIHBhdGggbm9kZSAtPlxuICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8IEVuZCAtPiB7IG5vZGUgd2l0aCBjYXB0dXJlID0gTWF0Y2ggcm91dGUwIH1cbiAgICAgIHwgUmVzdCAtPiB7IG5vZGUgd2l0aCBjYXB0dXJlID0gUGFydGlhbCByb3V0ZTAgfVxuICAgICAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+XG4gICAgICAgIGxldCBtYXRjaGVkX25vZGUgPVxuICAgICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgY29uc3Qgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgICAgfCBTb21lIGV4aXN0aW5nX25vZGUgLT4gZXhpc3Rpbmdfbm9kZVxuICAgICAgICAgIHwgTm9uZSAtPiB7IGNhcHR1cmUgPSBOb19tYXRjaDsgY2hpbGRyZW4gPSBTdHJpbmdfbWFwLmVtcHR5IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRhaWwgPSBsb29wIHRhaWwgbWF0Y2hlZF9ub2RlIGluXG4gICAgICAgIHsgbm9kZSB3aXRoIGNoaWxkcmVuID0gU3RyaW5nX21hcC5hZGQgY29uc3QgdGFpbCBub2RlLmNoaWxkcmVuIH1cbiAgICAgIHwgVmFyIChfLCBfLCB0YWlsKSAtPlxuICAgICAgICBsZXQgbWF0Y2hlZF9ub2RlID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IFwiOlwiIG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgIHwgU29tZSBleGlzdGluZ19ub2RlIC0+IGV4aXN0aW5nX25vZGVcbiAgICAgICAgICB8IE5vbmUgLT4geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWlsID0gbG9vcCB0YWlsIG1hdGNoZWRfbm9kZSBpblxuICAgICAgICB7IG5vZGUgd2l0aCBjaGlsZHJlbiA9IFN0cmluZ19tYXAuYWRkIFwiOlwiIHRhaWwgbm9kZS5jaGlsZHJlbiB9XG4gICAgaW5cbiAgICBtYXRjaCByb3V0ZTAgd2l0aFxuICAgIHwgUm91dGUgKHBhdGgwLCBfKSAtPiBsb29wIHBhdGgwIHJvb3RcbiAgICB8IEFsaWFzIChwYXRoMCwgXykgLT4gbG9vcCBwYXRoMCByb290XG5cbiAgZXhjZXB0aW9uIEluY29tcGxldGVfbWF0Y2ggb2Ygc3RyaW5nIGxpc3RcbiAgZXhjZXB0aW9uIE5vX21hdGNoIG9mIHN0cmluZyBsaXN0XG5cbiAgbGV0IGxvb2t1cCAodGFibGUwIDogdCkgKGlucHV0MCA6IHN0cmluZyBsaXN0KSA6IChsb29rdXAsIGV4bikgcmVzdWx0ID1cbiAgICBsZXQgcmVjIGxvb3AgP2J0IG5vZGUgaW5wdXQgbWF0Y2hlZCBhcmdzID1cbiAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgW10gLT4gKFxuICAgICAgICBtYXRjaCBub2RlLmNhcHR1cmUgd2l0aFxuICAgICAgICB8IE5vX21hdGNoIC0+IChcbiAgICAgICAgICAoKiBJZiB3ZSBoYXZlIGEgYmFja3RyYWNraW5nIGNvbnRpbnVhdGlvbiwgdHJ5IHRoYXQgYmVmb3JlIGZhaWxpbmcuICopXG4gICAgICAgICAgbWF0Y2ggYnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFcnJvciAoSW5jb21wbGV0ZV9tYXRjaCBpbnB1dDApXG4gICAgICAgICAgfCBTb21lIGJ0IC0+IGJ0ICgpKVxuICAgICAgICB8IE1hdGNoIHJvdXRlIC0+IE9rIHsgcm91dGU7IG1hdGNoZWQgPSBMaXN0LnJldiBtYXRjaGVkOyBhcmdzID0gTGlzdC5yZXYgYXJncyB9XG4gICAgICAgIHwgUGFydGlhbCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgfSlcbiAgICAgIHwgaW5wdXRfaGQgOjogaW5wdXQnIC0+IChcbiAgICAgICAgbGV0IGJ0ICgpID1cbiAgICAgICAgICBtYXRjaCBub2RlLmNhcHR1cmUgd2l0aFxuICAgICAgICAgIHwgUGFydGlhbCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgQCBpbnB1dCB9XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgXCI6XCIgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgbm9kZScgLT4gbG9vcCBub2RlJyBpbnB1dCcgKGlucHV0X2hkIDo6IG1hdGNoZWQpIChpbnB1dF9oZCA6OiBhcmdzKVxuICAgICAgICAgICAgfCBOb25lIC0+IEVycm9yIChOb19tYXRjaCBpbnB1dDApKVxuICAgICAgICBpblxuICAgICAgICAoKiBGb2xsb3cgQ29uc3QuIElmIG5vdCBkZWZpbmVkLCBjaGVjayBmb3IgUmVzdCBhbmQgVmFyLlxuICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBjaGVja2luZyB0aGlzIG5vdywgd2UgY3JlYXRlIGEgXCJiYWNrdHJhY2tpbmdcIlxuICAgICAgICAgICBjb250aW51YXRpb24gdGhhdCBtaWdodCBhdHRlbXB0IHRoZSBSZXN0L1ZhciBtYXRjaCBpZiBDb25zdCBmYWlscy4gKilcbiAgICAgICAgbWF0Y2ggU3RyaW5nX21hcC5maW5kX29wdCBpbnB1dF9oZCBub2RlLmNoaWxkcmVuIHdpdGhcbiAgICAgICAgfCBTb21lIG5vZGUnIC0+IGxvb3AgfmJ0IG5vZGUnIGlucHV0JyAoaW5wdXRfaGQgOjogbWF0Y2hlZCkgYXJnc1xuICAgICAgICB8IE5vbmUgLT4gYnQgKCkpXG4gICAgaW5cbiAgICBsb29wIHRhYmxlMCBpbnB1dDAgW10gW11cblxuICBsZXQgb2Zfcm91dGVfbGlzdCByb3V0ZXMgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHJlZ2lzdGVyIHggYWNjKSBlbXB0eSByb3V0ZXNcbmVuZFxuXG5sZXQgdGFibGUgPSBUYWJsZS5vZl9yb3V0ZV9saXN0XG5sZXQgbWFrZSA/KHByZWZpeCA9IFNpZ25hbC5tYWtlIFtdKSByZXN0ID0geyBwcmVmaXg7IHJlc3QgfVxubGV0IHBhdGggKHJvdXRlciA6IHQpID0gcm91dGVyLnJlc3RcbmxldCBwcmVmaXggKHJvdXRlciA6IHQpID0gcm91dGVyLnByZWZpeFxuXG5sZXQgcmVjIGV2YWxfcGF0aCA6IHR5cGUgdmlldyBsaW5rIGEuIChzdHJpbmcgbGlzdCAtPiBhKSAtPiAodmlldywgbGluaywgYSkgcGF0aCAtPiBsaW5rID1cbiBmdW4gayBwYXRoIC0+XG4gIG1hdGNoIHBhdGggd2l0aFxuICB8IEVuZCAtPiBrIFtdXG4gIHwgUmVzdCAtPiBmdW4gcGF0aDIgLT4gZXZhbF9wYXRoIGsgcGF0aDJcbiAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gayBbIGNvbnN0IF1cbiAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+IGV2YWxfcGF0aCAoZnVuIHJlc3QgLT4gayAoY29uc3QgOjogcmVzdCkpIHRhaWxcbiAgfCBWYXIgKHZhciwgXywgdGFpbCkgLT4gZnVuIHggLT4gZXZhbF9wYXRoIChmdW4gcmVzdCAtPiBrICh2YXIudG9fc3RyaW5nIHggOjogcmVzdCkpIHRhaWxcblxubGV0IGxvY2F0aW9uX3NldF9wYXRoIHBhdGggPVxuICBsZXQgaGFzaCA9IFwiIy9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgcGF0aCBpblxuICBTdGR3ZWIuRG9tLkxvY2F0aW9uLnNldF9oYXNoIFN0ZHdlYi5Eb20uV2luZG93LmxvY2F0aW9uIGhhc2hcblxubGV0IGFsaWFzIHNyYyBkc3QgPSBldmFsX3BhdGggKGZ1biBzdHJfcGF0aCAtPiBBbGlhcyAoc3JjLCBzdHJfcGF0aCkpIGRzdFxuXG4oKiBnb191cCAyIGEvYi9jL2QgLT4gL2EvYiAqKVxuKCogZ29fdXAgMCBhL2IvYy9kIC0+IC9hL2IvYy9kICopXG4oKiBnb191cCAyIC8gLT4gLyAqKVxuKCogZ29fdXAgMTAgYS9iL2MvZCAtPiAvICopXG5sZXQgZ29fdXAgbjAgcHJlZml4ID1cbiAgaWYgbjAgPSAwIHRoZW4gcHJlZml4XG4gIGVsc2UgaWYgbjAgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJ1cCBtdXN0IGJlIHBvc2l0aXZlXCJcbiAgZWxzZVxuICAgIGxldCBwcmVmaXhfcmV2ID0gTGlzdC5yZXYgcHJlZml4IGluXG4gICAgbGV0IHJlYyBsb29wIG4gaW5wdXQgPVxuICAgICAgaWYgbiA9IDAgdGhlbiBMaXN0LnJldiBpbnB1dFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBfIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bFxuICAgIGluXG4gICAgbG9vcCBuMCBwcmVmaXhfcmV2XG5cbmxldCBnbyA/KGFic29sdXRlID0gZmFsc2UpID8odXAgPSAwKSAocm91dGVyIDogdCkgcGF0aCA9XG4gIGV2YWxfcGF0aFxuICAgIChmdW4gc3RyX3BhdGggLT5cbiAgICAgIGxldCBwcmVmaXggPSBpZiBhYnNvbHV0ZSB0aGVuIFtdIGVsc2UgZ29fdXAgdXAgKFNpZ25hbC5nZXQgcm91dGVyLnByZWZpeCkgaW5cbiAgICAgIGxvY2F0aW9uX3NldF9wYXRoIChwcmVmaXggQCBzdHJfcGF0aCkpXG4gICAgcGF0aFxuXG5sZXQgcGlja19xcGF0aCBzZWdtZW50cyA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVpdGhlci5MZWZ0IGNvbnN0IC0+IGNvbnN0XG4gICAgICB8IFJpZ2h0IHZhcl9zaWcgLT4gU2lnbmFsLmdldCB2YXJfc2lnKVxuICAgIHNlZ21lbnRzXG5cbmxldCBsaW5rID8oYWJzb2x1dGUgPSBmYWxzZSkgPyh1cCA9IDApID8oYWN0aXZlID0gSHRtbC5BdHRyLm5vcCkgPyhpbmFjdGl2ZSA9IEh0bWwuQXR0ci5ub3ApXG4gICAgPyhleGFjdCA9IGZhbHNlKSA/YWxpYXMgKHJvdXRlciA6IHQpIHBhdGgwID1cbiAgbGV0IGFsaWFzID0gT3B0aW9uLm1hcCBsaXN0X29mX3BhdGggYWxpYXMgaW5cbiAgbGV0IGNoZWNrX2lzX2FjdGl2ZSBsaW5rIGN1cnIgPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiBleGFjdCB0aGVuIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGxpbmsgY3VyclxuICAgICAgZWxzZSBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbDpTdHJpbmcuZXF1YWwgfnByZWZpeDpsaW5rIGN1cnJcbiAgICBpblxuICAgIG1hdGNoIGFsaWFzIHdpdGhcbiAgICB8IFNvbWUgYWxpYXMgLT4gZXEgfHwgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgYWxpYXMgY3VyclxuICAgIHwgTm9uZSAtPiBlcVxuICBpblxuICBldmFsX3BhdGhcbiAgICAoZnVuIHN0cl9wYXRoIC0+XG4gICAgICBsZXQgb3V0ID1cbiAgICAgICAgU2lnbmFsLm1hcFxuICAgICAgICAgIChmdW4gcHJlZml4IC0+IChnb191cCB1cCBwcmVmaXgsIHN0cl9wYXRoKSlcbiAgICAgICAgICAoaWYgYWJzb2x1dGUgdGhlbiBTaWduYWwubWFrZSBbXSBlbHNlIHJvdXRlci5wcmVmaXgpXG4gICAgICBpblxuICAgICAgU2lnbmFsLnBhaXIgb3V0IHJvdXRlci5yZXN0XG4gICAgICB8PiBTaWduYWwudW5pcSB+ZXF1YWw6KGZ1biAoKHAxLCBzMSksIHIxKSAoKHAyLCBzMiksIHIyKSAtPlxuICAgICAgICAgICAgIGlmIGFjdGl2ZSA9PSBIdG1sLkF0dHIubm9wIHRoZW5cbiAgICAgICAgICAgICAgIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHAxIHAyICYmIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHMxIHMyXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcDEgcDJcbiAgICAgICAgICAgICAgICYmIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHMxIHMyXG4gICAgICAgICAgICAgICAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCByMSByMilcbiAgICAgIHw+IFZpZXcuYmluZCAoZnVuICgobGlua19wcmVmaXgsIGxpbmtfc3VmZml4KSwgcmVzdCkgLT5cbiAgICAgICAgICAgICBsZXQgcGF0aF9zdHIgPSBTdHJpbmcuY29uY2F0IFwiL1wiICgoXCIjXCIgOjogbGlua19wcmVmaXgpIEAgbGlua19zdWZmaXgpIGluXG4gICAgICAgICAgICAgbGV0IGhyZWZfYXR0ciA9IEh0bWwuaHJlZiBwYXRoX3N0ciBpblxuICAgICAgICAgICAgIGxldCB1c2VyX2F0dHIgPVxuICAgICAgICAgICAgICAgaWYgYWN0aXZlID09IEh0bWwuQXR0ci5ub3AgdGhlbiBpbmFjdGl2ZVxuICAgICAgICAgICAgICAgZWxzZSBpZiBjaGVja19pc19hY3RpdmUgbGlua19zdWZmaXggcmVzdCB0aGVuIGFjdGl2ZVxuICAgICAgICAgICAgICAgZWxzZSBpbmFjdGl2ZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSHRtbC5BdHRyLmNvbWJpbmUgaHJlZl9hdHRyIHVzZXJfYXR0cikpXG4gICAgcGF0aDBcblxudHlwZSBlbWl0cyA9IHtcbiAgbXV0YWJsZSBlbWl0X2FyZ3MgOiAobm90aWZ5OlNpZ25hbC5ub3RpZmljYXRpb24gLT4gc3RyaW5nIC0+IHVuaXQpIGxpc3Q7XG4gIG11dGFibGUgZW1pdF9wcmVmaXggOiBub3RpZnk6U2lnbmFsLm5vdGlmaWNhdGlvbiAtPiBzdHJpbmcgbGlzdCAtPiB1bml0O1xuICBtdXRhYmxlIGVtaXRfcmVzdCA6IG5vdGlmeTpTaWduYWwubm90aWZpY2F0aW9uIC0+IHN0cmluZyBsaXN0IC0+IHVuaXQ7XG59XG5cbmxldCBpbml0X2VtaXRzICgpID1cbiAgeyBlbWl0X2FyZ3MgPSBbXTsgZW1pdF9wcmVmaXggPSAoZnVuIH5ub3RpZnk6XyBfIC0+ICgpKTsgZW1pdF9yZXN0ID0gKGZ1biB+bm90aWZ5Ol8gXyAtPiAoKSkgfVxuXG5sZXQgYXBwbHkgZW1pdHMgfnByZWZpeDphYnNwcmVmaXgwIH5tYXRjaGVkIH5hcmdzOmFyZ3MwID1cbiAgbGV0ICggbGV0KiApID0gUmVzdWx0LmJpbmQgaW5cbiAgbGV0IGFic3ByZWZpeF9zaWcgPSBTaWduYWwubWFwIChmdW4gYWJzcHJlZml4MCAtPiBhYnNwcmVmaXgwIEAgbWF0Y2hlZCkgYWJzcHJlZml4MCBpblxuICBsZXQgYWJzcHJlZml4X2VtaXQgfm5vdGlmeSBwcmVmaXgnID1cbiAgICBsZXQgYWJzcHJlZml4JyA9IFNpZ25hbC5nZXQgYWJzcHJlZml4MCBAIHByZWZpeCcgaW5cbiAgICBpZiBub3QgKExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGFic3ByZWZpeCcgKFNpZ25hbC5nZXQgYWJzcHJlZml4X3NpZykpIHRoZW5cbiAgICAgIFNpZ25hbC5lbWl0IH5ub3RpZnkgYWJzcHJlZml4JyBhYnNwcmVmaXhfc2lnXG4gIGluXG4gIGVtaXRzLmVtaXRfcHJlZml4IDwtIGFic3ByZWZpeF9lbWl0O1xuICBsZXQgcmVjIGxvb3AgOlxuICAgICAgdHlwZSB2aWV3IGxpbmsuXG4gICAgICBzdHJpbmcgbGlzdCAtPlxuICAgICAgXyBsaXN0IC0+XG4gICAgICAoc3RyaW5nLCBzdHJpbmcgc2lnbmFsKSBFaXRoZXIudCBsaXN0IC0+XG4gICAgICAodmlldywgbGluaywgSHRtbC5odG1sKSBwYXRoIC0+XG4gICAgICB2aWV3IC0+XG4gICAgICAoSHRtbC5odG1sICogKHN0cmluZywgc3RyaW5nIHNpZ25hbCkgRWl0aGVyLnQgbGlzdCwgc3RyaW5nKSByZXN1bHQgPVxuICAgZnVuIGFyZ3MgYXJnc19lbWl0cyByZXZfcXVhbGlmaWVkX3BhdGggcGF0aCB2aWV3IC0+XG4gICAgbWF0Y2ggKHBhdGgsIGFyZ3MpIHdpdGhcbiAgICB8IFJlc3QsIF8gLT5cbiAgICAgIGxldCByZXN0X3NpZyA9IFNpZ25hbC5tYWtlIGFyZ3MgaW5cbiAgICAgIGxldCByZXN0X2VtaXQgfm5vdGlmeSByZXN0ID1cbiAgICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCByZXN0IChTaWduYWwuZ2V0IHJlc3Rfc2lnKSkgdGhlblxuICAgICAgICAgIFNpZ25hbC5lbWl0IH5ub3RpZnkgcmVzdCByZXN0X3NpZ1xuICAgICAgaW5cbiAgICAgIGVtaXRzLmVtaXRfYXJncyA8LSBMaXN0LnJldiBhcmdzX2VtaXRzO1xuICAgICAgZW1pdHMuZW1pdF9yZXN0IDwtIHJlc3RfZW1pdDtcbiAgICAgIGxldCBodG1sID0gdmlldyAoeyBwcmVmaXggPSBhYnNwcmVmaXhfc2lnOyByZXN0ID0gcmVzdF9zaWcgfSA6IHQpIGluXG4gICAgICBsZXQgcXVhbGlmaWVkX3BhdGgnID1cbiAgICAgICAgbGV0IHF1YWxpZmllZF9yZXN0ID0gTGlzdC5tYXAgKGZ1biBhcmcgLT4gRWl0aGVyLkxlZnQgYXJnKSBhcmdzIGluXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZXZfcXVhbGlmaWVkX3BhdGggcXVhbGlmaWVkX3Jlc3RcbiAgICAgIGluXG4gICAgICBPayAoaHRtbCwgcXVhbGlmaWVkX3BhdGgnKVxuICAgIHwgRW5kLCBbXSAtPlxuICAgICAgZW1pdHMuZW1pdF9hcmdzIDwtIExpc3QucmV2IGFyZ3NfZW1pdHM7XG4gICAgICBPayAodmlldyAoKSwgTGlzdC5yZXYgcmV2X3F1YWxpZmllZF9wYXRoKVxuICAgIHwgRW5kLCBfIDo6IF8gLT4gRXJyb3IgXCJ0b28gbWFueSBhcmd1bWVudHMgZm9yIHBhdGhcIlxuICAgIHwgQ29uc3QgKGNvbnN0LCBwYXRoJyksIF8gLT4gbG9vcCBhcmdzIGFyZ3NfZW1pdHMgKExlZnQgY29uc3QgOjogcmV2X3F1YWxpZmllZF9wYXRoKSBwYXRoJyB2aWV3XG4gICAgfCBWYXIgXywgW10gLT4gRXJyb3IgXCJpbnN1ZmZpY2llbnQgYXJndW1lbnRzIGZvciBwYXRoXCJcbiAgICB8IFZhciAodmFyLCB2YXJfc2lnX29wdCwgcGF0aCcpLCBhcmdfc3RyIDo6IGFyZ3MnIC0+XG4gICAgICBsZXQqIGFyZyA9XG4gICAgICAgIHZhci5vZl9zdHJpbmcgYXJnX3N0clxuICAgICAgICB8PiBPcHRpb24udG9fcmVzdWx0XG4gICAgICAgICAgICAgfm5vbmU6KFN0cmluZy5jb25jYXQgXCJcIiBbIFwiY291bGQgbm90IGRlY29kZSBcIjsgdmFyLmxhYmVsOyBcIiB2YXJpYWJsZTogXCI7IGFyZ19zdHIgXSlcbiAgICAgIGluXG4gICAgICBsZXQgYXJnX3NpZyA9XG4gICAgICAgIG1hdGNoIHZhcl9zaWdfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNpZ25hbC5tYWtlIH5sYWJlbDooXCJ2YXItXCIgXiB2YXIubGFiZWwpIGFyZ1xuICAgICAgICB8IFNvbWUgdmFyX3NpZyAtPlxuICAgICAgICAgIFNpZ25hbC5lbWl0IGFyZyB2YXJfc2lnO1xuICAgICAgICAgIHZhcl9zaWdcbiAgICAgIGluXG4gICAgICBsZXQgYXJnX2VtaXQgfm5vdGlmeSBhcmdfc3RyJyA9XG4gICAgICAgIGxldCBhcmcnID0gdmFyLm9mX3N0cmluZyBhcmdfc3RyJyB8PiBvcl9mYWlsIChcInZhciBkZWNvZGluZyBmYWlsZWQ6IFwiIF4gdmFyLmxhYmVsKSBpblxuICAgICAgICBpZiBub3QgKHZhci5lcXVhbCAoU2lnbmFsLmdldCBhcmdfc2lnKSBhcmcnKSB0aGVuIFNpZ25hbC5lbWl0IH5ub3RpZnkgYXJnJyBhcmdfc2lnXG4gICAgICBpblxuICAgICAgbGV0IHF1YWxpZmllZF9wYXRoJyA9IEVpdGhlci5SaWdodCAoU2lnbmFsLm1hcCB2YXIudG9fc3RyaW5nIGFyZ19zaWcpIDo6IHJldl9xdWFsaWZpZWRfcGF0aCBpblxuICAgICAgbG9vcCBhcmdzJyAoYXJnX2VtaXQgOjogYXJnc19lbWl0cykgcXVhbGlmaWVkX3BhdGgnIHBhdGgnICh2aWV3IGFyZ19zaWcpXG4gIGluXG4gIGxvb3AgYXJnczAgW10gW11cblxubGV0IHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCA/YWxpYXMgfmxhYmVsIH5kZWZhdWx0IGVyciA9XG4gIGxldCBsYWJlbCA9XG4gICAgbWF0Y2ggYWxpYXMgd2l0aFxuICAgIHwgTm9uZSAtPiBsYWJlbFxuICAgIHwgU29tZSBhbGlhcyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgWyBsYWJlbDsgXCI6IGFsaWFzIFwiOyBhbGlhcyBdXG4gIGluXG4gIG1hdGNoIGVyciB3aXRoXG4gIHwgVGFibGUuTm9fbWF0Y2ggcGF0aCAtPlxuICAgIGRlZmF1bHQgb3IgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBubyBtYXRjaDogL1wiIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoU2lnbmFsLmdldCBwcmVmaXggQCBwYXRoKSlcbiAgfCBUYWJsZS5JbmNvbXBsZXRlX21hdGNoIHBhdGggLT5cbiAgICBkZWZhdWx0XG4gICAgb3IgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBpbmNvbXBsZXRlIG1hdGNoOiAvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChTaWduYWwuZ2V0IHByZWZpeCBAIHBhdGgpKVxuICB8IGV4biAtPlxuICAgIEp4LmxvZyBleG47XG4gICAgSHRtbC50ZXh0IChsYWJlbCBeIFwiOiB1bmV4cGVjdGVkIGV4Y2VwdGlvblwiKVxuXG4oKiBUT0RPOiBtdXN0IGJlIGxhenkgaW5pdGlhbGl6ZWQgc2ltaWxhciB0byBWaWV3LnNob3cuICopXG4oKiBUT0RPOiBpbXByb3ZlIGV4biBjb250ZXh0IGxvZ2dpbmcuICopXG5sZXQgZGlzcGF0Y2hfdGFibGUgP2xhYmVsID9kZWZhdWx0ICh7IHByZWZpeDsgcmVzdCB9IDogdCkgdGFibGUgOiBIdG1sLmh0bWwgPVxuIGZ1biBwYXJlbnQgaW5zZXJ0IC0+XG4gIGxldCBsYWJlbCA9XG4gICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgIHwgTm9uZSAtPiBcInJvdXRlclwiXG4gICAgfCBTb21lIHggLT4gXCJyb3V0ZXItXCIgXiB4XG4gIGluXG4gIGxldCBsb29rdXBfc2lnID0gU2lnbmFsLm1hcCAoVGFibGUubG9va3VwIHRhYmxlKSByZXN0IGluXG4gIGxldCBsb29rdXBfcm91dGVfc2lnID1cbiAgICBTaWduYWwudW5pcVxuICAgICAgfmVxdWFsOihmdW4gcmVzMSByZXMyIC0+XG4gICAgICAgIG1hdGNoIChyZXMxLCByZXMyKSB3aXRoXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IHIxOyBfIH0sIE9rIHsgcm91dGUgPSByMjsgXyB9IC0+IHIxID09IHIyXG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGxvb2t1cF9zaWdcbiAgaW5cbiAgKCogRG8gd2UgbmVlZCB0byBjbGVhbiB1cCBlbWl0cyBpbiB1bm1vdW50PyAqKVxuICBsZXQgZW1pdHMgPSBpbml0X2VtaXRzICgpIGluXG4gIGxldCBodG1sID1cbiAgICBWaWV3LnNob3cgfmxhYmVsXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBPayB7IHJvdXRlID0gQWxpYXMgKHNyY19wYXRoLCBkc3Rfc3RyX3BhdGgpOyBfIH0gLT4gYmVnaW5cbiAgICAgICAgICBtYXRjaCBUYWJsZS5sb29rdXAgdGFibGUgZHN0X3N0cl9wYXRoIHdpdGhcbiAgICAgICAgICB8IE9rIHsgcm91dGUgPSBSb3V0ZSAocGF0aCwgdmlldyk7IG1hdGNoZWQ7IGFyZ3MgfSAtPiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggYXBwbHkgZW1pdHMgfnByZWZpeCB+bWF0Y2hlZCB+YXJncyBwYXRoIHZpZXcgd2l0aFxuICAgICAgICAgICAgfCBPayAoaHRtbCwgX3FwYXRoKSAtPiBodG1sXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBIdG1sLnRleHQgKGxhYmVsIF4gXCI6IFwiIF4gZXJyKVxuICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgT2sgeyByb3V0ZSA9IEFsaWFzIF87IF8gfSAtPiBmYWlsd2l0aCBcImJ1ZzogZm9yd2FyZCB0byBmb3J3YXJkXCJcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IGFsaWFzID0gc3RyaW5nX29mX3BhdGggc3JjX3BhdGggaW5cbiAgICAgICAgICAgIHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCB+YWxpYXMgfmxhYmVsIH5kZWZhdWx0IGVyclxuICAgICAgICBlbmRcbiAgICAgICAgfCBPayB7IHJvdXRlID0gUm91dGUgKHBhdGgsIHZpZXcpOyBtYXRjaGVkOyBhcmdzIH0gLT4gYmVnaW5cbiAgICAgICAgICBtYXRjaCBhcHBseSBlbWl0cyB+cHJlZml4IH5tYXRjaGVkIH5hcmdzIHBhdGggdmlldyB3aXRoXG4gICAgICAgICAgfCBPayAoaHRtbCwgcXBhdGgpIC0+XG4gICAgICAgICAgICAoKkp4LmxvZyAoXCJBRlRFUiBBUFBMWVwiLCBBcnJheS5vZl9saXN0IHFwYXRoKTsqKVxuICAgICAgICAgICAgKCpsZXQgdXBfcmVzdCA9IFNpZ25hbC5tYWtlIFtdIGluXG4gICAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAgIChmdW4gc2VnIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBzZWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IEVpdGhlci5SaWdodCB2YXJfc2lnIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIEZJWE1FOiB0aGlzIHFwYXRoIGlzIHRoZSBpbml0aWFsIHBhdGggYXQgcmVuZGVyaW5nIHRpbWUsIG5vdCB0aGUgY3VycmVudCByZXN0IHBhdGguICopXG4gICAgICAgICAgICAgICAgICAgIFNpZ25hbC5zdWIgKGZ1biBfIC0+IFNpZ25hbC5lbWl0IChwaWNrX3FwYXRoIHFwYXRoKSB1cF9yZXN0KSB2YXJfc2lnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHFwYXRoO1xuICAgICAgICAgICAgICBTaWduYWwuc3ViXG4gICAgICAgICAgICAgICAgKGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAoKiBKeC5sb2cgKFwiUk9VVEUgVVAsIHJlc3RcIiwgQXJyYXkub2ZfbGlzdCByZXN0LCBBcnJheS5vZl9saXN0IChTaWduYWwuZ2V0IHJvdXRlci5yZXN0KSk7ICopXG4gICAgICAgICAgICAgICAgICBsZXQgaGFzaCA9IFwiIy9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgKFNpZ25hbC5nZXQgcHJlZml4IEAgcmVzdCkgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZHdlYi5Eb20uTG9jYXRpb24uc2V0X2hhc2ggU3Rkd2ViLkRvbS5XaW5kb3cubG9jYXRpb24gaGFzaFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB1cF9yZXN0OyopXG4gICAgICAgICAgICBodG1sXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBcIiBeIGVycilcbiAgICAgICAgZW5kXG4gICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlbmRlcl9sb29rdXBfZXJyb3IgfnByZWZpeCB+bGFiZWwgfmRlZmF1bHQgZXJyKVxuICAgICAgbG9va3VwX3JvdXRlX3NpZ1xuICBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBPayAoeyBhcmdzID0gYXJnczA7IG1hdGNoZWQgPSBtYXRjaGVkMDsgcm91dGUgPSBSb3V0ZSBfIH0gOiBsb29rdXApIC0+XG4gICAgICAgICAgU2lnbmFsLnNjb3BlIChmdW4gbm90aWZ5IC0+XG4gICAgICAgICAgICAgIGVtaXRzLmVtaXRfcHJlZml4IH5ub3RpZnkgbWF0Y2hlZDA7XG4gICAgICAgICAgICAgIGxldCByZWMgbG9vcCBhcmdzX2VtaXRzIGFyZ3MgPVxuICAgICAgICAgICAgICAgIG1hdGNoIChhcmdzX2VtaXRzLCBhcmdzKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSwgW10gLT4gZW1pdHMuZW1pdF9yZXN0IH5ub3RpZnkgW11cbiAgICAgICAgICAgICAgICB8IFtdLCByZXN0IC0+IGVtaXRzLmVtaXRfcmVzdCB+bm90aWZ5IHJlc3RcbiAgICAgICAgICAgICAgICB8IF9hcmdfZW1pdHMsIFtdIC0+IGludmFsaWRfYXJnIFwicm91dGVyOiBpbnN1ZmZpY2llbnQgYXJncyBmb3IgZW1pdFwiXG4gICAgICAgICAgICAgICAgfCBhcmdfZW1pdCA6OiBhcmdfZW1pdHMnLCBhcmcgOjogYXJncycgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRPRE86IHRoZXNlIGVtaXRzIGNhbiByYWlzZSB2YXIgZGVjb2RpbmcgZXhjZXB0aW9ucywgaGFuZGxlIHRoaXMgaGVyZSBhbmQgdXBkYXRlIHZpZXcgd2l0aCBlcnJvci4gKilcbiAgICAgICAgICAgICAgICAgIGFyZ19lbWl0IH5ub3RpZnkgYXJnO1xuICAgICAgICAgICAgICAgICAgbG9vcCBhcmdfZW1pdHMnIGFyZ3MnXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3AgZW1pdHMuZW1pdF9hcmdzIGFyZ3MwKVxuICAgICAgICB8IE9rICh7IHJvdXRlID0gQWxpYXMgXzsgXyB9IDogbG9va3VwKSAtPiAoKVxuICAgICAgICB8IEVycm9yIF8gLT4gKCkpXG4gICAgICBsb29rdXBfc2lnXG4gIGluXG4gIGxldCBodG1sJyA9IEh0bWwuRWxlbS5vbl91bm1vdW50IHVuc3ViIGh0bWwgaW5cbiAgaHRtbCcgcGFyZW50IGluc2VydFxuXG5sZXQgZGlzcGF0Y2ggP2xhYmVsID9kZWZhdWx0IHJvdXRlciByb3V0ZXMgPVxuICBkaXNwYXRjaF90YWJsZSA/bGFiZWwgP2RlZmF1bHQgcm91dGVyIChUYWJsZS5vZl9yb3V0ZV9saXN0IHJvdXRlcylcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlNpZ25hbCIsIkh0bWwiLCJIZWxpeF9WaWV3IiwiU3RkbGliX1N0cmluZyIsIkp4IiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX1Jlc3VsdCIsIlN0ZHdlYiIsIlN0ZGxpYl9NYXAiLCJTdGRsaWJfSW50IiwiU3RyaW5nX21hcCIsIm9yIiwib3B0IiwiZGVmYXVsdCQiLCJ4IiwidmFyJCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImxhYmVsIiwiZXF1YWwiLCJpbnQiLCJzdHJpbmciLCJxdWVyeSIsInN0ciIsIngxIiwieDIiLCJyb3V0ZSIsInBhdGgiLCJyZW5kZXIiLCJjc3QiLCJzdHJpbmdfb2ZfcGF0aCIsInBhdGgwIiwibG9vcCIsImNvbnN0JCIsIm1hdGNoIiwidGFpbCIsImxpc3Rfb2ZfcGF0aCIsImVtcHR5IiwicmVnaXN0ZXIiLCJyb3V0ZTAiLCJyb290Iiwibm9kZSIsImV4aXN0aW5nX25vZGUiLCJtYXRjaGVkX25vZGUiLCJJbmNvbXBsZXRlX21hdGNoIiwiTm9fbWF0Y2giLCJsb29rdXAiLCJ0YWJsZTAiLCJpbnB1dDAiLCJidCIsImlucHV0IiwibWF0Y2hlZCIsImFyZ3MiLCJpbnB1dF9oZCIsInBhcmFtIiwib2Zfcm91dGVfbGlzdCIsInJvdXRlcyIsImFjYyIsIm1ha2UiLCJyZXN0IiwicHJlZml4Iiwicm91dGVyIiwiZXZhbF9wYXRoIiwiayIsInBhdGgyIiwibG9jYXRpb25fc2V0X3BhdGgiLCJoYXNoIiwiYWxpYXMiLCJzcmMiLCJkc3QiLCJzdHJfcGF0aCIsImdvX3VwIiwibjAiLCJwcmVmaXhfcmV2IiwibiIsImdvIiwiYWJzb2x1dGUiLCJ1cCIsInBpY2tfcXBhdGgiLCJzZWdtZW50cyIsInZhcl9zaWciLCJsaW5rIiwiYWN0aXZlIiwiaW5hY3RpdmUiLCJleGFjdCIsIm91dCIsInIyIiwiczIiLCJwMiIsInIxIiwiczEiLCJwMSIsImxpbmtfc3VmZml4IiwibGlua19wcmVmaXgiLCJwYXRoX3N0ciIsImhyZWZfYXR0ciIsInVzZXJfYXR0ciIsImVxIiwicCIsImwiLCJwMCIsImwwIiwiaW5pdF9lbWl0cyIsImFwcGx5IiwiZW1pdHMiLCJhYnNwcmVmaXgwIiwiYXJnczAiLCJsZXQkIiwiYWJzcHJlZml4X3NpZyIsImFic3ByZWZpeF9lbWl0Iiwibm90aWZ5IiwiYWJzcHJlZml4IiwiYXJnc19lbWl0cyIsInJldl9xdWFsaWZpZWRfcGF0aCIsInZpZXciLCJ2YXJfc2lnX29wdCIsImFyZ19zdHIiLCJhcmciLCJhcmdfc2lnIiwiYXJnX2VtaXQiLCJtc2ciLCJxdWFsaWZpZWRfcGF0aCIsInJlc3Rfc2lnIiwicmVzdF9lbWl0IiwiaHRtbCIsInF1YWxpZmllZF9yZXN0IiwicmVuZGVyX2xvb2t1cF9lcnJvciIsImVyciIsImRpc3BhdGNoX3RhYmxlIiwidGFibGUiLCJwYXJlbnQiLCJpbnNlcnQiLCJsb29rdXBfc2lnIiwibG9va3VwX3JvdXRlX3NpZyIsInJlczEiLCJyZXMyIiwiZHN0X3N0cl9wYXRoIiwic3JjX3BhdGgiLCJ1bnN1YiIsIm1hdGNoZWQwIiwiZGlzcGF0Y2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsR0FBQUMsS0FBQUM7QUFBQUEsSUNNSSxVQUVVO0FBQUEsUUFBQUMsSUFGVjtBQUFBLElBQ1k7QUFBQSxHQUNLO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsV0FBQUwsS0FBQU07QUFBQUEsUUFBQUMsUUF1QmI7QUFBQSxJQUFzRDtBQUFBLEdBQXNDO0FBQUE7QUFBQSxJQUFBQyxNRC9CcEc7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFB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QUFBQSxHQWlGb0I7QUFBQSxZQUFBZ0IsU0FBQTFILE9BQUFMLFVBQUFnRCxRQUFBTDtBQUFBQSxJQUdtQixPQUE0Qix3Q0FBNUIsc0JBQTRCO0FBQUE7QUFBQSxHRG5icEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0ODE2OSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvTW91c2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5tb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcblxubGV0IHBvc2l0aW9uX29mX21vdXNlX2V2ZW50IG1fZXYgPSBFdmVudC4ocGFnZV94IG1fZXYsIHBhZ2VfeSBtX2V2KVxuXG5sZXQgcG9zaXRpb24gKCkgPVxuICBsZXQgcyA9IFNpZ25hbC5tYWtlICgwLjAsIDAuMCkgaW5cbiAgV2luZG93LmJpbmQgRXZlbnQubW91c2Vtb3ZlIChmdW4gbV9ldiAtPiBTaWduYWwuZW1pdCAocG9zaXRpb25fb2ZfbW91c2VfZXZlbnQgbV9ldikgcyk7XG4gIHNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwicG9zaXRpb25fb2ZfbW91c2VfZXZlbnQiLCJtX2V2IiwicG9zaXRpb24iLCJwYXJhbSIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLHdCQUFBQztBQUFBQSxRQUFBLElDR3VEO0FBQUEsSUFBYixnREFBVztBQUFBLEdBQWM7QUFBQSxXREhuRTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLFFBQUFDLElDTVU7QUFBQSxJQUNSO0FBQUE7QUFBQTtBQUFBLGVBQUFIO0FBQUFBLFdBQUEsSUFBcUQ7QUFBQSxPQUE4QixvQ0FBRTtBQUFBO0FBQUEsSUFBQztBQUFBLEdBQ3JGO0FBQUEsR0RSSCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ4MjEyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9IdHRwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEZldGNoID0gU3Rkd2ViLkZldGNoXG5tb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYi5Qcm9taXNlXG5cbnR5cGUgZXJyb3IgPVxuICB8IEZldGNoX2Vycm9yIG9mIEp4LnRcbiAgfCBVbnN1Y2Nlc3NmdWwgb2YgU3Rkd2ViLkZldGNoLlJlc3BvbnNlLnRcbiAgfCBEZWNvZGluZ19lcnJvciBvZiBleG5cbiAgfCBIYW5kbGluZ19lcnJvciBvZiBleG5cblxubGV0IHN0cmluZ19vZl9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgRmV0Y2hfZXJyb3IgXyAtPiBcIkZldGNoIGVycm9yXCJcbiAgfCBVbnN1Y2Nlc3NmdWwgcmVzcCAtPlxuICAgIFwiVW5zdWNjZXNzZnVsIHJlc3BvbnNlOiBcIiBeIHN0cmluZ19vZl9pbnQgKFN0ZHdlYi5GZXRjaC5SZXNwb25zZS5zdGF0dXMgcmVzcClcbiAgfCBEZWNvZGluZ19lcnJvciBfIC0+IFwiRGVjb2RpbmcgZmFpbGVkXCJcbiAgfCBIYW5kbGluZ19lcnJvciBfIC0+IFwiQ291bGQgbm90IGhhbmRsZSBmZXRjaGVkIHBheWxvYWRcIlxuXG50eXBlIG5vbnJlYyAnYSByZXN1bHQgPSAoJ2EsIGVycm9yKSByZXN1bHRcbnR5cGUgYm9keSA9IFN0ZHdlYi5GZXRjaC5Cb2R5LnRcblxubW9kdWxlIEVuY29kZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gc3RyaW5nIG9wdGlvbiAqICgnYSAtPiBGZXRjaC5Cb2R5LnQpXG5cbiAgbGV0IG1ha2UgPyhjb250ZW50X3R5cGUpIGYgPSBjb250ZW50X3R5cGUsIGZcblxuICBsZXQgdG9fdW5kZWZpbmVkX2JvZHkgXyA9IEZldGNoLkJvZHkudW5zYWZlX29mX2pzIEp4LnVuZGVmaW5lZFxuICBsZXQgZW1wdHkgPSAoTm9uZSwgdG9fdW5kZWZpbmVkX2JvZHkpXG4gIGxldCBpZ25vcmUgPSAoTm9uZSwgdG9fdW5kZWZpbmVkX2JvZHkpXG4gIGxldCB0ZXh0ID0gKE5vbmUsIEZldGNoLkJvZHkub2Zfc3RyaW5nKVxuICBsZXQgZm9ybV9kYXRhID0gKE5vbmUsIEZldGNoLkJvZHkub2ZfZm9ybV9kYXRhKVxuXG4gIGxldCBhc3NvY190b19mb3JtX3VybGVuY29kZWRfYm9keSBhc3NvYyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBTdHJpbmcuY29uY2F0IFwiJlwiXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIChrLCB2KSAtPlxuICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgXCI9XCJcbiAgICAgICAgICAgICAgIFsgU3Rkd2ViLmVuY29kZV91cmlfY29tcG9uZW50IGs7IFN0ZHdlYi5lbmNvZGVfdXJpX2NvbXBvbmVudCB2IF1cbiAgICAgICAgICAgKVxuICAgICAgICAgICBhc3NvY1xuICAgICAgICApXG4gICAgaW5cbiAgICBGZXRjaC5Cb2R5Lm9mX3N0cmluZyBzdHJpbmdcblxuICBsZXQgZm9ybV91cmxlbmNvZGVkID1cbiAgICAoIFNvbWUgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcbiAgICAgIGFzc29jX3RvX2Zvcm1fdXJsZW5jb2RlZF9ib2R5XG4gICAgKVxuXG4gIGxldCBqc29uX3RvX2JvZHkganNvbiA9XG4gICAgbGV0IHRleHQgPSBTdGR3ZWIuSnNvbi5zdHJpbmdpZnkganNvbiBpblxuICAgIEZldGNoLkJvZHkub2Zfc3RyaW5nIHRleHRcblxuICBsZXQganNvbiA9IChTb21lIFwiYXBwbGljYXRpb24vanNvblwiLCBqc29uX3RvX2JvZHkpXG5cbiAgbGV0IG1hcF9qc29uIGVuY29kZV9qc29uID1cbiAgICAoU29tZSBcImFwcGxpY2F0aW9uL2pzb25cIiwgZnVuIHggLT4ganNvbl90b19ib2R5IChlbmNvZGVfanNvbiB4KSlcbmVuZFxuXG5tb2R1bGUgRGVjb2RlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBGZXRjaC5SZXNwb25zZS50IC0+ICdhIFByb21pc2UudFxuXG4gIGxldCBpZ25vcmUgX3JlcyA9IFByb21pc2UucmVzb2x2ZSAoKVxuICBsZXQgdGV4dCA9IEZldGNoLlJlc3BvbnNlLnRleHRcbiAgbGV0IGpzb24gPSBGZXRjaC5SZXNwb25zZS5qc29uXG5cbiAgbGV0IG1hcCBmIHQgcmVzcG9uc2UgPVxuICAgIHQgcmVzcG9uc2VcbiAgICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4geCAtPlxuICAgICAgICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICAgICB8IE9rIHggLT4gUHJvbWlzZS5yZXNvbHZlIHhcbiAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gUHJvbWlzZS5yZWplY3QgZXJyXG4gICAgICAgKVxuXG4gIGxldCBtYXBfanNvbiBmID0gbWFwIGYganNvblxuZW5kXG5cbigqIEZJWE1FOiBwcmV2ZW50IHNpZ25hbCBoYW5kbGVyIGVycm9ycyBmcm9tIGJlaW5nIGNhdWdodCAqKVxubGV0IHJlcXVlc3QgP21ldGggPyhoZWFkZXJzID0gW10pID9tb2RlID9jcmVkZW50aWFsc1xuICAgIH5lbmNvZGU6KGNvbnRlbnRfdHlwZSwgdG9fYm9keSkgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWUgPVxuICBsZXQgaGVhZGVycyA9XG4gICAgbWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgICB8IFNvbWUgY29udGVudF90eXBlIC0+IChcIkNvbnRlbnQtVHlwZVwiLCBjb250ZW50X3R5cGUpIDo6IGhlYWRlcnNcbiAgICB8IE5vbmUgLT4gaGVhZGVyc1xuICBpblxuICBsZXQgYm9keSA9IHRvX2JvZHkgcmVxdWVzdF92YWx1ZSBpblxuICBsZXQgcyA9IFNpZ25hbC5tYWtlIE5vbmUgaW5cbiAgRmV0Y2guZmV0Y2ggfmJvZHkgP21ldGggfmhlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIHVybFxuICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4gcmVzcG9uc2UgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIGlmIEZldGNoLlJlc3BvbnNlLm9rIHJlc3BvbnNlIHRoZW5cbiAgICAgICAgICAgICBkZWNvZGUgcmVzcG9uc2VcbiAgICAgICAgICAgICB8PiBQcm9taXNlLmFuZF90aGVuIChmdW4gdGV4dCAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHRyeSBTaWduYWwuZW1pdCAoU29tZSAoT2sgdGV4dCkpIHNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChIYW5kbGluZ19lcnJvciBleG4pKSkgc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUgKClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgfD4gUHJvbWlzZS5jYXRjaCAoZnVuIGVyciAtPlxuICAgICAgICAgICAgICAgICAgICBTaWduYWwuZW1pdCAoU29tZSAoRXJyb3IgKERlY29kaW5nX2Vycm9yIGVycikpKSBzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGV0IGVyciA9IEVycm9yIChVbnN1Y2Nlc3NmdWwgcmVzcG9uc2UpIGluXG4gICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgZXJyKSBzXG4gICAgICAgICBpblxuICAgICAgICAgUHJvbWlzZS5yZXNvbHZlICgpXG4gICAgIClcbiAgfD4gUHJvbWlzZS5jYXRjaCAoZnVuIGVyciAtPiBTaWduYWwuZW1pdCAoU29tZSAoRXJyb3IgKEZldGNoX2Vycm9yIGVycikpKSBzKTtcbiAgc1xuXG5sZXQgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlIH51cmwgKCkgPVxuICByZXF1ZXN0IH5tZXRoOmBHZXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6RW5jb2Rlci5pZ25vcmUgfmRlY29kZVxuICAgIH51cmwgKClcblxubGV0IHB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YFB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmxcbiAgICByZXF1ZXN0X3ZhbHVlXG5cbmxldCBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgcmVxdWVzdCB+bWV0aDpgUG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmxcbiAgICByZXF1ZXN0X3ZhbHVlXG5cbmxldCBkZWxldGUgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgcmVxdWVzdCB+bWV0aDpgRGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOkVuY29kZXIuaWdub3JlXG4gICAgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWVcblxubW9kdWxlIEpzb24gPSBzdHJ1Y3RcbiAgbGV0IHJlcXVlc3QgP21ldGggP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSA9XG4gICAgcmVxdWVzdCA/bWV0aCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTooRW5jb2Rlci5tYXBfanNvbiBlbmNvZGUpXG4gICAgICB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlID1cbiAgICBnZXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBwdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSA9XG4gICAgcHV0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOihFbmNvZGVyLm1hcF9qc29uIGVuY29kZSlcbiAgICAgIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHBvc3QgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6KEVuY29kZXIubWFwX2pzb24gZW5jb2RlKVxuICAgICAgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5cbiAgbGV0IGRlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSA9XG4gICAgZGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNiIsImEzIiwiYTQiLCJhNSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwiU3RkbGliX1N0cmluZyIsIlN0ZGxpYl9MaXN0IiwiSngiLCJTdGRsaWIiLCJzdHJpbmdfb2ZfZXJyb3IiLCJwYXJhbSIsInJlc3AiLCJtYWtlIiwiY29udGVudF90eXBlIiwidG9fdW5kZWZpbmVkX2JvZHkiLCJ0ZXh0IiwiZm9ybV9kYXRhIiwiYXNzb2NfdG9fZm9ybV91cmxlbmNvZGVkX2JvZHkiLCJhc3NvYyIsInYiLCJrIiwic3RyaW5nIiwianNvbl90b19ib2R5IiwianNvbiIsImNzdF9hcHBsaWNhdGlvbl9qc29uIiwibWFwX2pzb24iLCJlbmNvZGVfanNvbiIsIngiLCJpZ25vcmUiLCJyZXMiLCJtYXAiLCJ0IiwicmVzcG9uc2UiLCJtYXRjaCIsImVyciIsInJlcXVlc3QiLCJtZXRoIiwib3B0IiwibW9kZSIsImNyZWRlbnRpYWxzIiwiZGVjb2RlIiwidXJsIiwicmVxdWVzdF92YWx1ZSIsImhlYWRlcnMiLCJ0b19ib2R5IiwiYm9keSIsInMiLCJleG4iLCJnZXQiLCJwdXQiLCJlbmNvZGUiLCJwb3N0IiwiZGVsZXRlJCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUMsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEs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LE1BQUFDLGFBQUFDO0FBQUFBLFFBQUFBLFdBR1E7QUFBQSxJQUF5QixnQkFBQUMsS0FBQUM7QUFBQUEsS0FwQnRFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSw4QkFvQnNFO0FBQUE7QUFBQSxHRGhKeEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0ODQ5NywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvSGlzdG9yeS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBXaW5kb3cgPSBTdGR3ZWIuRG9tLldpbmRvd1xuICBtb2R1bGUgTG9jYXRpb24gPSBTdGR3ZWIuRG9tLkxvY2F0aW9uXG4gIG1vZHVsZSBFdmVudCA9IFN0ZHdlYi5Eb20uRXZlbnRcbmVuZFxuXG4oKiBUT0RPOiBtYWtlIHRoZXNlIHNpZ25hbHMgbGF6eS4gKilcblxubGV0IGxvY2F0aW9uID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSBXaW5kb3cubG9jYXRpb24gaW5cbiAgV2luZG93LmJpbmQgRXZlbnQucG9wc3RhdGUgKGZ1biBfIC0+IFNpZ25hbC5lbWl0IFdpbmRvdy5sb2NhdGlvbiBzKTtcbiAgc1xuXG5sZXQgaGFzaCA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgKExvY2F0aW9uLmhhc2ggV2luZG93LmxvY2F0aW9uKSBpblxuICBXaW5kb3cuYmluZCBFdmVudC5oYXNoY2hhbmdlIChmdW4gXyAtPlxuICAgICAgbGV0IGhhc2ggPSBMb2NhdGlvbi5oYXNoIFdpbmRvdy5sb2NhdGlvbiBpblxuICAgICAgU2lnbmFsLmVtaXQgaGFzaCBzXG4gICk7XG4gIHNcblxubGV0IGhhc2hfdG9fcGF0aCBzdHIgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciAnLycgc3RyIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgXCIjXCIgOjogdGwgLT4gdGxcbiAgfCBfIDo6IF8gLT4gaW52YWxpZF9hcmcgc3RyXG5cbmxldCBoYXNoX3BhdGggPSBTaWduYWwubWFwIGhhc2hfdG9fcGF0aCBoYXNoXG5sZXQgZ28gaHJlZiA9IExvY2F0aW9uLnNldF9ocmVmIFdpbmRvdy5sb2NhdGlvbiBocmVmXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZHdlYiIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWIiLCJTaWduYWwiLCJsb2NhdGlvbiIsInBhcmFtIiwiaGFzaCIsImhhc2hfdG9fcGF0aCIsInN0ciIsIm1hdGNoIiwidGwiLCJoYXNoX3BhdGgiLCJnbyIsImhyZWYiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFdDU1U7QUFBQSxHQUNSO0FBQUE7QUFBQTtBQUFBLGNBQUFDO0FBQUFBLE1BQXFDLDBEQUE2QjtBQUFBO0FBQUE7QUFBQSxRQUk5QztBQUFBLElBQUFDLE9BQVo7QUFBQSxHQUNSO0FBQUE7QUFBQTtBQUFBLGNBQUFEO0FBQUFBLFVBQUFDLFNBQ2U7QUFBQSxNQUNYLDRDQUFrQjtBQUFBO0FBQUEsWUFBQUMsYUFBQUM7QUFBQUEsUUFBQUMsUUFLaEI7QUFBQSxJQUE0QixZQUMxQjtBQUFBLFFBQUFBLFVBRDBCO0FBQUE7QUFBQSw2QkFBQUMsS0FBQSxVQUduQjtBQUFBO0FBQUEsd0JBREg7QUFBQSxJQUVBLGdDQUFlO0FBQUE7QUFBQSxPQUFBQyxZQUViO0FBQUEsWUFBQUMsR0FBQUM7QUFBQUEsSUFDRiwyREFBc0M7QUFBQTtBQUFBLEdBRFI7QUFBQTtBQUFBO0FBQUEsRUQ1QjVDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDg1NTcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L0hlbGl4Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSBodG1sID0gSHRtbC5odG1sXG50eXBlIGF0dHIgPSBIdG1sLmF0dHJcbnR5cGUgJ2Egc2lnbmFsID0gJ2EgU2lnbmFsLnRcblxubGV0IHNpZ25hbCA9IFNpZ25hbC5tYWtlXG5cbm1vZHVsZSBIdG1sID0gSHRtbFxubW9kdWxlIFRpbWUgPSBUaW1lXG5tb2R1bGUgTW91c2UgPSBNb3VzZVxubW9kdWxlIEhpc3RvcnkgPSBIaXN0b3J5XG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBSb3V0ZXIgPSBSb3V0ZXJcbmluY2x1ZGUgVmlld1xuXG5sZXQgZW5hYmxlX2RlYnVnID0gVmlldy5lbmFibGVfZGVidWdcbmxldCAoIGxldCQgKSBzIGYgPSBzaG93IGYgc1xubGV0ICggYW5kJCApID0gU2lnbmFsLnBhaXJcbmxldCAoIGxldEAgKSBzIGYgPSBiaW5kIGYgc1xubGV0ICggYW5kQCApID0gU2lnbmFsLnBhaXJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX2RhdGEiLCJTaWduYWwiLCJIZWxpeF9WaWV3IiwiSGVsaXhfUm91dGVyIiwiSGVsaXhfSGlzdG9yeSIsIkhlbGl4X0h0dHAiLCJIZWxpeF9UaW1lIiwiSGVsaXhfTW91c2UiLCJzaWduYWwiLCJzaG93Iiwic2hvd19zb21lIiwic2hvd19vayIsImNvbmRpdGlvbmFsIiwiZWFjaCIsImJpbmQiLCJiaW5kX3NvbWUiLCJiaW5kX29rIiwidG9nZ2xlIiwidmlzaWJsZSIsImVuYWJsZV9kZWJ1ZyIsImxldCQiLCJzIiwiZiIsImFuZCIsIkhlbGl4Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDZW1CLG9CQUFRO0FBQUEsT0FBQUMsTURmM0I7QUFBQSxZQUFBSCxNQUFBQyxHQUFBQyxHQ2lCbUIsZ0RBQVE7QUFBQTtBQUFBLElBQUFDLFFEakIzQjtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDg2NDQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLm1haW4uZW9ianMvanNvby9kdW5lX19leGVfX01haW4uY21vLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9kZW1vL21haW4ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogb2NhbWwtZ2xvYmUgZGVtbyDigJQgaW50ZXJhY3RpdmUgc2hvd2Nhc2Ugb2YgYWxsIHJlbmRlcmluZyBzdHlsZXMuICopXG5cbm9wZW4gQnJyXG5vcGVuIEhlbGl4XG5vcGVuIEh0bWxcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHNob3dfZG90cyA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBzaG93X2dyaWQgPSBTaWduYWwubWFrZSBmYWxzZVxubGV0IHNob3dfc3RhcnMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19jb3ZlcmFnZSA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBzaG93X29yYml0cyA9IFNpZ25hbC5tYWtlIHRydWVcbmxldCBncmlkX3NwYWNpbmcgPSBTaWduYWwubWFrZSAzMC5cbmxldCBudW1fc2F0cyA9IFNpZ25hbC5tYWtlIDUuXG5cbigqKiBDcmVhdGUgc3ludGhldGljIHNhdGVsbGl0ZXMgYXQgdmFyaW91cyBpbmNsaW5hdGlvbnMuICopXG5sZXQgc2F0ZWxsaXRlc19vZiBuID1cbiAgbGV0IGNvbG9ycyA9IEdsb2JlLkNvbG9yLnBhbGV0dGUgbiBpblxuICBMaXN0Lm1hcGlcbiAgICAoZnVuIGkgY29sb3IgLT5cbiAgICAgIGxldCBmaSA9IEZsb2F0Lm9mX2ludCBpIGluXG4gICAgICBsZXQgaW5jbCA9IDAuMyArLiAoZmkgKi4gMC4yNSkgaW5cbiAgICAgIGxldCByID0gNjc3OC4gaW5cbiAgICAgICgqIGttLCBJU1MtbGlrZSBhbHRpdHVkZSAqKVxuICAgICAgbGV0IHYgPSA3LjY2OSBpblxuICAgICAgKCoga20vcywgY2lyY3VsYXIgdmVsb2NpdHkgKilcbiAgICAgIGxldCBwb3MgPSBLZXBsZXIuVmVjMy52IHIgMC4gMC4gaW5cbiAgICAgIGxldCB2ZWwgPSBLZXBsZXIuVmVjMy52IDAuICh2ICouIGNvcyBpbmNsKSAodiAqLiBzaW4gaW5jbCkgaW5cbiAgICAgIEdsb2JlLlNhdGVsbGl0ZS52IH5wb3MgfnZlbCB+Y29sb3IgKCkpXG4gICAgY29sb3JzXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFVJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCB0b2dnbGUgbGFiZWwgc2lnbmFsID1cbiAgc2hvd1xuICAgIChmdW4gYWN0aXZlIC0+XG4gICAgICBidXR0b25cbiAgICAgICAgW1xuICAgICAgICAgIGNsYXNzX25hbWVcbiAgICAgICAgICAgIChpZiBhY3RpdmUgdGhlblxuICAgICAgICAgICAgICAgXCJweC0zIHB5LTEuNSB0ZXh0LXhzIHJvdW5kZWQgYmctY3lhbi01MDAvMzAgYm9yZGVyIFxcXG4gICAgICAgICAgICAgICAgYm9yZGVyLWN5YW4tNTAwLzYwIHRleHQtY3lhbi0zMDAgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFwicHgtMyBweS0xLjUgdGV4dC14cyByb3VuZGVkIGJnLWdyYXktODAwLzUwIGJvcmRlciBcXFxuICAgICAgICAgICAgICAgIGJvcmRlci1ncmF5LTcwMCB0ZXh0LWdyYXktNTAwIGN1cnNvci1wb2ludGVyIFxcXG4gICAgICAgICAgICAgICAgaG92ZXI6dGV4dC1ncmF5LTMwMCBob3Zlcjpib3JkZXItZ3JheS01MDBcIik7XG4gICAgICAgICAgb25fY2xpY2sgKGZ1biAoKSAtPiBTaWduYWwudXBkYXRlIG5vdCBzaWduYWwpO1xuICAgICAgICBdXG4gICAgICAgIFsgdGV4dCBsYWJlbCBdKVxuICAgIHNpZ25hbFxuXG5sZXQgc2xpZGVyIGxhYmVsIHNpZ25hbCB+bWluIH5tYXggfnN0ZXAgPVxuICBkaXZcbiAgICBbIGNsYXNzX25hbWUgXCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiIF1cbiAgICBbXG4gICAgICBzcGFuIFsgY2xhc3NfbmFtZSBcInRleHQtZ3JheS01MDAgdGV4dC1bMTBweF0gdy0xNlwiIF0gWyB0ZXh0IGxhYmVsIF07XG4gICAgICBpbnB1dFxuICAgICAgICBbXG4gICAgICAgICAgYXR0ciBcInR5cGVcIiBcInJhbmdlXCI7XG4gICAgICAgICAgYXR0ciBcIm1pblwiIChGbXQuc3RyIFwiJS4wZlwiIG1pbik7XG4gICAgICAgICAgYXR0ciBcIm1heFwiIChGbXQuc3RyIFwiJS4wZlwiIG1heCk7XG4gICAgICAgICAgYXR0ciBcInN0ZXBcIiAoRm10LnN0ciBcIiUuMGZcIiBzdGVwKTtcbiAgICAgICAgICBhdHRyIFwidmFsdWVcIiAoRm10LnN0ciBcIiUuMGZcIiAoU2lnbmFsLmdldCBzaWduYWwpKTtcbiAgICAgICAgICBjbGFzc19uYW1lXG4gICAgICAgICAgICBcImZsZXgtMSBoLTEgYXBwZWFyYW5jZS1ub25lIGJnLWdyYXktNzAwIHJvdW5kZWQgY3Vyc29yLXBvaW50ZXIgXFxcbiAgICAgICAgICAgICBhY2NlbnQtY3lhbi00MDBcIjtcbiAgICAgICAgICBvbl9pbnB1dCAoZnVuIHYgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggRmxvYXQub2Zfc3RyaW5nX29wdCB2IHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGYgLT4gU2lnbmFsLmVtaXQgZiBzaWduYWxcbiAgICAgICAgICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICAgICAgXTtcbiAgICAgIHNob3dcbiAgICAgICAgKGZ1biB2IC0+XG4gICAgICAgICAgc3BhblxuICAgICAgICAgICAgWyBjbGFzc19uYW1lIFwidGV4dC1jeWFuLTQwMCB0ZXh0LVsxMHB4XSB3LTggdGV4dC1yaWdodFwiIF1cbiAgICAgICAgICAgIFsgdGV4dCAoRm10LnN0ciBcIiUuMGZcIiB2KSBdKVxuICAgICAgICBzaWduYWw7XG4gICAgXVxuXG5sZXQgdWkgKCkgPVxuICBkaXZcbiAgICBbXG4gICAgICBjbGFzc19uYW1lXG4gICAgICAgIFwicG9pbnRlci1ldmVudHMtYXV0byBmaXhlZCB0b3AtNSBsZWZ0LTUgYmctYmxhY2svODAgYm9yZGVyIFxcXG4gICAgICAgICBib3JkZXItY3lhbi01MDAvMjAgcm91bmRlZC1sZyBiYWNrZHJvcC1ibHVyLW1kIHAtNCB3LTY0IHNwYWNlLXktM1wiO1xuICAgIF1cbiAgICBbXG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwidGV4dC1jeWFuLTQwMCB0ZXh0LWxnIGZvbnQtYm9sZCB0cmFja2luZy1bM3B4XVwiIF1cbiAgICAgICAgWyB0ZXh0IFwiR0xPQkVcIiBdO1xuICAgICAgZGl2XG4gICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtZ3JheS02MDAgdGV4dC1bMTBweF0gdHJhY2tpbmctd2lkZXN0IG1iLTNcIiBdXG4gICAgICAgIFsgdGV4dCBcIlJFTkRFUklORyBERU1PXCIgXTtcbiAgICAgIGRpdlxuICAgICAgICBbIGNsYXNzX25hbWUgXCJ0ZXh0LWdyYXktNTAwIHRleHQtWzEwcHhdIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiIF1cbiAgICAgICAgWyB0ZXh0IFwiTGF5ZXJzXCIgXTtcbiAgICAgIGRpdlxuICAgICAgICBbIGNsYXNzX25hbWUgXCJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IG10LTFcIiBdXG4gICAgICAgIFtcbiAgICAgICAgICB0b2dnbGUgXCJEb3RzXCIgc2hvd19kb3RzO1xuICAgICAgICAgIHRvZ2dsZSBcIkdyaWRcIiBzaG93X2dyaWQ7XG4gICAgICAgICAgdG9nZ2xlIFwiU3RhcnNcIiBzaG93X3N0YXJzO1xuICAgICAgICAgIHRvZ2dsZSBcIkNvdmVyYWdlXCIgc2hvd19jb3ZlcmFnZTtcbiAgICAgICAgICB0b2dnbGUgXCJPcmJpdHNcIiBzaG93X29yYml0cztcbiAgICAgICAgXTtcbiAgICAgIGRpdlxuICAgICAgICBbXG4gICAgICAgICAgY2xhc3NfbmFtZVxuICAgICAgICAgICAgXCJ0ZXh0LWdyYXktNTAwIHRleHQtWzEwcHhdIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBtdC0zIHB0LTMgXFxcbiAgICAgICAgICAgICBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIjtcbiAgICAgICAgXVxuICAgICAgICBbIHRleHQgXCJQYXJhbWV0ZXJzXCIgXTtcbiAgICAgIHNsaWRlciBcIkdyaWRcIiBncmlkX3NwYWNpbmcgfm1pbjoxMC4gfm1heDo5MC4gfnN0ZXA6MTAuO1xuICAgICAgc2xpZGVyIFwiU2F0c1wiIG51bV9zYXRzIH5taW46MS4gfm1heDoyMC4gfnN0ZXA6MS47XG4gICAgXVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBFbnRyeSBwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgKCkgPVxuICBsZXQgZG9jID0gRG9jdW1lbnQub2ZfanYgKEp2LmdldCBKdi5nbG9iYWwgXCJkb2N1bWVudFwiKSBpblxuICBsZXQgY2FudmFzX2VsID1cbiAgICBtYXRjaCBEb2N1bWVudC5maW5kX2VsX2J5X2lkIGRvYyAoSnN0ci5vZl9zdHJpbmcgXCJnbC1jYW52YXNcIikgd2l0aFxuICAgIHwgU29tZSBlbCAtPiBlbFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkNhbnZhcyBub3QgZm91bmRcIlxuICBpblxuICBsZXQgc2NlbmUgPSBHbG9iZV93ZWJnbC5TY2VuZS52IGNhbnZhc19lbCBpblxuICAobWF0Y2ggU3Rkd2ViLkRvbS5Eb2N1bWVudC5nZXRfZWxlbWVudF9ieV9pZCBcInVpXCIgd2l0aFxuICB8IFNvbWUgZWwgLT4gSHRtbC5tb3VudCBlbCAodWkgKCkpXG4gIHwgTm9uZSAtPiAoKSk7XG4gIGxldCBwcmV2X3NwYWNpbmcgPSByZWYgMzAuIGluXG4gIGxldCBwcmV2X24gPSByZWYgMCBpblxuICBsZXQgcmVjIHJlbmRlciBub3cgPVxuICAgIGxldCB0aW1lID0gbm93IC8uIDIwMDAuIGluXG4gICAgbGV0IHNwID0gU2lnbmFsLmdldCBncmlkX3NwYWNpbmcgaW5cbiAgICBpZiBzcCA8PiAhcHJldl9zcGFjaW5nIHRoZW4gYmVnaW5cbiAgICAgIEdsb2JlX3dlYmdsLlNjZW5lLnNldF9ncmlkX3NwYWNpbmcgc2NlbmUgc3A7XG4gICAgICBwcmV2X3NwYWNpbmcgOj0gc3BcbiAgICBlbmQ7XG4gICAgbGV0IG4gPSBGbG9hdC50b19pbnQgKFNpZ25hbC5nZXQgbnVtX3NhdHMpIGluXG4gICAgaWYgbiA8PiAhcHJldl9uIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzYXRzID0gc2F0ZWxsaXRlc19vZiBuIGluXG4gICAgICBHbG9iZV93ZWJnbC5TY2VuZS5zZXRfc2F0ZWxsaXRlcyBzY2VuZSBzYXRzO1xuICAgICAgcHJldl9uIDo9IG5cbiAgICBlbmQ7XG4gICAgKCogQWR2YW5jZSBzaW11bGF0aW9uIHRpbWUgKilcbiAgICBHbG9iZV93ZWJnbC5TY2VuZS51cGRhdGVfdGltZSBzY2VuZSAodGltZSAqLiA2MC4pO1xuICAgIGxldCBoYXNfY292ID0gU2lnbmFsLmdldCBzaG93X2NvdmVyYWdlICYmIFNpZ25hbC5nZXQgc2hvd19vcmJpdHMgaW5cbiAgICBsZXQgZnJhbWUgPSBHbG9iZV93ZWJnbC5TY2VuZS5iZWdpbl9mcmFtZSBzY2VuZSAwLjAxNiBpblxuICAgIEdsb2JlX3dlYmdsLlNjZW5lLmRyYXcgc2NlbmUgZnJhbWVcbiAgICAgIHtcbiAgICAgICAgR2xvYmVfd2ViZ2wuU2NlbmUuZGVmYXVsdF9sYXllcnMgd2l0aFxuICAgICAgICBzaG93X3N0YXJzID0gU2lnbmFsLmdldCBzaG93X3N0YXJzO1xuICAgICAgICBzaG93X2VhcnRoID0gU2lnbmFsLmdldCBzaG93X2RvdHM7XG4gICAgICAgIHNob3dfZ3JpZCA9IFNpZ25hbC5nZXQgc2hvd19ncmlkO1xuICAgICAgICBzaG93X29yYml0cyA9IFNpZ25hbC5nZXQgc2hvd19vcmJpdHM7XG4gICAgICAgIHNob3dfY292ZXJhZ2UgPSBTaWduYWwuZ2V0IHNob3dfY292ZXJhZ2U7XG4gICAgICAgIGVhcnRoX2RpbSA9IChpZiBoYXNfY292IHRoZW4gMC4yIGVsc2UgMS4wKTtcbiAgICAgIH07XG4gICAgaWdub3JlIChHLnJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIHJlbmRlcilcbiAgaW5cbiAgaWdub3JlIChHLnJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIHJlbmRlcilcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiR2xvYmVfd2ViZ2xfU2NlbmUiLCJCcnIiLCJIdG1sIiwiU3RkbGliX0Zsb2F0IiwiRm10IiwiSGVsaXgiLCJLZXBsZXJfVmVjMyIsIkdsb2JlX1NhdGVsbGl0ZSIsIkdsb2JlX0NvbG9yIiwiU3RkbGliX0xpc3QiLCJKdiIsIlN0ZGxpYiIsIlN0ZHdlYiIsInNob3dfZG90cyIsInNob3dfZ3JpZCIsInNob3dfc3RhcnMiLCJzaG93X2NvdmVyYWdlIiwic2hvd19vcmJpdHMiLCJncmlkX3NwYWNpbmciLCJudW1fc2F0cyIsInRvZ2dsZSIsImxhYmVsIiwic2lnbmFsIiwiYWN0aXZlIiwicGFyYW0iLCJjc3RfMGYiLCJzbGlkZXIiLCJtaW4iLCJtYXgiLCJzdGVwIiwidiIsIm1hdGNoIiwiZG9jIiwiZWwiLCJjYW52YXNfZWwiLCJzY2VuZSIsImNzdF9HcmlkIiwicHJldl9zcGFjaW5nIiwicHJldl9uIiwicmVuZGVyIiwibm93IiwidGltZSIsInNwIiwibiIsImNvbG9ycyIsInNhdHMiLCJpIiwiY29sb3IiLCJmaSIsImluY2wiLCJwb3MiLCJ2ZWwiLCJoYXNfY292IiwiZnJhbWUiLCJpbml0Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFlDZWdCO0FBQUEsSUFBQUMsWUFDQTtBQUFBLElBQUFDLGFBQ0M7QUFBQSxJQUFBQyxnQkFDRztBQUFBLElBQUFDLGNBQ0Y7QUFBQSxJQUFBQyxlQUNDO0FBQUEsSUFBQUMsV0FDSjtBQUFBLFlBQUFDLE9BQUFDLE9BQUFDO0FBQUFBLElBdUJiO0FBQUE7QUFBQTtBQUFBLHNCQUFBQztBQUFBQTtBQUFBQSxlQUFBLElBY1E7QUFBQSxtQkFGNkMsbUJBRTdDO0FBQUE7QUFBQSxpQkFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDZCQUFBQztBQUFBQSxxQkFBb0I7QUFBQSxtRER4RDlCLHVCQ3dEc0Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBQztBQUFBO0FBQUE7QUFBQSxtQkFSN0M7QUFBQSxjQU9pRCxnQ0FHckM7QUFBQTtBQUFBLG9CQUNaO0FBQUE7QUFBQTtBQUFBLElBQUFDLFNEM0RWO0FBQUEsUUNxQjZCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxPQUFBTCxPQUFBQyxRQUFBSyxLQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBO0FBQUEsT0E0RHZCO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQUFDO0FBQUFBO0FBQUFBLFlBQUEsSUFJYTtBQUFBLGdCQUFMO0FBQUE7QUFBQSxjQURBO0FBQUE7QUFBQTtBQUFBLFdBQXFEO0FBQUEsZ0RBQ3JELHdCQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FUN0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBQUE7QUFBQUEsZUFBQUMsUUFDVTtBQUFBLFdBQXFCLFlBRWpCO0FBQUEsZUFBQXJDLElBRmlCO0FBQUEsV0FDZix5Q0FDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BTmhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUQ2QjtBQUFBLFNBQWhCO0FBQUEsU0FBYjtBQUFBLFNBRFk7QUFBQSxTQUFaO0FBQUEsU0FEVztBQUFBLFNBQVg7QUFBQSxTQURXO0FBQUEsU0FBWDtBQUFBLFNBREE7QUFBQTtBQUFBLE9BRko7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFFSTtBQUFBO0FBQUEsMkJBQ0E7QUFBQTtBQUFBLDRCQUNBO0FBQUE7QUFBQSw2QkFDQTtBQUFBLGlDQUNBO0FBQUE7QUFBQSxTQVBtRDtBQUFBLFNBQWhEO0FBQUE7QUFBQSxPQUFQO0FBQUE7QUFBQSxzQ0FBdUQ7QUFBQTtBQUFBLFNBRnZEO0FBQUEsSUFBb0MsZ0NBd0JyQztBQUFBO0FBQUE7QUFBQSxJQUFBc0MsTUE0Q3NCO0FBQUEsSUFBQUQsUUFFakI7QUFBQSxHQUF1RDtBQUFBLFFBQUFFLEtBQUEsVUFBQUMsWUFDaEQ7QUFBQTtBQUFBLFFBQUFBLFlBQ0g7QUFBQTtBQUFBLElBQUFDLFFBRUE7QUFBQSxJQUFBSixVQUNMO0FBQUEsR0FBMEM7QUFBQTtBQUFBLEtBQUFFLE9BQUE7QUFBQSxTQWY3QztBQUFBLEtBQUFHLFdEM0hOO0FBQUEsU0MwSE07QUFBQSxTQURJO0FBQUE7QUFBQSxPQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BRko7QUFBQTtBQUFBLHNDQU1JO0FBQUE7QUFBQSxTQVJBO0FBQUEsU0FEQTtBQUFBLFNBREE7QUFBQSxTQURBO0FBQUEsU0FEQTtBQUFBLFNBRkE7QUFBQSxTQURKO0FBQUEsU0FESTtBQUFBO0FBQUEsT0FEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FESjtBQUFBO0FBQUEsc0NBRUk7QUFBQTtBQUFBLFNBSEE7QUFBQTtBQUFBLE9BREE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQURKO0FBQUE7QUFBQSxzQ0FFSTtBQUFBO0FBQUEsU0FIQTtBQUFBO0FBQUEsT0FEQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BREo7QUFBQTtBQUFBLHNDQUVJO0FBQUE7QUFBQTtBQUFBLE9BUEo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBRXFFO0FBQUEsSUE2QzVEO0FBQUE7QUFBQSxPQUFBQyxlQUViLFVBQUFDLFNBQ0E7QUFBQSxZQUFBQyxPQUFBQztBQUFBQSxRQUFBQyxPQUVhLGFBQUFDLEtBQ0Y7QUFBQSxJQUNUO0FBQUEsS0FDRTtBQUFBLEtBQTJDO0FBQUE7QUFBQSxRQUFBQyxJQUd4QjtBQUFBLElBQ3JCO0FBQUE7QUFBQSxNQUFBQyxTQTlIVztBQUFBLE1BQUFDO0FBQUFBLFFBQ2I7QUFBQTtBQUFBLG1CQUFBQyxHQUFBQztBQUFBQTtBQUFBQSxZQUFBQyxLQUVhO0FBQUEsWUFBQUMsT0FDRTtBQUFBLFlBQUFDLE1BS0Q7QUFBQSxZQUFBQztBQUFBQSxjQUNBO0FBQUEsa0NBQXVCLHdCQUFnQjtBQUFBLFdBQ2pELDhEQUFxQztBQUFBO0FBQUE7QUFBQSxLQXFIckM7QUFBQSxLQUEyQztBQUFBO0FBQUEsSUFJN0M7QUFBQTtBQUFBLFNBQ2M7QUFBQSxLQUFBQyxVQUF3QixJQUFJO0FBQUEsS0FBQUMsUUFDOUI7QUFBQSxLQUFBQyxPQUF5QztBQUFBLFNBQ3JEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQU9vQjtBQUFBLFNBREY7QUFBQSxTQURGO0FBQUEsU0FEQztBQUFBLFNBREE7QUFBQSxJQUhqQjtBQUFBLElBVU87QUFBQSxJQUFrQztBQUFBO0FBQUEsR0FFcEM7QUFBQSxHQUFrQztBQUFBO0FBQUEsRUQ1SzNDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDg5MTgsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkX2V4aXQuY21vLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWIiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLFNBQUE7QUFBQSxHQ2lCUTtBQUFBLEdBQVk7QUFBQTtBQUFBLEVEakJwQiIsImlnbm9yZUxpc3QiOlswXX19XX0= 48934 + //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5iYy5qcyIsInNlY3Rpb25zIjpbeyJvZmZzZXQiOnsibGluZSI6MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIubWFpbi5lb2Jqcy9qc29vL21haW4uYmMucnVudGltZS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLyttYXJzaGFsLmpzIiwiL2J1aWx0aW4vK2lvLmpzIiwiL2J1aWx0aW4vK3N5cy5qcyIsIi9idWlsdGluLytiYWNrdHJhY2UuanMiLCIvYnVpbHRpbi8rc3RkbGliLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2ZhaWwuanMiLCIvYnVpbHRpbi8rdW5peC5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLytmc19mYWtlLmpzIiwiL2J1aWx0aW4vK2ludDY0LmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2ZzX25vZGUuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK2JsYWtlMi5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW50cy5qcyIsIi9idWlsdGluLytoYXNoLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLytwYXJzaW5nLmpzIiwiL2J1aWx0aW4vK3N0ci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgcmV0dXJuIHMucmVwZWF0KG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbi8vV2Vha2RlZlxuLy8gUHJlIEVDTUFTY3JpcHQgNSwgW2FwcGx5XSB3b3VsZCBub3Qgc3VwcG9ydCBhcnJheS1saWtlIG9iamVjdC5cbi8vIEluIHN1Y2ggc2V0dXAsIFR5cGVkX2FycmF5IHdvdWxkIGJlIGltcGxlbWVudGVkIGFzIHBvbHlmaWxsLCBhbmQgW2YuYXBwbHldIHdvdWxkXG4vLyBmYWlsIGhlcmUuIE1hcmsgdGhlIHByaW1pdGl2ZSBhcyBXZWFrZGVmLCBzbyB0aGF0IHBlb3BsZSBjYW4gb3ZlcnJpZGUgaXQgZWFzaWx5LlxuZnVuY3Rpb24gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9PT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5KG51bGwsIGEpO1xuICB2YXIgcyA9IFwiXCI7XG4gIGZvciAoOyAwIDwgbGVuOyBpICs9IDEwMjQsIGxlbiAtPSAxMDI0KVxuICAgIHMgKz0gZi5hcHBseShudWxsLCBhLnNsaWNlKGksIGkgKyBNYXRoLm1pbihsZW4sIDEwMjQpKSk7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09PSBhLmxlbmd0aCkgcmV0dXJuIGYuYXBwbHkobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCwgbGVuIC09IDEwMjQpXG4gICAgcyArPSBmLmFwcGx5KG51bGwsIGEuc3ViYXJyYXkoaSwgaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgZWxzZSByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICAgIGNhc2UgMCAvKiBCWVRFUyAqLzpcbiAgICAgIHJldHVybiBzLmMuY2hhckNvZGVBdChpKTtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICAgICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICAgIGNhc2UgNCAvKiBBUlJBWSAqLzpcbiAgICAgIHJldHVybiBzLmNbaV07XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKSB7XG4gIC8vIFRoZSBPQ2FtbCBjb21waWxlciB1c2VzIENoYXIudW5zYWZlX2NociBvbiBpbnRlZ2VycyBsYXJnZXIgdGhhbiAyNTUhXG4gIGMgJj0gMHhmZjtcbiAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgICAgIGlmIChpICsgMSA9PT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDEpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSksXG4gICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4KSB8IGIxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSxcbiAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpLFxuICAgIGIzID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCkgfCAoYjMgPDwgMTYpIHwgKGIyIDw8IDgpIHwgYjE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQzMihzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpLFxuICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkgKyAxKSxcbiAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgMiksXG4gICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0KSB8IChiMyA8PCAxNikgfCAoYjIgPDwgOCkgfCBiMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDY0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBhWzcgLSBqXSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0KHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQoX3MsIF9pLCBfYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MTYocywgaSwgaTE2KSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIyID0gMHhmZiAmIChpMTYgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTE2O1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocywgaSwgaTMyKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhmZiAmIChpMzIgPj4gMjQpLFxuICAgIGIzID0gMHhmZiAmIChpMzIgPj4gMTYpLFxuICAgIGIyID0gMHhmZiAmIChpMzIgPj4gOCksXG4gICAgYjEgPSAweGZmICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGkgKyAxLCBiMik7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLCBpLCBpNjQpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczoganNvb190ZXh0X2VuY29kZXJcbnZhciBqc29vX3RleHRfZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2RlclxudmFyIGpzb29fdGV4dF9kZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHtcbiAgICByZXR1cm4gbmV3IE1sQnl0ZXMoOSwgcywgcy5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBhID0ganNvb190ZXh0X2VuY29kZXIuZW5jb2RlKHMpO1xuICAgIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczoganNvb190ZXh0X2RlY29kZXJcbmNsYXNzIE1sQnl0ZXMge1xuICBjb25zdHJ1Y3Rvcih0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgICB0aGlzLnQgPSB0YWc7XG4gICAgdGhpcy5jID0gY29udGVudHM7XG4gICAgdGhpcy5sID0gbGVuZ3RoO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgc3dpdGNoICh0aGlzLnQpIHtcbiAgICAgIGNhc2UgOTogLypCWVRFUyB8IEFTQ0lJKi9cbiAgICAgIGNhc2UgOCAvKkJZVEVTIHwgTk9UX0FTQ0lJKi86XG4gICAgICAgIHJldHVybiB0aGlzLmM7XG4gICAgICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIGNhc2UgMCAvKkJZVEVTIHwgVU5LTk9XTiovOlxuICAgICAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgICBlbHNlIHRoaXMudCA9IDg7IC8qQllURVMgfCBOT1RfQVNDSUkqL1xuICAgICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgfVxuXG4gIHRvVXRmMTYoKSB7XG4gICAgaWYgKHRoaXMudCA9PT0gOSkgcmV0dXJuIHRoaXMuYztcbiAgICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXModGhpcyk7XG4gICAgcmV0dXJuIGpzb29fdGV4dF9kZWNvZGVyLmRlY29kZShhKTtcbiAgfVxuXG4gIHNsaWNlKCkge1xuICAgIHZhciBjb250ZW50ID0gdGhpcy50ID09PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gICAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRoaXMudCwgY29udGVudCwgdGhpcy5sKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09PSAyIC8qIFBBUlRJQUwgKi8pIHMuYyArPSBjYW1sX3N0cl9yZXBlYXQocy5sIC0gcy5jLmxlbmd0aCwgXCJcXDBcIik7XG4gIGVsc2Ugcy5jID0gY2FtbF9zdWJfdWludDhfYXJyYXlfdG9fanNieXRlcyhzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LTk9XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYyxcbiAgICBsID0gYi5sZW5ndGgsXG4gICAgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocykge1xuICBpZiAocy50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbiA/IDIgOiA5LCBcIlwiLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcoX2xlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuID8gMiA6IDksIFwiXCIsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsIDAsIGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGEpIHtcbiAgcmV0dXJuIGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoYSwgMCwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShhLnNsaWNlKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5KGEpIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LCBhLCBhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYSkge1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCwgYSwgYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICBzMS50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgczIudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBzMS5jIDwgczIuYyA/IC0xIDogczEuYyA+IHMyLmMgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZiAoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gczEuYyA9PT0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAxIC0gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gMSAtIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPD0gczIuYyA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHMxLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICBzMi50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIHMxLmMgPCBzMi5jID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsIHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0KGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSBsID09PSBzLmwgPyAwIC8qIEJZVEVTIHwgVU5LTk9XTiAqLyA6IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIGlmIChcbiAgICBpMiA9PT0gMCAmJlxuICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpXG4gICkge1xuICAgIHMyLmMgPVxuICAgICAgczEudCA9PT0gNCAvKiBBUlJBWSAqL1xuICAgICAgICA/IGNhbWxfc3ViX3VpbnQ4X2FycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbilcbiAgICAgICAgOiBpMSA9PT0gMCAmJiBzMS5jLmxlbmd0aCA9PT0gbGVuXG4gICAgICAgICAgPyBzMS5jXG4gICAgICAgICAgOiBzMS5jLnNsaWNlKGkxLCBpMSArIGxlbik7XG4gICAgczIudCA9IHMyLmMubGVuZ3RoID09PSBzMi5sID8gMCAvKiBCWVRFUyB8IFVOS05PV04gKi8gOiAyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz1cbiAgICAgIHMxLnQgPT09IDQgLyogQVJSQVkgKi9cbiAgICAgICAgPyBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pXG4gICAgICAgIDogaTEgPT09IDAgJiYgczEuYy5sZW5ndGggPT09IGxlblxuICAgICAgICAgID8gczEuY1xuICAgICAgICAgIDogczEuYy5zbGljZShpMSwgaTEgKyBsZW4pO1xuICAgIHMyLnQgPSBzMi5jLmxlbmd0aCA9PT0gczIubCA/IDAgLyogQllURVMgfCBVTktOT1dOICovIDogMjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9PSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsXG4gICAgICBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMltpMiArIGldID0gYzFbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzJbaTIgKyBpXSA9IGMxW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4obGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzJbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLCBiLCBjLCBkLCBlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSwgYiwgYywgZCwgZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykge1xuICByZXR1cm4gcy5sO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsIGIpIHtcbiAgcmV0dXJuIGEgKyBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSwgczIpIHtcbiAgczEudCAmIDYgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIHMyLnQgJiA2ICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMoMCwgczEuYyArIHMyLmMsIHMxLmwgKyBzMi5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfY29tcGFyZSBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb21wYXJlKHMxLCBzMikge1xuICByZXR1cm4gczEgPCBzMiA/IC0xIDogczEgPiBzMiA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYgKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gczEgPD0gczIgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBzMSA8IHMyID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh4KSB7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG52YXIganNvb190ZXh0X2RlY29kZXJfYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcigxMDI0KTtcblxuLy9Qcm92aWRlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9kZWNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX3RleHRfZGVjb2Rlcl9idWZmXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBzO1xuICB2YXIgYSA9XG4gICAgcy5sZW5ndGggPD0ganNvb190ZXh0X2RlY29kZXJfYnVmZi5sZW5ndGhcbiAgICAgID8gbmV3IFVpbnQ4QXJyYXkoanNvb190ZXh0X2RlY29kZXJfYnVmZiwgMCwgcy5sZW5ndGgpXG4gICAgICA6IG5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgYVtpXSA9IHMuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4ganNvb190ZXh0X2RlY29kZXIuZGVjb2RlKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGpzb29fdGV4dF9lbmNvZGVyXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpO1xuICB2YXIgYSA9IGpzb29fdGV4dF9lbmNvZGVyLmVuY29kZShzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7XG4gIHJldHVybiBuZXcgTWxCeXRlcygwLCBzLCBzLmxlbmd0aCk7XG59XG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsIGksIGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcy50ICYgNiAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gcy5jO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIHMudG9VdGYxNigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyhzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9pc19tbF9ieXRlcyhzKSB7XG4gIHJldHVybiBzIGluc3RhbmNlb2YgTWxCeXRlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JldHVybnMgYSAoZnVsbCkgc3RyaW5nIG9mIGJ5dGVzIG9yIGFuIGFycmF5XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgICBjYXNlIDIgLyogUEFSVElBTCAqLzpcbiAgICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gICAgICByZXR1cm4gcy5jO1xuICAgIGRlZmF1bHQ6IC8qIEJZVEVTIG9yIEFSUkFZICovXG4gICAgICByZXR1cm4gcy5jO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbnRyb2xDaGFyYWN0ZXJzSW5SZWdleDogZXhwZWN0ZWRcbiAgcmV0dXJuIHR5cGVvZiBzID09PSBcInN0cmluZ1wiICYmICEvW15cXHgwMC1cXHhmZl0vLnRlc3Qocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc2J5dGVzXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RvX2pzX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmddIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vRGVwcmVjYXRlZDogVXNlIFtjYW1sX3N0cmluZ19vZl9qc3N0cmluZ10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXSBpbnN0ZWFkXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7XG4gIHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNdIGluc3RlYWRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkge1xuICByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0RlcHJlY2F0ZWQ6IFVzZSBbY2FtbF9zdHJpbmdfb2ZfanNieXRlc10gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocyk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogMHgyMCxcbiAgQ09ERV9JTlQ4OiAweDAwLFxuICBDT0RFX0lOVDE2OiAweDAxLFxuICBDT0RFX0lOVDMyOiAweDAyLFxuICBDT0RFX0lOVDY0OiAweDAzLFxuICBDT0RFX1NIQVJFRDg6IDB4MDQsXG4gIENPREVfU0hBUkVEMTY6IDB4MDUsXG4gIENPREVfU0hBUkVEMzI6IDB4MDYsXG4gIENPREVfQkxPQ0szMjogMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAweDEzLFxuICBDT0RFX1NUUklORzg6IDB4MDksXG4gIENPREVfU1RSSU5HMzI6IDB4MGEsXG4gIENPREVfRE9VQkxFX0JJRzogMHgwYixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAweDBjLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAweDBkLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAweDBlLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogMHgwZixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6IDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAweDExLFxuICBDT0RFX0NVU1RPTTogMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogMHgxOSxcbn07XG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBVSW50OEFycmF5UmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTtcbiAgfVxuXG4gIHJlYWQ4cygpIHtcbiAgICByZXR1cm4gKHRoaXMuc1t0aGlzLmkrK10gPDwgMjQpID4+IDI0O1xuICB9XG5cbiAgcmVhZDE2dSgpIHtcbiAgICB2YXIgcyA9IHRoaXMucyxcbiAgICAgIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV07XG4gIH1cblxuICByZWFkMTZzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSArIDFdIDw8IDE2KSB8IChzW2kgKyAyXSA8PCA4KSB8IHNbaSArIDNdKSA+Pj4gMDtcbiAgfVxuXG4gIHJlYWQzMnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpICsgMV0gPDwgMTYpIHwgKHNbaSArIDJdIDw8IDgpIHwgc1tpICsgM107XG4gIH1cblxuICByZWFkc3RyKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogSnNTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmNsYXNzIEpzU3RyaW5nUmVhZGVyIHtcbiAgY29uc3RydWN0b3IocywgaSkge1xuICAgIHRoaXMucyA9IHM7XG4gICAgdGhpcy5pID0gaTtcbiAgfVxuXG4gIHJlYWQ4dSgpIHtcbiAgICByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspO1xuICB9XG5cbiAgcmVhZDhzKCkge1xuICAgIHJldHVybiAodGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0KSA+PiAyNDtcbiAgfVxuXG4gIHJlYWQxNnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQxNnMoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfVxuXG4gIHJlYWQzMnUoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsXG4gICAgICBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoXG4gICAgICAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAxKSA8PCAxNikgfFxuICAgICAgICAocy5jaGFyQ29kZUF0KGkgKyAyKSA8PCA4KSB8XG4gICAgICAgIHMuY2hhckNvZGVBdChpICsgMykpID4+PlxuICAgICAgMFxuICAgICk7XG4gIH1cblxuICByZWFkMzJzKCkge1xuICAgIHZhciBzID0gdGhpcy5zLFxuICAgICAgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKFxuICAgICAgKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDgpIHxcbiAgICAgIHMuY2hhckNvZGVBdChpICsgMylcbiAgICApO1xuICB9XG5cbiAgcmVhZHN0cihsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zbGljZShpLCBpICsgbGVuKSk7XG4gIH1cblxuICByZWFkdWludDhhcnJheShsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IEpzU3RyaW5nUmVhZGVyLCBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLCBvZnMpIHtcbiAgdmFyIGMgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQocyk7XG4gIHZhciBvZnMgPSB0eXBlb2Ygb2ZzID09PSBcIm51bWJlclwiID8gb2ZzIDogb2ZzWzBdO1xuICB2YXIgcmVhZGVyID1cbiAgICBjIGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBuZXcgVUludDhBcnJheVJlYWRlcihjLCBvZnMpXG4gICAgICA6IG5ldyBKc1N0cmluZ1JlYWRlcihjLCBvZnMpO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKSB7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4O1xuICBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpIHtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1KCkpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzaXplWzBdID0gNDtcbiAgICAgIHJldHVybiByZWFkZXIucmVhZDMycygpO1xuICAgIGNhc2UgMjpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPSB7XG4gIF9qOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgIHNlcmlhbGl6ZTogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgIGZpeGVkX2xlbmd0aDogOCxcbiAgICBjb21wYXJlOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgaGFzaDogY2FtbF9pbnQ2NF9oYXNoLFxuICB9LFxuICBfaToge1xuICAgIGRlc2VyaWFsaXplOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9uOiB7XG4gICAgZGVzZXJpYWxpemU6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICBmaXhlZF9sZW5ndGg6IDQsXG4gIH0sXG4gIF9iaWdhcnJheToge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyYXlcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG4gIF9iaWdhcnIwMjoge1xuICAgIGRlc2VyaWFsaXplOiBmdW5jdGlvbiAocmVhZGVyLCBzeikge1xuICAgICAgcmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgXCJfYmlnYXJyMDJcIik7XG4gICAgfSxcbiAgICBzZXJpYWxpemU6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgIGNvbXBhcmU6IGNhbWxfYmFfY29tcGFyZSxcbiAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gIH0sXG59O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX3NldF9vb19pZFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdmKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgc3dpdGNoIChtYWdpYykge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmQgLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNmO1xuICAgICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgICAgaWYgKG92ZXJmbG93WzBdKSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIsXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaWYgKGhlYWRlcl9sZW4gIT09IHJlYWRlci5pIC0gb2xkX3Bvcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBpbnZhbGlkIGhlYWRlclwiKTtcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIG9iamVjdHMgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSBudW1fb2JqZWN0cyA+IDAgPyBbXSA6IG51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweGY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2UgcmV0dXJuIGNvZGUgJiAweDNmO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFmO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzKCk7XG4gICAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzKCk7XG4gICAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIGlmIChjb21wcmVzc2VkID09PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICAgICAgICBpZiAoY29tcHJlc3NlZCA9PT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgaWYgKGNvbXByZXNzZWQgPT09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4ZmY7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgICBpZiAoc2l6ZSA9PT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBpZiAodGFnID09PSAyNDgpIG9iamVjdHMucHVzaCh2KTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyKGxlbik7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIobGVuKTtcbiAgICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgIGNhc2UgMHgwYzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MGU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBkOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgY2FzZSAweDBmOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXModCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgICAgdmFyIGMsXG4gICAgICAgICAgICAgIHMgPSBcIlwiO1xuICAgICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSgpKSAhPT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgICAgaWYgKCFvcHMpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgICAgICBpZiAoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICAgICAgICBcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICAgIGlmIChleHBlY3RlZF9zaXplICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkX3NpemUgIT09IHNpemVbMF0pXG4gICAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgICAgICAgIFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb21wcmVzc2VkKSB7XG4gICAgaWYgKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjKHJlYWRlcik7XG4gIH1cbiAgd2hpbGUgKG9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgIHZhciB4ID0gb2JqZWN0cy5wb3AoKTtcbiAgICBpZiAoeFsyXSA+PSAwKSBjYW1sX3NldF9vb19pZCh4KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNjtcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZShzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N2Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT09IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT09IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Zik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoIChyLnJlYWQzMnUoKSkge1xuICAgIGNhc2UgMHg4NDk1YTZiZSAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovOlxuICAgICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAweDg0OTVhNmJkIC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqLzpcbiAgICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M2Y7XG4gICAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgICBpZiAob3ZlcmZsb3dbMF0pIHtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDB4ODQ5NWE2YmYgLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi86XG4gICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICBcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiLFxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG5jbGFzcyBNbE9iamVjdFRhYmxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5vYmpzID0gW107XG4gICAgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfVxuXG4gIHN0b3JlKHYpIHtcbiAgICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gICAgdGhpcy5vYmpzLnB1c2godik7XG4gIH1cblxuICByZWNhbGwodikge1xuICAgIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICAgIHJldHVybiBpID09PSB1bmRlZmluZWRcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IChmdW5jdGlvbiAoKSB7XG4gIGNsYXNzIFdyaXRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aGlzLmNodW5rID0gW107XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDIwO1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSAwO1xuICAgICAgdGhpcy5vYmpfY291bnRlciA9IDA7XG4gICAgICB0aGlzLnNpemVfMzIgPSAwO1xuICAgICAgdGhpcy5zaXplXzY0ID0gMDtcbiAgICB9XG5cbiAgICB3cml0ZShzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4OyBpID49IDA7IGkgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4ZmY7XG4gICAgfVxuXG4gICAgd3JpdGVfYXQocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhmZjtcbiAgICB9XG5cbiAgICB3cml0ZV9jb2RlKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODsgaSA+PSAwOyBpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweGZmO1xuICAgIH1cblxuICAgIHdyaXRlX3NoYXJlZChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAxIDw8IDgpXG4gICAgICAgIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgMSA8PCAxNilcbiAgICAgICAgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBwb3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaHVua19pZHg7XG4gICAgfVxuXG4gICAgZmluYWxpemUoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlKDMyLCAweDg0OTVhNmJlKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSxcbiAgICAgIGNsb3N1cmVzID0gZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTE7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIixcbiAgICAgICk7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlcigpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkge1xuICAgICAgICB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWModikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwgMF07XG4gICAgICAgIGlmICghb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPT0gc3pfMzJfNjRbMF0pXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFxuICAgICAgICAgICAgICBcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgdlswXSA9PT0gKHZbMF0gfCAwKSkge1xuICAgICAgICBpZiAodlswXSA9PT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZShcbiAgICAgICAgICAgIDgsXG4gICAgICAgICAgICAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKSA8PCA0KSxcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoXG4gICAgICAgICAgICAzMixcbiAgICAgICAgICAgIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sXG4gICAgICAgICAgICAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXSxcbiAgICAgICAgICApO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2godiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYgKCFjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcbiAgICAgICAgICAgIFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApIHdyaXRlci53cml0ZSg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDkgLypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MGEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMCkgd3JpdGVyLndyaXRlKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwOSAvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZSB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwYSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodiwgaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KSB8IDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KSB8IDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT09ICh2IHwgMCkpIHtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYgKHR5cGVfb2ZfdiAhPT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIiArIHR5cGVfb2ZfdiArIFwiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4MGMgLypjc3QuQ09ERV9ET1VCTEVfTElUVExFKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgdFs3IC0gaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAzO1xuICAgICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDI7XG4gICAgICAgIH0gZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAxIDw8IDcpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8IDEgPDwgMTUpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2Ugd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWModltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheSh3cml0ZXIuY2h1bmspO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXModiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoY2FtbF9vdXRwdXRfdmFsKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlcihzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheSh0KSwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciB4ID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKHgpIHtcbiAgICB4LmZpbGUuY2xvc2UoZmFsc2UpO1xuICAgIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBNbENoYW5pZFxuZnVuY3Rpb24gTWxDaGFuaWQoaWQpIHtcbiAgdGhpcy5pZCA9IGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxDaGFuaWRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSwgaWR4KSB7XG4gIHZhciBjaGFuaWQ7XG4gIGlmIChpZHggPT09IHVuZGVmaW5lZCkge1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gICAgY2hhbmlkID0gbmV3IE1sQ2hhbmlkKGlkeCk7XG4gIH0gZWxzZSBpZiAoY2FtbF9zeXNfZmRzW2lkeF0pIHtcbiAgICBjaGFuaWQgPSBjYW1sX3N5c19mZHNbaWR4XS5jaGFuaWQ7XG4gIH0gZWxzZSBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGYud3JpdGVvbmx5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGYuY3JlYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIGYudHJ1bmNhdGUgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgZi5leGNsID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIGYuYmluYXJ5ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYudGV4dCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vbmJsb2NrID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZsYWdzID0gZmxhZ3NbMl07XG4gIH1cbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgZiwgcGVybXMpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlzX25vZGUgPSBmc19ub2RlX3N1cHBvcnRlZCgpO1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmIChpc19ub2RlKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH0gZWxzZSByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpO1xuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgwLCB7IHJkb25seTogMSwgYWx0bmFtZTogXCIvZGV2L3N0ZGluXCIsIGlzQ2hhcmFjdGVyRGV2aWNlOiB0cnVlIH0pLFxuICAgIDAsXG4gICk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoXG4gICAgZmlsZSgxLCB7IGJ1ZmZlcmVkOiBpc19ub2RlID8gMSA6IDIsIHdyb25seTogMSwgaXNDaGFyYWN0ZXJEZXZpY2U6IHRydWUgfSksXG4gICAgMSxcbiAgKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChcbiAgICBmaWxlKDIsIHsgYnVmZmVyZWQ6IGlzX25vZGUgPyAxIDogMiwgd3Jvbmx5OiAxLCBpc0NoYXJhY3RlckRldmljZTogdHJ1ZSB9KSxcbiAgICAyLFxuICApO1xufSkoKTtcblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogTWxDaGFuaWRcbmNsYXNzIGNhbWxfbWxfY2hhbm5lbHNfc3RhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm1hcCA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKTtcbiAgICB0aGlzLm9wZW5lZCA9IG5ldyBnbG9iYWxUaGlzLlNldCgpO1xuICB9XG5cbiAgY2xvc2UoY2hhbmlkKSB7XG4gICAgdGhpcy5vcGVuZWQuZGVsZXRlKGNoYW5pZCk7XG4gIH1cblxuICBnZXQoY2hhbmlkKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChjaGFuaWQpO1xuICB9XG5cbiAgc2V0KGNoYW5pZCwgdmFsKSB7XG4gICAgaWYgKHZhbC5vcGVuZWQpIHRoaXMub3BlbmVkLmFkZChjaGFuaWQpO1xuICAgIHJldHVybiB0aGlzLm1hcC5zZXQoY2hhbmlkLCB2YWwpO1xuICB9XG5cbiAgYWxsKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5lZC52YWx1ZXMoKTtcbiAgfVxufVxuXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBjYW1sX21sX2NoYW5uZWxzX3N0YXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9nZXQoaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHMuZ2V0KGlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3QoY2FwdHVyZWQsIGludG8pIHtcbiAgdmFyIHRvX3Jlc3RvcmUgPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNhcHR1cmVkKTtcbiAgdmFyIG5ld18gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGludG8pO1xuICBjYW1sX21sX2NoYW5uZWxzLnNldChjYXB0dXJlZCwgbmV3Xyk7XG4gIHJldHVybiB0b19yZXN0b3JlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpIHtcbiAgY2FtbF9tbF9jaGFubmVscy5zZXQoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdCgpIHtcbiAgdmFyIGwgPSAwO1xuICB2YXIga2V5cyA9IGNhbWxfbWxfY2hhbm5lbHMuYWxsKCk7XG4gIGZvciAodmFyIGsgb2Yga2V5cykge1xuICAgIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChrKTtcbiAgICBpZiAoY2hhbi5vcGVuZWQgJiYgY2hhbi5vdXQpIGwgPSBbMCwgaywgbF07XG4gIH1cbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9pb19idWZmZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiICsgZmQgKyBcIiBkb2Vzbid0IGV4aXN0XCIpO1xuICB2YXIgZmlsZSA9IGZkX2Rlc2MuZmlsZTtcbiAgdmFyIGNoYW5pZCA9IGZkX2Rlc2MuY2hhbmlkO1xuICB2YXIgYnVmZmVyZWQgPSBmaWxlLmZsYWdzLmJ1ZmZlcmVkICE9PSB1bmRlZmluZWQgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTogZmlsZSxcbiAgICBvZmZzZXQ6IGZpbGUucG9zKCksXG4gICAgZmQ6IGZkLFxuICAgIG9wZW5lZDogdHJ1ZSxcbiAgICBvdXQ6IHRydWUsXG4gICAgYnVmZmVyX2N1cnI6IDAsXG4gICAgYnVmZmVyOiBuZXcgVWludDhBcnJheShjYW1sX2lvX2J1ZmZlcl9zaXplKSxcbiAgICBidWZmZXJlZDogYnVmZmVyZWQsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCkge1xuICB2YXIgZmRfZGVzYyA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmIChmZF9kZXNjID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIiArIGZkICsgXCIgZG9lc24ndCBleGlzdFwiKTtcbiAgdmFyIGZpbGUgPSBmZF9kZXNjLmZpbGU7XG4gIHZhciBjaGFuaWQgPSBmZF9kZXNjLmNoYW5pZDtcbiAgdmFyIHJlZmlsbCA9IG51bGw7XG4gIHZhciBjaGFubmVsID0ge1xuICAgIGZpbGU6IGZpbGUsXG4gICAgb2Zmc2V0OiBmaWxlLnBvcygpLFxuICAgIGZkOiBmZCxcbiAgICBvcGVuZWQ6IHRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjogMCxcbiAgICBidWZmZXJfbWF4OiAwLFxuICAgIGJ1ZmZlcjogbmV3IFVpbnQ4QXJyYXkoY2FtbF9pb19idWZmZXJfc2l6ZSksXG4gICAgcmVmaWxsOiByZWZpbGwsXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHMuc2V0KGNoYW5pZCwgY2hhbm5lbCk7XG4gIHJldHVybiBjaGFuaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyhmZCwgX2ZsYWdzKSB7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUoY2hhbmlkLCBtb2RlKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlO1xuICBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5ID0gbW9kZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnk7XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9tbF9jaGFubmVscy5jbG9zZShjaGFuaWQpO1xuICAgIGNhbWxfc3lzX2Nsb3NlKGNoYW4uZmQpO1xuICAgIGNoYW4uZmQgPSAtMTtcbiAgICBjaGFuLmJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGgoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsIGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub3V0cHV0ID0gZnVuY3Rpb24gKHMpIHtcbiAgICBmKHMpO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCwgZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yZWZpbGwoY2hhbikge1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkge1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKSB7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsIGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbi5mZCA9PT0gLTEpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQmFkIGZpbGUgZGVzY3JpcHRvclwiKTtcbiAgICB9XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoXG4gICAgICBjaGFuLmJ1ZmZlcixcbiAgICAgIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheShjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYgKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciwgY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH0gZWxzZSBpZiAoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZiAobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsIGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZSAociA8IG4pIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCArIHJdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZiAociA9PT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUoY2FtbF9ieXRlc19vZl91aW50OF9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLCAwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKTtcbiAgaWYgKHIgPCBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgMCk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludChjaGFuaWQpIHtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgcmVzID0gKChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYgKFxuICAgIHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heCAmJlxuICAgIHBvcyA8PSBjaGFuLm9mZnNldCAmJlxuICAgIGNoYW4uZmlsZS5mbGFncy5iaW5hcnlcbiAgKSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCwgcG9zKSB7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3Vycik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZiAocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksIDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtY2hhbi5idWZmZXJfbWF4IHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgaWYgKHByZXZfbWF4ID09PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC1jaGFuLmJ1ZmZlcl9tYXggfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYgKCFjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYgKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09PSAwKSByZXR1cm4gMDtcbiAgaWYgKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoXG4gICAgICBjYW1sX3N1Yl91aW50OF9hcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IGNoYW4uYnVmZmVyX2N1cnI7ICkge1xuICAgICAgcG9zICs9IGNoYW4uZmlsZS53cml0ZShjaGFuLmJ1ZmZlciwgcG9zLCBjaGFuLmJ1ZmZlcl9jdXJyIC0gcG9zLCBmYWxzZSk7XG4gICAgfVxuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmICghY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZiAoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiO1xuICB9XG4gIHN3aXRjaCAoY2hhbi5idWZmZXJlZCkge1xuICAgIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMCk7XG4gICAgICBpZiAoaWQgPCAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aCkgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICAgIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLCBidWZmZXIsIG9mZnNldCwgbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgYnVmZmVyLCBvZmZzZXQsIGxlbikge1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoXG4gICAgY2hhbmlkLFxuICAgIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksXG4gICAgb2Zmc2V0LFxuICAgIGxlbixcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIoY2hhbmlkLCBjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLCBzLCAwLCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUoY2hhbmlkLCB2LCBmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpIHtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5maWxlLnNlZWsocG9zLCAwKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKSB7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLCBwb3MpIHtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50KGNoYW5pZCwgaSkge1xuICB2YXIgYXJyID0gWyhpID4+IDI0KSAmIDB4ZmYsIChpID4+IDE2KSAmIDB4ZmYsIChpID4+IDgpICYgMHhmZiwgaSAmIDB4ZmZdO1xuICBjYW1sX21sX291dHB1dF90YShjaGFuaWQsIG5ldyBVaW50OEFycmF5KGFyciksIDAsIDQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLCB2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmICghdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvcihtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF91bml4X2V4aXRcbi8vQWxpYXM6IHVuaXhfZXhpdFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdChjb2RlKSB7XG4gIGlmIChnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZXhpdCkgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKSB7XG4gIHN3aXRjaCAoZXhuWzJdKSB7XG4gICAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICAgIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICAgIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgICAgcmV0dXJuIDE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bikge1xuICB2YXIgciA9IFwiXCI7XG4gIGlmIChleG5bMF0gPT09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZiAoXG4gICAgICBleG4ubGVuZ3RoID09PSAzICYmXG4gICAgICBleG5bMl1bMF0gPT09IDAgJiZcbiAgICAgIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKVxuICAgICkge1xuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDI7XG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkgPiBzdGFydCkgciArPSBcIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXTtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikgciArPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgTWxCeXRlcykge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByICs9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfSBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCI7XG4gIH0gZWxzZSBpZiAoZXhuWzBdID09PSAyNDgpIHtcbiAgICByICs9IGV4blsxXTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGVycikgJiYgKGVyclswXSA9PT0gMCB8fCBlcnJbMF0gPT09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmIChoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsIGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZiAoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYgKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNvb19zdGF0aWNfZW52XG52YXIganNvb19zdGF0aWNfZW52ID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbi8vUmVxdWlyZXM6IGpzb29fc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLCB2KSB7XG4gIGpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczoganNvb19zdGF0aWNfZW52XG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICBpZiAoanNvb19zdGF0aWNfZW52W25dKSByZXR1cm4ganNvb19zdGF0aWNfZW52W25dO1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmIChwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52W25dICE9PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZiAoZ2xvYmFsVGhpcy5qc29vX2VudiAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5qc29vX2VudltuXSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fZW52W25dO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudihuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnZfb3B0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52X29wdChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYgKHIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocildO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSkge1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52KG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdO1xuXG4gIGlmIChwcm9jZXNzPy5hcmd2Py5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3Y7XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2KF91bml0KSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKSB7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKSB7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIik7XG4gICAgaWYgKGNoaWxkX3Byb2Nlc3M/LmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQsIHsgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gIH0gZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKF9jbWQpIHtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSgpIHtcbiAgdmFyIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oX2IpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgfVxuICB9XG4gIHZhciBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3cgXiAoMHhmZmZmZmZmZiAqIE1hdGgucmFuZG9tKCkpO1xuICByZXR1cm4gWzAsIHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUoKSB7XG4gIHJldHVybiAzMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplKCkge1xuICByZXR1cm4gMzI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSgpIHtcbiAgcmV0dXJuICgweDdmZmZmZmZmIC8gNCkgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIlVuaXhcIiA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIoKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIldpbjMyXCIgPyAxIDogMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4oKSB7XG4gIHJldHVybiBvc190eXBlID09PSBcIkN5Z3dpblwiID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbnZhciBvc190eXBlID0ganNvb19pc193aW4zMiA/IFwiV2luMzJcIiA6IFwiVW5peFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vVmVyc2lvbjogPj0gNS4xXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW9fYnVmZmVyX3NpemVcbnZhciBjYW1sX2lvX2J1ZmZlcl9zaXplID0gNjU1MzY7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2lvX2J1ZmZlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfaW9fYnVmZmVyX3NpemUoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfaW9fYnVmZmVyX3NpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RlbXBfZGlyX25hbWVcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfdGVtcF9kaXJfbmFtZShfdW5pdCkge1xuICBpZiAob3NfdHlwZSA9PT0gXCJXaW4zMlwiKSB7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHJlcXVpcmUoXCJub2RlOm9zXCIpLnRtcGRpcigpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGVtcF9kaXJfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vVmVyc2lvbjogPj0gNS40XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c190ZW1wX2Rpcl9uYW1lKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9zeXNfY29udmVydF9zaWduYWxfbnVtYmVyKHNpZ25vKSB7XG4gIHJldHVybiBzaWdubztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmV2X2NvbnZlcnRfc2lnbmFsX251bWJlclxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXIoc2lnbm8pIHtcbiAgcmV0dXJuIHNpZ25vO1xufVxuXG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vSWY6ICF3YXNtXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYgKHByb2Nlc3M/Lm9uKSB7XG4gICAgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5lcnJvcikge1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobFtpXSA9PT0gXCJiXCIpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZyA9ICtsW2ldLnNsaWNlKDIpO1xuICAgICAgfSBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2Vudl9mbGFnXG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZztcblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cygpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9ydW50aW1lX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA/IDEgOiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UoX3VuaXQpIHtcbiAgcmV0dXJuIFswXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlKGIpIHtcbiAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZyA9IGI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlKCkge1xuICByZXR1cm4gWzBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KF9zbG90KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QoX2J0LCBfaWR4KSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoX2V4biwgX2J0KSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KF9yYnQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiAhZWZmZWN0c1xuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSByZXR1cm4gZiguLi5hcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYoLi4uYXJncy5zbGljZSgwLCBuKSk7XG4gICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsIGFyZ3Muc2xpY2UobikpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDEpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIHJldHVybiBmKC4uLm5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKyspIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgICByZXR1cm4gZiguLi5uYXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkO1xuICAgIHJldHVybiBnO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX2NhbGxfZ2VuKGYsIGFyZ3MpIHtcbiAgdmFyIG4gPSBmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09PSAwKSB7XG4gICAgcmV0dXJuIGYoLi4uYXJncyk7XG4gIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgcmVzdCA9IGFyZ3Muc2xpY2UobiAtIDEpO1xuICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7XG4gICAgfTtcbiAgICByZXR1cm4gZiguLi5hcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgIHN3aXRjaCAoZCkge1xuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKykgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgICAgcmV0dXJuIGYoLi4ubmFyZ3MpO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXJncy5sZW5ndGggPSBhcmdzTGVuO1xuICAgICAgICB2YXIgZyA9IGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgYXJncy5jb25jYXQoZXh0cmFfYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9JZjogZWZmZWN0c1xuLy9JZjogIWRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl9jcHMgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfY3BzX2Nsb3N1cmVcbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuLy9XZWFrZGVmXG52YXIgY2FtbF9jYWxsX2dlbl90dXBsZSA9IChmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3MpIHtcbiAgICB2YXIgbiA9IGYubCA+PSAwID8gZi5sIDogKGYubCA9IGYubGVuZ3RoKTtcbiAgICB2YXIgYXJnc0xlbiA9IGFyZ3MubGVuZ3RoO1xuICAgIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gICAgaWYgKGQgPT09IDApIHtcbiAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAoZCA8IDApIHtcbiAgICAgIHZhciBnID0gZiguLi5hcmdzLnNsaWNlKDAsIG4pKTtcbiAgICAgIGlmICh0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChnLCBhcmdzLnNsaWNlKG4pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIG9wdGltaXphdGlvbiBvZiBoYW5kbGluZyBzcGVjaWFsbHkgZCA9IDEgb3IgMlxuICAgICAgdmFyIGFyZ3NfID0gYXJncy5zbGljZSgpO1xuICAgICAgYXJnc18ubGVuZ3RoID0gYXJnc0xlbjtcbiAgICAgIHZhciByZXQgPSBjYW1sX2Nwc19jbG9zdXJlKFxuICAgICAgICBmdW5jdGlvbiAoLi4uZXh0cmFfYXJncykge1xuICAgICAgICAgIGlmIChleHRyYV9hcmdzLmxlbmd0aCA9PT0gMCkgZXh0cmFfYXJncyA9IFt1bmRlZmluZWRdO1xuICAgICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2RpcmVjdChmLCBhcmdzLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgcmV0LmwgPSBkO1xuICAgICAgcmV0LmNwcy5sID0gZCArIDE7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjYW1sX2NhbGxfZ2VuX2NwcyhmLCBhcmdzKSB7XG4gICAgaWYgKCFmLmNwcykge1xuICAgICAgdmFyIGsgPSBhcmdzLnBvcCgpO1xuICAgICAgcmV0dXJuIGsoY2FtbF9jYWxsX2dlbl9kaXJlY3QoZiwgYXJncykpO1xuICAgIH1cbiAgICB2YXIgbiA9IGYuY3BzLmwgPj0gMCA/IGYuY3BzLmwgOiAoZi5jcHMubCA9IGYuY3BzLmxlbmd0aCk7XG4gICAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgICB2YXIgZCA9IG4gLSBhcmdzTGVuO1xuICAgIGlmIChkID09PSAwKSB7XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICAgIHZhciBrID0gYXJnc1thcmdzTGVuIC0gMV07XG4gICAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICAgIGFyZ3NbbiAtIDFdID0gZnVuY3Rpb24gKGcpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuX2NwcyhnLCBhcmdzKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZi5jcHMuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3NMZW4tLTtcbiAgICAgIHZhciBhcmdzXyA9IGFyZ3Muc2xpY2UoKTtcbiAgICAgIGFyZ3NfLmxlbmd0aCA9IGFyZ3NMZW47XG4gICAgICB2YXIgY29udCA9IGNhbWxfY3BzX2Nsb3N1cmUoXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fZGlyZWN0KGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uICguLi5leHRyYV9hcmdzKSB7XG4gICAgICAgICAgaWYgKGV4dHJhX2FyZ3MubGVuZ3RoID09PSAwKSBleHRyYV9hcmdzID0gW3VuZGVmaW5lZF07XG4gICAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW5fY3BzKGYsIGFyZ3NfLmNvbmNhdChleHRyYV9hcmdzKSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdmFyIGsgPSBhcmdzW2FyZ3NMZW5dO1xuICAgICAgY29udC5sID0gZDtcbiAgICAgIGNvbnQuY3BzLmwgPSBkICsgMTtcbiAgICAgIHJldHVybiBrKGNvbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2NhbWxfY2FsbF9nZW5fZGlyZWN0LCBjYW1sX2NhbGxfZ2VuX2Nwc107XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuX3R1cGxlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vV2Vha2RlZlxudmFyIGNhbWxfY2FsbF9nZW4gPSBjYW1sX2NhbGxfZ2VuX3R1cGxlWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuX2Nwc1xuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlbl90dXBsZVxuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1dlYWtkZWZcbnZhciBjYW1sX2NhbGxfZ2VuX2NwcyA9IGNhbWxfY2FsbF9nZW5fdHVwbGVbMV07XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmFtZWRfdmFsdWVzXG52YXIgY2FtbF9uYW1lZF92YWx1ZXMgPSB7fTtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSAoY29uc3QsbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlKG5tLCB2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgdmFyIG1heCA9IC0xO1xuICBpZiAoc3ltYikge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkeCA9IHN5bWJbaV1bMl07XG4gICAgICBtYXggPSBNYXRoLm1heChtYXgsIGlkeCk7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IGlkeDtcbiAgICB9XG4gIH1cbiAgci5uZXh0X2lkeCA9IG1heCArIDE7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3RvcGxldmVsX3JlbG9jXG52YXIganNvb190b3BsZXZlbF9yZWxvYyA9IHVuZGVmaW5lZDtcblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczoganNvb190b3BsZXZlbF9yZWxvY1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZiAoanNvb190b3BsZXZlbF9yZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soanNvb190b3BsZXZlbF9yZWxvYywgW25hbWVdKTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCkge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeCA9IGNhbWxfYnVpbGRfc3ltYm9scyhjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMpO1xuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdO1xuICAgICAgaWYgKG5pZCA+PSAwKSBuID0gbmlkO1xuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIFRoZSB1bml0IGlzIHVua25vd24sIHRoaXMgY2FuIGhhcHBlbiB3aGVuIGR5bmxpbmtpbmcgYSBwcmVjb21waWxlZCBqcyxcbiAgICAgICAgLy8gbGV0J3MgYWxsb2NhdGUgYSBmcmVzaCBpZHguXG4gICAgICAgIHZhciBuID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgubmV4dF9pZHgrKztcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHhbbmFtZV0gPSBuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmIChuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YShfdW5pdCkge1xuICByZXR1cm4gY2FtbF9nbG9iYWxfZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykge1xuICByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByKGYpIHtcbiAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobywgZiwgdikge1xuICBvW2ZdID0gdjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLCBmKSB7XG4gIHJldHVybiBvW2ZdO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobywgZikge1xuICBkZWxldGUgb1tmXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sIGMpIHtcbiAgcmV0dXJuIG8gaW5zdGFuY2VvZiBjID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlIChyZXM/Lmpvb190cmFtcCkge1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsIGFyZ3MsIGRpcmVjdCkge1xuICByZXR1cm4geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBhcmdzLCBqb29fZGlyZWN0OiBkaXJlY3QgfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3dyYXBfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vQWxpYXM6IGNhbWxfY3BzX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZiwgYXJncykge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgcmVzID0ge1xuICAgICAgam9vX3RyYW1wOiBmLFxuICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0geyBqb29fdHJhbXA6IGhhbmRsZXIsIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV0gfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZXM/Lmpvb19hcmdzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyhfdW5pdCkge1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKENPTkZJRyhcImVmZmVjdHNcIikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZiAoXG4gICAgICBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3IgJiZcbiAgICAgIGUubWVzc2FnZSAmJlxuICAgICAgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSlcbiAgICApXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmIChcbiAgICAgIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvciAmJlxuICAgICAgZS5tZXNzYWdlICYmXG4gICAgICBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKVxuICAgIClcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLCBlXTtcbiAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICBlbHNlXG4gICAgICBleG4gPSBbMCwgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcikgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2UgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9lbnZfZmxhZ1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy8gQmFja3RyYWNlcyBhcmUgdmVyeSBleHBlbnNpdmUsIHdlIG9ubHkgZW5hYmxlIHRoZW0gd2hlbiBleHBsaWNpdGx5IHJlcXVlc3RlZFxuICAvLyBhdCBjb21waWxlLXRpbWUgKC0tZW5hYmxlIHdpdGgtanMtZXJyb3IpIG9yIGF0IHN0YXJ0dXAgd2l0aCBPQ0FNTFJVTlBBUkFNPWI9MS5cbiAgLy8gTGlicmFyaWVzIHN1Y2ggYXMgQmFzZSB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlIGJhY2t0cmFjZXMgKHByb2dyYW1tYXRpY2FsbHkpIGJ1dFxuICAvLyBpdCdzIHdheSB0byBzbG93LiBIZXJlLCB3ZSBmb3JjZSB0aGUgZW5kLXVzZXIgdG8gb3B0LWluIHRvIGJhY2t0cmFjZXMuXG4gIGlmIChjYW1sX3JlY29yZF9iYWNrdHJhY2VfZW52X2ZsYWcgJiYgY2FtbF9yZWNvcmRfYmFja3RyYWNlX3J1bnRpbWVfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4bjtcbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZiAoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT09IDI0OClcbiAgICBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmIChleG4uanNfZXJyb3IpIHtcbiAgICByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdGhyb3dfanNfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3Rocm93X2pzX2V4Y2VwdGlvbihleG4pIHtcbiAgdGhyb3cgZXhuO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7XG4gIHJldHVybiAhIXg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHtcbiAgcmV0dXJuICt4O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkge1xuICByZXR1cm4geCB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgYlswXSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGJbaSArIDFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKSB7XG4gIHZhciBsID0gMDtcbiAgZm9yICh2YXIgaSA9IGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLCBlLCBsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpIHtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yICg7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmICgheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAnY2FtbF9qc192YXI6IFwiJyArXG4gICAgICAgIHggK1xuICAgICAgICAnXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLicsXG4gICAgKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zZWN1cml0eS9ub0dsb2JhbEV2YWw6XG4gIHJldHVybiBldmFsPy4oeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykge1xuICByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIGYoKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gZihhWzFdKTtcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdKTtcbiAgICBjYXNlIDY6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gZihhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdLCBhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIG5ldyBjKCk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0pO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pO1xuICAgIGNhc2UgNjpcbiAgICAgIHJldHVybiBuZXcgYyhhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdKTtcbiAgICBjYXNlIDc6XG4gICAgICByZXR1cm4gbmV3IGMoYVsxXSwgYVsyXSwgYVszXSwgYVs0XSwgYVs1XSwgYVs2XSk7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0sIGFbNl0sIGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7XG4gICAgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbiAgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEYoKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiBuZXcgYygpO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdKTtcbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0pO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTtcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gbmV3IGMoYVswXSwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0dXJuIG5ldyBjKGFbMF0sIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0sIGFbNV0pO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldHVybiBuZXcgYyhhWzBdLCBhWzFdLCBhWzJdLCBhWzNdLCBhWzRdLCBhWzVdLCBhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkge1xuICAgIHJldHVybiBjLmFwcGx5KHRoaXMsIGEpO1xuICB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRigpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBjYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKSA6IHJlcztcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gY2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcykgOiByZXM7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW3RoaXMsIGFyZ3NdKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGFyZ3MubGVuZ3RoID0gYXJpdHk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBhcmdzLmxlbmd0aCA9IGxlbjtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gZi5sID49IDAgPyBmLmwgOiAoZi5sID0gZi5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuIChmLmwgPj0gMCA/IGYubCA6IChmLmwgPSBmLmxlbmd0aCkpIC0gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMoeCwgeSkge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRG91YmxlRXF1YWxzOlxuICByZXR1cm4gKyh4ID09IHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzKHgsIHkpIHtcbiAgcmV0dXJuICsoeCA9PT0geSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcocykge1xuICAvLyBVc2VzIGFuIGluZGlyZWN0IGV2YWwgdGhyb3VnaCB0aGUgb3B0aW9uYWwgY2hhaW5pbmcgb3BlcmF0b3IuXG4gIC8vIChzZWUgaHR0cHM6Ly9tZG4uZGV2L2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL2V2YWwpXG4gIC8vIFRoaXMgaXMgZmFzdGVyIGFuZCBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlcy5cbiAgLy8gQWxzbyBwcmVwZW5kcyBgXCJ1c2Ugc3RyaWN0XCJgIGRpcmVjdGl2ZSBzaW5jZSB0aGlzIGlzIG5vdCBpbmhlcml0ZWRcbiAgLy8gZnJvbSB0aGUgZW5jbG9zaW5nIGZ1bmN0aW9uIHdpdGggYW4gaW5kaXJlY3QgZXZhbC5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsnICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gV2UgYWRkIHBhcmVudGhlc2VzIHRvIGF2b2lkIHRoZSBhbWJpZ3VpdHkgYmV0d2VlbiBleHByZXNzaW9uc1xuICAvLyBhbmQgc3RhdGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHdlIGFjY2VwdCBpbnZhbGlkIGlucHV0cyBsaWtlXG4gIC8vIFwiYSkoYlwiLCBidXQgdGhpcyBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc2VjdXJpdHkvbm9HbG9iYWxFdmFsOlxuICByZXR1cm4gZXZhbD8uKCdcInVzZSBzdHJpY3RcIjsoJyArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpICsgXCIpXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50KHRhZykge1xuICB0aHJvdyB0YWc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnKHRhZywgYXJnKSB7XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyh0YWcsIGFyZ3MpIHtcbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyh0YWcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobXNnKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmFpbHdpdGggKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9mYWlsd2l0aChtc2cpIHtcbiAgaWYgKCFjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUpXG4gICAgY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlID0gWzI0OCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkZhaWx1cmVcIiksIC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRW5kX29mX2ZpbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5KCkge1xuICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RpbWVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZXMoKSB7XG4gIGlmIChnbG9iYWxUaGlzLnByb2Nlc3M/LmNwdVVzYWdlKSB7XG4gICAgdmFyIHQgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3B1VXNhZ2UoKTtcbiAgICByZXR1cm4gQkxPQ0soMCwgdC51c2VyIC8gMWU2LCB0LnN5c3RlbSAvIDFlNiwgMCwgMCk7XG4gIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5wZXJmb3JtYW5jZT8ubm93KSB7XG4gICAgcmV0dXJuIEJMT0NLKDAsIGdsb2JhbFRoaXMucGVyZm9ybWFuY2Uubm93KCkgLyAxMDAwLCAwLCAwLCAwKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RpbWVzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSBuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIGQuZ2V0VVRDTWludXRlcygpLFxuICAgIGQuZ2V0VVRDSG91cnMoKSxcbiAgICBkLmdldFVUQ0RhdGUoKSxcbiAgICBkLmdldFVUQ01vbnRoKCksXG4gICAgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldFVUQ0RheSgpLFxuICAgIGRveSxcbiAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoXG4gICAgamFuLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAganVsLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICk7XG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGQuZ2V0U2Vjb25kcygpLFxuICAgIGQuZ2V0TWludXRlcygpLFxuICAgIGQuZ2V0SG91cnMoKSxcbiAgICBkLmdldERhdGUoKSxcbiAgICBkLmdldE1vbnRoKCksXG4gICAgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICBkLmdldERheSgpLFxuICAgIGRveSxcbiAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHxcbiAgICAgIDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8sXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKSB7XG4gIHZhciBkID0gbmV3IERhdGUodG1bNl0gKyAxOTAwLCB0bVs1XSwgdG1bNF0sIHRtWzNdLCB0bVsyXSwgdG1bMV0pLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLCB0LCB0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQpO1xuICBpZiAoIWZpbGUuaXNhdHR5KSByZXR1cm4gMDtcbiAgcmV0dXJuIGZpbGUuaXNhdHR5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KF9maWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvclxudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLFxuICBcIkVBQ0NFU1wiLFxuICBcIkVBR0FJTlwiLFxuICBcIkVCQURGXCIsXG4gIFwiRUJVU1lcIixcbiAgXCJFQ0hJTERcIixcbiAgXCJFREVBRExLXCIsXG4gIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLFxuICBcIkVGQVVMVFwiLFxuICBcIkVGQklHXCIsXG4gIFwiRUlOVFJcIixcbiAgXCJFSU5WQUxcIixcbiAgXCJFSU9cIixcbiAgXCJFSVNESVJcIixcbiAgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIixcbiAgXCJFTkFNRVRPT0xPTkdcIixcbiAgXCJFTkZJTEVcIixcbiAgXCJFTk9ERVZcIixcbiAgXCJFTk9FTlRcIixcbiAgXCJFTk9FWEVDXCIsXG4gIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsXG4gIFwiRU5PU1BDXCIsXG4gIFwiRU5PU1lTXCIsXG4gIFwiRU5PVERJUlwiLFxuICBcIkVOT1RFTVBUWVwiLFxuICBcIkVOT1RUWVwiLFxuICBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIixcbiAgXCJFUElQRVwiLFxuICBcIkVSQU5HRVwiLFxuICBcIkVST0ZTXCIsXG4gIFwiRVNQSVBFXCIsXG4gIFwiRVNSQ0hcIixcbiAgXCJFWERFVlwiLFxuICBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIixcbiAgXCJFQUxSRUFEWVwiLFxuICBcIkVOT1RTT0NLXCIsXG4gIFwiRURFU1RBRERSUkVRXCIsXG4gIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsXG4gIFwiRU5PUFJPVE9PUFRcIixcbiAgXCJFUFJPVE9OT1NVUFBPUlRcIixcbiAgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsXG4gIFwiRVBGTk9TVVBQT1JUXCIsXG4gIFwiRUFGTk9TVVBQT1JUXCIsXG4gIFwiRUFERFJJTlVTRVwiLFxuICBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLFxuICBcIkVORVRVTlJFQUNIXCIsXG4gIFwiRU5FVFJFU0VUXCIsXG4gIFwiRUNPTk5BQk9SVEVEXCIsXG4gIFwiRUNPTk5SRVNFVFwiLFxuICBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsXG4gIFwiRU5PVENPTk5cIixcbiAgXCJFU0hVVERPV05cIixcbiAgXCJFVE9PTUFOWVJFRlNcIixcbiAgXCJFVElNRURPVVRcIixcbiAgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIixcbiAgXCJFSE9TVFVOUkVBQ0hcIixcbiAgXCJFTE9PUFwiLFxuICBcIkVPVkVSRkxPV1wiLFxuXTtcblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5O1xuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIC8vIGVycm5vIGlzIGV4cGVjdGVkIHRvIGJlIHBvc2l0aXZlXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIC1lcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIiksXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmVycm9yXG4vL1JlcXVpcmVzOiB1bml4X2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N0cmVycm9yKGVycm5vKSB7XG4gIGNvbnN0IHV0aWwgPSByZXF1aXJlKFwibm9kZTp1dGlsXCIpO1xuICBpZiAoZXJybm8gPj0gMCkge1xuICAgIGNvbnN0IGNvZGUgPSB1bml4X2Vycm9yW2Vycm5vXTtcbiAgICByZXR1cm4gdXRpbFxuICAgICAgLmdldFN5c3RlbUVycm9yTWFwKClcbiAgICAgIC5lbnRyaWVzKClcbiAgICAgIC5maW5kKCh4KSA9PiB4WzFdWzBdID09PSBjb2RlKVsxXVsxXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdXRpbC5nZXRTeXN0ZW1FcnJvck1lc3NhZ2UoZXJybm8pO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyZXJyb3Jcbi8vUmVxdWlyZXM6IHVuaXhfZXJyb3Jcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3RyZXJyb3IoZXJybm8pIHtcbiAgY29uc3QgY29kZSA9IHVuaXhfZXJyb3JbZXJybm9dO1xuICByZXR1cm4gY29kZSB8fCBcIlVua25vd24gZXJyb3IgXCIgKyBlcnJubztcbn1cblxuLy9Qcm92aWRlczogdW5peF9lcnJvcl9tZXNzYWdlXG4vL0FsaWFzOiBjYW1sX3VuaXhfZXJyb3JfbWVzc2FnZVxuLy9SZXF1aXJlczogY2FtbF9zdHJlcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIHVuaXhfZXJyb3JfbWVzc2FnZShlcnIpIHtcbiAgY29uc3QgZXJybm8gPSB0eXBlb2YgZXJyID09PSBcIm51bWJlclwiID8gZXJyIDogLWVyclsxXTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNhbWxfc3RyZXJyb3IoZXJybm8pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NoZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jaGRpclxuLy9BbGlhczogdW5peF9jaGRpclxuZnVuY3Rpb24gY2FtbF91bml4X2NoZGlyKGRpcikge1xuICByZXR1cm4gY2FtbF9zeXNfY2hkaXIoZGlyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gZmFsc2UsXG4gICAgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXRfNjQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChcbiAgICByb290LnJlc3QsXG4gICAgLyogbGFyZ2UgKi8gdHJ1ZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyBmYWxzZSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0XzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KFxuICAgIHJvb3QucmVzdCxcbiAgICAvKiBsYXJnZSAqLyB0cnVlLFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NobW9kXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9jaG1vZFxuZnVuY3Rpb24gY2FtbF91bml4X2NobW9kKG5hbWUsIHBlcm1zKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2NobW9kOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmNobW9kKHJvb3QucmVzdCwgcGVybXMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVuYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vQWxpYXM6IHVuaXhfcmVuYW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVuYW1lKG8sIG4pIHtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmIChvX3Jvb3QuZGV2aWNlICE9PSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSwgXCJFWERFVlwiLCBcInJlbmFtZVwiKTtcbiAgaWYgKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSkgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogbm90IGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X2xpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9saW5rKGZvbGxvdywgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2UubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIC8vIFdlIGNhbid0IGNvbnRyb2wgd2hldGhlciBhICdzcmMnIHN5bWxpbmsgaXMgZm9sbG93ZWQgb3Igbm90LlxuICAvLyBTbyB3ZSBmYWlsIHdoZW4gJ2ZvbGxvdycgaXMgc2V0LCBhcyBkb2N1bWVudGVkIGluIHRoZSBVbml4IG1vZHVsZS5cbiAgaWYgKHR5cGVvZiBmb2xsb3cgIT09IFwibnVtYmVyXCIpXG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoLyogcmFpc2UgVW5peF9lcnJvciAqLyAxLCBcIkVOT1NZU1wiLCBcImxpbmtcIik7XG4gIGlmIChzcmNfcm9vdC5kZXZpY2UgIT09IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRVhERVZcIiwgXCJsaW5rXCIpO1xuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLmxpbmsoXG4gICAgc3JjX3Jvb3QucmVzdCxcbiAgICBkc3Rfcm9vdC5yZXN0LFxuICAgIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmICghZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gZHN0X3Jvb3QuZGV2aWNlLnN5bWxpbmsoXG4gICAgdG9fZGlyLFxuICAgIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHNyYyksXG4gICAgZHN0X3Jvb3QucmVzdCxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdXRpbWVzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91dGltZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF91dGltZXMobmFtZSwgYXRpbWUsIG10aW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudXRpbWVzKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91dGltZXM6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByb290LmRldmljZS51dGltZXMocm9vdC5yZXN0LCBhdGltZSwgbXRpbWUsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGUobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUocm9vdC5yZXN0LCBsZW4sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2ludDY0X3RvX2Zsb2F0XG4vL0FsaWFzOiB1bml4X3RydW5jYXRlXzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfdHJ1bmNhdGVfNjQobmFtZSwgbGVuKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudHJ1bmNhdGUpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3RydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UudHJ1bmNhdGUoXG4gICAgcm9vdC5yZXN0LFxuICAgIGNhbWxfaW50NjRfdG9fZmxvYXQobGVuKSxcbiAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUsXG4gICk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfYWNjZXNzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9hY2Nlc3NcbmZ1bmN0aW9uIGNhbWxfdW5peF9hY2Nlc3MobmFtZSwgZmxhZ3MpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnIgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZi53ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGYueCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBmLmYgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmFjY2Vzcykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfYWNjZXNzOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcm9vdC5kZXZpY2UuYWNjZXNzKHJvb3QucmVzdCwgZiwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9zeXNfZmRzLCBNbENoYW5pZFxuLy9BbGlhczogdW5peF9vcGVuXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbihuYW1lLCBmbGFncywgcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUgKGZsYWdzKSB7XG4gICAgc3dpdGNoIChmbGFnc1sxXSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBmLnJkb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBmLndyb25seSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBmLnJkd3IgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgZi5ub25ibG9jayA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBmLmFwcGVuZCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICBmLmNyZWF0ZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2OlxuICAgICAgICBmLnRydW5jYXRlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGYuZXhjbCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBmLm5vY3R0eSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBmLmRzeW5jID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBmLnN5bmMgPSAxO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmxhZ3MgPSBmbGFnc1syXTtcbiAgfVxuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LCBmLCBwZXJtcywgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgdmFyIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIHZhciBjaGFuaWQgPSBuZXcgTWxDaGFuaWQoaWR4KTtcbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSB7IGZpbGU6IGZpbGUsIGNoYW5pZDogY2hhbmlkIH07XG4gIHJldHVybiBpZHggfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2ZkcywgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgY21kKSB7XG4gIHZhciBmZF9kZXNjID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYgKGZkX2Rlc2MgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgY21kKTtcbiAgcmV0dXJuIGZkX2Rlc2MuZmlsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzdGF0XG4vL0FsaWFzOiB1bml4X2ZzdGF0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3RhdChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3RhdFwiKTtcbiAgaWYgKCFmaWxlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyBmYWxzZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mc3RhdF82NFxuLy9BbGlhczogdW5peF9mc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3VuaXhfZnN0YXRfNjQoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZnN0YXRcIik7XG4gIGlmICghZmlsZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mc3RhdDY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3RhdCgvKiBsYXJnZSAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZjaG1vZFxuLy9BbGlhczogdW5peF9mY2htb2Rcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2ZjaG1vZChmZCwgcGVybXMpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiZmNobW9kXCIpO1xuICBpZiAoIWZpbGUuY2htb2QpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZjaG1vZDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBmaWxlLmNobW9kKHBlcm1zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZzeW5jXG4vL0FsaWFzOiB1bml4X2ZzeW5jXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfdW5peF9mc3luYyhmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmc3luY1wiKTtcbiAgaWYgKCFmaWxlLnN5bmMpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2ZzeW5jOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIGZpbGUuc3luYygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfd3JpdGVcbi8vQWxpYXM6IHVuaXhfd3JpdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF91bml4X3dyaXRlKGZkLCBidWYsIHBvcywgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgdmFyIHdyaXR0ZW4gPSAwO1xuICB3aGlsZSAobGVuID4gMCkge1xuICAgIHZhciBuID0gZmlsZS53cml0ZShhLCBwb3MsIGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgICB3cml0dGVuICs9IG47XG4gICAgcG9zICs9IG47XG4gICAgbGVuIC09IG47XG4gIH1cbiAgcmV0dXJuIHdyaXR0ZW47XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zaW5nbGVfd3JpdGVcbi8vQWxpYXM6IHVuaXhfc2luZ2xlX3dyaXRlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfdW5peF9zaW5nbGVfd3JpdGUoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwid3JpdGVcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICByZXR1cm4gZmlsZS53cml0ZShcbiAgICBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZiksXG4gICAgcG9zLFxuICAgIGxlbixcbiAgICAvKiByYWlzZSB1bml4X2Vycm9yICovIDEsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF93cml0ZV9iaWdhcnJheVxuLy9BbGlhczogY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX3VuaXhfbG9va3VwX2ZpbGVcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3VuaXhfd3JpdGVfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcIndyaXRlXCIpO1xuICB2YXIgd3JpdHRlbiA9IDA7XG4gIHdoaWxlIChsZW4gPiAwKSB7XG4gICAgdmFyIG4gPSBmaWxlLndyaXRlKGEsIHBvcywgbGVuLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xuICAgIHdyaXR0ZW4gKz0gbjtcbiAgICBwb3MgKz0gbjtcbiAgICBsZW4gLT0gbjtcbiAgfVxuICByZXR1cm4gd3JpdHRlbjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRcbi8vQWxpYXM6IHVuaXhfcmVhZFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZChmZCwgYnVmLCBwb3MsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJyZWFkXCIpO1xuICByZXR1cm4gZmlsZS5yZWFkKFxuICAgIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKSxcbiAgICBwb3MsXG4gICAgbGVuLFxuICAgIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSxcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRfYmlnYXJyYXlcbi8vQWxpYXM6IHVuaXhfcmVhZF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF91bml4X2xvb2t1cF9maWxlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRfYmlnYXJyYXkoZmQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgdmFyIGEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1Zik7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcInJlYWRcIik7XG4gIHJldHVybiBmaWxlLnJlYWQoYSwgcG9zLCBsZW4sIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc2Vla1xuLy9BbGlhczogdW5peF9sc2Vla1xuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlXG5mdW5jdGlvbiBjYW1sX3VuaXhfbHNlZWsoZmQsIGxlbiwgd2hlbmNlKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImxzZWVrXCIpO1xuICByZXR1cm4gZmlsZS5zZWVrKGxlbiwgd2hlbmNlLCAvKiByYWlzZSB1bml4X2Vycm9yICovIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHNlZWtfNjRcbi8vQWxpYXM6IHVuaXhfbHNlZWtfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9pbnQ2NF90b19mbG9hdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzZWVrXzY0KGZkLCBsZW4sIHdoZW5jZSkge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJsc2Vla1wiKTtcbiAgcmV0dXJuIGZpbGUuc2VlayhjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIHdoZW5jZSwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Z0cnVuY2F0ZVxuLy9BbGlhczogdW5peF9mdHJ1bmNhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF91bml4X2Z0cnVuY2F0ZShmZCwgbGVuKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImZ0cnVuY2F0ZVwiKTtcbiAgaWYgKCFmaWxlLnRydW5jYXRlKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9mdHJ1bmNhdGU6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICBmaWxlLnRydW5jYXRlKGxlbiwgLyogcmFpc2UgdW5peF9lcnJvciAqLyAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9mdHJ1bmNhdGVfNjRcbi8vQWxpYXM6IHVuaXhfZnRydW5jYXRlXzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9va3VwX2ZpbGUsIGNhbWxfZmFpbHdpdGgsIGNhbWxfaW50NjRfdG9fZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9mdHJ1bmNhdGVfNjQoZmQsIGxlbikge1xuICB2YXIgZmlsZSA9IGNhbWxfdW5peF9sb29rdXBfZmlsZShmZCwgXCJmdHJ1bmNhdGVcIik7XG4gIGlmICghZmlsZS50cnVuY2F0ZSkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfZnRydW5jYXRlXzY0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgZmlsZS50cnVuY2F0ZShjYW1sX2ludDY0X3RvX2Zsb2F0KGxlbiksIC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2Vcbi8vQWxpYXM6IHVuaXhfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZVxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF91bml4X2xvb2t1cF9maWxlKGZkLCBcImNsb3NlXCIpO1xuICBmaWxlLmNsb3NlKC8qIHJhaXNlIHVuaXhfZXJyb3IgKi8gMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9BbGlhczogdW5peF9pbmNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5faW5jaGFubmVsX29mX2ZpbGVkZXNjclxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvb2t1cF9maWxlLCBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuZnVuY3Rpb24gY2FtbF91bml4X2luY2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgZmlsZS5jaGVja19zdHJlYW1fc2VtYW50aWNzKFwiaW5fY2hhbm5lbF9vZl9kZXNjclwiKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB1bml4X291dGNoYW5uZWxfb2ZfZmlsZWRlc2NyXG4vL0FsaWFzOiB3aW5fb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3Jcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb29rdXBfZmlsZSwgY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG5mdW5jdGlvbiBjYW1sX3VuaXhfb3V0Y2hhbm5lbF9vZl9maWxlZGVzY3IoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3VuaXhfbG9va3VwX2ZpbGUoZmQsIFwib3V0X2NoYW5uZWxfb2ZfZGVzY3JcIik7XG4gIGZpbGUuY2hlY2tfc3RyZWFtX3NlbWFudGljcyhcIm91dF9jaGFubmVsX29mX2Rlc2NyXCIpO1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0KGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0dWlkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldGV1aWRcbi8vQWxpYXM6IHVuaXhfZ2V0ZXVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGV1aWQoX3VuaXQpIHtcbiAgaWYgKGdsb2JhbFRoaXMucHJvY2Vzcz8uZ2V0ZXVpZCkge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0ZXVpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0Z2lkXG4vL0FsaWFzOiB1bml4X2dldGdpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldGdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRnaWQpIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldGdpZCgpO1xuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0ZWdpZFxuLy9BbGlhczogdW5peF9nZXRlZ2lkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0ZWdpZChfdW5pdCkge1xuICBpZiAoZ2xvYmFsVGhpcy5wcm9jZXNzPy5nZXRlZ2lkKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXRlZ2lkKCk7XG4gIH1cbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd25hbVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHduYW1cbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuLy9BbGlhczogY2FtbF91bml4X2dldGdybmFtXG4vL0FsaWFzOiB1bml4X2dldGdybmFtXG4vL0FsaWFzOiBjYW1sX3VuaXhfZ2V0Z3JnaWRcbi8vQWxpYXM6IHVuaXhfZ2V0Z3JnaWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd25hbShfdW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsoX3VuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCkgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlcjogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJyZWFkZGlyXCIpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcigvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIFwiRUJBREZcIiwgXCJjbG9zZWRpclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihyYWlzZV91bml4LCBjb2RlLCBjbWQsIG1zZywgcGF0aCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpXG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIGNtZCwgcGF0aCkpO1xuICBlbHNlIHtcbiAgICB2YXIgbXNnID0gY29kZSArIFwiOiBcIiArIG1zZyArIFwiLCBcIiArIGNtZDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSBtc2cgKz0gXCIgJ1wiICsgcGF0aCArIFwiJ1wiO1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG1zZyk7XG4gIH1cbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRHVtbXkgZmlsZXN5c3RlbVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3RyYWlsaW5nX3NsYXNoKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUuc2xpY2UoLTEpICE9PSBcIi9cIiA/IG5hbWUgKyBcIi9cIiA6IG5hbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5pZiAoZnNfbm9kZV9zdXBwb3J0ZWQoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZClcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKCkucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG5lbHNlIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKSB7XG4gIHZhciB4ID0gcGF0aF9pc19hYnNvbHV0ZShwYXRoKTtcbiAgaWYgKCF4KSByZXR1cm47XG4gIHJldHVybiB4WzBdICsgXCIvXCI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcm9vdFxuLy9SZXF1aXJlczogY2FtbF9nZXRfcm9vdCwgY2FtbF9jdXJyZW50X2RpciwgY2FtbF9mYWlsd2l0aFxudmFyIGNhbWxfcm9vdCA9XG4gIGNhbWxfZ2V0X3Jvb3QoY2FtbF9jdXJyZW50X2RpcikgfHxcbiAgY2FtbF9mYWlsd2l0aChcInVuYWJsZSB0byBjb21wdXRlIGNhbWxfcm9vdFwiKTtcblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKSB7fVxuXG4vL1Byb3ZpZGVzOiBwYXRoX2lzX2Fic29sdXRlXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczoganNvb19pc193aW4zMlxuZnVuY3Rpb24gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCkge1xuICBmdW5jdGlvbiBwb3NpeChwYXRoKSB7XG4gICAgaWYgKHBhdGguY2hhckF0KDApID09PSBcIi9cIikgcmV0dXJuIFtcIlwiLCBwYXRoLnNsaWNlKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9XG4gICAgICAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgdmFyIGlzVW5jID0gZGV2aWNlLmxlbmd0aCA+IDAgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gXCI6XCI7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChyZXN1bHRbMl0gfHwgaXNVbmMpIHtcbiAgICAgIHZhciByb290ID0gcmVzdWx0WzFdIHx8IFwiXCI7XG4gICAgICB2YXIgc2VwID0gcmVzdWx0WzJdIHx8IFwiXCI7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc2xpY2Uocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4ganNvb19pc193aW4zMiA/IHdpbjMyIDogcG9zaXg7XG59XG52YXIgcGF0aF9pc19hYnNvbHV0ZSA9IG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfcGF0aFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIHBhdGhfaXNfYWJzb2x1dGVcbmZ1bmN0aW9uIGNhbWxfbWFrZV9wYXRoKG5hbWUpIHtcbiAgbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiAoIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkpIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdCgvWy9cXFxcXS8pO1xuICB2YXIgbmNvbXAgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aDsgaSsrKSB7XG4gICAgc3dpdGNoIChjb21wW2ldKSB7XG4gICAgICBjYXNlIFwiLi5cIjpcbiAgICAgICAgbmNvbXAucG9wKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIi5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbmNvbXAucHVzaChjb21wW2ldKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIG5jb21wLnVuc2hpZnQoY29tcDBbMF0pO1xuICBuY29tcC5vcmlnID0gbmFtZTtcbiAgcmV0dXJuIG5jb21wO1xufVxuXG4vL1Byb3ZpZGVzOmpzb29fbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IE1sRmFrZURldmljZSwgTWxOb2RlRGV2aWNlLCBjYW1sX3Jvb3QsIGZzX25vZGVfc3VwcG9ydGVkXG52YXIganNvb19tb3VudF9wb2ludCA9IFtdO1xuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxOb2RlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgICBwYXRoOiBjYW1sX3Jvb3QsXG4gICAgZGV2aWNlOiBuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCksXG4gIH0pO1xufVxuanNvb19tb3VudF9wb2ludC5wdXNoKHtcbiAgcGF0aDogXCIvc3RhdGljL1wiLFxuICBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UoXCIvc3RhdGljL1wiKSxcbn0pO1xuXG4vL1Byb3ZpZGVzOmNhbWxfbGlzdF9tb3VudF9wb2ludFxuLy9SZXF1aXJlczoganNvb19tb3VudF9wb2ludCwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpIHtcbiAgdmFyIHByZXYgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGpzb29fbW91bnRfcG9pbnRbaV0ucGF0aCksIG9sZF07XG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtID0ganNvb19tb3VudF9wb2ludFtpXTtcbiAgICBpZiAoXG4gICAgICBuYW1lX3NsYXNoLnNlYXJjaChtLnBhdGgpID09PSAwICYmXG4gICAgICAoIXJlcyB8fCByZXMucGF0aC5sZW5ndGggPCBtLnBhdGgubGVuZ3RoKVxuICAgIClcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gIH1cbiAgaWYgKCFyZXMgJiYgZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciByb290ID0gY2FtbF9nZXRfcm9vdChuYW1lKTtcbiAgICBpZiAocm9vdD8ubWF0Y2goL15bYS16QS1aXTpcXC8kLykpIHtcbiAgICAgIHZhciBtID0geyBwYXRoOiByb290LCBkZXZpY2U6IG5ldyBNbE5vZGVEZXZpY2Uocm9vdCkgfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtcbiAgICAgICAgcGF0aDogbS5wYXRoLFxuICAgICAgICBkZXZpY2U6IG0uZGV2aWNlLFxuICAgICAgICByZXN0OiBuYW1lLnNsaWNlKG0ucGF0aC5sZW5ndGgsIG5hbWUubGVuZ3RoKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsIGYpIHtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHBhdGguam9pbihcIi9cIikpO1xuICBqc29vX21vdW50X3BvaW50LnB1c2goeyBwYXRoOiBuYW1lLCBkZXZpY2U6IG5ldyBNbEZha2VEZXZpY2UobmFtZSwgZikgfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSkge1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKVxuICAgIGlmIChqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT09IG5hbWUpIGlkeCA9IGk7XG4gIGlmIChpZHggPiAtMSkganNvb19tb3VudF9wb2ludC5zcGxpY2UoaWR4LCAxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vQWxpYXM6IGNhbWxfdW5peF9nZXRjd2Rcbi8vQWxpYXM6IHVuaXhfZ2V0Y3dkXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZiAocm9vdC5kZXZpY2UuaXNfZGlyKHJvb3QucmVzdCkpIHtcbiAgICBpZiAocm9vdC5yZXN0KVxuICAgICAgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSBpZiAocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVOT1RESVJcIixcbiAgICAgIFwiY2hkaXJcIixcbiAgICAgIFwibm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhkaXIpLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZGlyKSwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lLCByYWlzZV91bml4KSB7XG4gIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgIHJhaXNlX3VuaXgsXG4gICAgXCJFTk9FTlRcIixcbiAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICBuYW1lLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBsW2kgKyAxXSA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVtb3ZlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19kaXJlY3RvcnkobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYSA/IDEgOiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobywgbikge1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYgKG9fcm9vdC5kZXZpY2UgIT09IG5fcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3lzX3JlbmFtZTogY2Fubm90IG1vdmUgZmlsZSBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtXCIpO1xuICBpZiAoIW9fcm9vdC5kZXZpY2UucmVuYW1lKSBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIG9fcm9vdC5kZXZpY2UucmVuYW1lKG9fcm9vdC5yZXN0LCBuX3Jvb3QucmVzdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlKF92ZmQsIF9raW5kLCBfbGF5b3V0LCBfc2hhcmVkLCBfZGltcywgX3Bvcykge1xuICAvLyB2YXIgZGF0YSA9IGNhbWxfc3lzX2Zkc1t2ZmRdO1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9iYV9tYXBfZmlsZSBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUoYXJndiwgX2FyZ24pIHtcbiAgLy8gYXJnbiA9PT0gNlxuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLCBhcmd2WzFdLCBhcmd2WzJdLCBhcmd2WzNdLCBhcmd2WzRdLCBhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsIGNvbnRlbnQpIHtcbiAgaWYgKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSkgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xuICBlbHNlIHtcbiAgICBpZiAoIWdsb2JhbFRoaXMuanNvb19mc190bXApIGdsb2JhbFRoaXMuanNvb19mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wLnB1c2goeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50IH0pO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZzX2luaXRcbi8vUmVxdWlyZXM6IGpzb29fY3JlYXRlX2ZpbGVcbmZ1bmN0aW9uIGNhbWxfZnNfaW5pdCgpIHtcbiAgdmFyIHRtcCA9IGdsb2JhbFRoaXMuanNvb19mc190bXA7XG4gIGlmICh0bXApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7IGkrKykge1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSwgdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmpzb29fZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVnaXN0ZXIpIGNhbWxfZmFpbHdpdGgoXCJjYW5ub3QgcmVnaXN0ZXIgZmlsZVwiKTtcbiAgcm9vdC5kZXZpY2UucmVnaXN0ZXIocm9vdC5yZXN0LCBjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWFkX2ZpbGVfY29udGVudFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50KG5hbWUpIHtcbiAgdmFyIG5hbWUgPSB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIiA/IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG5hbWUpIDogbmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpKSB7XG4gICAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCwgeyByZG9ubHk6IDEgfSk7XG4gICAgdmFyIGxlbiA9IGZpbGUubGVuZ3RoKCk7XG4gICAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgZmlsZS5yZWFkKGJ1ZiwgMCwgbGVuLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGJ1Zik7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRGV2aWNlIHtcbiAgY29uc3RydWN0b3Iocm9vdCwgZikge1xuICAgIHRoaXMuY29udGVudCA9IHt9O1xuICAgIHRoaXMucm9vdCA9IHJvb3Q7XG4gICAgdGhpcy5sb29rdXBGdW4gPSBmO1xuICB9XG5cbiAgbm0obmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJvb3QgKyBuYW1lO1xuICB9XG5cbiAgY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSkge1xuICAgIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICAgIGlmICh0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIGxvb2t1cChuYW1lKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcodGhpcy5yb290KSxcbiAgICAgICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobmFtZSksXG4gICAgICApO1xuICAgICAgaWYgKHJlcyAhPT0gMCkge1xuICAgICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBleGlzdHMobmFtZSwgZG9fbm90X2xvb2t1cCkge1xuICAgIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gICAgaWYgKG5hbWUgPT09IFwiXCIpIHJldHVybiAxO1xuICAgIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICAgIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gICAgaWYgKCFkb19ub3RfbG9va3VwKSB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdID8gMSA6IDA7XG4gIH1cblxuICBpc0ZpbGUobmFtZSkge1xuICAgIGlmICh0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICByZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkpIHtcbiAgICAgIGlmICghdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZWFkZGlyKG5ld25hbWUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuZXduYW1lKSArIFwiIDogZGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG9sZF9zbGFzaCA9IHRoaXMuc2xhc2gob2xkbmFtZSk7XG4gICAgdmFyIG5ld19zbGFzaCA9IHRoaXMuc2xhc2gobmV3bmFtZSk7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuZXdfc2xhc2gpO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLnJlYWRkaXIob2xkbmFtZSkpIHtcbiAgICAgIHRoaXMucmVuYW1lKG9sZF9zbGFzaCArIGYsIG5ld19zbGFzaCArIGYpO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W29sZF9zbGFzaF07XG4gIH1cblxuICByZW5hbWUob2xkbmFtZSwgbmV3bmFtZSkge1xuICAgIGlmICghdGhpcy5leGlzdHMob2xkbmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG9sZG5hbWUpICsgXCIgOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIGlmICh0aGlzLmlzX2RpcihvbGRuYW1lKSkge1xuICAgICAgdGhpcy5yZW5hbWVfZGlyKG9sZG5hbWUsIG5ld25hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMobmV3bmFtZSkgJiYgdGhpcy5pc19kaXIobmV3bmFtZSkpIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgICAgdGhpcy5ubShuZXduYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnlcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGVudFtuZXduYW1lXSA9IHRoaXMuY29udGVudFtvbGRuYW1lXTtcbiAgICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbb2xkbmFtZV07XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgX21vZGUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICAgIHBhcmVudCA9IHBhcmVudD8uWzFdIHx8IFwiXCI7XG4gICAgaWYgKCF0aGlzLmV4aXN0cyhwYXJlbnQpKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRU5PRU5UXCIsXG4gICAgICAgIFwibWtkaXJcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICApO1xuICAgIGlmICghdGhpcy5pc19kaXIocGFyZW50KSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJta2RpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHZhciBuYW1lX3NsYXNoID0gbmFtZSA9PT0gXCJcIiA/IFwiXCIgOiB0aGlzLnNsYXNoKG5hbWUpO1xuICAgIGlmICghdGhpcy5leGlzdHMobmFtZSkpXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIixcbiAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICk7XG4gICAgaWYgKCF0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICByYWlzZV91bml4LFxuICAgICAgICBcIkVOT1RESVJcIixcbiAgICAgICAgXCJybWRpclwiLFxuICAgICAgICBcIm5vdCBhIGRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgKTtcbiAgICBmb3IgKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgICAgaWYgKG4uc3RhcnRzV2l0aChuYW1lX3NsYXNoKSAmJiBuICE9PSBuYW1lX3NsYXNoKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRU5PVEVNUFRZXCIsXG4gICAgICAgICAgXCJybWRpclwiLFxuICAgICAgICAgIFwiZGlyZWN0b3J5IG5vdCBlbXB0eVwiLFxuICAgICAgICAgIHRoaXMubm0obmFtZSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG4gIH1cblxuICByZWFkZGlyKG5hbWUpIHtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IG5hbWUgPT09IFwiXCIgPyBcIlwiIDogdGhpcy5zbGFzaChuYW1lKTtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHZhciBhID0gW107XG4gICAgZm9yICh2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICAgIGlmIChuLnN0YXJ0c1dpdGgobmFtZV9zbGFzaCkgJiYgbiAhPT0gbmFtZV9zbGFzaCkge1xuICAgICAgICB2YXIgbGFzdCA9IG4uaW5kZXhPZihcIi9cIiwgbmFtZV9zbGFzaC5sZW5ndGgpO1xuICAgICAgICBpZiAobGFzdCA8IDApIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBtID0gbi5zbGljZShuYW1lX3NsYXNoLmxlbmd0aCwgbGFzdCk7XG4gICAgICAgIGlmIChtICYmICFzZWVuW21dKSB7XG4gICAgICAgICAgc2VlblttXSA9IHRydWU7XG4gICAgICAgICAgYS5wdXNoKG0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhO1xuICB9XG5cbiAgb3BlbmRpcihuYW1lLCByYWlzZV91bml4KSB7XG4gICAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gICAgdmFyIGMgPSBmYWxzZTtcbiAgICB2YXIgaSA9IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlYWRTeW5jOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjKVxuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICAgIFwiRUJBREZcIixcbiAgICAgICAgICAgIFwicmVhZGRpclwiLFxuICAgICAgICAgICAgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKGkgPT09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICAgICAgaSsrO1xuICAgICAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9O1xuICAgICAgfSxcbiAgICAgIGNsb3NlU3luYzogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoYylcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgICBcIkVCQURGXCIsXG4gICAgICAgICAgICBcInJlYWRkaXJcIixcbiAgICAgICAgICAgIFwiYmFkIGZpbGUgZGVzY3JpcHRvclwiLFxuICAgICAgICAgICk7XG4gICAgICAgIGMgPSB0cnVlO1xuICAgICAgICBhID0gW107XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpc19kaXIobmFtZSkge1xuICAgIGlmIChuYW1lID09PSBcIlwiKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSA/IDEgOiAwO1xuICB9XG5cbiAgdW5saW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAoIXRoaXMuZXhpc3RzKG5hbWUsIHRydWUpKSB7XG4gICAgICAvLyBbdHJ1ZV0gbWVhbnMgbm8gXCJsb29rdXBcIiBpZiBub3QgZm91bmQuXG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFTk9FTlRcIixcbiAgICAgICAgXCJ1bmxpbmtcIixcbiAgICAgICAgXCJubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH1cbiAgICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgYWNjZXNzKG5hbWUsIF9mbGFncywgcmFpc2VfdW5peCkge1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVBQ0NFU1NcIixcbiAgICAgICAgICBcImFjY2Vzc1wiLFxuICAgICAgICAgIFwicGVybWlzc2lvbiBkZW5pZWQsXCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBfcGVybXMsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgZmlsZTtcbiAgICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFSVNESVJcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImlsbGVnYWwgb3BlcmF0aW9uIG9uIGEgZGlyZWN0b3J5XCIsXG4gICAgICAgICAgdGhpcy5ubShuYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpXG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgICAgXCJFRVhJU1RcIixcbiAgICAgICAgICBcIm9wZW5cIixcbiAgICAgICAgICBcImZpbGUgYWxyZWFkeSBleGlzdHNcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGlmIChmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKDApO1xuICAgIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSh0aGlzLm5tKG5hbWUpLCByYWlzZV91bml4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbiAgfVxuXG4gIHRydW5jYXRlKG5hbWUsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHZhciBmaWxlO1xuICAgIHRoaXMubG9va3VwKG5hbWUpO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSlcbiAgICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgICBcIkVJU0RJUlwiLFxuICAgICAgICAgIFwib3BlblwiLFxuICAgICAgICAgIFwiaWxsZWdhbCBvcGVyYXRpb24gb24gYSBkaXJlY3RvcnlcIixcbiAgICAgICAgICB0aGlzLm5tKG5hbWUpLFxuICAgICAgICApO1xuICAgICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICAgIGZpbGUudHJ1bmNhdGUobGVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUodGhpcy5ubShuYW1lKSwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXIobmFtZSwgY29udGVudCkge1xuICAgIHZhciBmaWxlO1xuICAgIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pXG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGlmIChjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKSBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gICAgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnQpKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gICAgZWxzZSBpZiAoY29udGVudC50b1N0cmluZykge1xuICAgICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoXG4gICAgICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSksXG4gICAgICApO1xuICAgICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgICB9XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICAgIH0gZWxzZVxuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXG4gICAgICAgIHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiLFxuICAgICAgKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG5jbGFzcyBNbEZha2VGaWxlIGV4dGVuZHMgTWxGaWxlIHtcbiAgY29uc3RydWN0b3IoY29udGVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gY29udGVudDtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbikge1xuICAgIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gICAgdmFyIG9sZF9sZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aChvbGQpO1xuICAgIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbiB8IDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgTWF0aC5taW4obGVuLCBvbGRfbGVuKSk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG4gIH1cblxuICB3cml0ZShvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICAgIH1cbiAgICBjYW1sX2JsaXRfYnl0ZXMoXG4gICAgICBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5KGJ1ZiksXG4gICAgICBwb3MsXG4gICAgICB0aGlzLmRhdGEsXG4gICAgICBvZmZzZXQsXG4gICAgICBsZW4sXG4gICAgKTtcbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgcmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gICAgaWYgKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAobGVuID4gMCkge1xuICAgICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4gfCAwKTtcbiAgICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3JcbmNsYXNzIE1sRmFrZUZkX291dCBleHRlbmRzIE1sRmFrZUZpbGUge1xuICBjb25zdHJ1Y3RvcihmZCwgZmxhZ3MpIHtcbiAgICBzdXBlcihjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoX3MpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgaWYgKGZkID09PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICAgIGVsc2UgaWYgKGZkID09PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbnNvbGUubG9nID09PSBcImZ1bmN0aW9uXCIpIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdHJ1bmNhdGUoX2xlbiwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgcmFpc2VfdW5peCxcbiAgICAgIFwiRUlOVkFMXCIsXG4gICAgICBcImZ0cnVuY2F0ZVwiLFxuICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgKTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgd3JpdHRlbiA9IGxlbjtcbiAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGVuID4gMCAmJlxuICAgICAgICBwb3MgPj0gMCAmJlxuICAgICAgICBwb3MgKyBsZW4gPD0gYnVmLmxlbmd0aCAmJlxuICAgICAgICBidWZbcG9zICsgbGVuIC0gMV0gPT09IDEwXG4gICAgICApXG4gICAgICAgIGxlbi0tO1xuICAgICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICAgIHJldHVybiB3cml0dGVuO1xuICAgIH1cbiAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgIHJhaXNlX3VuaXgsXG4gICAgICBcIkVCQURGXCIsXG4gICAgICBcIndyaXRlXCIsXG4gICAgICBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIixcbiAgICApO1xuICB9XG5cbiAgcmVhZChfYnVmLCBfcG9zLCBfbGVuLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFQkFERlwiLCBcInJlYWRcIiwgXCJiYWQgZmlsZSBkZXNjcmlwdG9yXCIpO1xuICB9XG5cbiAgc2VlayhfbGVuLCBfd2hlbmNlLCByYWlzZV91bml4KSB7XG4gICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IocmFpc2VfdW5peCwgXCJFU1BJUEVcIiwgXCJsc2Vla1wiLCBcImlsbGVnYWwgc2Vla1wiKTtcbiAgfVxuICBwb3MoKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKF9jbWQpIHt9XG59XG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvclxuY2xhc3MgTWxGYWtlRmQge1xuICBjb25zdHJ1Y3RvcihuYW1lLCBmaWxlLCBmbGFncykge1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgIHRoaXMuc2Vla2VkID0gZmFsc2U7XG4gIH1cblxuICBlcnJfY2xvc2VkKGNtZCwgcmFpc2VfdW5peCkge1xuICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRUJBREZcIiwgY21kLCBcImJhZCBmaWxlIGRlc2NyaXB0b3JcIik7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgaWYgKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGgoKTtcbiAgICB0aGlzLmVycl9jbG9zZWQoXCJsZW5ndGhcIik7XG4gIH1cblxuICB0cnVuY2F0ZShsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICBpZiAoISh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKVxuICAgICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgICByYWlzZV91bml4LFxuICAgICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgICAgXCJ0cnVuY2F0ZVwiLFxuICAgICAgICAgIFwiaW52YWxpZCBhcmd1bWVudFwiLFxuICAgICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZS50cnVuY2F0ZShsZW4pO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJ0cnVuY2F0ZVwiLCByYWlzZV91bml4KTtcbiAgfVxuXG4gIHdyaXRlKGJ1ZiwgcG9zLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5maWxlICYmICh0aGlzLmZsYWdzLndyb25seSB8fCB0aGlzLmZsYWdzLnJkd3IpKSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICBsZW4gPSB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LCBidWYsIHBvcywgbGVuKTtcbiAgICAgIHRoaXMub2Zmc2V0ICs9IGxlbjtcbiAgICAgIHJldHVybiBsZW47XG4gICAgfVxuICAgIHRoaXMuZXJyX2Nsb3NlZChcIndyaXRlXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgcmVhZChidWYsIHBvcywgbGVuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKHRoaXMuZmlsZSAmJiAhdGhpcy5mbGFncy53cm9ubHkpIHtcbiAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgIGxlbiA9IHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbik7XG4gICAgICB0aGlzLm9mZnNldCArPSBsZW47XG4gICAgICByZXR1cm4gbGVuO1xuICAgIH1cbiAgICB0aGlzLmVycl9jbG9zZWQoXCJyZWFkXCIsIHJhaXNlX3VuaXgpO1xuICB9XG5cbiAgc2VlayhvZmZzZXQsIHdoZW5jZSwgcmFpc2VfdW5peCkge1xuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKVxuICAgICAgY2FtbF9yYWlzZV9zeXN0ZW1fZXJyb3IoXG4gICAgICAgIHJhaXNlX3VuaXgsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIFwibHNlZWtcIixcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcG9zKCkge1xuICAgIHJldHVybiB0aGlzLm9mZnNldDtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5maWxlKSB0aGlzLmVycl9jbG9zZWQoXCJjbG9zZVwiKTtcbiAgICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGVja19zdHJlYW1fc2VtYW50aWNzKGNtZCkge1xuICAgIGlmICghdGhpcy5maWxlKSByZXR1cm4gdGhpcy5lcnJfY2xvc2VkKGNtZCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zmc2V0XG52YXIgY2FtbF9pbnQ2NF9vZmZzZXQgPSBNYXRoLnBvdygyLCAtMjQpO1xuXG4vL1Byb3ZpZGVzOiBNbEludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuY2xhc3MgTWxJbnQ2NCB7XG4gIGNvbnN0cnVjdG9yKGxvLCBtaSwgaGkpIHtcbiAgICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmhpID0gaGkgJiAweGZmZmY7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX2pcIjtcbiAgfVxuXG4gIHN0YXRpYyBVTlNJR05FRF9NQVggPSBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmYsIDB4ZmZmZik7XG4gIHN0YXRpYyBTSUdORURfTUFYID0gbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmLCAweDdmZmYpO1xuICBzdGF0aWMgU0lHTkVEX01JTiA9IG5ldyBNbEludDY0KDB4MDAwMDAwLCAweDAwMDAwMCwgMHg4MDAwKTtcblxuICBzbGljZSgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbywgdGhpcy5taSwgdGhpcy5oaSk7XG4gIH1cblxuICB1Y29tcGFyZSh4KSB7XG4gICAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5oaSA8IHguaGkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBjb21wYXJlKHgpIHtcbiAgICB2YXIgaGkgPSB0aGlzLmhpIDw8IDE2O1xuICAgIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICAgIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gICAgaWYgKGhpIDwgeGhpKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHZhciBsbyA9IC10aGlzLmxvO1xuICAgIHZhciBtaSA9IC10aGlzLm1pICsgKGxvID4+IDI0KTtcbiAgICB2YXIgaGkgPSAtdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xuICB9XG5cbiAgYWRkKHgpIHtcbiAgICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gICAgdmFyIGhpID0gdGhpcy5oaSArIHguaGkgKyAobWkgPj4gMjQpO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbiAgfVxuXG4gIHN1Yih4KSB7XG4gICAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gICAgdmFyIG1pID0gdGhpcy5taSAtIHgubWkgKyAobG8gPj4gMjQpO1xuICAgIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBtdWwoeCkge1xuICAgIHZhciBsbyA9IHRoaXMubG8gKiB4LmxvO1xuICAgIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gICAgdmFyIGhpID1cbiAgICAgICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArXG4gICAgICB0aGlzLmhpICogeC5sbyArXG4gICAgICB0aGlzLm1pICogeC5taSArXG4gICAgICB0aGlzLmxvICogeC5oaTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG4gIH1cblxuICBpc1plcm8oKSB7XG4gICAgcmV0dXJuICh0aGlzLmxvIHwgdGhpcy5taSB8IHRoaXMuaGkpID09PSAwO1xuICB9XG5cbiAgaXNOZWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGkgPDwgMTYgPCAwO1xuICB9XG5cbiAgYW5kKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG4gIH1cblxuICBvcih4KSB7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gfCB4LmxvLCB0aGlzLm1pIHwgeC5taSwgdGhpcy5oaSB8IHguaGkpO1xuICB9XG5cbiAgeG9yKHgpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyBeIHgubG8sIHRoaXMubWkgXiB4Lm1pLCB0aGlzLmhpIF4geC5oaSk7XG4gIH1cblxuICBzaGlmdF9sZWZ0KHMpIHtcbiAgICBzID0gcyAmIDYzO1xuICAgIGlmIChzID09PSAwKSByZXR1cm4gdGhpcztcbiAgICBpZiAocyA8IDI0KSB7XG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgIHRoaXMubG8gPDwgcyxcbiAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLmhpIDw8IHMpIHwgKHRoaXMubWkgPj4gKDI0IC0gcykpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHMgPCA0OClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpLFxuICAgICAgKTtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQoMCwgMCwgdGhpcy5sbyA8PCAocyAtIDQ4KSk7XG4gIH1cblxuICBzaGlmdF9yaWdodF91bnNpZ25lZChzKSB7XG4gICAgcyA9IHMgJiA2MztcbiAgICBpZiAocyA9PT0gMCkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKHMgPCAyNClcbiAgICAgIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgICB0aGlzLmhpID4+IHMsXG4gICAgICApO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgdGhpcy5oaSA+PiAocyAtIDI0KSxcbiAgICAgICAgMCxcbiAgICAgICk7XG4gICAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMuaGkgPj4gKHMgLSA0OCksIDAsIDApO1xuICB9XG5cbiAgc2hpZnRfcmlnaHQocykge1xuICAgIHMgPSBzICYgNjM7XG4gICAgaWYgKHMgPT09IDApIHJldHVybiB0aGlzO1xuICAgIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICAgIGlmIChzIDwgMjQpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLmxvID4+IHMpIHwgKHRoaXMubWkgPDwgKDI0IC0gcykpLFxuICAgICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYsXG4gICAgICApO1xuICAgIHZhciBzaWduID0gKHRoaXMuaGkgPDwgMTYpID4+IDMxO1xuICAgIGlmIChzIDwgNDgpXG4gICAgICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSkgPj4gMTYsXG4gICAgICAgIHNpZ24gJiAweGZmZmYsXG4gICAgICApO1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCgodGhpcy5oaSA8PCAxNikgPj4gKHMgLSAzMiksIHNpZ24sIHNpZ24pO1xuICB9XG5cbiAgbHNsMSgpIHtcbiAgICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgICB0aGlzLmxvID0gKHRoaXMubG8gPDwgMSkgJiAweGZmZmZmZjtcbiAgfVxuXG4gIGxzcjEoKSB7XG4gICAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gICAgdGhpcy5oaSA9IHRoaXMuaGkgPj4+IDE7XG4gIH1cblxuICB1ZGl2bW9kKHgpIHtcbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgbW9kdWx1cyA9IHRoaXMuc2xpY2UoKTtcbiAgICB2YXIgZGl2aXNvciA9IHguc2xpY2UoKTtcbiAgICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLCAwLCAwKTtcbiAgICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICAgIG9mZnNldCsrO1xuICAgICAgZGl2aXNvci5sc2wxKCk7XG4gICAgfVxuICAgIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgICAgb2Zmc2V0LS07XG4gICAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgICBpZiAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+PSAwKSB7XG4gICAgICAgIHF1b3RpZW50LmxvKys7XG4gICAgICAgIG1vZHVsdXMgPSBtb2R1bHVzLnN1YihkaXZpc29yKTtcbiAgICAgIH1cbiAgICAgIGRpdmlzb3IubHNyMSgpO1xuICAgIH1cbiAgICByZXR1cm4geyBxdW90aWVudDogcXVvdGllbnQsIG1vZHVsdXM6IG1vZHVsdXMgfTtcbiAgfVxuXG4gIGRpdih5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgICBpZiAoeC5oaSAmIDB4ODAwMCkgeCA9IHgubmVnKCk7XG4gICAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICAgIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICAgIGlmIChzaWduICYgMHg4MDAwKSBxID0gcS5uZWcoKTtcbiAgICByZXR1cm4gcTtcbiAgfVxuXG4gIG1vZCh5KSB7XG4gICAgdmFyIHggPSB0aGlzO1xuICAgIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlKCk7XG4gICAgdmFyIHNpZ24gPSB4LmhpO1xuICAgIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gICAgdmFyIHIgPSB4LnVkaXZtb2QoeSkubW9kdWx1cztcbiAgICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICB0b0ludCgpIHtcbiAgICByZXR1cm4gdGhpcy5sbyB8ICh0aGlzLm1pIDw8IDI0KTtcbiAgfVxuXG4gIHRvRmxvYXQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkgKyB0aGlzLmxvXG4gICAgKTtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaGkgPj4gOCxcbiAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgdGhpcy5taSA+PiAxNixcbiAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgdGhpcy5sbyA+PiAxNixcbiAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgIHRoaXMubG8gJiAweGZmLFxuICAgIF07XG4gIH1cblxuICBsbzMyKCkge1xuICAgIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xuICB9XG5cbiAgaGkzMigpIHtcbiAgICByZXR1cm4gKCh0aGlzLm1pID4+PiA4KSAmIDB4ZmZmZikgfCAodGhpcy5oaSA8PCAxNik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgsIHkpIHtcbiAgcmV0dXJuIHgudWNvbXBhcmUoeSkgPCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LCB5LCBfdG90YWwpIHtcbiAgcmV0dXJuIHguY29tcGFyZSh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnKHgpIHtcbiAgcmV0dXJuIHgubmVnKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYWRkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2FkZCh4LCB5KSB7XG4gIHJldHVybiB4LmFkZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViKHgsIHkpIHtcbiAgcmV0dXJuIHguc3ViKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgsIHkpIHtcbiAgcmV0dXJuIHgubXVsKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7XG4gIHJldHVybiAreC5pc1plcm8oKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSB7XG4gIHJldHVybiAreC5pc05lZygpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQoeCwgeSkge1xuICByZXR1cm4geC5hbmQoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IoeCwgeSkge1xuICByZXR1cm4geC5vcih5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yKHgsIHkpIHtcbiAgcmV0dXJuIHgueG9yKHkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X2xlZnQocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgcykge1xuICByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCh4LCBzKSB7XG4gIHJldHVybiB4LnNoaWZ0X3JpZ2h0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdlxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYoeCwgeSkge1xuICByZXR1cm4geC5kaXYoeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbW9kXG5mdW5jdGlvbiBjYW1sX2ludDY0X21vZCh4LCB5KSB7XG4gIHJldHVybiB4Lm1vZCh5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuLy9BbGlhczogY2FtbF9pbnQ2NF9vZl9pbnRcbi8vQWxpYXM6IGNhbWxfaW50NjRfb2ZfbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2ludDMyKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9faW50MzIgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50NjRfdG9faW50XG4vL0FsaWFzOiBjYW1sX2ludDY0X3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMih4KSB7XG4gIHJldHVybiB4LnRvSW50KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fZmxvYXQoeCkge1xuICByZXR1cm4geC50b0Zsb2F0KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2Zsb2F0KHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQoZm10LCB4KSB7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGYuc2lnbmVkY29udiAmJiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSBcIiBcIjtcbiAgICB2YXIgbiA9IGYucHJlYyAtIGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBidWZmZXIgPSBjYW1sX3N0cl9yZXBlYXQobiwgXCIwXCIpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZShzKTtcbiAgdmFyIGkgPSByWzBdLFxuICAgIHNpZ24gPSByWzFdLFxuICAgIGJhc2UgPSByWzJdLFxuICAgIHNpZ25lZG5lc3MgPSByWzNdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9IE1sSW50NjQuVU5TSUdORURfTUFYLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJJbnQ2NC5vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICAgIGQgPSBjYW1sX2ludDY0X29mX2ludDMyKGQpO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfYWRkKGNhbWxfaW50NjRfbXVsKGJhc2U2NCwgcmVzKSwgZCk7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIGFkZGl0aW9uIChiYXNlICogcmVzKSArIGQgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQocmVzLCBkKSkgY2FtbF9mYWlsd2l0aChcIkludDY0Lm9mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoXG4gICAgc2lnbmVkbmVzcyAmJlxuICAgIGNhbWxfaW50NjRfdWx0KHNpZ24gPCAwID8gTWxJbnQ2NC5TSUdORURfTUlOIDogTWxJbnQ2NC5TSUdORURfTUFYLCByZXMpXG4gIClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW50NjQub2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZixcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbG8zMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9sbzMyKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hpMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGkzMih2KSB7XG4gIHJldHVybiB2LmhpMzIoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICAoYVs3XSA8PCAwKSB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgIChhWzRdIDw8IDApIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgKGFbMV0gPDwgMCkgfCAoYVswXSA8PCA4KSxcbiAgKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkge1xuICByZXR1cm4geC50b0FycmF5KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGFzaCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oYXNoKHYpIHtcbiAgcmV0dXJuIHYubG8zMigpIF4gdi5oaTMyKCk7XG59XG4iLCIvL1Byb3ZpZGVzOiBNbE11dGV4XG5jbGFzcyBNbE11dGV4IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2NrZWQgPSBmYWxzZTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYgKHQubG9ja2VkKSBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYgKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHMuX25hdCA9IHtcbiAgICBkZXNlcmlhbGl6ZTogZGVzZXJpYWxpemVfbmF0LFxuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplX25hdCxcbiAgICBoYXNoOiBjYW1sX2hhc2hfbmF0LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuY2xhc3MgTWxOYXQge1xuICBjb25zdHJ1Y3Rvcih4KSB7XG4gICAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gICAgLy8gRm9yIG51bSA8IDEuNVxuICAgIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgICAvLyB3b3JrIG91dCByaWdodC5cbiAgICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgICAvLyAtICsxIGZvciB0aGUgdGFnXG4gICAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDI7XG4gICAgdGhpcy5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpIHtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzICsgaV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0gbmF0Mi5kYXRhW29mczIgKyBpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQuZGF0YVtvZnMgKyBpXSAhPT0gMCkgcmV0dXJuIGkgKyAxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZiAoYSAmIDB4ZmZmZjAwMDApIHtcbiAgICBiICs9IDE2O1xuICAgIGEgPj4+PSAxNjtcbiAgfVxuICBpZiAoYSAmIDB4ZmYwMCkge1xuICAgIGIgKz0gODtcbiAgICBhID4+Pj0gODtcbiAgfVxuICBpZiAoYSAmIDB4ZjApIHtcbiAgICBiICs9IDQ7XG4gICAgYSA+Pj49IDQ7XG4gIH1cbiAgaWYgKGEgJiAxMikge1xuICAgIGIgKz0gMjtcbiAgICBhID4+Pj0gMjtcbiAgfVxuICBpZiAoYSAmIDIpIHtcbiAgICBiICs9IDE7XG4gICAgYSA+Pj49IDE7XG4gIH1cbiAgaWYgKGEgJiAxKSB7XG4gICAgYiArPSAxO1xuICB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA9PT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9ub3JtYWxpemVkXG5mdW5jdGlvbiBpc19kaWdpdF9ub3JtYWxpemVkKF9uYXQsIF9vZnMpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHggfCAwO1xuICAgIGlmICh4ID09PSB4ID4+PiAwKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMSArIGldID0geDtcbiAgICBpZiAoeCA9PT0geCA+Pj4gMCkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcyArIGldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMgKyBpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gY2FycnlfaW4gPT09IDEgPyAwIDogMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcyArIGldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMgKyBpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYm9ycm93ID09PSAxID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSBjYXJyeV9pbiA9PT0gMSA/IDAgOiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxICsgbGVuMiwgbGVuMSAtIGxlbjIsIGJvcnJvdyA9PT0gMSA/IDAgOiAxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gbmF0My5kYXRhW29mczNdID4+PiAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9XG4gICAgICAobmF0MS5kYXRhW29mczEgKyBpXSA+Pj4gMCkgK1xuICAgICAgKG5hdDIuZGF0YVtvZnMyICsgaV0gPj4+IDApICogKGEgJiAweDAwMDBmZmZmKSArXG4gICAgICBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4MiAvIDY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzIC8gNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZiAobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgbGVuMixcbiAgICAgIGxlbjEgLSBsZW4yLFxuICAgICAgbmF0X29mX2FycmF5KFtjYXJyeV0pLFxuICAgICAgMCxcbiAgICAgIDEsXG4gICAgICAwLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChcbiAgICAgIG5hdDEsXG4gICAgICBvZnMxICsgaSxcbiAgICAgIGxlbjEgLSBpLFxuICAgICAgbmF0MixcbiAgICAgIG9mczIsXG4gICAgICBsZW4yLFxuICAgICAgbmF0MyxcbiAgICAgIG9mczMgKyBpLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZiAobmJpdHMgPT09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiID4+PiAxNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4IC8gYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwZmZmZik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3IodyAvIGMpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IG5hdDEuZGF0YVtvZnMxICsgbGVuIC0gMV0gPj4+IDA7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvciAodmFyIGkgPSBsZW4gLSAyOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsIG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCk7XG4gICAgbmF0cS5kYXRhW29mc3EgKyBpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZiAobGVuMiA9PT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSArIDEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMiArIGxlbjIgLSAxKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIgKyBsZW4yIC0gMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIgKyAxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID1cbiAgICAgIGQgPT09IDQyOTQ5NjcyOTZcbiAgICAgICAgPyBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwXG4gICAgICAgIDogZGl2X2hlbHBlcihcbiAgICAgICAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAsXG4gICAgICAgICAgICBuYXQxLmRhdGFbb2ZzMSArIGkgLSAxXSA+Pj4gMCxcbiAgICAgICAgICAgIGQsXG4gICAgICAgICAgKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMiArIDEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIgKyAxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiArIDEsIGEsIDAsIGxlbjIgKyAxLCAxKTtcblxuICAgIHdoaWxlIChcbiAgICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gIT09IDAgfHxcbiAgICAgIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEgKyBpIC0gbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMFxuICAgICkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMSArIGkgLSBsZW4yLCBsZW4yICsgMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEgKyBpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmIChuYml0cyA9PT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxICsgaV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYgKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmIChuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChuYXQxLmRhdGFbb2ZzMSArIGldID4+PiAwID4gbmF0Mi5kYXRhW29mczIgKyBpXSA+Pj4gMCkgcmV0dXJuIDE7XG4gICAgaWYgKG5hdDEuZGF0YVtvZnMxICsgaV0gPj4+IDAgPCBuYXQyLmRhdGFbb2ZzMiArIGldID4+PiAwKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeikge1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3opIHtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBqc29vX2lzX3dpbjMyXG52YXIganNvb19pc193aW4zMiA9XG4gIGdsb2JhbFRoaXMuRGVubz8uYnVpbGQ/Lm9zID09PSBcIndpbmRvd3NcIiB8fFxuICBnbG9iYWxUaGlzLnByb2Nlc3M/LnBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/Lm5vZGUgIT09IHVuZGVmaW5lZDtcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHNcbi8vUmVxdWlyZXM6IGpzb29faXNfd2luMzJcbmNsYXNzIE1sTm9kZURldmljZSB7XG4gIGNvbnN0cnVjdG9yKHJvb3QpIHtcbiAgICB0aGlzLmZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgdGhpcy5yb290ID0gcm9vdDtcbiAgfVxuXG4gIG5tKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5yb290ICsgbmFtZTtcbiAgfVxuXG4gIGV4aXN0cyhuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIGlzRmlsZShuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpID8gMSA6IDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9XG5cbiAgbWtkaXIobmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLCB7IG1vZGU6IG1vZGUgfSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgcm1kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICByZWFkZGlyKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGlzX2RpcihuYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCkgPyAxIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB1bmxpbmsobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgdXRpbWVzKG5hbWUsIGF0aW1lLCBtdGltZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXRpbWUgPT09IDAgJiYgbXRpbWUgPT09IDApIHtcbiAgICAgICAgYXRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gICAgICAgIG10aW1lID0gYXRpbWU7XG4gICAgICB9XG4gICAgICB0aGlzLmZzLnV0aW1lc1N5bmModGhpcy5ubShuYW1lKSwgYXRpbWUsIG10aW1lKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICB0cnVuY2F0ZShuYW1lLCBsZW4sIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy50cnVuY2F0ZVN5bmModGhpcy5ubShuYW1lKSwgbGVuIHwgMCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgICB2YXIgY29uc3RzID0gdGhpcy5mcy5jb25zdGFudHM7XG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIga2V5IGluIGYpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgXCJyXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5SX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwid1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuV19PSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgICByZXMgfD0ganNvb19pc193aW4zMiA/IGNvbnN0cy5SX09LIDogY29uc3RzLlhfT0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5GX09LO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5hY2Nlc3NTeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbihuYW1lLCBmLCBwZXJtcywgcmFpc2VfdW5peCkge1xuICAgIHZhciBjb25zdHMgPSB0aGlzLmZzLmNvbnN0YW50cztcbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBrZXkgaW4gZikge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInJkb25seVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRE9OTFk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ3cm9ubHlcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicmR3clwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19SRFdSO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXBwZW5kXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNyZWF0ZVwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19DUkVBVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRydW5jYXRlXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX1RSVU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZXhjbFwiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19FWENMO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICByZXMgfD0gY29uc3RzLk9fVEVYVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vbmJsb2NrXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm9jdHR5XCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX05PQ1RUWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRzeW5jXCI6XG4gICAgICAgICAgcmVzIHw9IGNvbnN0cy5PX0RTWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3luY1wiOlxuICAgICAgICAgIHJlcyB8PSBjb25zdHMuT19TWU5DO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0cnkge1xuICAgICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMsIHBlcm1zKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBzbGFzaChuYW1lKSB7XG4gICAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpID8gbmFtZSA6IG5hbWUgKyBcIi9cIjtcbiAgfVxuXG4gIHJlbmFtZShvLCBuLCByYWlzZV91bml4KSB7XG4gICAgaWYgKGpzb29faXNfd2luMzIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLm5tKG4pO1xuICAgICAgICB2YXIgc291cmNlID0gdGhpcy5ubShvKTtcbiAgICAgICAgdmFyIHRhcmdldF9zdGF0cywgc291cmNlX3N0YXRzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRhcmdldF9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGFyZ2V0LCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgKHNvdXJjZV9zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmMoc291cmNlLCB7XG4gICAgICAgICAgICB0aHJvd0lmTm9FbnRyeTogZmFsc2UsXG4gICAgICAgICAgfSkpICYmXG4gICAgICAgICAgc291cmNlX3N0YXRzLmlzRGlyZWN0b3J5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRhcmdldF9zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2xhc2godGFyZ2V0KS5zdGFydHNXaXRoKHRoaXMuc2xhc2goc291cmNlKSkpXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mcy5ybWRpclN5bmModGFyZ2V0KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgRU5PVERJUjogbm90IGEgZGlyZWN0b3J5LCByZW5hbWUgJyR7c291cmNlfScgLT4gJyR7dGFyZ2V0fSdgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oZXJyLCB7XG4gICAgICAgICAgICAgIGVycm5vOiAtMjAsXG4gICAgICAgICAgICAgIGNvZGU6IFwiRU5PVERJUlwiLFxuICAgICAgICAgICAgICBzeXNjYWxsOiBcInJlbmFtZVwiLFxuICAgICAgICAgICAgICBwYXRoOiB0YXJnZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgbHN0YXQobmFtZSwgbGFyZ2UsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgICByZXR1cm4gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNobW9kKG5hbWUsIHBlcm1zLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2htb2RTeW5jKHRoaXMubm0obmFtZSksIHBlcm1zKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBsaW5rKHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG5cbiAgc3ltbGluayh0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHRoaXMubm0ocGF0aCksXG4gICAgICAgIHRvX2RpciA9PT0gMCA/IG51bGwgOiB0b19kaXJbMV0gPyBcImRpclwiIDogXCJmaWxlXCIsXG4gICAgICApO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRsaW5rKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCBcInV0ZjhcIik7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5kaXIobmFtZSwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IG9jYW1sX3N0YXRzX2Zyb21fbm9kZV9zdGF0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdFxuZnVuY3Rpb24gb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzKGpzX3N0YXRzLCBsYXJnZSkge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vIHwgMCxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAgbGFyZ2UgPyBjYW1sX2ludDY0X29mX2Zsb2F0KGpzX3N0YXRzLnNpemUpIDoganNfc3RhdHMuc2l6ZSB8IDAsXG4gICAganNfc3RhdHMuYXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMubXRpbWVNcyAvIDEwMDAsXG4gICAganNfc3RhdHMuY3RpbWVNcyAvIDEwMDAsXG4gICk7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuY2xhc3MgTWxOb2RlRGV2aWNlIHt9XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yLCBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvciwgb2NhbWxfc3RhdHNfZnJvbV9ub2RlX3N0YXRzXG5jbGFzcyBNbE5vZGVGZCBleHRlbmRzIE1sRmlsZSB7XG4gIGNvbnN0cnVjdG9yKGZkLCBmbGFncykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mcyA9IHJlcXVpcmUoXCJub2RlOmZzXCIpO1xuICAgIHRoaXMuZmQgPSBmZDtcbiAgICB0aGlzLmZsYWdzID0gZmxhZ3M7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBzdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKGZkKTtcbiAgICAgIGZsYWdzLm5vU2VlayA9XG4gICAgICAgIHN0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHwgc3RhdHMuaXNGSUZPKCkgfHwgc3RhdHMuaXNTb2NrZXQoKTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5mbGFncy5hcHBlbmQgPyBzdGF0cy5zaXplIDogMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIFRoZSBmc3RhdCB3aWxsIGZhaWwgb24gc3RhbmRhcmQgc3RyZWFtcyB1bmRlciBXaW5kb3dzIHdpdGggbm9kZVxuICAgICAgLy8gMTggKGFuZCBsb3dlcikuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvcHVsbC8zODExLlxuICAgICAgZmxhZ3Mubm9TZWVrID0gdHJ1ZTtcbiAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5zZWVrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHRydW5jYXRlKGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCwgbGVuIHwgMCk7XG4gICAgICBpZiAodGhpcy5vZmZzZXQgPiBsZW4pIHRoaXMub2Zmc2V0ID0gbGVuO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgICB9XG4gIH1cblxuICBpc2F0dHkoKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoXCJub2RlOnR0eVwiKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eSh0aGlzLmZkKSA/IDEgOiAwO1xuICB9XG5cbiAgbGVuZ3RoKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZShidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgcmFpc2VfdW5peCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5mbGFncy5ub1NlZWsgfHwgIXRoaXMuc2Vla2VkKSB7XG4gICAgICAgIHZhciB3cml0dGVuID0gdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHdyaXR0ZW4gPSB0aGlzLmZzLndyaXRlU3luYyhcbiAgICAgICAgICB0aGlzLmZkLFxuICAgICAgICAgIGJ1ZixcbiAgICAgICAgICBidWZfb2Zmc2V0LFxuICAgICAgICAgIGxlbixcbiAgICAgICAgICB0aGlzLm9mZnNldCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub2Zmc2V0ICs9IHdyaXR0ZW47XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdHRlbjtcbiAgfVxuXG4gIHJlYWQoYSwgYnVmX29mZnNldCwgbGVuLCByYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLmZsYWdzLm5vU2VlayB8fCAhdGhpcy5zZWVrZWQpIHtcbiAgICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCB0aGlzLm9mZnNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9mZnNldCArPSByZWFkO1xuICAgICAgcmV0dXJuIHJlYWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIHNlZWsob2Zmc2V0LCB3aGVuY2UsIHJhaXNlX3VuaXgpIHtcbiAgICBpZiAodGhpcy5mbGFncy5ub1NlZWspIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKHJhaXNlX3VuaXgsIFwiRVNQSVBFXCIsIFwibHNlZWtcIiwgXCJpbGxlZ2FsIHNlZWtcIik7XG4gICAgfVxuICAgIHN3aXRjaCAod2hlbmNlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPCAwKSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c3RlbV9lcnJvcihcbiAgICAgICAgcmFpc2VfdW5peCxcbiAgICAgICAgXCJFSU5WQUxcIixcbiAgICAgICAgXCJsc2Vla1wiLFxuICAgICAgICBcImludmFsaWQgYXJndW1lbnRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgIHRoaXMuc2Vla2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5vZmZzZXQ7XG4gIH1cblxuICBwb3MoKSB7XG4gICAgcmV0dXJuIHRoaXMub2Zmc2V0O1xuICB9XG5cbiAgc3RhdChsYXJnZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKTtcbiAgICAgIHJldHVybiBvY2FtbF9zdGF0c19mcm9tX25vZGVfc3RhdHMoanNfc3RhdHMsIGxhcmdlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjaG1vZChwZXJtcykge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmZzLmZjaG1vZFN5bmModGhpcy5mZCwgcGVybXMpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gMSk7XG4gICAgfVxuICB9XG5cbiAgc3luYygpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5mcy5mc3luY1N5bmModGhpcy5mZCk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgLyogcmFpc2UgVW5peF9lcnJvciAqLyAxKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShyYWlzZV91bml4KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjYW1sX3JhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrX3N0cmVhbV9zZW1hbnRpY3MoY21kKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsIGNtZCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIGpzX3N0YXRzLmlzRmlsZSgpIHx8XG4gICAgICAgIGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNGSUZPKCkgfHxcbiAgICAgICAganNfc3RhdHMuaXNTb2NrZXQoKVxuICAgICAgKVxuICAgIClcbiAgICAgIGNhbWxfcmFpc2Vfc3lzdGVtX2Vycm9yKFxuICAgICAgICAvKiByYWlzZSBVbml4X2Vycm9yICovIDEsXG4gICAgICAgIFwiRUlOVkFMXCIsXG4gICAgICAgIGNtZCxcbiAgICAgICAgXCJpbnZhbGlkIGFyZ3VtZW50XCIsXG4gICAgICApO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5jbGFzcyBNbE5vZGVGZCB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpIHtcbiAgaWYgKGZsYWdzLmFsdG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcIm5vZGU6ZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MuYWx0bmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoX2ZkLCBfZmxhZ3MpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm9kZWpzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncywgbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4LCBjbWQpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoXG4gICAgICBlcnIuY29kZSxcbiAgICAgIGNtZCB8fCBlcnIuc3lzY2FsbCxcbiAgICAgIGVyci5wYXRoLFxuICAgICAgZXJyLmVycm5vLFxuICAgICk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxudmFyIGNhbWxfdW5wYWNrRmxvYXQxNiA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBwb3cgPSBNYXRoLnBvdztcblxuICB2YXIgRVhQX01BU0sxNiA9IDMxOyAvLyAyICoqIDUgLSAxXG4gIHZhciBTSUdOSUZJQ0FORF9NQVNLMTYgPSAxMDIzOyAvLyAyICoqIDEwIC0gMVxuICB2YXIgTUlOX1NVQk5PUk1BTDE2ID0gcG93KDIsIC0yNCk7IC8vIDIgKiogLTEwICogMiAqKiAtMTRcbiAgdmFyIFNJR05JRklDQU5EX0RFTk9NMTYgPSAwLjAwMDk3NjU2MjU7IC8vIDIgKiogLTEwXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChieXRlcykge1xuICAgIHZhciBzaWduID0gYnl0ZXMgPj4+IDE1O1xuICAgIHZhciBleHBvbmVudCA9IChieXRlcyA+Pj4gMTApICYgRVhQX01BU0sxNjtcbiAgICB2YXIgc2lnbmlmaWNhbmQgPSBieXRlcyAmIFNJR05JRklDQU5EX01BU0sxNjtcbiAgICBpZiAoZXhwb25lbnQgPT09IEVYUF9NQVNLMTYpXG4gICAgICByZXR1cm4gc2lnbmlmaWNhbmQgPT09IDBcbiAgICAgICAgPyBzaWduID09PSAwXG4gICAgICAgICAgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICA6IE51bWJlci5ORUdBVElWRV9JTkZJTklUWVxuICAgICAgICA6IE51bWJlci5OYU47XG4gICAgaWYgKGV4cG9uZW50ID09PSAwKVxuICAgICAgcmV0dXJuIHNpZ25pZmljYW5kICogKHNpZ24gPT09IDAgPyBNSU5fU1VCTk9STUFMMTYgOiAtTUlOX1NVQk5PUk1BTDE2KTtcbiAgICB2YXIgciA9XG4gICAgICBwb3coMiwgZXhwb25lbnQgLSAxNSkgKlxuICAgICAgKHNpZ24gPT09IDBcbiAgICAgICAgPyAxICsgc2lnbmlmaWNhbmQgKiBTSUdOSUZJQ0FORF9ERU5PTTE2XG4gICAgICAgIDogLTEgLSBzaWduaWZpY2FuZCAqIFNJR05JRklDQU5EX0RFTk9NMTYpO1xuICAgIHJldHVybiByO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9wYWNrRmxvYXQxNlxudmFyIGNhbWxfcGFja0Zsb2F0MTYgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBJTlZFUlNFX09GX0VQU0lMT04gPSAxIC8gTnVtYmVyLkVQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUaWVzVG9FdmVuKG51bSkge1xuICAgIHJldHVybiBudW0gKyBJTlZFUlNFX09GX0VQU0lMT04gLSBJTlZFUlNFX09GX0VQU0lMT047XG4gIH1cblxuICBjb25zdCBGTE9BVDE2X01JTl9WQUxVRSA9IDYuMTAzNTE1NjI1ZS01O1xuICBjb25zdCBGTE9BVDE2X01BWF9WQUxVRSA9IDY1NTA0O1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT04gPSAwLjAwMDk3NjU2MjU7XG5cbiAgY29uc3QgRkxPQVQxNl9FUFNJTE9OX01VTFRJUExJRURfQllfRkxPQVQxNl9NSU5fVkFMVUUgPVxuICAgIEZMT0FUMTZfRVBTSUxPTiAqIEZMT0FUMTZfTUlOX1ZBTFVFO1xuICBjb25zdCBGTE9BVDE2X0VQU0lMT05fREVWSURFRF9CWV9FUFNJTE9OID1cbiAgICBGTE9BVDE2X0VQU0lMT04gKiBJTlZFUlNFX09GX0VQU0lMT047XG5cbiAgZnVuY3Rpb24gcm91bmRUb0Zsb2F0MTYobnVtKSB7XG4gICAgY29uc3QgbnVtYmVyID0gK251bTtcblxuICAgIC8vIE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSwgMCwgLTBcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpIHx8IG51bWJlciA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvLyBmaW5pdGUgZXhjZXB0IDAsIC0wXG4gICAgY29uc3Qgc2lnbiA9IG51bWJlciA+IDAgPyAxIDogLTE7XG4gICAgY29uc3QgYWJzb2x1dGUgPSBNYXRoLmFicyhudW1iZXIpO1xuXG4gICAgLy8gc21hbGwgbnVtYmVyXG4gICAgaWYgKGFic29sdXRlIDwgRkxPQVQxNl9NSU5fVkFMVUUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNpZ24gKlxuICAgICAgICByb3VuZFRpZXNUb0V2ZW4oXG4gICAgICAgICAgYWJzb2x1dGUgLyBGTE9BVDE2X0VQU0lMT05fTVVMVElQTElFRF9CWV9GTE9BVDE2X01JTl9WQUxVRSxcbiAgICAgICAgKSAqXG4gICAgICAgIEZMT0FUMTZfRVBTSUxPTl9NVUxUSVBMSUVEX0JZX0ZMT0FUMTZfTUlOX1ZBTFVFXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXAgPSAoMSArIEZMT0FUMTZfRVBTSUxPTl9ERVZJREVEX0JZX0VQU0lMT04pICogYWJzb2x1dGU7XG4gICAgY29uc3QgcmVzdWx0ID0gdGVtcCAtICh0ZW1wIC0gYWJzb2x1dGUpO1xuXG4gICAgLy8gbGFyZ2UgbnVtYmVyXG4gICAgaWYgKHJlc3VsdCA+IEZMT0FUMTZfTUFYX1ZBTFVFIHx8IE51bWJlci5pc05hTihyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gc2lnbiAqIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbiAqIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGJhc2UgYWxnb3JpdGhtOiBodHRwOi8vZm94LXRvb2xraXQub3JnL2Z0cC9mYXN0aGFsZmZsb2F0Y29udmVyc2lvbi5wZGZcblxuICBjb25zdCBiYXNlVGFibGUgPSBuZXcgVWludDE2QXJyYXkoNTEyKTtcbiAgY29uc3Qgc2hpZnRUYWJsZSA9IG5ldyBVaW50OEFycmF5KDUxMik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgIGNvbnN0IGUgPSBpIC0gMTI3O1xuXG4gICAgLy8gdmVyeSBzbWFsbCBudW1iZXIgKDAsIC0wKVxuICAgIGlmIChlIDwgLTI0KSB7XG4gICAgICBiYXNlVGFibGVbaV0gPSAweDAwMDA7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAyNDtcbiAgICAgIHNoaWZ0VGFibGVbaSB8IDB4MTAwXSA9IDI0O1xuXG4gICAgICAvLyBzbWFsbCBudW1iZXIgKGRlbm9ybSlcbiAgICB9IGVsc2UgaWYgKGUgPCAtMTQpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4MDQwMCA+PiAoLWUgLSAxNCk7XG4gICAgICBiYXNlVGFibGVbaSB8IDB4MTAwXSA9ICgweDA0MDAgPj4gKC1lIC0gMTQpKSB8IDB4ODAwMDtcbiAgICAgIHNoaWZ0VGFibGVbaV0gPSAtZSAtIDE7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAtZSAtIDE7XG5cbiAgICAgIC8vIG5vcm1hbCBudW1iZXJcbiAgICB9IGVsc2UgaWYgKGUgPD0gMTUpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IChlICsgMTUpIDw8IDEwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAoKGUgKyAxNSkgPDwgMTApIHwgMHg4MDAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDEzO1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMTM7XG5cbiAgICAgIC8vIGxhcmdlIG51bWJlciAoSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2UgaWYgKGUgPCAxMjgpIHtcbiAgICAgIGJhc2VUYWJsZVtpXSA9IDB4N2MwMDtcbiAgICAgIGJhc2VUYWJsZVtpIHwgMHgxMDBdID0gMHhmYzAwO1xuICAgICAgc2hpZnRUYWJsZVtpXSA9IDI0O1xuICAgICAgc2hpZnRUYWJsZVtpIHwgMHgxMDBdID0gMjQ7XG5cbiAgICAgIC8vIHN0YXkgKE5hTiwgSW5maW5pdHksIC1JbmZpbml0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgYmFzZVRhYmxlW2ldID0gMHg3YzAwO1xuICAgICAgYmFzZVRhYmxlW2kgfCAweDEwMF0gPSAweGZjMDA7XG4gICAgICBzaGlmdFRhYmxlW2ldID0gMTM7XG4gICAgICBzaGlmdFRhYmxlW2kgfCAweDEwMF0gPSAxMztcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoNCk7XG4gIGNvbnN0IGZsb2F0VmlldyA9IG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgY29uc3QgdWludDMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuXG4gIHJldHVybiBmdW5jdGlvbiAobnVtKSB7XG4gICAgZmxvYXRWaWV3WzBdID0gcm91bmRUb0Zsb2F0MTYobnVtKTtcbiAgICBjb25zdCBmID0gdWludDMyVmlld1swXTtcbiAgICBjb25zdCBlID0gKGYgPj4gMjMpICYgMHgxZmY7XG4gICAgcmV0dXJuIGJhc2VUYWJsZVtlXSArICgoZiAmIDB4MDA3ZmZmZmYpID4+IHNoaWZ0VGFibGVbZV0pO1xuICB9O1xufSkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgNzpcbiAgICBjYXNlIDEwOlxuICAgIGNhc2UgMTE6XG4gICAgICByZXR1cm4gMjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKSB7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIDA6XG4gICAgICB2aWV3ID0gRmxvYXQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgdmlldyA9IEZsb2F0NjRBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHZpZXcgPSBJbnQ4QXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICB2aWV3ID0gVWludDhBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIHZpZXcgPSBJbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgdmlldyA9IFVpbnQxNkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6XG4gICAgICB2aWV3ID0gSW50MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIHZpZXcgPSBJbnQzMkFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAgdmlldyA9IEludDMyQXJyYXk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgdmlldyA9IEZsb2F0MzJBcnJheTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICB2aWV3ID0gRmxvYXQ2NEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHZpZXcgPSBVaW50OEFycmF5O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMzpcbiAgICAgIHZpZXcgPSBVaW50MTZBcnJheTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIjtcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG4vL1JlcXVpcmVzOiBjYW1sX3BhY2tGbG9hdDE2LCBjYW1sX3VucGFja0Zsb2F0MTZcbmNsYXNzIE1sX0JpZ2FycmF5IHtcbiAgY29uc3RydWN0b3Ioa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuZGltcyA9IGRpbXM7XG4gICAgdGhpcy5kYXRhID0gYnVmZmVyO1xuICAgIHRoaXMuY2FtbF9jdXN0b20gPSBjYW1sX2JhX2N1c3RvbV9uYW1lO1xuICB9XG5cbiAgb2Zmc2V0KGFyZykge1xuICAgIHZhciBvZnMgPSAwO1xuICAgIGlmICh0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJnKSlcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ2FycmF5LmpzOiBpbnZhbGlkIG9mZnNldFwiKTtcbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYXJnLmxlbmd0aClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgICBpZiAodGhpcy5sYXlvdXQgPT09IDAgLyogY19sYXlvdXQgKi8pIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgb2ZzID0gb2ZzICogdGhpcy5kaW1zW2ldICsgYXJnW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmIChhcmdbaV0gPCAxIHx8IGFyZ1tpXSA+IHRoaXMuZGltc1tpXSkge1xuICAgICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBvZnMgPSBvZnMgKiB0aGlzLmRpbXNbaV0gKyAoYXJnW2ldIC0gMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZnM7XG4gIH1cblxuICBnZXQob2ZzKSB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgICAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLCBoKTtcbiAgICAgIGNhc2UgMTA6XG4gICAgICBjYXNlIDExOlxuICAgICAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgICAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICAgICAgcmV0dXJuIFsyNTQsIHIsIGldO1xuICAgICAgY2FzZSAxMzpcbiAgICAgICAgcmV0dXJuIGNhbWxfdW5wYWNrRmxvYXQxNih0aGlzLmRhdGFbb2ZzXSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW29mc107XG4gICAgfVxuICB9XG5cbiAgc2V0KG9mcywgdikge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIC8vIEludDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMF0gPSB2WzFdO1xuICAgICAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGFbb2ZzXSA9IGNhbWxfcGFja0Zsb2F0MTYodik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSA3OlxuICAgICAgICAvLyBJbnQ2NFxuICAgICAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gYSA6IGI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgICAgIHZhciBpbSA9IHZbMV07XG4gICAgICAgIHZhciByZSA9IHZbMl07XG4gICAgICAgIGlmIChpbSA9PT0gcmUpIHtcbiAgICAgICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpXSA9IGkgJSAyID09PSAwID8gaW0gOiByZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICB0aGlzLmRhdGEuZmlsbChjYW1sX3BhY2tGbG9hdDE2KHYpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZShiLCB0b3RhbCkge1xuICAgIGlmICh0aGlzLmxheW91dCAhPT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9PSBiLmtpbmQpIHtcbiAgICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICAgIHZhciBrMiA9IGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICAgIHJldHVybiBrMiAtIGsxO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPT0gYi5kaW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGlmICh0aGlzLmRpbXNbaV0gIT09IGIuZGltc1tpXSkgcmV0dXJuIHRoaXMuZGltc1tpXSA8IGIuZGltc1tpXSA/IC0xIDogMTtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAxMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIC8vIEZsb2F0c1xuICAgICAgICB2YXIgeCwgeTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB4ID0gdGhpcy5kYXRhW2ldO1xuICAgICAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICAgICAgaWYgKHggPCB5KSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoeCAhPT0geSkge1xuICAgICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE51bWJlci5OYU47XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih5KSkgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgLy8gSW50NjRcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA8IGIuZGF0YVtpICsgMV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2kgKyAxXSA+IGIuZGF0YVtpICsgMV0pIHJldHVybiAxO1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPj4+IDAgPCBiLmRhdGFbaV0gPj4+IDApIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4+PiAwID4gYi5kYXRhW2ldID4+PiAwKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGFhID0gY2FtbF91bnBhY2tGbG9hdDE2KHRoaXMuZGF0YVtpXSk7XG4gICAgICAgICAgdmFyIGJiID0gY2FtbF91bnBhY2tGbG9hdDE2KGIuZGF0YVtpXSk7XG4gICAgICAgICAgaWYgKGFhIDwgYmIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYWEgPiBiYikgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDk6XG4gICAgICBjYXNlIDEyOlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmNsYXNzIE1sX0JpZ2FycmF5X2NfMV8xIGV4dGVuZHMgTWxfQmlnYXJyYXkge1xuICBvZmZzZXQoYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCA9PT0gMSkgYXJnID0gYXJnWzBdO1xuICAgICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gICAgfVxuICAgIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgZ2V0KG9mcykge1xuICAgIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbiAgfVxuXG4gIHNldChvZnMsIHYpIHtcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBmaWxsKHYpIHtcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLCBiLCB0b3RhbCkge1xuICByZXR1cm4gYS5jb21wYXJlKGIsIHRvdGFsKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSkge1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmIChjYW1sX2JhX2dldF9zaXplKGRpbXMpICogc2l6ZV9wZXJfZWxlbWVudCAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmIChcbiAgICBsYXlvdXQgPT09IDAgJiYgLy8gY19sYXlvdXRcbiAgICBkaW1zLmxlbmd0aCA9PT0gMSAmJiAvLyBBcnJheTFcbiAgICBzaXplX3Blcl9lbGVtZW50ID09PSAxICYmXG4gICAga2luZCAhPT0gMTMgLy8gZmxvYXQxNlxuICApXG4gICAgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlKGtpbmQsIGxheW91dCwgZGltc19tbCkge1xuICB2YXIgZGltcyA9IGNhbWxfanNfZnJvbV9hcnJheShkaW1zX21sKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfY2hhbmdlX2xheW91dChiYSwgbGF5b3V0KSB7XG4gIGlmIChiYS5sYXlvdXQgPT09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIG5ld19kaW1zW2ldID0gYmEuZGltc1tiYS5kaW1zLmxlbmd0aCAtIGkgLSAxXTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBsYXlvdXQsIG5ld19kaW1zLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kXG5mdW5jdGlvbiBjYW1sX2JhX2tpbmQoYmEpIHtcbiAgcmV0dXJuIGJhLmtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbGF5b3V0XG5mdW5jdGlvbiBjYW1sX2JhX2xheW91dChiYSkge1xuICByZXR1cm4gYmEubGF5b3V0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX251bV9kaW1zXG5mdW5jdGlvbiBjYW1sX2JhX251bV9kaW1zKGJhKSB7XG4gIHJldHVybiBiYS5kaW1zLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9kaW1cbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9kaW0oYmEsIGkpIHtcbiAgaWYgKGkgPCAwIHx8IGkgPj0gYmEuZGltcy5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiBiMSB8IChiMiA8PCA4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQzMihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMgKyAwKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcyArIDEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzICsgMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMgKyAzKTtcbiAgcmV0dXJuIChiMSA8PCAwKSB8IChiMiA8PCA4KSB8IChiMyA8PCAxNikgfCAoYjQgPDwgMjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDY0KGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyArIDApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMgKyAyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyArIDMpO1xuICB2YXIgYjUgPSBiYS5nZXQob2ZzICsgNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMgKyA1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcyArIDYpO1xuICB2YXIgYjggPSBiYS5nZXQob2ZzICsgNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCwgYjcsIGI2LCBiNSwgYjQsIGIzLCBiMiwgYjFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMShiYSwgaTApIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoaTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfMihiYSwgaTAsIGkxKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfZ2VuZXJpYyhiYSwgaSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmIChvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMgKyAwLCB2ICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZiAob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzICsgMCwgdiAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzICsgMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMgKyAzLCAodiA+Pj4gMjQpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDY0KGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYgKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcyArIGksIHZbNyAtIGldKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCwgaTFdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8zXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8zKGJhLCBpMCwgaTEsIGkyLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLCBpMSwgaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9PSBzcmMuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRzdC5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkc3QuZGltc1tpXSAhPT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gMTsgaSsrKSBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPiBiYS5kaW1zW2NoYW5nZWRfZGltXSkge1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnN1YjogYmFkIHN1Yi1hcnJheVwiKTtcbiAgfVxuICB2YXIgbmV3X2RpbXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBpbmRleFtpXSA9IDA7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKG51bV9pbmRzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzICsgaV0gPSB2aW5kW2ldO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kczsgaSsrKSBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShcbiAgICBvZnMgKiBzaXplX3Blcl9lbGVtZW50LFxuICAgIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQsXG4gICk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBzdWJfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3Jlc2hhcGVcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbmZ1bmN0aW9uIGNhbWxfYmFfcmVzaGFwZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbmV3X2RpbSA9IFtdO1xuICB2YXIgbnVtX2RpbXMgPSB2aW5kLmxlbmd0aDtcblxuICBpZiAobnVtX2RpbXMgPCAwIHx8IG51bV9kaW1zID4gMTYpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpO1xuICBpZiAoYmEuY2FtbF9jdXN0b20gPT09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYmEuZGltc1tpXSA8IDB4ZmZmZikgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zW2ldKTtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgY2FzZSA1OiAvLyBVaW50MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDY6IC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA3OiAvLyBJbnQzMkFycmF5IChpbnQ2NClcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGJhLmdldChpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOiAvLyBGbG9hdDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAwOiAvLyBGbG9hdDMyQXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKSB7XG4gICAgICAgIHZhciBqID0gYmEuZ2V0KGkpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzFdKSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUoOCwgYltqXSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsyXSkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlKDgsIGJbal0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5wYWNrRmxvYXQxNlxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKSB7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmO1xuICB2YXIgbGF5b3V0ID0gKHRhZyA+PiA4KSAmIDE7XG4gIHZhciBkaW1zID0gW107XG4gIGlmIChuYW1lID09PSBcIl9iaWdhcnIwMlwiKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgICAgdmFyIHNpemVfZGltID0gcmVhZGVyLnJlYWQxNnUoKTtcbiAgICAgIGlmIChzaXplX2RpbSA9PT0gMHhmZmZmKSB7XG4gICAgICAgIHZhciBzaXplX2RpbV9oaSA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIHZhciBzaXplX2RpbV9sbyA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgIGlmIChzaXplX2RpbV9oaSAhPT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykgZGltcy5wdXNoKHJlYWRlci5yZWFkMzJ1KCkpO1xuICB2YXIgc2l6ZSA9IGNhbWxfYmFfZ2V0X3NpemUoZGltcyk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIHNpemUpO1xuICB2YXIgYmEgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OiAvLyBJbnQxNkFycmF5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQxNnMoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OiAvLyBJbnQzMkFycmF5IChpbnQpXG4gICAgY2FzZSA5OiAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgICB2YXIgc2l4dHkgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICBpZiAoc2l4dHkpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXG4gICAgICAgICAgXCJpbnB1dF92YWx1ZTogY2Fubm90IHJlYWQgYmlnYXJyYXkgd2l0aCA2NC1iaXQgT0NhbWwgaW50c1wiLFxuICAgICAgICApO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICAgIGJhLnNldChpLCBpbnQ2NCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6IC8vIEZsb2F0NjRBcnJheVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTM6IC8vIEZsb2F0MTZBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDA6IC8vIEZsb2F0MzJBcnJheVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBmKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICAgIGJhLnNldChpLCBbMjU0LCByZSwgaW1dKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgICBiYS5zZXQoaSwgWzI1NCwgcmUsIGltXSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgbnVtX2RpbXMpICogNDtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9EZXByZWNhdGVkOiBVc2UgW2NhbWxfYmFfY3JlYXRlX3Vuc2FmZV0gaW5zdGVhZFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIF9qc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKSB7XG4gIGlmIChkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09PSAyKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGExKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9oYXNoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF91bnBhY2tGbG9hdDE2LCBjYW1sX2hhc2hfbWl4X2Zsb2F0MTYsIGNhbWxfaGFzaF9taXhfZmxvYXQzMlxuZnVuY3Rpb24gY2FtbF9iYV9oYXNoKGJhKSB7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoIChiYS5raW5kKSB7XG4gICAgY2FzZSAyOiAvL0ludDhBcnJheVxuICAgIGNhc2UgMzogLy9VaW50OEFycmF5XG4gICAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgICAgdmFyIHcgPSAwLFxuICAgICAgICBpID0gMDtcbiAgICAgIGZvciAoaSA9IDA7IGkgKyA0IDw9IG51bV9lbHRzOyBpICs9IDQpIHtcbiAgICAgICAgdyA9XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDBdICYgMHhmZikgfFxuICAgICAgICAgICgoYmEuZGF0YVtpICsgMV0gJiAweGZmKSA8PCA4KSB8XG4gICAgICAgICAgKChiYS5kYXRhW2kgKyAyXSAmIDB4ZmYpIDw8IDE2KSB8XG4gICAgICAgICAgKGJhLmRhdGFbaSArIDNdIDw8IDI0KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgICAgfVxuICAgICAgdyA9IDA7XG4gICAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICAgIHcgPSBiYS5kYXRhW2kgKyAyXSA8PCAxNjtcbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDFdIDw8IDg7XG4gICAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB3IHw9IGJhLmRhdGFbaSArIDBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDogLy8gSW50MTZBcnJheVxuICAgIGNhc2UgNTogLy8gVWludDE2QXJyYXlcbiAgICAgIGlmIChudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgICB2YXIgdyA9IDAsXG4gICAgICAgIGkgPSAwO1xuICAgICAgZm9yIChpID0gMDsgaSArIDIgPD0gbnVtX2VsdHM7IGkgKz0gMikge1xuICAgICAgICB3ID0gKGJhLmRhdGFbaSArIDBdICYgMHhmZmZmKSB8IChiYS5kYXRhW2kgKyAxXSA8PCAxNik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICAgIH1cbiAgICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPT0gMCkgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OiAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6IC8vIEludDMyQXJyYXkgKGludClcbiAgICBjYXNlIDk6IC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDc6IC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgICBudW1fZWx0cyAqPSAyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSB7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMDogLy8gRmxvYXQzMkFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKylcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQzMihoLCBiYS5kYXRhW2ldKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgbnVtX2VsdHMgKj0gMjtcbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgMTogLy8gRmxvYXQ2NEFycmF5XG4gICAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgaWYgKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdDE2KGgsIGJhLmRhdGFbaV0pO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQxNlxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQxNihoYXNoLCBkKSB7XG4gIC8qIE5vcm1hbGl6ZSBOYU5zICovXG4gIGlmICgoZCAmIDB4N2MwMCkgPT09IDB4N2MwMCAmJiAoZCAmIDB4MDNmZikgIT09IDApIHtcbiAgICBkID0gMHg3YzAxO1xuICB9IGVsc2UgaWYgKGQgPT09IDB4ODAwMCkge1xuICAgIC8qIE5vcm1hbGl6ZSAtMCBpbnRvICswICovXG4gICAgZCA9IDA7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQzMihoYXNoLCB2KSB7XG4gIHZhciBpID0gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KHYpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGkgJiAweDdmODAwMDAwKSA9PT0gMHg3ZjgwMDAwMCAmJiAoaSAmIDB4N2ZmZmZmKSAhPT0gMCkge1xuICAgIGkgPSAweDdmODAwMDAxO1xuICB9IGVsc2UgaWYgKGkgPT09ICgweDgwMDAwMDAwIHwgMCkpIHtcbiAgICAvKiBOb3JtYWxpemUgLTAgaW50byArMCAqL1xuICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG5vdCB1c2VkIGJ5IGNhbWxfaGFzaCBiZWNhdXNlIDAgYW5kIC0wIGxvb2tcbiAgICAvLyBsaWtlIGludGVnZXJzXG4gICAgaSA9IDA7XG4gIH1cbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGkpO1xuICByZXR1cm4gaGFzaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV90b190eXBlZF9hcnJheSBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJhKSB7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpIHtcbiAgdmFyIGtpbmQ7XG4gIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSkga2luZCA9IDA7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSBraW5kID0gMTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQ4QXJyYXkpIGtpbmQgPSAyO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQxNkFycmF5KSBraW5kID0gNDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MTZBcnJheSkga2luZCA9IDU7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheTogdW5zdXBwb3J0ZWQga2luZFwiKTtcbiAgcmV0dXJuIGtpbmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5KHRhKSB7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgIHRhIGluc3RhbmNlb2YgVWludDMyQXJyYXlcbiAgICAgID8gbmV3IEludDMyQXJyYXkodGEuYnVmZmVyLCB0YS5ieXRlT2Zmc2V0LCB0YS5sZW5ndGgpXG4gICAgICA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGJzLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyIG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIoYnMpIHtcbiAgcmV0dXJuIGJzLmRhdGEuYnVmZmVyO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShcbiAgICBiYS5idWZmZXIsXG4gICAgYmEuYnl0ZU9mZnNldCxcbiAgICBiYS5sZW5ndGggKiBiYS5CWVRFU19QRVJfRUxFTUVOVCxcbiAgKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMShzMSwgcG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMiwgcG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsIG9mczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UsIHBvczIpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3RyMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pIHtcbiAgaWYgKDEyICE9PSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYgKHBvczEgKyBsZW4gPiBjYW1sX21sX3N0cmluZ19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc3ViYXJyYXkocG9zMSwgcG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSwgb2ZzMik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMiA9IGJhMi5vZmZzZXQocG9zMik7XG4gIGlmIChwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYgKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zdWJhcnJheShwb3MxLCBwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLCBvZnMyKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKSB7XG4gIGlmICgxMiAhPT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmIChvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmIChwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLCBvZnMxICsgbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfdWludDhfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQmxha2UyQiBpbiBwdXJlIEphdmFzY3JpcHRcbiAgLy8gQWRhcHRlZCBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW4gUkZDNzY5M1xuICAvLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbiAgLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4gIC8vIFNldHMgdlthLGErMV0gKz0gdltiLGIrMV1cbiAgLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuICBmdW5jdGlvbiBBREQ2NEFBKHYsIGEsIGIpIHtcbiAgICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdO1xuICAgIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV07XG4gICAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgICBvMSsrO1xuICAgIH1cbiAgICB2W2FdID0gbzA7XG4gICAgdlthICsgMV0gPSBvMTtcbiAgfVxuXG4gIC8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuICAvLyBTZXRzIHZbYSxhKzFdICs9IGJcbiAgLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuICBmdW5jdGlvbiBBREQ2NEFDKHYsIGEsIGIwLCBiMSkge1xuICAgIGxldCBvMCA9IHZbYV0gKyBiMDtcbiAgICBpZiAoYjAgPCAwKSB7XG4gICAgICBvMCArPSAweDEwMDAwMDAwMDtcbiAgICB9XG4gICAgbGV0IG8xID0gdlthICsgMV0gKyBiMTtcbiAgICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICAgIG8xKys7XG4gICAgfVxuICAgIHZbYV0gPSBvMDtcbiAgICB2W2EgKyAxXSA9IG8xO1xuICB9XG5cbiAgLy8gTGl0dGxlLWVuZGlhbiBieXRlIGFjY2Vzc1xuICBmdW5jdGlvbiBCMkJfR0VUMzIoYXJyLCBpKSB7XG4gICAgcmV0dXJuIGFycltpXSBeIChhcnJbaSArIDFdIDw8IDgpIF4gKGFycltpICsgMl0gPDwgMTYpIF4gKGFycltpICsgM10gPDwgMjQpO1xuICB9XG5cbiAgLy8gRyBNaXhpbmcgZnVuY3Rpb25cbiAgLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuICBmdW5jdGlvbiBCMkJfRyhhLCBiLCBjLCBkLCBpeCwgaXkpIHtcbiAgICBjb25zdCB4MCA9IG1baXhdO1xuICAgIGNvbnN0IHgxID0gbVtpeCArIDFdO1xuICAgIGNvbnN0IHkwID0gbVtpeV07XG4gICAgY29uc3QgeTEgPSBtW2l5ICsgMV07XG5cbiAgICBBREQ2NEFBKHYsIGEsIGIpOyAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICAgIEFERDY0QUModiwgYSwgeDAsIHgxKTsgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgICBsZXQgeG9yMCA9IHZbZF0gXiB2W2FdO1xuICAgIGxldCB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXTtcbiAgICB2W2RdID0geG9yMTtcbiAgICB2W2QgKyAxXSA9IHhvcjA7XG5cbiAgICBBREQ2NEFBKHYsIGMsIGQpO1xuXG4gICAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDI0IGJpdHNcbiAgICB4b3IwID0gdltiXSBeIHZbY107XG4gICAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV07XG4gICAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KTtcbiAgICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KTtcblxuICAgIEFERDY0QUEodiwgYSwgYik7XG4gICAgQURENjRBQyh2LCBhLCB5MCwgeTEpO1xuXG4gICAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgICB4b3IwID0gdltkXSBeIHZbYV07XG4gICAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV07XG4gICAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNik7XG4gICAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpO1xuXG4gICAgQURENjRBQSh2LCBjLCBkKTtcblxuICAgIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gICAgeG9yMCA9IHZbYl0gXiB2W2NdO1xuICAgIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdO1xuICAgIHZbYl0gPSAoeG9yMSA+Pj4gMzEpIF4gKHhvcjAgPDwgMSk7XG4gICAgdltiICsgMV0gPSAoeG9yMCA+Pj4gMzEpIF4gKHhvcjEgPDwgMSk7XG4gIH1cblxuICAvLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbiAgY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgICAweGYzYmNjOTA4LCAweDZhMDllNjY3LCAweDg0Y2FhNzNiLCAweGJiNjdhZTg1LCAweGZlOTRmODJiLCAweDNjNmVmMzcyLFxuICAgIDB4NWYxZDM2ZjEsIDB4YTU0ZmY1M2EsIDB4YWRlNjgyZDEsIDB4NTEwZTUyN2YsIDB4MmIzZTZjMWYsIDB4OWIwNTY4OGMsXG4gICAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOSxcbiAgXSk7XG5cbiAgY29uc3QgU0lHTUE4ID0gW1xuICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsXG4gICAgMTMsIDYsIDEsIDEyLCAwLCAyLCAxMSwgNywgNSwgMywgMTEsIDgsIDEyLCAwLCA1LCAyLCAxNSwgMTMsIDEwLCAxNCwgMywgNixcbiAgICA3LCAxLCA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LFxuICAgIDcsIDIsIDQsIDEwLCAxNSwgMTQsIDEsIDExLCAxMiwgNiwgOCwgMywgMTMsIDIsIDEyLCA2LCAxMCwgMCwgMTEsIDgsIDMsIDQsXG4gICAgMTMsIDcsIDUsIDE1LCAxNCwgMSwgOSwgMTIsIDUsIDEsIDE1LCAxNCwgMTMsIDQsIDEwLCAwLCA3LCA2LCAzLCA5LCAyLCA4LFxuICAgIDExLCAxMywgMTEsIDcsIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLFxuICAgIDMsIDAsIDgsIDEyLCAyLCAxMywgNywgMSwgNCwgMTAsIDUsIDEwLCAyLCA4LCA0LCA3LCA2LCAxLCA1LCAxNSwgMTEsIDksIDE0LFxuICAgIDMsIDEyLCAxMywgMCwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTQsIDEwLFxuICAgIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLFxuICBdO1xuXG4gIC8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuICAvLyBNdWx0aXBseSB0aGVtIGFsbCBieSAyIHRvIG1ha2UgdGhlbSBvZmZzZXRzIGludG8gYSB1aW50MzIgYnVmZmVyLFxuICAvLyBiZWNhdXNlIHRoaXMgaXMgSmF2YXNjcmlwdCBhbmQgd2UgZG9uJ3QgaGF2ZSB1aW50NjRzXG4gIGNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgICBTSUdNQTgubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4geCAqIDI7XG4gICAgfSksXG4gICk7XG5cbiAgLy8gQ29tcHJlc3Npb24gZnVuY3Rpb24uICdsYXN0JyBmbGFnIGluZGljYXRlcyBsYXN0IGJsb2NrLlxuICAvLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbiAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheSgzMik7XG4gIGNvbnN0IG0gPSBuZXcgVWludDMyQXJyYXkoMzIpO1xuICBmdW5jdGlvbiBibGFrZTJiQ29tcHJlc3MoY3R4LCBsYXN0KSB7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB2W2ldID0gY3R4LmhbaV07XG4gICAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV07XG4gICAgfVxuXG4gICAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gICAgdlsyNF0gPSB2WzI0XSBeIGN0eC50O1xuICAgIHZbMjVdID0gdlsyNV0gXiAoY3R4LnQgLyAweDEwMDAwMDAwMCk7XG4gICAgLy8gaGlnaCA2NCBiaXRzIG5vdCBzdXBwb3J0ZWQsIG9mZnNldCBtYXkgbm90IGJlIGhpZ2hlciB0aGFuIDIqKjUzLTFcblxuICAgIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICAgIGlmIChsYXN0KSB7XG4gICAgICB2WzI4XSA9IH52WzI4XTtcbiAgICAgIHZbMjldID0gfnZbMjldO1xuICAgIH1cblxuICAgIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gICAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICAgIG1baV0gPSBCMkJfR0VUMzIoY3R4LmIsIDQgKiBpKTtcbiAgICB9XG5cbiAgICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICAgIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gICAgLy8gYW5kIG1hdGNoIHRoZSBSRkMgc2FtcGxlIGRvY3VtZW50YXRpb25cbiAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKTtcbiAgICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pO1xuICAgICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSk7XG4gICAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKTtcbiAgICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pO1xuICAgICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKTtcbiAgICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSk7XG4gICAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldXNhYmxlIHBhcmFtZXRlckJsb2NrXG4gIGNvbnN0IHBhcmFtZXRlckJsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMjA6IHJmdVxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDI0OiByZnVcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAyODogcmZ1XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gMzI6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyAzNjogc2FsdFxuICAgIDAsXG4gICAgMCxcbiAgICAwLFxuICAgIDAsIC8vIDQwOiBzYWx0XG4gICAgMCxcbiAgICAwLFxuICAgIDAsXG4gICAgMCwgLy8gNDQ6IHNhbHRcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA0ODogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1MjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA1NjogcGVyc29uYWxcbiAgICAwLFxuICAgIDAsXG4gICAgMCxcbiAgICAwLCAvLyA2MDogcGVyc29uYWxcbiAgXSk7XG5cbiAgLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4gIC8vIFJlcXVpcmVzIGFuIG91dHB1dCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NCBieXRlc1xuICAvLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuICBmdW5jdGlvbiBibGFrZTJiSW5pdChvdXRsZW4sIGtleSkge1xuICAgIGlmIChvdXRsZW4gPT09IDAgfHwgb3V0bGVuID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgb3V0cHV0IGxlbmd0aCwgZXhwZWN0ZWQgMCA8IGxlbmd0aCA8PSA2NFwiKTtcbiAgICB9XG4gICAgaWYgKGtleS5sZW5ndGggPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBrZXksIGV4cGVjdGVkIFVpbnQ4QXJyYXkgd2l0aCAwIDwgbGVuZ3RoIDw9IDY0XCIpO1xuICAgIH1cblxuICAgIC8vIHN0YXRlLCAncGFyYW0gYmxvY2snXG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgYjogbmV3IFVpbnQ4QXJyYXkoMTI4KSxcbiAgICAgIGg6IG5ldyBVaW50MzJBcnJheSgxNiksXG4gICAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgICAgYzogMCwgLy8gcG9pbnRlciB3aXRoaW4gYnVmZmVyXG4gICAgICBvdXRsZW46IG91dGxlbiwgLy8gb3V0cHV0IGxlbmd0aCBpbiBieXRlc1xuICAgIH07XG5cbiAgICAvLyBpbml0aWFsaXplIHBhcmFtZXRlckJsb2NrIGJlZm9yZSB1c2FnZVxuICAgIHBhcmFtZXRlckJsb2NrLmZpbGwoMCk7XG4gICAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW47XG4gICAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoO1xuICAgIHBhcmFtZXRlckJsb2NrWzJdID0gMTsgLy8gZmFub3V0XG4gICAgcGFyYW1ldGVyQmxvY2tbM10gPSAxOyAvLyBkZXB0aFxuXG4gICAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgICBjdHguaFtpXSA9IEJMQUtFMkJfSVYzMltpXSBeIEIyQl9HRVQzMihwYXJhbWV0ZXJCbG9jaywgaSAqIDQpO1xuICAgIH1cblxuICAgIGlmIChrZXkubGVuZ3RoID4gMCkge1xuICAgICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSk7XG4gICAgICAvLyBhdCB0aGUgZW5kXG4gICAgICBjdHguYyA9IDEyODtcbiAgICB9XG5cbiAgICByZXR1cm4gY3R4O1xuICB9XG5cbiAgLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmVxdWlyZXMgaGFzaCBjb250ZXh0IGFuZCBVaW50OEFycmF5IChieXRlIGFycmF5KVxuICBmdW5jdGlvbiBibGFrZTJiVXBkYXRlKGN0eCwgaW5wdXQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY3R4LmMgPT09IDEyOCkge1xuICAgICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICAgIGN0eC50ICs9IGN0eC5jOyAvLyBhZGQgY291bnRlcnNcbiAgICAgICAgYmxha2UyYkNvbXByZXNzKGN0eCwgZmFsc2UpOyAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICAgIGN0eC5jID0gMDsgLy8gY291bnRlciB0byB6ZXJvXG4gICAgICB9XG4gICAgICBjdHguYltjdHguYysrXSA9IGlucHV0W2ldO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbXBsZXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbiAgLy8gUmV0dXJucyBhIFVpbnQ4QXJyYXkgY29udGFpbmluZyB0aGUgbWVzc2FnZSBkaWdlc3RcbiAgZnVuY3Rpb24gYmxha2UyYkZpbmFsKGN0eCkge1xuICAgIGN0eC50ICs9IGN0eC5jOyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgICB3aGlsZSAoY3R4LmMgPCAxMjgpIHtcbiAgICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgICAgY3R4LmJbY3R4LmMrK10gPSAwO1xuICAgIH1cbiAgICBibGFrZTJiQ29tcHJlc3MoY3R4LCB0cnVlKTsgLy8gZmluYWwgYmxvY2sgZmxhZyA9IDFcblxuICAgIC8vIGxpdHRsZSBlbmRpYW4gY29udmVydCBhbmQgc3RvcmVcbiAgICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgICAgb3V0W2ldID0gY3R4LmhbaSA+PiAyXSA+PiAoOCAqIChpICYgMykpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHJldHVybiB7IEluaXQ6IGJsYWtlMmJJbml0LCBVcGRhdGU6IGJsYWtlMmJVcGRhdGUsIEZpbmFsOiBibGFrZTJiRmluYWwgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9jcmVhdGUoaGFzaGxlbiwga2V5KSB7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmIChrZXkubGVuZ3RoID4gNjQpIHtcbiAgICBrZXkuc3ViYXJyYXkoMCwgNjQpO1xuICB9XG4gIHJldHVybiBibGFrZTJiLkluaXQoaGFzaGxlbiwga2V5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBfaGFzaGxlbikge1xuICAvLyBjdHgub3V0bGVuID09PSBoYXNobGVuXG4gIHZhciByID0gYmxha2UyYi5GaW5hbChjdHgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXkocik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgaW5wdXQgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhidWYpO1xuICBpbnB1dCA9IGlucHV0LnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKTtcbiAgYmxha2UyYi5VcGRhdGUoY3R4LCBpbnB1dCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmKTtcbiAgaW5wdXQgPSBpbnB1dC5zdWJhcnJheShvZnMsIG9mcyArIGxlbik7XG4gIGJsYWtlMmIuVXBkYXRlKGN0eCwgaW5wdXQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9ibGFrZTJfc3RyaW5nKGhhc2hsZW4sIGtleSwgYnVmX3N0ciwgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfYmxha2UyX2NyZWF0ZShoYXNobGVuLCBrZXkpO1xuICB2YXIgYnVmID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmX3N0cik7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2J5dGVzKGhhc2hsZW4sIGtleSwgYnVmLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfY3JlYXRlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX2NyZWF0ZShoYXNobGVuLCBrZXkpIHtcbiAgY29uc3Qga2V5X2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhrZXkpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleV9qc29vX3N0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWwsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBibGFrZTJfanNfZm9yX3dhc21fZmluYWwoY3R4LCBoYXNobGVuKSB7XG4gIHJldHVybiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikpO1xufVxuXG4vL1Byb3ZpZGVzOiBibGFrZTJfanNfZm9yX3dhc21fdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl91cGRhdGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IHdhc21cbi8vVmVyc2lvbjogPj0gNS4yLCA8IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWYpO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmX2pzb29fc3RyaW5nLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJsYWtlMl9qc19mb3Jfd2FzbV91cGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZSwgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiB3YXNtXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gYmxha2UyX2pzX2Zvcl93YXNtX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgY29uc3QgYnVmX2pzb29fc3RyaW5nID0gY2FtbF9ieXRlc19vZl9qc2J5dGVzKGJ1Zik7XG4gIHJldHVybiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWZfanNvb19zdHJpbmcsIG9mcywgbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl91aW50OF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsIHRvcmVhZCkge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYgKHRvcmVhZCA8IDApIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCwgYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHRvcmVhZCA+IDApIHtcbiAgICAgIHZhciByZWFkID0gY2FtbF9tbF9pbnB1dF9ibG9jayhcbiAgICAgICAgY2hhbmlkLFxuICAgICAgICBidWZmZXIsXG4gICAgICAgIDAsXG4gICAgICAgIHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkLFxuICAgICAgKTtcbiAgICAgIGlmIChyZWFkID09PSAwKSBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsIGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLCBvZnMsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQoeCwgeSkge1xuICAgIHJldHVybiAoeCArIHkpIHwgMDtcbiAgfVxuICBmdW5jdGlvbiB4eChxLCBhLCBiLCB4LCBzLCB0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICh+YiAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmIH5kKSwgYSwgYiwgeCwgcywgdCk7XG4gIH1cbiAgZnVuY3Rpb24gaGgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICAgIHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgICByZXR1cm4geHgoYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLFxuICAgICAgYiA9IHdbMV0sXG4gICAgICBjID0gd1syXSxcbiAgICAgIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclswXSwgNywgMHhkNzZhYTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxXSwgMTIsIDB4ZThjN2I3NTYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMl0sIDE3LCAweDI0MjA3MGRiKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzNdLCAyMiwgMHhjMWJkY2VlZSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls0XSwgNywgMHhmNTdjMGZhZik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls1XSwgMTIsIDB4NDc4N2M2MmEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE3LCAweGE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzddLCAyMiwgMHhmZDQ2OTUwMSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlcls4XSwgNywgMHg2OTgwOThkOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlcls5XSwgMTIsIDB4OGI0NGY3YWYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhmZmZmNWJiMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NWNkN2JlKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2YjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweGZkOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4YTY3OTQzOGUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OWI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA1LCAweGY2MWUyNTYyKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzZdLCA5LCAweGMwNDBiMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1ZTVhNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMF0sIDIwLCAweGU5YjZjN2FhKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzVdLCA1LCAweGQ2MmYxMDVkKTtcbiAgICBkID0gZ2coZCwgYSwgYiwgYywgYnVmZmVyWzEwXSwgOSwgMHgwMjQ0MTQ1Myk7XG4gICAgYyA9IGdnKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE0LCAweGQ4YTFlNjgxKTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzRdLCAyMCwgMHhlN2QzZmJjOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlcls5XSwgNSwgMHgyMWUxY2RlNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4YzMzNzA3ZDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbM10sIDE0LCAweGY0ZDUwZDg3KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzhdLCAyMCwgMHg0NTVhMTRlZCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4YTllM2U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMl0sIDksIDB4ZmNlZmEzZjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbN10sIDE0LCAweDY3NmYwMmQ5KTtcbiAgICBiID0gZ2coYiwgYywgZCwgYSwgYnVmZmVyWzEyXSwgMjAsIDB4OGQyYTRjOGEpO1xuXG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlcls1XSwgNCwgMHhmZmZhMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlcls4XSwgMTEsIDB4ODc3MWY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2ZDlkNjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweGZkZTUzODBjKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWzFdLCA0LCAweGE0YmVlYTQ0KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzRdLCAxMSwgMHg0YmRlY2ZhOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlcls3XSwgMTYsIDB4ZjZiYjRiNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhiZWJmYmM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5YjdlYzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMF0sIDExLCAweGVhYTEyN2ZhKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzNdLCAxNiwgMHhkNGVmMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlcls2XSwgMjMsIDB4MDQ4ODFkMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbOV0sIDQsIDB4ZDlkNGQwMzkpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbMTJdLCAxMSwgMHhlNmRiOTllNSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNV0sIDE2LCAweDFmYTI3Y2Y4KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzJdLCAyMywgMHhjNGFjNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzBdLCA2LCAweGY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzddLCAxMCwgMHg0MzJhZmY5Nyk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE1LCAweGFiOTQyM2E3KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzVdLCAyMSwgMHhmYzkzYTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1YjU5YzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbM10sIDEwLCAweDhmMGNjYzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4ZmZlZmY0N2QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbMV0sIDIxLCAweDg1ODQ1ZGQxKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzhdLCA2LCAweDZmYTg3ZTRmKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4ZmUyY2U2ZTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbNl0sIDE1LCAweGEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NGUwODExYTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbNF0sIDYsIDB4Zjc1MzdlODIpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTFdLCAxMCwgMHhiZDNhZjIzNSk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsyXSwgMTUsIDB4MmFkN2QyYmIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbOV0sIDIxLCAweGViODZkMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH07XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtcbiAgICBsZW46IDAsXG4gICAgdzogbmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2XSksXG4gICAgYjMyOiBiMzIsXG4gICAgYjg6IGI4LFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVVwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9NRDVUcmFuc2Zvcm1cbmZ1bmN0aW9uIGNhbWxfTUQ1VXBkYXRlKGN0eCwgaW5wdXQsIGlucHV0X2xlbikge1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYgKGluX2J1Zikge1xuICAgIHZhciBtaXNzaW5nID0gNjQgLSBpbl9idWY7XG4gICAgaWYgKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCwgaW5wdXRfbGVuKSwgaW5fYnVmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLCBtaXNzaW5nKSwgaW5fYnVmKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IG1pc3Npbmc7XG4gICAgaW5wdXRfcG9zICs9IG1pc3Npbmc7XG4gIH1cbiAgd2hpbGUgKGlucHV0X2xlbiA+PSA2NCkge1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLCBpbnB1dF9wb3MgKyA2NCksIDApO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gNjQ7XG4gICAgaW5wdXRfcG9zICs9IDY0O1xuICB9XG4gIGlmIChpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsIGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpIHtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICBjdHguYjhbaW5fYnVmXSA9IDB4ODA7XG4gIGluX2J1ZisrO1xuICBpZiAoaW5fYnVmID4gNTYpIHtcbiAgICBmb3IgKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNTY7IGorKykge1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspIHtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9XG4gIGN0eC5iMzJbMTRdID0gY3R4LmxlbiA8PCAzO1xuICBjdHguYjMyWzE1XSA9IChjdHgubGVuID4+IDI5KSAmIDB4MWZmZmZmZmY7XG4gIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgNDsgaisrKSB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweGZmO1xuICByZXR1cm4gdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9ieXRlcyhzLCBvZnMsIGxlbikge1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKTtcbiAgY2FtbF9NRDVVcGRhdGUoY3R4LCBhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19kYXRhdmlld1xudmFyIGpzb29fZGF0YXZpZXcgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDgpKTtcblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuLy9SZXF1aXJlczoganNvb19kYXRhdmlld1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpIHtcbiAganNvb19kYXRhdmlldy5zZXRGbG9hdDY0KDAsIHgsIHRydWUpO1xuICB2YXIgbG8zMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpO1xuICB2YXIgaGkzMiA9IGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgbG8gPSBsbzMyICYgMHhmZmZmZmY7XG4gIHZhciBtaSA9IChsbzMyID4+PiAyNCkgfCAoKGhpMzIgPDwgOCkgJiAweGZmZmZmZik7XG4gIHZhciBoaSA9IChoaTMyID4+PiAxNikgJiAweGZmZmY7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCh4KSB7XG4gIGpzb29fZGF0YXZpZXcuc2V0RmxvYXQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0VWludDMyKDAsIHRydWUpIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXCJuYW5cIik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHggPiAwID8gXCJpbmZpbml0eVwiIDogXCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSB4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPyAxIDogeCA+PSAwID8gMCA6IDE7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PT0gMCkge1xuICB9IGVsc2UgaWYgKHggPCAxKSB7XG4gICAgd2hpbGUgKHggPCAxICYmIGV4cCA+IC0xMDIyKSB7XG4gICAgICB4ICo9IDI7XG4gICAgICBleHAtLTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikge1xuICAgICAgeCAvPSAyO1xuICAgICAgZXhwKys7XG4gICAgfVxuICB9XG4gIHZhciBleHBfc2lnbiA9IGV4cCA8IDAgPyBcIlwiIDogXCIrXCI7XG4gIHZhciBzaWduX3N0ciA9IFwiXCI7XG4gIGlmIChzaWduKSBzaWduX3N0ciA9IFwiLVwiO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIDQzIC8qICcrJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIitcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMyIC8qICcgJyAqLzpcbiAgICAgICAgc2lnbl9zdHIgPSBcIiBcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHByZWMgPj0gMCAmJiBwcmVjIDwgMTMpIHtcbiAgICAvKiBJZiBhIHByZWNpc2lvbiBpcyBnaXZlbiwgYW5kIGlzIHNtYWxsLCByb3VuZCBtYW50aXNzYSBhY2NvcmRpbmdseSAqL1xuICAgIHZhciBjc3QgPSBNYXRoLnBvdygyLCBwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmIChwcmVjID49IDApIHtcbiAgICB2YXIgaWR4ID0geF9zdHIuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIHhfc3RyICs9IFwiLlwiICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsIFwiMFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHggKyAxICsgcHJlYztcbiAgICAgIGlmICh4X3N0ci5sZW5ndGggPCBzaXplKVxuICAgICAgICB4X3N0ciArPSBjYW1sX3N0cl9yZXBlYXQoc2l6ZSAtIHhfc3RyLmxlbmd0aCwgXCIwXCIpO1xuICAgICAgZWxzZSB4X3N0ciA9IHhfc3RyLnNsaWNlKDAsIHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoXG4gICAgc2lnbl9zdHIgKyBcIjB4XCIgKyB4X3N0ciArIFwicFwiICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApLFxuICApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZGF0YXZpZXdcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyh4KSB7XG4gIHZhciBsbyA9IHgubG87XG4gIHZhciBtaSA9IHgubWk7XG4gIHZhciBoaSA9IHguaGk7XG4gIC8vIFY4IHVzZXMgc2lnbmFsaW5nIE5hTnMgYXMgc2VudGluZWwuIFNvLCBOYU5zIGFyZSBtYWRlIHF1aWV0IHdoZW5cbiAgLy8gdGhleSBhcmUgc3RvcmVkIGluIGFuIGFycmF5LiBNYWtlIHRoZW0gcXVpZXQgaGVyZSBzbyB0aGF0IHdlIGdldFxuICAvLyBjb25zaXN0ZW50IHJlc3VsdHMuXG4gIGlmICgoaGkgJiAweDdmZjgpID09PSAweDdmZjAgJiYgKG1pIHwgbG8gfCAoaGkgJiAweGYpKSAhPT0gMCkgaGkgfD0gODtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoMCwgbG8gfCAobWkgPDwgMjQpLCB0cnVlKTtcbiAganNvb19kYXRhdmlldy5zZXRVaW50MzIoNCwgKG1pID4+PiA4KSB8IChoaSA8PCAxNiksIHRydWUpO1xuICByZXR1cm4ganNvb19kYXRhdmlldy5nZXRGbG9hdDY0KDAsIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25leHRhZnRlcl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfYWRkLCBjYW1sX2ludDY0X3N1YixjYW1sX2ludDY0X29mX2ludDMyXG5mdW5jdGlvbiBjYW1sX25leHRhZnRlcl9mbG9hdCh4LCB5KSB7XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkgfHwgTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gTnVtYmVyLk5hTjtcbiAgaWYgKHggPT09IHkpIHJldHVybiB5O1xuICBpZiAoeCA9PT0gMCkge1xuICAgIGlmICh5IDwgMCkgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NCk7XG4gICAgZWxzZSByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpO1xuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKHggPCB5ID09PSB4ID4gMCkgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSk7XG4gIGVsc2UgYml0cyA9IGNhbWxfaW50NjRfc3ViKGJpdHMsIG9uZSk7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2RhdGF2aWV3XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMoeCkge1xuICBqc29vX2RhdGF2aWV3LnNldFVpbnQzMigwLCB4LCB0cnVlKTtcbiAgcmV0dXJuIGpzb29fZGF0YXZpZXcuZ2V0RmxvYXQzMigwLCB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoTWF0aC5hYnMoeCkgPj0gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgpIHJldHVybiAwO1xuICAgIGlmICh4ICE9PSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gTnVtYmVyLmlzTmFOKHgpID8gNCA6IDM7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21vZGZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbW9kZl9mbG9hdCh4KSB7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB2YXIgbmVnID0gMSAvIHggPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7XG4gICAgICBpID0gLWk7XG4gICAgICBmID0gLWY7XG4gICAgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKE51bWJlci5pc05hTih4KSkgcmV0dXJuIFswLCBOdW1iZXIuTmFOLCBOdW1iZXIuTmFOXTtcbiAgcmV0dXJuIFswLCAxIC8geCwgeF07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xkZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xkZXhwX2Zsb2F0KHgsIGV4cCkge1xuICBleHAgfD0gMDtcbiAgaWYgKGV4cCA+IDEwMjMpIHtcbiAgICBleHAgLT0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIGlmIChleHAgPiAxMDIzKSB7XG4gICAgICAvLyBpbiBjYXNlIHggaXMgc3Vibm9ybWFsXG4gICAgICBleHAgLT0gMTAyMztcbiAgICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgfVxuICB9XG4gIGlmIChleHAgPCAtMTAyMykge1xuICAgIGV4cCArPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgLTEwMjMpO1xuICB9XG4gIHggKj0gTWF0aC5wb3coMiwgZXhwKTtcbiAgcmV0dXJuIHg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXhwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0KHgpIHtcbiAgaWYgKHggPT09IDAgfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkgcmV0dXJuIFswLCB4LCAwXTtcbiAgdmFyIG5lZyA9IHggPCAwO1xuICBpZiAobmVnKSB4ID0gLXg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywgTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwgLWV4cCk7XG4gIHdoaWxlICh4IDwgMC41KSB7XG4gICAgeCAqPSAyO1xuICAgIGV4cC0tO1xuICB9XG4gIHdoaWxlICh4ID49IDEpIHtcbiAgICB4ICo9IDAuNTtcbiAgICBleHArKztcbiAgfVxuICBpZiAobmVnKSB4ID0gLXg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoIU51bWJlci5pc05hTih4KSkgcmV0dXJuIDE7XG4gIGlmICghTnVtYmVyLmlzTmFOKHkpKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0KHgsIHkpIHtcbiAgaWYgKHkgPT09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4geSA8IDAgPyAteCA6IHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuLy9BbGlhczogY2FtbF9zaWduYml0XG5mdW5jdGlvbiBjYW1sX3NpZ25iaXRfZmxvYXQoeCkge1xuICBpZiAoeCA9PT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4geCA8IDAgPyAxIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9leHBtMV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHBtMV9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmV4cG0xKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9leHAyX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cDJfZmxvYXQoeCkge1xuICByZXR1cm4gTWF0aC5wb3coMiwgeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMXAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmxvZzIoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2h5cG90X2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2h5cG90X2Zsb2F0KHgsIHkpIHtcbiAgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzEwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzEwX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGgubG9nMTAoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Nvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29zaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLmNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Fjb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Fjb3NoX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYWNvc2goeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3NpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2luaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2FzaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2FzaW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXNpbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3RhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfdGFuaF9mbG9hdCh4KSB7XG4gIHJldHVybiBNYXRoLnRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2F0YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2F0YW5oX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguYXRhbmgoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3JvdW5kX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3JvdW5kX2Zsb2F0KHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4geCAtIHkgPj0gMC41ID8geSArIDEgOiB5O1xuICB9IGVsc2Uge1xuICAgIHZhciB5ID0gTWF0aC5jZWlsKHgpO1xuICAgIHJldHVybiB5IC0geCA+PSAwLjUgPyB5IC0gMSA6IHk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0KHgpIHtcbiAgcmV0dXJuIE1hdGguY2JydCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9XG4gICAgMS4wIC0gKCgoKGE1ICogdCArIGE0KSAqIHQgKyBhMykgKiB0ICsgYTIpICogdCArIGExKSAqIHQgKiBNYXRoLmV4cCgteCAqIHgpO1xuXG4gIHJldHVybiBzaWduICogeTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZjX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2VyZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9lcmZjX2Zsb2F0KHgpIHtcbiAgcmV0dXJuIDEgLSBjYW1sX2VyZl9mbG9hdCh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5KGEsIGIpIHtcbiAgICB2YXIgYXQgPSBTUExJVCAqIGE7XG4gICAgdmFyIGFoaSA9IGF0IC0gKGF0IC0gYSk7XG4gICAgdmFyIGFsbyA9IGEgLSBhaGk7XG4gICAgdmFyIGJ0ID0gU1BMSVQgKiBiO1xuICAgIHZhciBiaGkgPSBidCAtIChidCAtIGIpO1xuICAgIHZhciBibG8gPSBiIC0gYmhpO1xuICAgIHZhciBwID0gYSAqIGI7XG4gICAgdmFyIGUgPSBhaGkgKiBiaGkgLSBwICsgYWhpICogYmxvICsgYWxvICogYmhpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSBhIC0gKHMgLSB2KSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBhZGp1c3QoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4XG4gICAgICA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKVxuICAgICAgOiB4O1xuICB9XG5cbiAgaWYgKHggPT09IDAgfHwgeSA9PT0gMCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpIHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICByZXR1cm4geCAqIHkgKyB6O1xuICB9XG4gIGlmICh6ID09PSAwKSB7XG4gICAgcmV0dXJuIHggKiB5O1xuICB9XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHopKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiAoTWF0aC5hYnMoeHMgKiB5cykgKiA0KSAvIEVQU0lMT04pIHtcbiAgICByZXR1cm4gejtcbiAgfVxuICBpZiAoTWF0aC5hYnMoenMpIDwgKCgoTWF0aC5hYnMoeHMgKiB5cykgKiBFUFNJTE9OKSAvIDQpICogRVBTSUxPTikgLyA0KSB7XG4gICAgenMgPSAoeiA8IDAgPyAtMSA6ICsxKSAqIE1JTl9WQUxVRTtcbiAgfVxuXG4gIHZhciB4eSA9IG11bHRpcGx5KHhzLCB5cyk7XG4gIHZhciBzID0gYWRkKHh5LnAsIHpzKTtcbiAgdmFyIHUgPSBhZGQoeHkuZSwgcy5lKTtcbiAgdmFyIGkgPSBhZGQocy5zLCB1LnMpO1xuXG4gIHZhciBmID0gaS5zICsgYWRqdXN0KGkuZSwgdS5lKTtcbiAgaWYgKGYgPT09IDApIHtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIHZhciBmcyA9IGYgKiBzY2FsZTtcbiAgaWYgKE1hdGguYWJzKGZzKSA+IE1JTl9WQUxVRSkge1xuICAgIHJldHVybiBmcztcbiAgfVxuXG4gIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgd2FzIGV4dHJhIHJvdW5kaW5nIGZvciBhIGRlbm9ybWFsaXplZCB2YWx1ZS5cbiAgcmV0dXJuIGZzICsgYWRqdXN0KGYgLSBmcyAvIHNjYWxlLCBpLmUpICogc2NhbGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LCBkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gTnVtYmVyLnBhcnNlSW50KHgudG9TdHJpbmcoKS5zcGxpdChcIitcIilbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLCBlKTtcbiAgICAgICAgeCArPSBjYW1sX3N0cl9yZXBlYXQoZSwgXCIwXCIpO1xuICAgICAgICBpZiAoZHAgPiAwKSB7XG4gICAgICAgICAgeCA9IHggKyBcIi5cIiArIGNhbWxfc3RyX3JlcGVhdChkcCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSBlbHNlIHJldHVybiB4LnRvRml4ZWQoZHApO1xuICAgIH1cbiAgfVxuICB2YXIgcyxcbiAgICBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgdmFyIHByZWMgPSBmLnByZWMgPCAwID8gNiA6IGYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09PSAwICYmIDEgLyB4ID09PSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpKSB7XG4gICAgZi5zaWduID0gLTE7XG4gICAgeCA9IC14O1xuICB9XG4gIGlmIChOdW1iZXIuaXNOYU4oeCkpIHtcbiAgICBzID0gXCJuYW5cIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICBzID0gXCJpbmZcIjtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICB9IGVsc2VcbiAgICBzd2l0Y2ggKGYuY29udikge1xuICAgICAgY2FzZSBcImVcIjpcbiAgICAgICAgdmFyIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyk7XG4gICAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICAgIGlmIChzLmNoYXJBdChpIC0gMykgPT09IFwiZVwiKVxuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgLSAxKSArIFwiMFwiICsgcy5zbGljZShpIC0gMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZcIjpcbiAgICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgcHJlYyA9IHByZWMgPyBwcmVjIDogMTtcbiAgICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICAgIHZhciBqID0gcy5pbmRleE9mKFwiZVwiKTtcbiAgICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgICAgaWYgKGV4cCA8IC00IHx8IHggPj0gMWUyMSB8fCB4LnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYykge1xuICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICB2YXIgaSA9IGogLSAxO1xuICAgICAgICAgIHdoaWxlIChzLmNoYXJBdChpKSA9PT0gXCIwXCIpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT09IFwiLlwiKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgICBpID0gcy5sZW5ndGg7XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PT0gXCJlXCIpXG4gICAgICAgICAgICBzID0gcy5zbGljZSgwLCBpIC0gMSkgKyBcIjBcIiArIHMuc2xpY2UoaSAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgICBpZiAoZXhwIDwgMCkge1xuICAgICAgICAgICAgcCAtPSBleHAgKyAxO1xuICAgICAgICAgICAgcyA9IHgudG9GaXhlZChwKTtcbiAgICAgICAgICB9IGVsc2Ugd2hpbGUgKCgocyA9IHgudG9GaXhlZChwKSksIHMubGVuZ3RoID4gcHJlYyArIDEpKSBwLS07XG4gICAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKHMuY2hhckF0KGkpID09PSBcIjBcIikgaS0tO1xuICAgICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09PSBcIi5cIikgaS0tO1xuICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHZhciByX2Zsb2F0ID0gL14gKlstK10/KD86XFxkKlxcLj9cXGQrfFxcZCtcXC4/XFxkKikoPzpbZUVdWy0rXT9cXGQrKT8kLztcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHJlcyA9ICtzO1xuICAvL0Zhc3QgcGF0aFxuICBpZiAoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLCBcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoIU51bWJlci5pc05hTihyZXMpICYmIHJfZmxvYXQudGVzdChzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKVxuICAgIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8kL2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmIChtKSB7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCBcIlwiKTtcbiAgICB2YXIgbWFudGlzc2EgPSBOdW1iZXIucGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9ICgrbVs1XSB8fCAwKSAtIDQgKiBtMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoL15cXCs/aW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgaWYgKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkoeCwgeSkge1xuICBpZiAoeS5mdW4pIHtcbiAgICB4LmZ1biA9IHkuZnVuO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgeC5mdW4gPSB5O1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciBpID0geS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHhbaV0gPSB5W2ldO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19kdW1teV9pbmZpeFxuLy9SZXF1aXJlczogY2FtbF9jYWxsX2dlblxuLy9WZXJzaW9uOiA8IDUuNFxuZnVuY3Rpb24gY2FtbF9hbGxvY19kdW1teV9pbmZpeCgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYoeCkge1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYuZnVuLCBbeF0pO1xuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2xhenlcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2xhenkoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91cGRhdGVfZHVtbXlfbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15X2xhenkoZHVtbXksIG5ld3ZhbCkge1xuICBzd2l0Y2ggKGNhbWxfb2JqX3RhZyhuZXd2YWwpKSB7XG4gICAgY2FzZSAyNDY6IC8vIExhenlcbiAgICBjYXNlIDI0NDogLy8gRm9yY2luZ1xuICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkXG4gICAgICBjYW1sX3VwZGF0ZV9kdW1teShkdW1teSwgbmV3dmFsKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBkdW1teVsxXSA9IG5ld3ZhbDtcbiAgICAgIGR1bW15WzBdID0gMjUwO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfb2JqX3RhZyh4KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpICYmIHhbMF0gPT09IHhbMF0gPj4+IDApIHJldHVybiB4WzBdO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKSByZXR1cm4gMjUyO1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSkgcmV0dXJuIDI1MjtcbiAgZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAyNDc7XG4gIGVsc2UgaWYgKHg/LmNhbWxfY3VzdG9tKSByZXR1cm4gMjU1O1xuICBlbHNlIHJldHVybiAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcoeCwgdGFnKSB7XG4gIHhbMF0gPSB0YWc7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sodGFnLCBzaXplKSB7XG4gIC8vIFRPRE86IGZhaWwgZm9yIHZhbHVlIHRoYXQgYXJlIG5vdCByZXByZXNlbnRlZCBhcyBhbiBhcnJheVxuICB2YXIgbyA9IG5ldyBBcnJheShzaXplICsgMSk7XG4gIG9bMF0gPSB0YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLCB4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gdGFnO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGw7IGkrKykgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9kdXAgbXV0YWJsZSAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfb2JqX2R1cCh4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJudW1iZXJcIiA/IHggOiB4LnNsaWNlKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUoeCwgcykge1xuICBpZiAocyA8PSAwIHx8IHMgKyAxID4geC5sZW5ndGgpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9PSBzICsgMSkgeC5sZW5ndGggPSBzICsgMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX21ha2VfZm9yd2FyZFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfbWFrZV9mb3J3YXJkKGIsIHYpIHtcbiAgYlswXSA9IDI1MDtcbiAgYlsxXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfY29tcGFyZV9hbmRfc3dhcCh4LCBpLCBvbGQsIG4pIHtcbiAgaWYgKHhbaSArIDFdID09PSBvbGQpIHtcbiAgICB4W2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX3NoYXJlZChfeCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X21ha2VfZm9yd2FyZCBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQodikge1xuICByZXR1cm4gWzI1MCwgdl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcblxuLy9Qcm92aWRlczogY2FtbF9vb19jYWNoZV9pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tZXRob2RfY2FjaGVcbmZ1bmN0aW9uIGNhbWxfb29fY2FjaGVfaWQoKSB7XG4gIHZhciBjYWNoZWlkID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoO1xuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IDA7XG4gIGNhY2hlaWQ7XG59XG5cbi8vLy8vLy8vLy8vLy8gQ2FtbGludGVybmFsT09cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NhY2hlZF9tZXRob2QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWV0aG9kX2NhY2hlXG5mdW5jdGlvbiBjYW1sX2dldF9jYWNoZWRfbWV0aG9kKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAobWV0aHNbb2ZzICsgNF0gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgKyAzXTtcbiAgfVxuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSAtIDM7XG4gIHJldHVybiBtZXRoc1tsaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qob2JqLCB0YWcpIHtcbiAgdmFyIG1ldGhzID0gb2JqWzFdO1xuICB2YXIgbGkgPSAzLFxuICAgIGhpID0gbWV0aHNbMV0gKiAyICsgMSxcbiAgICBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkgKyBoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSArIDFdKSBoaSA9IG1pIC0gMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gdGFnID09PSBtZXRoc1tsaSArIDFdID8gbWV0aHNbbGldIDogMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQoYikge1xuICBiWzJdID0gY2FtbF9vb19sYXN0X2lkKys7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZyZXNoX29vX2lkIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX29vX2xhc3RfaWRcbmZ1bmN0aW9uIGNhbWxfZnJlc2hfb29faWQoKSB7XG4gIHJldHVybiBjYW1sX29vX2xhc3RfaWQrKztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfcmF3X2ZpZWxkXG5mdW5jdGlvbiBjYW1sX29ial9yYXdfZmllbGQobywgaSkge1xuICByZXR1cm4gb1tpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobywgaSwgdikge1xuICByZXR1cm4gKG9baSArIDFdID0gdik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKF9vKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9hZGRfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX29ial9hZGRfb2Zmc2V0KF92LCBfb2Zmc2V0KSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJPYmouYWRkX29mZnNldCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLCBvLCBuKSB7XG4gIGlmIChiWzBdID09PSBvKSB7XG4gICAgYlswXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1xuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KG8pICYmXG4gICAgb1swXSA9PT0gb1swXSA+Pj4gMCAmJlxuICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpXG4gICkge1xuICAgIHJldHVybiAwO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ0LCAyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZXNldF90b19sYXp5KG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDQsIDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbGF6eV9yZWFkX3Jlc3VsdChvKSB7XG4gIHJldHVybiBjYW1sX29ial90YWcobykgPT09IDI1MCA/IG9bMV0gOiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gdCA9PT0gMjQ1ID8gMSA6IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2lkZW50aWZpZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2N1c3RvbV9pZGVudGlmaWVyKG8pIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG8uY2FtbF9jdXN0b20gfHwgXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZ2NfcmFtcF91cFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF91cChmKSB7XG4gIHZhciBhID0gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xuICB2YXIgc3VzcGVuZGVkID0gMDtcbiAgcmV0dXJuIFswLCBhLCBzdXNwZW5kZWRdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2djX3JhbXBfZG93blxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfbWxfZ2NfcmFtcF9kb3duKF9zdXNwZW5kZWRfY29sbGVjdGlvbl93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfY3VycmVudF9zdGFjay54XS5cbkV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFja1xud2hlbiBlbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuXG5IYW5kbGVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suaF1cbmFuZCB0aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2N1cnJlbnRfc3RhY2suZV0uXG5UbyBpbnN0YWxsIGFuIGVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aywgeCwgaCwgZX0gd2hlcmVcbi8vIC0gaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVycyAoc2VlIGVmZmVjdC5tbClcbi8vIC0gayBpcyB0aGUgbG93IGxldmVsIGNvbnRpbnVhdGlvblxuLy8gLSB4IGlzIHRoZSBleGNlcHRpb24gc3RhY2tcbi8vIC0gZSBpcyB0aGUgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2N1cnJlbnRfc3RhY2sueCA9IHsgaDogaGFuZGxlciwgdDogY2FtbF9jdXJyZW50X3N0YWNrLnggfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KVxuICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgdGhyb3cgeDtcbiAgICB9O1xuICB2YXIgaCA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfdW5oYW5kbGVkXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3VuaGFuZGxlZChlZmYpIHtcbiAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICB0aHJvdyBleG47XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnRcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgaykge1xuICBpZiAoIXN0YWNrKVxuICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoXG4gICAgICBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIiksXG4gICAgKTtcbiAgaWYgKGxhc3QgPT09IDApIHtcbiAgICBsYXN0ID0gc3RhY2s7XG4gICAgLy8gUHJlIE9DYW1sIDUuMiwgbGFzdCB3YXMgbm90IHBvcHVsYXRlZC5cbiAgICB3aGlsZSAobGFzdC5lICE9PSAwKSBsYXN0ID0gbGFzdC5lO1xuICB9XG4gIGNhbWxfY3VycmVudF9zdGFjay5rID0gaztcbiAgbGFzdC5lID0gY2FtbF9jdXJyZW50X3N0YWNrO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBzdGFjaztcbiAgcmV0dXJuIHN0YWNrLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIGMgPSBjYW1sX2N1cnJlbnRfc3RhY2suZTtcbiAgY2FtbF9jdXJyZW50X3N0YWNrLmUgPSAwO1xuICBjYW1sX2N1cnJlbnRfc3RhY2sgPSBjO1xuICByZXR1cm4gYy5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG5cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfZnJlc2hfb29faWRcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKSB7XG4gIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgaWYgKGV4bikgZXhuID0gWzAsIGV4biwgZWZmXTtcbiAgZWxzZSB7XG4gICAgZXhuID0gW1xuICAgICAgMjQ4LFxuICAgICAgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksXG4gICAgICBjYW1sX2ZyZXNoX29vX2lkKDApLFxuICAgIF07XG4gIH1cbiAgcmV0dXJuIGV4bjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGswKSB7XG4gIGlmIChjYW1sX2N1cnJlbnRfc3RhY2suZSA9PT0gMCkge1xuICAgIHZhciBleG4gPSBjYW1sX21ha2VfdW5oYW5kbGVkX2VmZmVjdF9leG4oZWZmKTtcbiAgICB0aHJvdyBleG47XG4gIH1cbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFszXTtcbiAgdmFyIGxhc3RfZmliZXIgPSBjYW1sX2N1cnJlbnRfc3RhY2s7XG4gIGxhc3RfZmliZXIuayA9IGswO1xuICB2YXIgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgbGFzdF9maWJlciwgbGFzdF9maWJlcl07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpXG4gICAgPyBjYW1sX2dldF9jcHNfZnVuKGhhbmRsZXIpKGVmZiwgY29udCwgbGFzdF9maWJlciwgazEpXG4gICAgOiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsIFtlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVwZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4biwgY2FtbF9jdXJyZW50X3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXBlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgbGFzdCwgazApIHtcbiAgaWYgKGNhbWxfY3VycmVudF9zdGFjay5lID09PSAwKSB7XG4gICAgdmFyIGV4biA9IGNhbWxfbWFrZV91bmhhbmRsZWRfZWZmZWN0X2V4bihlZmYpO1xuICAgIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgbGFzdCwgazApO1xuICAgIHRocm93IGV4bjtcbiAgfVxuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay5oWzNdO1xuICB2YXIgbGFzdF9maWJlciA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgbGFzdF9maWJlci5rID0gazA7XG4gIGxhc3QuZSA9IGxhc3RfZmliZXI7XG4gIGNvbnRbMl0gPSBsYXN0X2ZpYmVyO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9nZXRfY3BzX2Z1bihoYW5kbGVyKShlZmYsIGNvbnQsIGxhc3RfZmliZXIsIGsxKVxuICAgIDogY2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLCBbZWZmLCBjb250LCBsYXN0X2ZpYmVyLCBrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jcHNfZnVuXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiAhZG91YmxldHJhbnNsYXRlXG5mdW5jdGlvbiBjYW1sX2dldF9jcHNfZnVuKGYpIHtcbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2Nwc19mdW5cbi8vSWY6IGVmZmVjdHNcbi8vSWY6IGRvdWJsZXRyYW5zbGF0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfY3BzX2Z1bihmKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIHRvIGdldCB0aGUgZWZmZWN0IGhhbmRsZXIuIElmIHRoZVxuICAvLyBlZmZlY3QgaGFuZGxlciBoYXMgbm8gQ1BTIGZ1bmN0aW9uLCB3ZSBrbm93IHRoYXQgd2UgY2FuIGRpcmVjdGx5XG4gIC8vIGNhbGwgdGhlIGRpcmVjdCB2ZXJzaW9uIGluc3RlYWQuXG4gIHJldHVybiBmLmNwcyA/IGYuY3BzIDogZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5fY3BzLCBjYW1sX2N1cnJlbnRfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2NhbGwoZiwgeCkge1xuICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKVxuICAgID8gY2FtbF9jYWxsX2dlbl9jcHMoZiwgYXJncylcbiAgICA6IGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZiwgYXJncywgMCk7XG59XG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrX2h2YWwoeCkge1xuICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICB2YXIgZiA9IGNhbWxfY3VycmVudF9zdGFjay5oWzFdO1xuICByZXR1cm4gY2FtbF9hbGxvY19zdGFja19jYWxsKGYsIHgpO1xufVxuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFja19oZXhuKGUpIHtcbiAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgdmFyIGYgPSBjYW1sX2N1cnJlbnRfc3RhY2suaFsyXTtcbiAgcmV0dXJuIGNhbWxfYWxsb2Nfc3RhY2tfY2FsbChmLCBlKTtcbn1cbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICB2YXIgaGFuZGxlcnMgPSBbMCwgaHYsIGh4LCBoZl07XG4gIHJldHVybiB7XG4gICAgazogY2FtbF9hbGxvY19zdGFja19odmFsLFxuICAgIHg6IHsgaDogY2FtbF9hbGxvY19zdGFja19oZXhuLCB0OiAwIH0sXG4gICAgaDogaGFuZGxlcnMsXG4gICAgZTogMCxcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKF9odiwgX2h4LCBfaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjayA9IGNvbnRbMV07XG4gIGNvbnRbMV0gPSAwO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoXG4gIGNvbnQsXG4gIGh2YWwsXG4gIGhleG4sXG4gIGhlZmYsXG4pIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBpZiAoc3RhY2sgPT09IDApIHJldHVybiBzdGFjaztcbiAgdmFyIGxhc3QgPSBjb250WzJdO1xuICBsYXN0LmhbMV0gPSBodmFsO1xuICBsYXN0LmhbMl0gPSBoZXhuO1xuICBsYXN0LmhbM10gPSBoZWZmO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrKCkge1xuICByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcoX3VuaXQpIHtcbiAgcmV0dXJuIHsgY29uZGl0aW9uOiAxIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KF90LCBfbXV0ZXh0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3Rcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QoX3QpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbChfdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3VtZVxuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuX2NwcywgY2FtbF9jdXJyZW50X3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy9JZjogZG91YmxldHJhbnNsYXRlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9yZXN1bWUoZiwgYXJnLCBzdGFjaywgbGFzdCkge1xuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfY3VycmVudF9zdGFjayA9IGNhbWxfY3VycmVudF9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2N1cnJlbnRfc3RhY2sgPSB7IGs6IDAsIHg6IDAsIGg6IDAsIGU6IDAgfTtcbiAgICB2YXIgayA9IGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBsYXN0LCBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfSk7XG4gICAgLyogTm90ZTogZiBpcyBub3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24gYnV0IGEgKGRpcmVjdC1zdHlsZSwgQ1BTKSBjbG9zdXJlIHBhaXIgKi9cbiAgICB2YXIgcmVzID0geyBqb29fdHJhbXA6IGYsIGpvb19hcmdzOiBbYXJnLCBrXSwgam9vX2RpcmVjdDogMCB9O1xuICAgIGRvIHtcbiAgICAgIC8qIEF2b2lkcyB0cmFtcG9saW5pbmcgdG9vIG9mdGVuIHdoaWxlIHN0aWxsIGF2b2lkaW5nIHN0YWNrIG92ZXJmbG93LiBTZWVcbiAgICAgICAgIFtjYW1sX2NhbGxiYWNrXS4gKi9cbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IHJlcy5qb29fZGlyZWN0XG4gICAgICAgICAgPyByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncylcbiAgICAgICAgICA6IGNhbWxfY2FsbF9nZW5fY3BzKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfY3VycmVudF9zdGFjay54KSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfY3VycmVudF9zdGFjay54Lmg7XG4gICAgICAgIGNhbWxfY3VycmVudF9zdGFjay54ID0gY2FtbF9jdXJyZW50X3N0YWNrLngudDtcbiAgICAgICAgcmVzID0ge1xuICAgICAgICAgIGpvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldLFxuICAgICAgICAgIGpvb19kaXJlY3Q6IDEsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSB3aGlsZSAocmVzPy5qb29fYXJncyk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9jdXJyZW50X3N0YWNrID0gc2F2ZWRfY3VycmVudF9zdGFjaztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Nwc19jbG9zdXJlXG4vL0lmOiBlZmZlY3RzXG4vL0lmOiBkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfY3BzX2Nsb3N1cmUoZGlyZWN0X2YsIGNwc19mKSB7XG4gIGRpcmVjdF9mLmNwcyA9IGNwc19mO1xuICByZXR1cm4gZGlyZWN0X2Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXNzdW1lX25vX3BlcmZvcm1cbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vSWY6ICFkb3VibGV0cmFuc2xhdGVcbmZ1bmN0aW9uIGNhbWxfYXNzdW1lX25vX3BlcmZvcm0oZikge1xuICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICBhMlswXSA9IDA7XG4gIGZvciAodmFyIGkyID0gMSwgaTEgPSBpICsgMTsgaTIgPD0gbGVuOyBpMisrLCBpMSsrKSB7XG4gICAgYTJbaTJdID0gYVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfc3ViIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfc3ViXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X3N1YihhLCBpLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfc3ViKGEsIGksIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9zdWIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9zdWJcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfc3ViKGEsIGksIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9zdWIoYSwgaSwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCxcbiAgICBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMSArIGwyIC0gMTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsXG4gICAgaiA9IDE7XG4gIGZvciAoOyBpIDwgbDE7IGkrKykgYVtpXSA9IGExW2ldO1xuICBmb3IgKDsgaSA8IGw7IGkrKywgaisrKSBhW2ldID0gYTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYXBwZW5kIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYXBwZW5kXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9hcHBlbmQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9hcHBlbmRcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICByZXR1cm4gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQgbXV0YWJsZVxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfdW5pZm9ybV9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICByZXR1cm4gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9BbGlhczogY2FtbF9hcnJheV9zZXRfZmxvYXRcbi8vQWxpYXM6IGNhbWxfZmxvYXRhcnJheV9zZXRcbi8vQWxpYXM6IGNhbWxfYXJyYXlfc2V0X2FkZHJcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0KGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCArIDFdID0gbmV3dmFsO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2FycmF5X2dldF9mbG9hdFxuLy9BbGlhczogY2FtbF9mbG9hdGFycmF5X2dldFxuLy9BbGlhczogY2FtbF9hcnJheV9nZXRfYWRkclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXggKyAxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcnJheVtvZnMgKyBpICsgMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2ZpbGxfdW5ib3hlZChhcnJheSwgb2ZzLCBsZW4sIHYpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfZmlsbFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9maWxsXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF91bmlmb3JtX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL0FsaWFzOiBjYW1sX2NoZWNrX2JvdW5kX2dlblxuLy9BbGlhczogY2FtbF9jaGVja19ib3VuZF9mbG9hdFxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X21ha2UgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDQpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfbWFrZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2FycmF5X21ha2UobGVuLCBpbml0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NyZWF0ZV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9hcnJheV9jcmVhdGVfZmxvYXQobGVuKSB7XG4gIGlmIChsZW4gPj4+IDAgPj0gKCgweDdmZmZmZmZmIC8gOCkgfCAwKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gKGxlbiArIDEpIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXSA9IDI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiO1xufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbikge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2UgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlKGxlbiwgaW5pdCkge1xuICBpZiAobGVuID4+PiAwID49ICgoMHg3ZmZmZmZmZiAvIDgpIHwgMCkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IChsZW4gKyAxKSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF0gPSAyNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0YXJyYXlfbWFrZVxuLy9WZXJzaW9uOiA+PSA1LjNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9tYWtlX3VuYm94ZWQobGVuLCBpbml0KSB7XG4gIHJldHVybiBjYW1sX2Zsb2F0YXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X21ha2Vcbi8vVmVyc2lvbjogPj0gNS4zXG5mdW5jdGlvbiBjYW1sX3VuaWZvcm1fYXJyYXlfbWFrZShsZW4sIGluaXQpIHtcbiAgcmV0dXJuIGNhbWxfYXJyYXlfbWFrZShsZW4sIGluaXQpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDVcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsIG4pIHtcbiAgaWYgKGNhbWxfZG9tYWluX2RscyAhPT0gb2xkKSByZXR1cm4gMDtcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpIHtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZF9maWVsZFxuLy9WZXJzaW9uOiA+PSA1LjRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWRfZmllbGQoYiwgaSkge1xuICByZXR1cm4gYltpICsgMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLCBvLCBuKSB7XG4gIGlmIChyZWZbMV0gPT09IG8pIHtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXNfZmllbGQoYiwgaSwgbywgbikge1xuICBpZiAoYltpICsgMV0gPT09IG8pIHtcbiAgICBiW2kgKyAxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGRcbi8vVmVyc2lvbjogPj0gNS40XG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGRfZmllbGQoYiwgaSwgbikge1xuICB2YXIgb2xkID0gYltpICsgMV07XG4gIGJbaSArIDFdICs9IG47XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkXG4vL1ZlcnNpb246ID49IDUuNFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2VfZmllbGQoYiwgaSwgdikge1xuICB2YXIgciA9IGJbaSArIDFdO1xuICBiW2kgKyAxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG4vL1ZlcnNpb246ID49IDUuMCwgPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdO1xuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKF91bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudChfdW5pdCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faW5kZXhcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMDNcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2luZGV4KF91bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbi8vVmVyc2lvbjogPj0gNVxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMTtcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsIHRlcm1fc3luYykge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgWzBdKTtcbiAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gIC8vVE9ETzogZml4IGV4biBjYXNlXG4gIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDE7XG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLCBtdXRleCkge1xuICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgdmFyIF9yZXMgPSBjYW1sX2NhbGxiYWNrKGYsIFswXSk7XG4gIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbi8vVmVyc2lvbjogPj0gNVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX2ludDMyX2Zvcm1hdFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZm9ybWF0XG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT09IFwiJWRcIilcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiICsgaSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7XG4gICAgaWYgKGYuc2lnbmVkY29udikge1xuICAgICAgZi5zaWduID0gLTE7XG4gICAgICBpID0gLWk7XG4gICAgfSBlbHNlIGkgPj4+PSAwO1xuICB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9IFwiIFwiO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0KG4sIFwiMFwiKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Uocykge1xuICB2YXIgaSA9IDAsXG4gICAgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLFxuICAgIGJhc2UgPSAxMCxcbiAgICBzaWduID0gMSxcbiAgICBzaWduZWRuZXNzID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkpIHtcbiAgICAgIGNhc2UgNDU6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IC0xO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDM6XG4gICAgICAgIGkrKztcbiAgICAgICAgc2lnbiA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgICAgY2FzZSAxMjA6XG4gICAgICBjYXNlIDg4OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDE2O1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTE6XG4gICAgICBjYXNlIDc5OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgYmFzZSA9IDg7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk4OlxuICAgICAgY2FzZSA2NjpcbiAgICAgICAgc2lnbmVkbmVzcyA9IDA7XG4gICAgICAgIGJhc2UgPSAyO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMTc6XG4gICAgICBjYXNlIDg1OlxuICAgICAgICBzaWduZWRuZXNzID0gMDtcbiAgICAgICAgaSArPSAyO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZSwgc2lnbmVkbmVzc107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IGNhbWxfaW50MzJfb2Zfc3RyaW5nXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyhzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlKHMpO1xuICB2YXIgaSA9IHJbMF0sXG4gICAgc2lnbiA9IHJbMV0sXG4gICAgYmFzZSA9IHJbMl0sXG4gICAgc2lnbmVkbmVzcyA9IHJbM107XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSBpIDwgbGVuID8gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA6IDA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKzsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmIChzaWduZWRuZXNzICYmIChyZXMgfCAwKSAhPT0gcmVzKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfbXVsXG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9tdWxcbi8vQWxpYXM6ICVpbnRfbXVsXG5mdW5jdGlvbiBjYW1sX211bChhLCBiKSB7XG4gIHJldHVybiBNYXRoLmltdWwoYSwgYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX2RpdlxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfZGl2XG4vL0FsaWFzOiAlaW50X2RpdlxuZnVuY3Rpb24gY2FtbF9kaXYoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4gKHggLyB5KSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG4vL0FsaWFzOiBjYW1sX2ludDMyX21vZFxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfbW9kXG4vL0FsaWFzOiAlaW50X21vZFxuZnVuY3Rpb24gY2FtbF9tb2QoeCwgeSkge1xuICBpZiAoeSA9PT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSgpO1xuICByZXR1cm4geCAlIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNiBjb25zdFxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoeCAmIDB4MDBmZikgPDwgOCkgfCAoKHggJiAweGZmMDApID4+IDgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwIGNvbnN0XG4vL0FsaWFzOiBjYW1sX25hdGl2ZWludF9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoXG4gICAgKCh4ICYgMHgwMDAwMDBmZikgPDwgMjQpIHxcbiAgICAoKHggJiAweDAwMDBmZjAwKSA8PCA4KSB8XG4gICAgKCh4ICYgMHgwMGZmMDAwMCkgPj4+IDgpIHxcbiAgICAoKHggJiAweGZmMDAwMDAwKSA+Pj4gMjQpXG4gICk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsIGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTEgfCAwKTtcbiAgZCA9IChkIDw8IDE1KSB8IChkID4+PiAoMzIgLSAxNSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9IChoIDw8IDEzKSB8IChoID4+PiAoMzIgLSAxMykpOyAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpIHwgMCkgKyAoMHhlNjU0NmI2NCB8IDApKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsKGgsIDB4ODVlYmNhNmIgfCAwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsKGgsIDB4YzJiMmFlMzUgfCAwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0KGhhc2gsIHYwKSB7XG4gIHZhciBpNjQgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodjApO1xuICB2YXIgbCA9IGNhbWxfaW50NjRfbG8zMihpNjQpO1xuICB2YXIgaCA9IGNhbWxfaW50NjRfaGkzMihpNjQpO1xuICAvKiBOb3JtYWxpemUgTmFOcyAqL1xuICBpZiAoKGggJiAweDdmZjAwMDAwKSA9PT0gMHg3ZmYwMDAwMCAmJiAobCB8IChoICYgMHhmZmZmZikpICE9PSAwKSB7XG4gICAgaCA9IDB4N2ZmMDAwMDA7XG4gICAgbCA9IDB4MDAwMDAwMDE7XG4gIH0gZWxzZSBpZiAoaCA9PT0gKDB4ODAwMDAwMDAgfCAwKSAmJiBsID09PSAwKSB7XG4gICAgLyogTm9ybWFsaXplIC0wIGludG8gKzAgKi9cbiAgICAvLyBUaGlzIGNvZGUgcGF0aCBpcyBub3QgdXNlZCBieSBjYW1sX2hhc2ggYmVjYXVzZSAwIGFuZCAtMCBsb29rXG4gICAgLy8gbGlrZSBpbnRlZ2Vyc1xuICAgIGggPSAwO1xuICB9XG4gIGhhc2ggPSBjYW1sX2hhc2hfbWl4X2ludChoYXNoLCBsKTtcbiAgaGFzaCA9IGNhbWxfaGFzaF9taXhfaW50KGhhc2gsIGgpO1xuICByZXR1cm4gaGFzaDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCxcbiAgICBpLFxuICAgIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9XG4gICAgICBzLmNoYXJDb2RlQXQoaSkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMSkgPDwgOCkgfFxuICAgICAgKHMuY2hhckNvZGVBdChpICsgMikgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSArIDMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICAgIGNhc2UgMzpcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgIHcgPSBzLmNoYXJDb2RlQXQoaSArIDIpIDw8IDE2O1xuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSAyOlxuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgdyB8PSBzLmNoYXJDb2RlQXQoaSArIDEpIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsXG4gICAgaSxcbiAgICB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldIHwgKHNbaSArIDFdIDw8IDgpIHwgKHNbaSArIDJdIDw8IDE2KSB8IChzW2kgKyAzXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgICBjYXNlIDM6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3ID0gc1tpICsgMl0gPDwgMTY7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDI6XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICB3IHw9IHNbaSArIDFdIDw8IDg7XG4gICAgLy8gZmFsbHRocm91Z2hcbiAgICBjYXNlIDE6XG4gICAgICB3IHw9IHNbaV07XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpO1xuICAvKiBBUlJBWSAqLyBlbHNlIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07XG4gIHJkID0gMDtcbiAgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2Py5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYgKFxuICAgICAgICBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiZcbiAgICAgICAgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2hcbiAgICAgICkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGhoKTtcbiAgICAgICAgbnVtLS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHZbMF0gPT09ICh2WzBdIHwgMCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgICBjYXNlIDI0ODpcbiAgICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgICAgbnVtLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUwOlxuICAgICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdik7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHYpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodiB8IDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdiArIHYgKyAxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCB2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNmZmZmZmZmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1LjBcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdikge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzZmZmZmZmZjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSkge1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpXG4gICAgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoYSkpXG4gICAgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSlcbiAgICByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBhWzBdID09PSBhWzBdID4+PiAwICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuIHRhZyA9PT0gMjU0ID8gMCA6IHRhZztcbiAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgU3RyaW5nKVxuICAgIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcilcbiAgICByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYT8uY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhPy5jb21wYXJlKVxuICAgIHJldHVybiAxMjU2OyAvLyBsaWtlIGN1c3RvbV90YWcgKDI1NSlcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMTI0NzsgLy8gbGlrZSBjbG9zdXJlX3RhZyAoMjQ3KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpIHtcbiAgcmV0dXJuIChcbiAgICBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dLmNvbXBhcmVcbiAgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYgKGNvbXApIHtcbiAgICB2YXIgeCA9IHN3YXAgPiAwID8gY29tcChjdXN0b20sIG51bSwgdG90YWwpIDogY29tcChudW0sIGN1c3RvbSwgdG90YWwpO1xuICAgIGlmICh0b3RhbCAmJiBOdW1iZXIuaXNOYU4oeCkpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZiAoTnVtYmVyLmlzTmFOKCt4KSkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZiAoKHggfCAwKSAhPT0gMCkgcmV0dXJuIHggfCAwOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvciAoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZiAodGFnX2EgPT09IDI1MCkge1xuICAgICAgICBhID0gYVsxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciB0YWdfYiA9IGNhbWxfY29tcGFyZV92YWxfdGFnKGIpO1xuICAgICAgLy8gZm9yd2FyZF90YWcgP1xuICAgICAgaWYgKHRhZ19iID09PSAyNTApIHtcbiAgICAgICAgYiA9IGJbMV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmICh0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYgKHRhZ19hID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19iID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZ19iID09PSAxMDAwKSB7XG4gICAgICAgICAgaWYgKHRhZ19hID09PSAxMjU1KSB7XG4gICAgICAgICAgICAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdfYSA8IHRhZ19iID8gLTEgOiAxO1xuICAgICAgfVxuICAgICAgLy8gdGFnX2EgPSB0YWdfYlxuICAgICAgc3dpdGNoICh0YWdfYSkge1xuICAgICAgICAvLyAyNDY6IExhenlfdGFnIGhhbmRsZWQgYmVsbG93XG4gICAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pIHwgMDtcbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ5OiAvLyBJbmZpeFxuICAgICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MDogLy8gRm9yd2FyZCB0YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgICAgdmFyIHggPSBjYW1sX2J5dGVzX2NvbXBhcmUoYSwgYikgfCAwO1xuICAgICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTM6IC8vIERvdWJsZV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGluIGNhbWxfY29tcGFyZV92YWxfdGFnXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICAgICAgXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgICBpZiAoY29tcCAhPT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jYW1sX2N1c3RvbSA8IGIuY2FtbF9jdXN0b20gPyAtMSA6IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY29tcCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogYWJzdHJhY3QgdmFsdWVcIik7XG4gICAgICAgICAgdmFyIHggPSBjb21wKGEsIGIsIHRvdGFsKTtcbiAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHgpKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICAgIHJldHVybiB0b3RhbCA/IC0xIDogeDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09ICh4IHwgMCkpIHtcbiAgICAgICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoeCAhPT0gMCkgcmV0dXJuIHggfCAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgICB2YXIgeCA9IGEuY29tcGFyZShiLCB0b3RhbCk7XG4gICAgICAgICAgaWYgKE51bWJlci5pc05hTih4KSkge1xuICAgICAgICAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAtMSA6IHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh4ICE9PSAoeCB8IDApKSB7XG4gICAgICAgICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHggIT09IDApIHJldHVybiB4IHwgMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDAwOiAvLyBOdW1iZXJcbiAgICAgICAgICBhID0gK2E7XG4gICAgICAgICAgYiA9ICtiO1xuICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOdW1iZXIuTmFOO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYSkpIHJldHVybiAxO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYikpIHJldHVybiAtMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAgIC8vIDEuIEphdmFTY3JpcHQgcHJpbWl0aXZlIHR5cGVzXG4gICAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgICAvLyAoMikgYW5kICgzKSwgYWZ0ZXIgZXZlbnR1YWwgY29lcmNpb25cbiAgICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAgIC8vICAgYW5kIGFwcGx5IHN0YW5kYXJkIGNvbXBhcmlzb25cbiAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICByZXR1cm4gdG90YWwgPyAxIDogTnVtYmVyLk5hTjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhhKTtcbiAgICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICAgIHZhciBiID0gYi50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBMYXp5X3RhZyBvciBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGEubGVuZ3RoIDwgYi5sZW5ndGggPyAtMSA6IDE7XG4gICAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9jb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwoYSwgYiwgdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgY29uc3Rcbi8vQWxpYXM6IGNhbWxfaW50MzJfY29tcGFyZVxuLy9BbGlhczogY2FtbF9uYXRpdmVpbnRfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZShhLCBiKSB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDA7XG4gIHJldHVybiAxO1xufVxuXG4vLyBNYXkgcmFpc2Vcbi8vUHJvdmlkZXM6IGNhbWxfZXF1YWwgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA9PT0gMCk7XG59XG5cbi8vIE1heSByYWlzZVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ub3RlcXVhbCh4LCB5KSB7XG4gIHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCwgeSwgZmFsc2UpICE9PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA+PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJ0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPiAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3NlcXVhbCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwoeCwgeSkge1xuICByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgsIHksIGZhbHNlKSA8PSAwKTtcbn1cblxuLy8gTWF5IHJhaXNlXG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuKHgsIHkpIHtcbiAgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LCB5LCBmYWxzZSkgPCAwKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG4vL1ZlcnNpb246ID49IDUuMVxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKF9ldmVudCwgX2V2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vVmVyc2lvbjogPj0gNS4wLCA8IDUuMlxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcGF1c2Vcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9WZXJzaW9uOiA+PSA1LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vVmVyc2lvbjogPj01LjAsIDwgNS4yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3IoX3RhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3Jcbi8vVmVyc2lvbjogPj0gNS4wXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKF9jdXJzb3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsXG4vL1ZlcnNpb246ID49IDUuMFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoX2N1cnNvciwgX2NhbGxiYWNrcywgX251bSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoIGNvbnN0XG4vL1ZlcnNpb246ID49IDUuM1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXRoKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG4gIHZhciBhYiA9IEFycmF5QnVmZmVyLFxuICAgIHU4ID0gVWludDhBcnJheSxcbiAgICB1MTYgPSBVaW50MTZBcnJheSxcbiAgICBpMTYgPSBJbnQxNkFycmF5LFxuICAgIGkzMiA9IEludDMyQXJyYXk7XG4gIHZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKSBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aCkgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbiAgfTtcbiAgdmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbCkgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMCkgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcykgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG4gIH07XG4gIHZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKSBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICAgKi9cbiAgLy8gZXJyb3IgY29kZXNcbiAgdmFyIGVjID0gW1xuICAgIFwiaW52YWxpZCB6c3RkIGRhdGFcIixcbiAgICBcIndpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQilcIixcbiAgICBcImludmFsaWQgYmxvY2sgdHlwZVwiLFxuICAgIFwiRlNFIGFjY3VyYWN5IHRvbyBoaWdoXCIsXG4gICAgXCJtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2tcIixcbiAgICBcInVuZXhwZWN0ZWQgRU9GXCIsXG4gIF07XG4gIHZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KSB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xuICB9O1xuICB2YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCxcbiAgICAgIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKSBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgdmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7XG4gIH07XG4gIC8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxuICB2YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09PSAweDJmYjUyOCAmJiBkYXRbM10gPT09IDI1Mykge1xuICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLFxuICAgICAgICBjYyA9IChmbGcgPj4gMikgJiAxLFxuICAgICAgICBkZiA9IGZsZyAmIDMsXG4gICAgICAgIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgaWYgKGZsZyAmIDgpIGVycigwKTtcbiAgICAgIC8vIGJ5dGVcbiAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgIHZhciBkYiA9IGRmID09PSAzID8gNCA6IGRmO1xuICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgYnQgKz0gZGI7XG4gICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICB2YXIgZnNiID0gZmNmID8gMSA8PCBmY2YgOiBzcztcbiAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArIChmY2YgPT09IDEgJiYgMjU2KTtcbiAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICBpZiAoIXNzKSB7XG4gICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICB9XG4gICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KSBlcnIoMSk7XG4gICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09PSAxID8gZnNzIHx8IHdzIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAoYnVmWzBdID0gMSksIChidWZbNF0gPSA0KSwgKGJ1Zls4XSA9IDgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIGw6IDAsXG4gICAgICAgIGQ6IGRpLFxuICAgICAgICB3OiB3ICYmIHcgIT09IDEgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgZTogd3MsXG4gICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgIHU6IGZzcyxcbiAgICAgICAgYzogY2MsXG4gICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT09IDB4MTg0ZDJhNSkge1xuICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbiAgfTtcbiAgLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbiAgdmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7IDEgPDwgYml0cyA8PSB2YWw7ICsrYml0cyk7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xuICB9O1xuICAvLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG4gIHZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKSBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osXG4gICAgICBzeW0gPSAtMSxcbiAgICAgIHJlID0gLTEsXG4gICAgICBpID0gLTEsXG4gICAgICBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgLy8gbWFza1xuICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICh0cG9zICYgNykpICZcbiAgICAgICAgbXNrO1xuICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgaWYgKHN2YWwgPCBtc3YpICh0cG9zICs9IGJpdHMpLCAodmFsID0gc3ZhbCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgaWYgKHZhbCA+IG1zazFmYikgdmFsIC09IG1zdjtcbiAgICAgIH1cbiAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICBpZiAodmFsID09PSAtMSkge1xuICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICB9IGVsc2UgcHJvYnMgLT0gdmFsO1xuICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgfSB3aGlsZSAocmUgPT09IDMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKSBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKSBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgLy8gbnVtIGJpdHNcbiAgICAgIHZhciBuYiA9IChuYml0c1tpXSA9IGFsIC0gbXNiKG5zKSk7XG4gICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAodHBvcyArIDcpID4+IDMsXG4gICAgICB7XG4gICAgICAgIGI6IGFsLFxuICAgICAgICBzOiBzeW1zLFxuICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgdDogbnN0YXRlLFxuICAgICAgfSxcbiAgICBdO1xuICB9O1xuICAvLyByZWFkIGh1ZmZtYW5cbiAgdmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsXG4gICAgICB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSxcbiAgICAgIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSxcbiAgICAgICAgZWJ0ID0gX2FbMF0sXG4gICAgICAgIGZkdCA9IF9hWzFdO1xuICAgICAgYnQgKz0gaGI7XG4gICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgLy8gbGFzdCBieXRlXG4gICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgIHZhciBzdDEgPSAwLFxuICAgICAgICBzdDIgPSAwLFxuICAgICAgICBidHIxID0gZmR0LmIsXG4gICAgICAgIGJ0cjIgPSBidHIxO1xuICAgICAgLy8gZnNlIHBvc1xuICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICBpZiAoZnBvcyA8IGVwb3MpIGJyZWFrO1xuICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICBzdDEgKz1cbiAgICAgICAgICAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgIGlmIChmcG9zIDwgZXBvcykgYnJlYWs7XG4gICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgc3QyICs9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgfVxuICAgICAgaWYgKCsrd2MgPiAyNTUpIGVycigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgIH1cbiAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgIGlmICh3dCA+IDExKSBlcnIoMCk7XG4gICAgICB3ZXMgKz0gd3QgJiYgMSA8PCAod3QgLSAxKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKSBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgKytyY1soaHdbaV0gPSB3dCAmJiBtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksXG4gICAgICBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgZmlsbChuYiwgaSwgcHYsIChyaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPT0gdHMpIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgKHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgYnQsXG4gICAgICB7XG4gICAgICAgIG46IG5iLFxuICAgICAgICBiOiBtYixcbiAgICAgICAgczogc3ltcyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfTtcbiAgLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuICAvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbiAgLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxuICB2YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsXG4gICAgICAxNDYsIDQsXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxuICB2YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsXG4gICAgICA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDksXG4gICAgXSksXG4gICAgMCxcbiAgICA2LFxuICApWzFdO1xuICAvLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG4gIHZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZShcbiAgICAvKiNfX1BVUkVfXyovIG5ldyB1OChbMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXSksXG4gICAgMCxcbiAgICA1LFxuICApWzFdO1xuICAvLyBiaXRzIHRvIGJhc2VsaW5lXG4gIHZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsXG4gICAgICBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICBibFtpXSA9IHM7XG4gICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xuICB9O1xuICAvLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG4gIHZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoXG4gICAgLyojX19QVVJFX18gKi8gbmV3IGkzMihbXG4gICAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTMsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgMzYsXG4gICk7XG4gIC8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG4gIHZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuICAvLyBtYXRjaCBsZW5ndGggYml0c1xuICB2YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KFxuICAgIC8qI19fUFVSRV9fICovIG5ldyBpMzIoW1xuICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCxcbiAgICAgIDI1MjU3OTA4NCwgMTYsXG4gICAgXSkuYnVmZmVyLFxuICAgIDAsXG4gICAgNTMsXG4gICk7XG4gIC8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxuICB2YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbiAgLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG4gIHZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsXG4gICAgICBzcyA9IG91dC5sZW5ndGgsXG4gICAgICBsYiA9IGRhdFtsZW4gLSAxXSxcbiAgICAgIG1zayA9ICgxIDw8IGh1LmIpIC0gMSxcbiAgICAgIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYikgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsXG4gICAgICBidHIgPSBodS5iLFxuICAgICAgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLFxuICAgICAgaSA9IC0xO1xuICAgIHdoaWxlIChwb3MgPiBlYiAmJiBpIDwgc3MpIHtcbiAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgIHZhciB2YWwgPVxuICAgICAgICAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICBwb3MgLT0gYnRyID0gaHUubltzdF07XG4gICAgfVxuICAgIGlmIChwb3MgIT09IGViIHx8IGkgKyAxICE9PSBzcykgZXJyKDApO1xuICB9O1xuICAvLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbiAgLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbiAgdmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLFxuICAgICAgc3oxID0gKHNzICsgMykgPj4gMixcbiAgICAgIHN6MiA9IHN6MSA8PCAxLFxuICAgICAgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShcbiAgICAgIGRhdC5zdWJhcnJheShidCwgKGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpKSxcbiAgICAgIG91dC5zdWJhcnJheSgwLCBzejEpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoXG4gICAgICBkYXQuc3ViYXJyYXkoYnQsIChidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSksXG4gICAgICBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLFxuICAgICAgaHUsXG4gICAgKTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbiAgfTtcbiAgLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbiAgdmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLFxuICAgICAgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09PSAxKSB7XG4gICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIChzdC55ICs9IHN6KSk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT09IDApIHtcbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICBpZiAob3V0KSB7XG4gICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09PSAyKSB7XG4gICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgIHZhciBiMyA9IGRhdFtidF0sXG4gICAgICAgIGxidCA9IGIzICYgMyxcbiAgICAgICAgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgdmFyIGxzcyA9IGIzID4+IDQsXG4gICAgICAgIGxjcyA9IDAsXG4gICAgICAgIHM0ID0gMDtcbiAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgIGlmIChzZiAmIDEpIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKHNmICYgMiAmJiBkYXRbKytidF0gPDwgMTIpO1xuICAgICAgICBlbHNlIGxzcyA9IGIzID4+IDM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHNmO1xuICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSxcbiAgICAgICAgICAgIChsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikpO1xuICAgICAgICBlbHNlIGlmIChzZiA9PT0gMilcbiAgICAgICAgICAobHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSksXG4gICAgICAgICAgICAobGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCkpO1xuICAgICAgfVxuICAgICAgKytidDtcbiAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgaWYgKGxidCA9PT0gMCkgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsc3MpKSwgc3BsKTtcbiAgICAgIGVsc2UgaWYgKGxidCA9PT0gMSkgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgIGlmIChsYnQgPT09IDIpIHtcbiAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICB9IGVsc2UgaWYgKCFodSkgZXJyKDApO1xuICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIChidCArPSBsY3MpKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgIH1cbiAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgIGlmIChucykge1xuICAgICAgICBpZiAobnMgPT09IDI1NSkgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdmMDA7XG4gICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KSBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKHNjbSAmIDMpIGVycigwKTtcbiAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgIGlmIChtZCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgYjogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMikge1xuICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgKF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSkpLCAoYnQgPSBfYVswXSksIChkdHNbaV0gPSBfYVsxXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZCA9PT0gMykge1xuICAgICAgICAgICAgaWYgKCFzdC50KSBlcnIoMCk7XG4gICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgX2IgPSAoc3QudCA9IGR0cyksXG4gICAgICAgICAgbWx0ID0gX2JbMF0sXG4gICAgICAgICAgb2N0ID0gX2JbMV0sXG4gICAgICAgICAgbGx0ID0gX2JbMl07XG4gICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgaWYgKCFsYikgZXJyKDApO1xuICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLFxuICAgICAgICAgIGNidCA9IHNwb3MgPj4gMyxcbiAgICAgICAgICBvdWJ0ID0gMDtcbiAgICAgICAgdmFyIGxzdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgdmFyIG9zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgdmFyIG1zdCA9XG4gICAgICAgICAgKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICBmb3IgKCsrbnM7IC0tbnM7ICkge1xuICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgdmFyIG9mZiA9XG4gICAgICAgICAgICBvZnAgK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDFdIDw8IDgpIHxcbiAgICAgICAgICAgICAgKGRhdFtjYnQgKyAyXSA8PCAxNikgfFxuICAgICAgICAgICAgICAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+XG4gICAgICAgICAgICAgIChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKG9mcCAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICB2YXIgbWwgPVxuICAgICAgICAgICAgbWxibFttbGNdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PlxuICAgICAgICAgICAgICAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgdmFyIGxsID1cbiAgICAgICAgICAgIGxsYmxbbGxjXSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj5cbiAgICAgICAgICAgICAgKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgbHN0ID1cbiAgICAgICAgICAgIGxsdC50W2xzdF0gK1xuICAgICAgICAgICAgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmXG4gICAgICAgICAgICAgICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgIG1zdCA9XG4gICAgICAgICAgICBtbHQudFttc3RdICtcbiAgICAgICAgICAgICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJlxuICAgICAgICAgICAgICAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICBvc3QgPVxuICAgICAgICAgICAgb2N0LnRbb3N0XSArXG4gICAgICAgICAgICAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICZcbiAgICAgICAgICAgICAgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9PSAwKTtcbiAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgb2ZmID0gaWR4ID09PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgIGlmIChpZHggPiAxKSBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICB9IGVsc2Ugb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICAob3VidCArPSBsbCksIChzcGwgKz0gbGwpO1xuICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgaWYgKGxlbiA+IG1sKSBsZW4gPSBtbDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChvdWJ0ICs9IGxlbiksIChtbCAtPSBsZW4pLCAoc3RpbiA9IDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdWJ0ICE9PSBzcGwpIHtcbiAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICBpZiAob3V0KSBzdC55ICs9IG91YnQ7XG4gICAgICAgIGVsc2UgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNwbCkgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgIH1cbiAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG4gIH07XG4gIC8vIGNvbmNhdFxuICB2YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09PSAxKSByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfTtcbiAgLyoqXG4gICAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICAgKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gICAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICAgKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gICAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAgICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsXG4gICAgICBidWZzID0gW10sXG4gICAgICBuYiA9ICshYnVmLFxuICAgICAgb2wgPSAwO1xuICAgIHdoaWxlIChkYXQubGVuZ3RoKSB7XG4gICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgIGlmICh0eXBlb2Ygc3QgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT09IHN0LnUpIHtcbiAgICAgICAgICAgIGJ1ZnMucHVzaCgoYnVmID0gc3QudykpO1xuICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKCFzdC5sKSB7XG4gICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgIGlmICghYmxrKSBlcnIoNSk7XG4gICAgICAgICAgaWYgKGJ1Zikgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ0ID0gc3QuYiArIHN0LmMgKiA0O1xuICAgICAgfSBlbHNlIGJ0ID0gc3Q7XG4gICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbiAgfTtcbn0pKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbDtcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUoX3VuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gMztcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMjtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX25vbmVcbnZhciBjYW1sX2VwaGVfbm9uZSA9IHsgY2FtbF9lcGhlX25vbmU6IDAgfTtcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfZGF0YV9vcHRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgdmFyIG9sZCA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB2IGluc3RhbmNlb2YgT2JqZWN0KSB2ID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHgpO1xuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdCh4LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZShuKSB7XG4gIHJldHVybiBjYW1sX3dlYWtfY3JlYXRlKG4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX25vbmVcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUobikge1xuICB2YXIgYWxlbiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgdmFyIHggPSBuZXcgQXJyYXkoYWxlbik7XG4gIHhbMF0gPSAyNTE7XG4gIHhbMV0gPSBcImNhbWxfZXBoZV9saXN0X2hlYWRcIjtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhbGVuOyBpKyspIHtcbiAgICB4W2ldID0gY2FtbF9lcGhlX25vbmU7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYgKHYgPT09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdlsxXSk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5cbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmICh3ZWFrID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGlmIChnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gICAgaWYgKHdlYWsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gY2FtbF9lcGhlX25vbmU7XG4gICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gWzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYgKHdlYWsgPT09IGNhbWxfZXBoZV9ub25lKSByZXR1cm4gMDtcbiAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgICBpZiAod2VhayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIHZhciBvbGQgPSBjYW1sX2VwaGVfZ2V0X2RhdGEoYTEpO1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KFxuICAgIGExLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgIGEyLFxuICAgIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgIGxlbixcbiAgKTtcbiAgY2FtbF9lcGhlX3NldF9kYXRhX29wdChhMiwgb2xkKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YSwgY2FtbF9lcGhlX3NldF9kYXRhX29wdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCkge1xuICB2YXIgb2xkID0gY2FtbF9lcGhlX2dldF9kYXRhKHNyYyk7XG4gIGNhbWxfZXBoZV9zZXRfZGF0YV9vcHQoZHN0LCBvbGQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfbm9uZVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpIHtcbiAgdmFyIGRhdGEgPSB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmIChkYXRhID09PSBjYW1sX2VwaGVfbm9uZSkgcmV0dXJuIDA7XG4gIGZvciAodmFyIGkgPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBjYW1sX2VwaGVfbm9uZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoZ2xvYmFsVGhpcy5XZWFrTWFwKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLmdldChrKTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbMCwgZGF0YV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCkge1xuICB2YXIgciA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKHIgPT09IDApIHJldHVybiAwO1xuICB2YXIgeiA9IHJbMV07XG4gIGlmIChBcnJheS5pc0FycmF5KHopKSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSkge1xuICBmb3IgKHZhciBpID0geC5sZW5ndGggLSAxOyBpID49IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBpLS0pIHtcbiAgICB2YXIgayA9IHhbaV07XG4gICAgaWYgKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiBrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICB2YXIgZCA9IGsuZGVyZWYoKTtcbiAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeFtpXSA9IGNhbWxfZXBoZV9ub25lO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChnbG9iYWxUaGlzLldlYWtNYXApIHtcbiAgICAgICAgZGF0YSA9IG5ldyBnbG9iYWxUaGlzLldlYWtNYXAoKS5zZXQoaywgZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGFfb3B0KHgsIGRhdGFfb3B0KSB7XG4gIGlmIChkYXRhX29wdCA9PT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGFfb3B0WzFdKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9ub25lXG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB7XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGNhbWxfZXBoZV9ub25lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCkge1xuICB2YXIgZGF0YSA9IGNhbWxfZXBoZV9nZXRfZGF0YSh4KTtcbiAgaWYgKGRhdGEgPT09IDApIHJldHVybiAwO1xuICBlbHNlIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcihfdW5pdCkge1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT09IFwiZnVuY3Rpb25cIikgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKF91bml0KSB7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PT0gXCJmdW5jdGlvblwiKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IoX3VuaXQpIHtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09PSBcImZ1bmN0aW9uXCIpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbihfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIFsyNTQsIDAsIDAsIDBdO1xufVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoX3VuaXQpIHtcbiAgcmV0dXJuIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG4vL1JlcXVpcmVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQodW5pdCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KF91bml0KSB7XG4gIHJldHVybiBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIoX2YsIF94KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKTtcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUoY2IsIGEpIHtcbiAgaWYgKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpIHtcbiAgICAgIGFsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTtcbiAgICAgIGNiKDApO1xuICAgICAgcmV0dXJuO1xuICAgIH0pO1xuICAgIHgucmVnaXN0ZXIoYSwgeCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZShfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQoX3JhdGUsIF9zdGFja19zaXplLCBfdHJhY2tlcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKF90KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2Vcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuLy9WZXJzaW9uOiA8IDUuMFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKF93b3JrKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbi8vVmVyc2lvbjogPCA1LjBcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChfbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG4vL1ZlcnNpb246IDwgNS4wXG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQoX24pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID0ge1xuICAgIGp1c3RpZnk6IFwiK1wiLFxuICAgIHNpZ25zdHlsZTogXCItXCIsXG4gICAgZmlsbGVyOiBcIiBcIixcbiAgICBhbHRlcm5hdGU6IGZhbHNlLFxuICAgIGJhc2U6IDAsXG4gICAgc2lnbmVkY29udjogZmFsc2UsXG4gICAgd2lkdGg6IDAsXG4gICAgdXBwZXJjYXNlOiBmYWxzZSxcbiAgICBzaWduOiAxLFxuICAgIHByZWM6IC0xLFxuICAgIGNvbnY6IFwiZlwiLFxuICB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgICAgY2FzZSBcIi1cIjpcbiAgICAgICAgZi5qdXN0aWZ5ID0gXCItXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIitcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgIGYuc2lnbnN0eWxlID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOlxuICAgICAgICBmLmZpbGxlciA9IFwiMFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCIjXCI6XG4gICAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiMVwiOlxuICAgICAgY2FzZSBcIjJcIjpcbiAgICAgIGNhc2UgXCIzXCI6XG4gICAgICBjYXNlIFwiNFwiOlxuICAgICAgY2FzZSBcIjVcIjpcbiAgICAgIGNhc2UgXCI2XCI6XG4gICAgICBjYXNlIFwiN1wiOlxuICAgICAgY2FzZSBcIjhcIjpcbiAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgIGYud2lkdGggPSAwO1xuICAgICAgICB3aGlsZSAoKChjID0gZm10LmNoYXJDb2RlQXQoaSkgLSA0OCksIGMgPj0gMCAmJiBjIDw9IDkpKSB7XG4gICAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiLlwiOlxuICAgICAgICBmLnByZWMgPSAwO1xuICAgICAgICBpKys7XG4gICAgICAgIHdoaWxlICgoKGMgPSBmbXQuY2hhckNvZGVBdChpKSAtIDQ4KSwgYyA+PSAwICYmIGMgPD0gOSkpIHtcbiAgICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGktLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZFwiOlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgZi5iYXNlID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgZi5iYXNlID0gMTY7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICBmLmJhc2UgPSA4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6XG4gICAgICBjYXNlIFwiZlwiOlxuICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcIkZcIjpcbiAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7XG4gICAgICAgIGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9PSBcIi1cIikpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT09IFwiK1wiICYmIGYuZmlsbGVyID09PSBcIiBcIilcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gXCIgXCI7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9IFwiLVwiO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9PSBcIi1cIikgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT09IDgpIGJ1ZmZlciArPSBcIjBcIjtcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZSA/IFwiMFhcIiA6IFwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCIrXCIgJiYgZi5maWxsZXIgPT09IFwiMFwiKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIjBcIjtcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PT0gXCItXCIpIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSBcIiBcIjtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYgKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoW1xuICAgIDAsXG4gICAgY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpLFxuICBdKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGUgPSBjdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbykge1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiICsgbmFtZSArIFwiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmIChyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmICghKGluZm8gPT09IFwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZiAoIXRhcmdldCkgdGFyZ2V0ID0gXCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYgKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKTtcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdyA/IE51bWJlci5wYXJzZUludCh3KSA6IDIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiICsgdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoID8gTnVtYmVyLnBhcnNlSW50KGgpIDogMjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiICsgaCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsIHRhcmdldCwgc3BlY3Muam9pbihcIixcIikpO1xuICBpZiAoIXdpbikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpO1xuICB9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsIHcsIGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCkge1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsIGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLCBjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gXCJib3R0b21cIjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcywgdywgaCkge1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXM6IGNhbnZhcyxcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IHcsXG4gICAgaGVpZ2h0OiBoLFxuICAgIGxpbmVfd2lkdGg6IDEsXG4gICAgZm9udDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZTogMjYsXG4gICAgY29sb3I6IDB4MDAwMDAwLFxuICAgIHRpdGxlOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpLFxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KSByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmIChzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgaWYgKHcgIT09IHMuY2FudmFzLndpZHRoKSBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIGlmIChoICE9PSBzLmNhbnZhcy5oZWlnaHQpIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHMuY2FudmFzLndpZHRoLCBzLmNhbnZhcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gXCJcIiArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSBcIjBcIiArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhciByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gICAgZyA9IChjb2xvciA+PiA4KSAmIDB4ZmYsXG4gICAgYiA9IChjb2xvciA+PiAwKSAmIDB4ZmY7XG4gIHMuY29sb3IgPSBjb2xvcjtcbiAgdmFyIGNfc3RyID0gXCIjXCIgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgsIHkpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsIDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIChkWzFdID1cbiAgICAoY29sb3IgPj4gOCkgJlxuICAgIDB4ZmYpLCAvL2dcbiAgICAoZFsyXSA9IChjb2xvciA+PiAwKSAmIDB4ZmYpOyAvL2JcbiAgZFszXSA9IDB4ZmY7IC8vYVxuICBzLnggPSB4O1xuICBzLnkgPSB5O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLCB4LCBzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbSA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCwgcy5oZWlnaHQgLSB5LCAxLCAxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54ID0geDtcbiAgcy55ID0geTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngsIHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LCBzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueCA9IHg7XG4gIHMueSA9IHk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LCB5LCB3LCBoKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCwgcy5oZWlnaHQgLSB5LCB3LCAtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsIGN4LCBjeSwgcnksIHJ4LCBhMSwgYTIpIHtcbiAgd2hpbGUgKGExID4gYTIpIGEyICs9IDM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLFxuICAgIHhQb3MsXG4gICAgeVBvcyxcbiAgICB4UG9zX3ByZXYsXG4gICAgeVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCArIHJ5KSAvIDIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9ICgoYTIgLSBhMSkgKiBNYXRoLlBJKSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IG51bTsgaisrKSB7XG4gICAgeFBvcyA9XG4gICAgICBjeCAtXG4gICAgICByeCAqIE1hdGguc2luKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnkgKiBNYXRoLmNvcyhpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9XG4gICAgICBjeSArXG4gICAgICByeSAqIE1hdGguY29zKGkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgK1xuICAgICAgcnggKiBNYXRoLnNpbihpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYgIT09IHhQb3MgfHwgeVBvc19wcmV2ICE9PSB5UG9zKSB7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXYgPSB4UG9zO1xuICAgIHlQb3NfcHJldiA9IHlQb3M7XG4gICAgaSAtPSBkZWx0YTsgLy9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LCB5LCByeCwgcnksIGExLCBhMikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCwgeCwgcy5oZWlnaHQgLSB5LCByeCwgcnksIGExLCBhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gdztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCwgeSwgdywgaCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LCBzLmhlaWdodCAtIHksIHcsIC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLCBzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLCBzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSwgcy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgsIHksIHJ4LCByeSwgYTEsIGEyKSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LCB4LCBzLmhlaWdodCAtIHksIHJ4LCByeSwgYTEsIGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIsIHMueCwgcy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpIHtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cikge1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpIHtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsIHcsIHMudGV4dF9zaXplXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycikge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDE7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodywgaCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB3OyBqKyspIHtcbiAgICAgIHZhciBjID0gYXJyW2kgKyAxXVtqICsgMV07XG4gICAgICB2YXIgbyA9IGkgKiAodyAqIDQpICsgaiAqIDQ7XG4gICAgICBpZiAoYyA9PT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAoYyA+PiAxNikgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IChjID4+IDgpICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAoYyA+PiAwKSAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKSB7XG4gIHZhciBkYXRhID0gWzBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltLmhlaWdodDsgaSsrKSB7XG4gICAgZGF0YVtpICsgMV0gPSBbMF07XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbS53aWR0aDsgaisrKSB7XG4gICAgICB2YXIgbyA9IGkgKiAoaW0ud2lkdGggKiA0KSArIGogKiA0LFxuICAgICAgICByID0gaW0uZGF0YVtvICsgMF0sXG4gICAgICAgIGcgPSBpbS5kYXRhW28gKyAxXSxcbiAgICAgICAgYiA9IGltLmRhdGFbbyArIDJdO1xuICAgICAgZGF0YVtpICsgMV1baiArIDFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSwgeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmICghaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwgMCwgMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCB4LCBzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9O1xuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSwgeCwgcy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCwgeSkge1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgsIHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLCB4LCB5KSB7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgeCxcbiAgICBzLmhlaWdodCAtIGltLmhlaWdodCAtIHksXG4gICAgaW0ud2lkdGgsXG4gICAgaW0uaGVpZ2h0LFxuICApO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSArIDFdID0gaW0yLmRhdGFbaSArIDFdO1xuICAgIGltLmRhdGFbaSArIDJdID0gaW0yLmRhdGFbaSArIDJdO1xuICAgIGltLmRhdGFbaSArIDNdID0gaW0yLmRhdGFbaSArIDNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKSB7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCkge1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChfYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KF9hLCBfYiwgX2MsIF9kKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KF9hKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6IC8mL2csIGx0OiAvPC9nLCBxdW90OiAvXCIvZywgYWxsOiAvWyY8XCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZShzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvO1xuICBpZiAocy5tYXRjaChlbnRpdHkpKSB7XG4gICAgdmFyIHN0cixcbiAgICAgIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcbiAgICB0ZW1wLmlubmVySFRNTCA9IHM7XG4gICAgc3RyID0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wID0gbnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXG4gICAgXCJsb2dcIixcbiAgICBcImRlYnVnXCIsXG4gICAgXCJpbmZvXCIsXG4gICAgXCJ3YXJuXCIsXG4gICAgXCJlcnJvclwiLFxuICAgIFwiYXNzZXJ0XCIsXG4gICAgXCJkaXJcIixcbiAgICBcImRpcnhtbFwiLFxuICAgIFwidHJhY2VcIixcbiAgICBcImdyb3VwXCIsXG4gICAgXCJncm91cENvbGxhcHNlZFwiLFxuICAgIFwiZ3JvdXBFbmRcIixcbiAgICBcInRpbWVcIixcbiAgICBcInRpbWVFbmRcIixcbiAgXTtcbiAgZnVuY3Rpb24gZigpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dID0gZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKF91bml0KSB7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiWE1MSHR0cFJlcXVlc3QgaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgfSBjYXRjaCB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkZhaWxlZCB0byBjcmVhdGUgWE1MSHR0cFJlcXVlc3RcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZiAoZXhuLmpzX2Vycm9yKSB7XG4gICAgcmV0dXJuIGV4bi5qc19lcnJvcjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKi9cbi8qICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKi9cbi8qICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2l0aCAgICAgKi9cbi8qICB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gZmlsZSAuLi9MSUNFTlNFLiAgICAgKi9cbi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyogJElkOiBsZXhpbmcuYyA2MDQ1IDIwMDQtMDEtMDEgMTY6NDI6NDNaIGRvbGlnZXogJCAqL1xuXG4vKiBUaGUgdGFibGUtZHJpdmVuIGF1dG9tYXRvbiBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4LiAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykge1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTtcbiAgdmFyIGwgPSBzLmxlbmd0aCAvIDI7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKylcbiAgICBhW2ldID0gKChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNikgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYyxcbiAgICBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBsZXhidWZbbGV4X2J1ZmZlcl07XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IgKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlIC0gMTtcbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT09IDApIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZSBjID0gMjU2O1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldChidWZmZXIsIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PT0gLTEpIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZSByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChkc3QgPT09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGkrKztcbiAgICBpZiAoc3JjID09PSAweGZmKSBtZW1bZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlIG1lbVtkc3QgKyAxXSA9IG1lbVtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpKys7XG4gICAgaWYgKGRzdCA9PT0gMHhmZikgcmV0dXJuO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaSsrO1xuICAgIGlmIChzcmMgPT09IDB4ZmYpIG1lbVtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2UgbWVtW2RzdCArIDFdID0gbWVtW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya19jb2RlXSk7XG4gICAgdGJsLmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja19jb2RlXSk7XG4gICAgdGJsLmxleF90cmFuc19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc19jb2RlXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0X2NvZGUgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbClcbiAgICB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLFxuICAgIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGxleGJ1ZltsZXhfYnVmZmVyXTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvciAoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZSAtIDE7XG4gICAgfVxuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIHZhciBwY19vZmYgPSB0YmwubGV4X2JhY2t0cmtfY29kZVtzdGF0ZV07XG4gICAgICBjYW1sX2xleF9ydW5fdGFnKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0pO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSkge1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09PSAwKSByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2UgYyA9IDI1NjtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQoYnVmZmVyLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZTtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT09IHN0YXRlKSBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2Ugc3RhdGUgPSB0YmwubGV4X2RlZmF1bHRbc3RhdGVdO1xuICAgIC8qIElmIG5vIHRyYW5zaXRpb24gb24gdGhpcyBjaGFyLCByZXR1cm4gdG8gbGFzdCBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICBpZiAoc3RhdGUgPCAwKSB7XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdO1xuICAgICAgaWYgKGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09PSAtMSkgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogSWYgc29tZSB0cmFuc2l0aW9uLCBnZXQgYW5kIHBlcmZvcm0gbWVtb3J5IG1vdmVzICovXG4gICAgICB2YXIgYmFzZV9jb2RlID0gdGJsLmxleF9iYXNlX2NvZGVbcHN0YXRlXSxcbiAgICAgICAgcGNfb2ZmO1xuICAgICAgaWYgKHRibC5sZXhfY2hlY2tfY29kZVtiYXNlX2NvZGUgKyBjXSA9PT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbShcbiAgICAgICAgICB0YmwubGV4X2NvZGUsXG4gICAgICAgICAgcGNfb2ZmLFxuICAgICAgICAgIGxleGJ1ZltsZXhfbWVtXSxcbiAgICAgICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSxcbiAgICAgICAgKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfbHhtX01cbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX2RhYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9WZXJzaW9uOiA+PSA1XG52YXIgY2FtbF9seG1fZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKFxuICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSxcbik7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHQgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9NXG4vL1JlcXVpcmVzOiBjYW1sX2x4bV9kYWJhXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgaykge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpIHtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYikge1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLCBiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LCBrKSwgc2hpZnRfcih4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2x4bV9NO1xuICB2YXIgZGFiYSA9IGNhbWxfbHhtX2RhYmE7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LCAwKTtcbiAgdmFyIHMgPSBnZXQoc3QsIDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsIDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsIDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3Ioeiwgc2hpZnRfcih6LCAzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LCBzaGlmdF9yKHosIDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQobXVsKHMsIE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDA7XG4gIHZhciBxMSA9IHgxO1xuICBxMSA9IHhvcihxMSwgcTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIHNoaWZ0X2wocTEsIDE2KSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMsIGVudiwgY21kLCBhcmcpIHtcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuICBmdW5jdGlvbiBsb2coeCkge1xuICAgIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4ICsgXCJcXG5cIik7XG4gICAgY2FtbF9tbF9vdXRwdXQoY2FtbF9zeXNfZmRzWzJdLmNoYW5pZCwgcywgMCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRva2VuX25hbWUobmFtZXMsIG51bWJlcikge1xuICAgIHZhciBzdHIgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lcyk7XG4gICAgaWYgKHN0clswXSA9PT0gXCJcXHgwMFwiKSByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KFwiXFx4MDBcIilbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9rKSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT09IFwibnVtYmVyXCIpIGtpbmQgPSBcIlwiICsgdG9rWzFdO1xuICAgICAgZWxzZSBpZiAodHlwZW9mIHRva1sxXSA9PT0gXCJzdHJpbmdcIikga2luZCA9IHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSk7XG4gICAgICBlbHNlIGtpbmQgPSBcIl9cIjtcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9kZWZyZWRdKTtcbiAgICB0YWJsZXMuc2luZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2NoZWNrXSk7XG4gICAgdGFibGVzLnJpbmRleCA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pO1xuICAgIHRhYmxlcy5sZW4gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pO1xuICAgIHRhYmxlcy5kZ290byA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLFxuICAgIG4sXG4gICAgbjEsXG4gICAgbjIsXG4gICAgc3RhdGUxO1xuXG4gIC8vIFJFU1RPUkVcbiAgdmFyIHNwID0gZW52W2Vudl9zcF07XG4gIHZhciBzdGF0ZSA9IGVudltlbnZfc3RhdGVdO1xuICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107XG5cbiAgdGhlX2xvb3A6IGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGNtZCkge1xuICAgICAgY2FzZSAwOiAvL1NUQVJUOlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIHN0YXRlID0gMDtcbiAgICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDY6IC8vbG9vcDpcbiAgICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgICBpZiAobiAhPT0gMCkge1xuICAgICAgICAgIGNtZCA9IHJlZHVjZTtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHtcbiAgICAgICAgICBjbWQgPSB0ZXN0c2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgICBjYXNlIDE6IC8vVE9LRU5fUkVBRDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfYmxvY2tdW2FyZ1swXSArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3RibF90cmFuc2xfY29uc3RdW2FyZyArIDFdO1xuICAgICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgcHJpbnRfdG9rZW4oc3RhdGUsIGFyZyk7XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIDc6IC8vdGVzdHNoaWZ0OlxuICAgICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRmFsbHRocm91Z2hTd2l0Y2hDbGF1c2U6XG4gICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuMSAhPT0gMCAmJlxuICAgICAgICAgIG4yID49IDAgJiZcbiAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09PSBlbnZbZW52X2N1cnJfY2hhcl1cbiAgICAgICAgKSB7XG4gICAgICAgICAgY21kID0gc2hpZnQ7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTtcbiAgICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG4xICE9PSAwICYmXG4gICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT09IGVudltlbnZfY3Vycl9jaGFyXVxuICAgICAgICApIHtcbiAgICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgICBjbWQgPSByZWR1Y2U7XG4gICAgICAgICAgY29udGludWUgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycmZsYWcgPD0gMCkge1xuICAgICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgICAgYnJlYWsgdGhlX2xvb3A7XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgZXJyb3IgZnVuY3Rpb24gKi9cbiAgICAgIGNhc2UgNTogLy9FUlJPUl9ERVRFQ1RFRDpcbiAgICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgICBuMiA9IG4xICsgRVJSQ09ERTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICAgICAgbjIgPj0gMCAmJlxuICAgICAgICAgICAgICBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gRVJSQ09ERVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiUmVjb3ZlcmluZyBpbiBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIHRoZV9sb29wO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkge1xuICAgICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiTm8gbW9yZSBzdGF0ZXMgdG8gZGlzY2FyZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgcmFpc2VzIFBhcnNlX2Vycm9yICovXG4gICAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT09IDApXG4gICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSkgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICAgICAgY21kID0gbG9vcDtcbiAgICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gVW5yZWFjaGFibGVcbiAgICAgIGNhc2UgODogLy9zaGlmdDpcbiAgICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0ZhbGx0aHJvdWdoU3dpdGNoQ2xhdXNlOlxuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgY2FzZSA5OiAvL3NoaWZ0X3JlY292ZXI6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgICBzcCsrO1xuICAgICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMTtcbiAgICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgICAgfVxuICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgICAgY2FzZSAyOiAvL1NUQUNLU19HUk9XTl8xOlxuICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRdO1xuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcblxuICAgICAgY2FzZSAxMDogLy9yZWR1Y2U6XG4gICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTpcbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgICAgZW52W2Vudl9hc3BdID0gc3A7XG4gICAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgICBzcCA9IHNwIC0gbSArIDE7XG4gICAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgICAgbjEgPSB0YWJsZXMuZ2luZGV4W21dO1xuICAgICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbjEgIT09IDAgJiZcbiAgICAgICAgICBuMiA+PSAwICYmXG4gICAgICAgICAgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PT0gc3RhdGUxXG4gICAgICAgIClcbiAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGVsc2Ugc3RhdGUgPSB0YWJsZXMuZGdvdG9bbV07XG4gICAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICAgIGJyZWFrIHRoZV9sb29wO1xuICAgICAgICB9XG4gICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgICBjYXNlIDM6IC8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgICBicmVhayB0aGVfbG9vcDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICAgIGNhc2UgNDogLy9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgICBlbnZbZW52X3N5bWJfc3RhcnRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVthc3AgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICBjbWQgPSBsb29wO1xuICAgICAgICBjb250aW51ZSB0aGVfbG9vcDtcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAvKiAweDAwLTB4MUY6IG5vbmUgKi8sIDB4MDAsIDB4MDAsIDB4ZmYsXG4gICAgMHgwMyAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi8sIDB4ZmUsIDB4ZmYsIDB4ZmYsXG4gICAgMHg4NyAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqLywgMHhmZSwgMHhmZiwgMHhmZixcbiAgICAweDA3IC8qIDB4NjAtMHg3RjogYSB0byB6ICovLCAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4ODAtMHg5Rjogbm9uZSAqLyxcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwIC8qIDB4QTAtMHhCRjogbm9uZSAqLywgMHhmZiwgMHhmZiwgMHg3ZixcbiAgICAweGZmIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi8sIDB4ZmYsIDB4ZmYsIDB4N2YsXG4gICAgMHhmZiAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovLFxuICBdO1xuXG4gIHZhciBvcGNvZGVzID0ge1xuICAgIENIQVI6IDAsXG4gICAgQ0hBUk5PUk06IDEsXG4gICAgU1RSSU5HOiAyLFxuICAgIFNUUklOR05PUk06IDMsXG4gICAgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSxcbiAgICBFT0w6IDYsXG4gICAgV09SREJPVU5EQVJZOiA3LFxuICAgIEJFR0dST1VQOiA4LFxuICAgIEVOREdST1VQOiA5LFxuICAgIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsXG4gICAgU0lNUExFU1RBUjogMTMsXG4gICAgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsXG4gICAgUFVTSEJBQ0s6IDE2LFxuICAgIFNFVE1BUks6IDE3LFxuICAgIENIRUNLUFJPR1JFU1M6IDE4LFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1tjID4+IDNdID4+IChjICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluX2JpdHNldChzLCBpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywgaSA+PiAzKSA+PiAoaSAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiByZV9tYXRjaF9pbXBsKHJlLCBzLCBwb3MsIHBhcnRpYWwpIHtcbiAgICB2YXIgcHJvZyA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICBjcG9vbCA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsyXSksXG4gICAgICBub3JtdGFibGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlWzNdKSxcbiAgICAgIG51bWdyb3VwcyA9IHJlWzRdIHwgMCxcbiAgICAgIG51bXJlZ2lzdGVycyA9IHJlWzVdIHwgMDtcblxuICAgIHZhciBzID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcocyk7XG5cbiAgICB2YXIgcGMgPSAwLFxuICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgc3RhY2sgPSBbXSxcbiAgICAgIGdyb3VwcyA9IG5ldyBBcnJheShudW1ncm91cHMpLFxuICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBncm91cHNbaV0gPSB7IHN0YXJ0OiAtMSwgZW5kOiAtMSB9O1xuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICBzdGFjay5wdXNoKGl0ZW0pO1xuICAgIH07XG5cbiAgICB2YXIgYWNjZXB0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZ3JvdXBzWzBdLmVuZCA9IHBvcztcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgQXJyYXkoMSArIGdyb3Vwcy5sZW5ndGggKiAyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmIChnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMiAqIGkgKyAxXSA9IGcuc3RhcnQ7XG4gICAgICAgIHJlc3VsdFsyICogaSArIDEgKyAxXSA9IGcuZW5kO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwYXJ0aWFsKSByZXR1cm4gYWNjZXB0KCk7XG4gICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgIH07XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICB1YXJnID0gc2FyZyAmIDB4ZmYsXG4gICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmVmaXhfbWF0Y2goKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9ybXRhYmxlLmNoYXJDb2RlQXQoYykgPT09IHVhcmcpIHBvcysrO1xuICAgICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkc6XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKSBjID0gc1srK3Bvc107XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLlNUUklOR05PUk06XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7XG4gICAgICAgICAgICBpIDwgYXJnLmxlbmd0aDtcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSQ0xBU1M6XG4gICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICAgIGlmIChwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuRU9MOlxuICAgICAgICAgIGlmIChwb3MgPCBzLmxlbmd0aCAmJiBzW3Bvc10gIT09IDEwIC8qIFxcbiAqLykge1xuICAgICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICAgIGlmIChwb3MgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHByZWZpeF9tYXRjaCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSkgYnJlYWs7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pICE9PSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICAgIGJhY2t0cmFjaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICAgIHB1c2goeyB1bmRvOiB7IG9iajogZ3JvdXAsIHByb3A6IFwic3RhcnRcIiwgdmFsdWU6IGdyb3VwLnN0YXJ0IH0gfSk7XG4gICAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5FTkRHUk9VUDpcbiAgICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgICBwdXNoKHsgdW5kbzogeyBvYmo6IGdyb3VwLCBwcm9wOiBcImVuZFwiLCB2YWx1ZTogZ3JvdXAuZW5kIH0gfSk7XG4gICAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuUkVGR1JPVVA6XG4gICAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgICAgaWYgKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7XG4gICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKHBvcyA9PT0gcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNbaV0gIT09IHNbcG9zXSkge1xuICAgICAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHBvcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgICB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgICBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgICAgcHJlZml4X21hdGNoKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgICAgfSB3aGlsZSAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSk7XG4gICAgICAgICAgfSBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIG9wY29kZXMuQUNDRVBUOlxuICAgICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgICAgcGMgPSBwYyArIHNhcmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgICBwdXNoKHsgcG9zOiB7IHBjOiBwYyArIHNhcmcsIHR4dDogcG9zIH0gfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICAgIHB1c2goe1xuICAgICAgICAgICAgdW5kbzogeyBvYmo6IHJlX3JlZ2lzdGVyLCBwcm9wOiB1YXJnLCB2YWx1ZTogcmVfcmVnaXN0ZXJbdWFyZ10gfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KSgpO1xuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfZm9yd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfZm9yd2FyZFwiKTtcbiAgdmFyIHN0YXJ0Y2hhcnMgPSByZVs2XSB8IDA7XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIGlmIChzdGFydGNoYXJzID49IDApIHtcbiAgICBzdGFydGNoYXJzID0gcmVbMl1bc3RhcnRjaGFycyArIDFdO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zIDwgbGVuICYmXG4gICAgICAgIGNhbWxfc3RyaW5nX2dldChzdGFydGNoYXJzLCBjYW1sX3N0cmluZ19nZXQocywgcG9zKSkgPT09IDBcbiAgICAgIClcbiAgICAgICAgcG9zKys7XG4gICAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgICAgcG9zKys7XG4gICAgfSB3aGlsZSAocG9zIDw9IGxlbik7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcysrO1xuICAgIH0gd2hpbGUgKHBvcyA8PSBsZW4pO1xuICB9XG4gIHJldHVybiBbMF07IC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2JhY2t3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2dldFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYgKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zZWFyY2hfYmFja3dhcmRcIik7XG4gIHZhciBzdGFydGNoYXJzID0gcmVbNl0gfCAwO1xuICBpZiAoc3RhcnRjaGFycyA+PSAwKSB7XG4gICAgc3RhcnRjaGFycyA9IHJlWzJdW3N0YXJ0Y2hhcnMgKyAxXTtcbiAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICAgIGRvIHtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgcG9zID4gMCAmJlxuICAgICAgICBwb3MgPCBsZW4gJiZcbiAgICAgICAgY2FtbF9zdHJpbmdfZ2V0KHN0YXJ0Y2hhcnMsIGNhbWxfc3RyaW5nX2dldChzLCBwb3MpKSA9PT0gMFxuICAgICAgKVxuICAgICAgICBwb3MtLTtcbiAgICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgICBwb3MtLTtcbiAgICB9IHdoaWxlIChwb3MgPj0gMCk7XG4gIH0gZWxzZSB7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICAgIHBvcy0tO1xuICAgIH0gd2hpbGUgKHBvcyA+PSAwKTtcbiAgfVxuICByZXR1cm4gWzBdOyAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3N0cmluZ19tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zdHJpbmdfbWF0Y2gocmUsIHMsIHBvcykge1xuICBpZiAocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSwgcywgcG9zKSB7XG4gIGlmIChwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIucGFydGlhbF9tYXRjaFwiKTtcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCwgZ3JvdXBzLCBvcmlnKSB7XG4gIHZhciByZXBsID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZXBsKTtcbiAgdmFyIGxlbiA9IHJlcGwubGVuZ3RoO1xuICB2YXIgb3JpZyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob3JpZyk7XG4gIHZhciByZXMgPSBcIlwiOyAvL3Jlc3VsdFxuICB2YXIgbiA9IDA7IC8vIGN1cnJlbnQgcG9zaXRpb25cbiAgdmFyIGN1cjsgLy9jdXJyZW50IGNoYXJcbiAgdmFyIHN0YXJ0LCBlbmQsIGM7XG4gIHdoaWxlIChuIDwgbGVuKSB7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZiAoY3VyICE9PSBcIlxcXFxcIikge1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG4gPT09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2ggKGN1cikge1xuICAgICAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgICAgIHJlcyArPSBjdXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCIwXCI6XG4gICAgICAgIGNhc2UgXCIxXCI6XG4gICAgICAgIGNhc2UgXCIyXCI6XG4gICAgICAgIGNhc2UgXCIzXCI6XG4gICAgICAgIGNhc2UgXCI0XCI6XG4gICAgICAgIGNhc2UgXCI1XCI6XG4gICAgICAgIGNhc2UgXCI2XCI6XG4gICAgICAgIGNhc2UgXCI3XCI6XG4gICAgICAgIGNhc2UgXCI4XCI6XG4gICAgICAgIGNhc2UgXCI5XCI6XG4gICAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgICAgaWYgKGMgKiAyID49IGdyb3Vwcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiByZWZlcmVuY2UgdG8gdW5tYXRjaGVkIGdyb3VwXCIpO1xuICAgICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMik7XG4gICAgICAgICAgZW5kID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLCBjICogMiArIDEpO1xuICAgICAgICAgIGlmIChzdGFydCA9PT0gLTEpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgICAgcmVzICs9IG9yaWcuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmVzICs9IFwiXFxcXFwiICsgY3VyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhyZXMpO1xufVxuIl0sIm5hbWVzIjpbImNzdF9PdXRfb2ZfbWVtb3J5IiwiY3N0X1N5c19lcnJvciIsImNzdF9GYWlsdXJlIiwiY3N0X0ludmFsaWRfYXJndW1lbnQiLCJjc3RfRW5kX29mX2ZpbGUiLCJjc3RfRGl2aXNpb25fYnlfemVybyIsImNzdF9Ob3RfZm91bmQiLCJjc3RfTWF0Y2hfZmFpbHVyZSIsImNzdF9TdGFja19vdmVyZmxvdyIsImNzdF9TeXNfYmxvY2tlZF9pbyIsImNzdF9Bc3NlcnRfZmFpbHVyZSIsImNzdF9VbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBO0FBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQSxRQUFBO0FBQUEsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBO0FBQUEsSUFBQTtBQUFBLElBQUE7QUFBQSxHQUFBO0FBQUEsRUFB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R3FCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FNUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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SUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBQ0osSUFBSTtBQUFBLFNBRUosT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTztBQUFBLFNBQ1AsT0FBTyxhQTdFRixDQThFTjtBQUFBLE9BbkdzQjtBQUFBLE9BQUQ7QUFBQTtBQUFBLGlCQWlKWDtBQUFB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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdKemFBO0FBQUEsT0FBQUEsb0JBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQSxPQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxrQkFBQTtBQUFBO0FBQUEsT0FBQUMsdUJBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsZ0JBQUE7QUFBQTtBQUFBLE9BQUFDLG9CQUFBO0FBQUE7QUFBQSxPQUFBQyxxQkFBQTtBQUFBO0FBQUEsT0FBQUMscUJBQUE7QUFBQTtBQUFBLE9BQUFDLHFCQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGlDQUFBIiwiaWdub3JlTGlzdCI6WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzhdfX0seyJvZmZzZXQiOnsibGluZSI6OTQ0MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuXG5cbnR5cGUgbmV1dHJhbF9jb25jYXQgPVxuICB7IGY6XG4gICAgICAnYSAnYiAnYyAnZCAnZSAnZi4gW2BTdHJpbmcgb2Ygc3RyaW5nIHwgYENoYXIgb2YgY2hhciBdIC0+XG4gICAgICAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdCAtPiAoJ2EsJ2IsJ2MsJ2QsJ2UsJ2YpIGZtdFxuICB9XG5cbmxldCByZWMgc3RyaW5nX2NvbmNhdF9tYXA6IHR5cGUgYSBiIGMgZCBlIGYuXG4gICBuZXV0cmFsX2NvbmNhdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCAtPiAoYSxiLGMsZCxlLGYpIGZtdCA9XG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+IFN0cmluZyAocGFkLCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT4gQ2FtbF9zdHJpbmcgKHBhZCwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludCAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDY0IChpY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgQ2hhciAocmVzdCkgLT4gQ2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgQ2FtbF9jaGFyICggc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT4gQm9vbCAocGFkLCAgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEFscGhhIHJlc3QgLT4gQWxwaGEgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBUaGV0YSByZXN0IC0+IFRoZXRhIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgZmMsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZmMsICBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgLT4gUmVhZGVyIChzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRmx1c2ggcmVzdCAtPiBGbHVzaCAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT4gZi5mIChgU3RyaW5nIHN0cikgKHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGYuZiAoYENoYXIgY2hyKSAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoc3RyaW5nX2NvbmNhdF9tYXAgZiByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBJZ25vcmVkX3BhcmFtIChpZ24sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBzdHJpbmdfY29uY2F0X21hcCBmIHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHN0cmluZ19jb25jYXRfbWFwIGYgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgLT4gRW5kX29mX2Zvcm1hdFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwyIiwiZiIsImEwIiwiYTEiLCJlcmFzZV9yZWwiLCJwYXJhbSIsInJlc3QiLCJ0eSIsInR5MSIsImNvbmNhdF9mbXR0eSIsImZtdHR5MSIsImZtdHR5MiIsInR5MiIsImNvbmNhdF9mbXQiLCJmbXQxIiwiZm10MiIsInBhZCIsInByZWMiLCJpY29udiIsImZjb252Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJmbXRpbmdfbGl0IiwiZm10aW5nX2dlbiIsImNoYXJfc2V0Iiwid2lkdGhfb3B0IiwiY291bnRlciIsImlnbiIsImFyaXR5Iiwic3RyaW5nX2NvbmNhdF9tYXAiLCJmYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsVUFBQUM7QUFBQUEsSUMrZ0JRLDhCQWtDWTtBQUFBLElBbENaO0FBQUE7QUFBQSxXQUFBQyxPQUFBLFVBS0ksMkJBQWdCO0FBQUE7QUFBQSxXQUFBQSxTQUxwQixVQU9NLDZCQUFnQjtBQUFBO0FBQUEsV0FBQUEsU0FQdEIsVUFTRyw2QkFBZ0I7QUFBQTtBQUFBLFdBQUFBLFNBVG5CLFVBV0ssNkJBQWdCO0FBQUE7QUFB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MERBQXdCO0FBQUE7QUFBQSxXQUFBVixVQWxDOUMsVUFxQmdCLDBDQUEwQjtBQUFBO0FBQUEsV0FBQUEsVUFyQjFDLFVBc0JnQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBdEIxQyxVQUFBaUIsYUFBQTtBQUFBLE9BOEN3QixzREFBd0I7QUFBQTtBQUFBLFdBQUFqQixVQTlDaEQsVUFBQWtCLGFBQUE7QUFBQSxPQWdEd0Isc0RBQXdCO0FBQUE7QUFBQSxXQUFBbEIsVUFoRGhELFVBeUJrQiwwQ0FBMEI7QUFBQTtBQUFBLFdBQUFBLFVBekI1QyxVQUFBbUIsV0FBQSxVQUFBQyxZQUFBO0FBQUEsT0FxQ2dDLCtEQUF3QjtBQUFBO0FBQUEsV0FBQXBCLFVBckN4RCxVQUFBcUIsVUFBQTtBQUFBLE9BdUNzQixtREFBd0I7QUFBQTtBQUFBLFdBQUFyQixVQXZDOUMsVUF5Q1csMENBQTBCO0FBQUE7QUFBQSxXQUFBQSxVQXpDckMsVUFBQXNCLE1BQUE7QUFBQSxPQTJDZ0IsK0NBQXdCO0FBQUE7QUFBQSxXQUFBdEIsVUEzQ3hDLFVBQUF5QixLQUFBLFVBQUFGLFFBQUE7QUFBQSxPQXdCZ0IscURBQXdCO0FBQUE7QUFBQSxHQTBCZDtBQUFBLEdENXVCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo5NzIxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GOF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRyYXNoZXMgY3VycmVudCBiYWNrdHJhY2UgKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaDEgOjogW10gLT4gaDEgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBbXSAtPiBoMSA6OiBoMiA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IGgzIDo6IHRsIC0+IGgxIDo6IGgyIDo6IGgzIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIER5bmFycmF5ICAgICAgID0gRHluYXJyYXlcbm1vZHVsZSBQcXVldWUgICAgICAgICA9IFBxdWV1ZVxubW9kdWxlIEVmZmVjdCAgICAgICAgID0gRWZmZWN0XG5tb2R1bGUgRWl0aGVyICAgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgICA9IEVwaGVtZXJvblxubW9kdWxlIEZpbGVuYW1lICAgICAgID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCAgICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgICAgPSBGb3JtYXRcbm1vZHVsZSBGdW4gICAgICAgICAgICA9IEZ1blxubW9kdWxlIEdjICAgICAgICAgICAgID0gR2Ncbm1vZHVsZSBIYXNodGJsICAgICAgICA9IEhhc2h0Ymxcbm1vZHVsZSBJYXJyYXkgICAgICAgICA9IElhcnJheVxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFpciAgICAgICAgICAgPSBQYWlyXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBSZXByICAgICAgICAgICA9IFJlcHJcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2F0b21pY19jYXNfZmllbGQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9mbHVzaCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCIsImNhbWxfbWxfb3V0cHV0IiwiY2FtbF9tbF9vdXRwdXRfYnl0ZXMiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGUiLCJjYW1sX21sX3NldF9jaGFubmVsX25hbWUiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19jb25jYXQiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfc3lzX29wZW4iLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiSW52YWxpZF9hcmd1bWVudCIsIkZhaWx1cmUiLCJNYXRjaF9mYWlsdXJlIiwiQXNzZXJ0X2ZhaWx1cmUiLCJOb3RfZm91bmQiLCJPdXRfb2ZfbWVtb3J5IiwiU3RhY2tfb3ZlcmZsb3ciLCJTeXNfZXJyb3IiLCJFbmRfb2ZfZmlsZSIsIkRpdmlzaW9uX2J5X3plcm8iLCJTeXNfYmxvY2tlZF9pbyIsIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwiZmFpbHdpdGgiLCJzIiwiaW52YWxpZF9hcmciLCJFeGl0IiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiY2hhcl9vZl9pbnQiLCJuIiwiY3N0X2ZhbHNlIiwiY3N0X3RydWUiLCJzdHJpbmdfb2ZfYm9vbCIsImIiLCJib29sX29mX3N0cmluZyIsInBhcmFtIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwiZXhuIiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwibWF0Y2giLCJzdHJpbmdfb2ZfZmxvYXQiLCJmbG9hdF9vZl9zdHJpbmdfb3B0Iiwic3ltYm9sIiwibDEiLCJsMiIsImgxIiwiaDIiLCJ0bCIsImgzIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiciIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zIiwiaGQiLCJhY2N1IiwiYmVnIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN0ciIsInN0cjIiLCJmbXQyIiwic3RyMSIsImZtdDEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4iLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsIlN0ZGxpYiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywyQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsMkJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLFlBQUFDLFNBQUFDO0FBQUFBLElDNEJpQjtBQUFBLEdBQWdC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QkE5UEcsYUFBQWhHLE9BZ1FXLFNBQUU7QUFBQSxZQUFBaUcsV0FBQWpHO0FBQUFBLElBRzdDO0FBQUEsSUFBNkIsc0NBQ0E7QUFBQTtBQUFBLFlBQUFrRyxLQUFBQztBQUFBQSxJQUc3QjtBQUFBLElBQ0EscUNBQWdCO0FBQUE7QUFBQSxHQUVWO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUF1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURya0IvRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwMTg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3lzLm1sLmluIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuZXh0ZXJuYWwgcG9sbF9hY3Rpb25zIDogdW5pdCAtPiB1bml0ID0gXCIlcG9sbFwiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCBpc19yZWd1bGFyX2ZpbGUgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5leHRlcm5hbCBnZXRlbnZfb3B0OiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbiA9IFwiY2FtbF9zeXNfZ2V0ZW52X29wdFwiXG5cbmV4dGVybmFsIGNvbW1hbmQ6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXCJcbmV4dGVybmFsIHRpbWU6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX3N5c190aW1lXCIgXCJjYW1sX3N5c190aW1lX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2hkaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19jaGRpclwiXG5leHRlcm5hbCBta2Rpcjogc3RyaW5nIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19ta2RpclwiXG5leHRlcm5hbCBybWRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JtZGlyXCJcbmV4dGVybmFsIGdldGN3ZDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGN3ZFwiXG5leHRlcm5hbCByZWFkZGlyIDogc3RyaW5nIC0+IHN0cmluZyBhcnJheSA9IFwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnlcIlxuXG5leHRlcm5hbCBpb19idWZmZXJfc2l6ZTogdW5pdCAtPiBpbnQgPSBcImNhbWxfc3lzX2lvX2J1ZmZlcl9zaXplXCJcbmxldCBpb19idWZmZXJfc2l6ZSA9IGlvX2J1ZmZlcl9zaXplICgpXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbCA9IGludFxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoc2lnbmFsIC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IHNpZ25hbCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcbmxldCBzaWdpbyA9IC0yOVxubGV0IHNpZ3dpbmNoID0gLTMwXG5cbmxldCBzaWduYWxfdG9fc3RyaW5nIHMgPVxuICBpZiBzID0gc2lnYWJydCB0aGVuIFwiU0lHQUJSVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2Fscm0gdGhlbiBcIlNJR0FMUk1cIlxuICBlbHNlIGlmIHMgPSBzaWdmcGUgdGhlbiBcIlNJR0ZQRVwiXG4gIGVsc2UgaWYgcyA9IHNpZ2h1cCB0aGVuIFwiU0lHSFVQXCJcbiAgZWxzZSBpZiBzID0gc2lnaWxsIHRoZW4gXCJTSUdJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdpbnQgdGhlbiBcIlNJR0lOVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ2tpbGwgdGhlbiBcIlNJR0tJTExcIlxuICBlbHNlIGlmIHMgPSBzaWdwaXBlIHRoZW4gXCJTSUdQSVBFXCJcbiAgZWxzZSBpZiBzID0gc2lncXVpdCB0aGVuIFwiU0lHUVVJVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3NlZ3YgdGhlbiBcIlNJR1NFR1ZcIlxuICBlbHNlIGlmIHMgPSBzaWd0ZXJtIHRoZW4gXCJTSUdURVJNXCJcbiAgZWxzZSBpZiBzID0gc2lndXNyMSB0aGVuIFwiU0lHVVNSMVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3VzcjIgdGhlbiBcIlNJR1VTUjJcIlxuICBlbHNlIGlmIHMgPSBzaWdjaGxkIHRoZW4gXCJTSUdDSExEXCJcbiAgZWxzZSBpZiBzID0gc2lnY29udCB0aGVuIFwiU0lHQ09OVFwiXG4gIGVsc2UgaWYgcyA9IHNpZ3N0b3AgdGhlbiBcIlNJR1NUT1BcIlxuICBlbHNlIGlmIHMgPSBzaWd0c3RwIHRoZW4gXCJTSUdUU1RQXCJcbiAgZWxzZSBpZiBzID0gc2lndHRpbiB0aGVuIFwiU0lHVFRJTlwiXG4gIGVsc2UgaWYgcyA9IHNpZ3R0b3UgdGhlbiBcIlNJR1RUT1VcIlxuICBlbHNlIGlmIHMgPSBzaWd2dGFscm0gdGhlbiBcIlNJR1ZUQUxSTVwiXG4gIGVsc2UgaWYgcyA9IHNpZ3Byb2YgdGhlbiBcIlNJR1BST0ZcIlxuICBlbHNlIGlmIHMgPSBzaWdidXMgdGhlbiBcIlNJR0JVU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3BvbGwgdGhlbiBcIlNJR1BPTExcIlxuICBlbHNlIGlmIHMgPSBzaWdzeXMgdGhlbiBcIlNJR1NZU1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3RyYXAgdGhlbiBcIlNJR1RSQVBcIlxuICBlbHNlIGlmIHMgPSBzaWd1cmcgdGhlbiBcIlNJR1VSR1wiXG4gIGVsc2UgaWYgcyA9IHNpZ3hjcHUgdGhlbiBcIlNJR1hDUFVcIlxuICBlbHNlIGlmIHMgPSBzaWd4ZnN6IHRoZW4gXCJTSUdYRlNaXCJcbiAgZWxzZSBpZiBzID0gc2lnaW8gdGhlbiBcIlNJR0lPXCJcbiAgZWxzZSBpZiBzID0gc2lnd2luY2ggdGhlbiBcIlNJR1dJTkNIXCJcbiAgZWxzZSBpZiBzIDwgc2lnd2luY2ggdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfdG9fc3RyaW5nXCJcbiAgZWxzZSBcIlNJRyhcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiKVwiXG5cbmV4dGVybmFsIHJldl9jb252ZXJ0X3NpZ25hbF9udW1iZXI6IGludCAtPiBpbnQgPVxuICBcImNhbWxfc3lzX3Jldl9jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuZXh0ZXJuYWwgY29udmVydF9zaWduYWxfbnVtYmVyOiBpbnQgLT4gaW50ID1cbiAgXCJjYW1sX3N5c19jb252ZXJ0X3NpZ25hbF9udW1iZXJcIlxuXG5sZXQgc2lnbmFsX29mX2ludCBpID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN5cy5zaWduYWxfb2ZfaW50XCJcbiAgZWxzZSByZXZfY29udmVydF9zaWduYWxfbnVtYmVyIGlcblxubGV0IHNpZ25hbF90b19pbnQgaSA9XG4gIGlmIGkgPCBzaWd3aW5jaCB0aGVuIGludmFsaWRfYXJnIFwiU3lzLnNpZ25hbF90b19pbnRcIlxuICBlbHNlIGNvbnZlcnRfc2lnbmFsX251bWJlciBpXG5cbmV4Y2VwdGlvbiBCcmVha1xuXG5sZXQgY2F0Y2hfYnJlYWsgb24gPVxuICBpZiBvbiB0aGVuXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgKFNpZ25hbF9oYW5kbGUoZnVuIF8gLT4gcmFpc2UgQnJlYWspKVxuICBlbHNlXG4gICAgc2V0X3NpZ25hbCBzaWdpbnQgU2lnbmFsX2RlZmF1bHRcblxuXG5leHRlcm5hbCBlbmFibGVfcnVudGltZV93YXJuaW5nczogYm9vbCAtPiB1bml0ID1cbiAgXCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXCJcbmV4dGVybmFsIHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZDogdW5pdCAtPiBib29sID1cbiAgXCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFwiXG5cbigqIFRoZSB2ZXJzaW9uIHN0cmluZyBpcyBmb3VuZCBpbiBmaWxlIC4uL1ZFUlNJT04gKilcblxubGV0IG9jYW1sX3ZlcnNpb24gPSBcIkBWRVJTSU9OQFwiXG5cbmxldCBkZXZlbG9wbWVudF92ZXJzaW9uID0gQE9DQU1MX0RFVkVMT1BNRU5UX1ZFUlNJT05AXG5cbnR5cGUgZXh0cmFfcHJlZml4ID0gUGx1cyB8IFRpbGRlXG5cbnR5cGUgZXh0cmFfaW5mbyA9IGV4dHJhX3ByZWZpeCAqIHN0cmluZ1xuXG50eXBlIG9jYW1sX3JlbGVhc2VfaW5mbyA9IHtcbiAgbWFqb3IgOiBpbnQ7XG4gIG1pbm9yIDogaW50O1xuICBwYXRjaGxldmVsIDogaW50O1xuICBleHRyYSA6IGV4dHJhX2luZm8gb3B0aW9uXG59XG5cbmxldCBvY2FtbF9yZWxlYXNlID0ge1xuICBtYWpvciA9IEBPQ0FNTF9WRVJTSU9OX01BSk9SQDtcbiAgbWlub3IgPSBAT0NBTUxfVkVSU0lPTl9NSU5PUkA7XG4gIHBhdGNobGV2ZWwgPSBAT0NBTUxfVkVSU0lPTl9QQVRDSExFVkVMQDtcbiAgZXh0cmEgPSBAT0NBTUxfUkVMRUFTRV9FWFRSQUBcbn1cblxuKCogT3B0aW1pemF0aW9uICopXG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxubW9kdWxlIEltbWVkaWF0ZTY0ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG4gICAgZXh0ZXJuYWwgbWFnaWMgOiBfIHJlcHIgLT4gdCByZXByID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCByZXByID1cbiAgICAgIGlmIHdvcmRfc2l6ZSA9IDY0IHRoZW5cbiAgICAgICAgbWFnaWMgSW1tZWRpYXRlXG4gICAgICBlbHNlXG4gICAgICAgIG1hZ2ljIE5vbl9pbW1lZGlhdGVcbiAgZW5kXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiU3RkbGliIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImlvX2J1ZmZlcl9zaXplIiwic2V0X3NpZ25hbCIsInNpZ19udW0iLCJzaWdfYmVoIiwic2lnbmFsX3RvX3N0cmluZyIsInMiLCJzaWduYWxfb2ZfaW50IiwiaSIsInNpZ25hbF90b19pbnQiLCJCcmVhayIsImNhdGNoX2JyZWFrIiwib24iLCJNYWtlIiwiSW1tZWRpYXRlIiwiTm9uX2ltbWVkaWF0ZSIsIlN0ZGxpYl9TeXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGtCQ21Dc0I7QUFBQSxJQUFBQyxVQUNBO0FBQUEsSUFBQUMsT0FBWTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsaUJBaUNiO0FBQUEsWUFBQUMsV0FBQUMsU0FBQUMsU0FjMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUEsSUFrQzdELGFBQW9CO0FBQUEsSUFDZixhQUFvQjtBQUFBLElBQ3BCLGFBQW1CO0FBQUEsSUFDbkIsYUFBbUI7QUFBQSxJQUNuQixhQUFtQjtBQUFBLElBQ25CLGFBQW1CO0FBQUEsSUFDbkIsYUFBb0I7QUFBQSxJQUNwQixhQUFvQjtBQUFBLElBQ3BCLGFBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFvQjtBQUFBLElBQ3BCLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFzQjtBQUFBLElBQ3RCLGNBQW9CO0FBQUEsSUFDcEIsY0FBbUI7QUFBQSxJQUNuQixjQUFvQjtBQUFBLElBQ3BCLGNBQW1CO0FBQUEsSUFDbkIsY0FBb0I7QUFBQSxJQUNwQixjQUFtQjtBQUFBLElBQ25CLGNBQW9CO0FBQUEsSUFDcEIsY0FBb0I7QUFBQSxJQUNwQixjQUFrQjtBQUFBLElBQ2xCLGNBQXFCO0FBQUEsSUFDckIsWUFBcUIsbURBQ1M7QUFBQSxZQUFyQjtBQUFBLElBQXFCO0FBQUE7QUFBQSxZQUFBQyxjQUFBQztBQUFBQSxJQVFuQztBQUFBLGNBQ0s7QUFBQSxjQURTLHlDQUNrQjtBQUFBO0FBQUEsWUFBQUMsY0FBQUQ7QUFBQUEsSUFHaEM7QUFBQSxjQUFxQjtBQUFBLGNBQ2hCLHlDQUF1QjtBQUFBO0FBQUEsT0FBQUUsUUE1RlE7QUFBQSxZQUFBQyxZQUFBQyxJQWlHcEMsaUJBR2tDO0FBQUEsWUFBQUMsS0FBQUMsV0FBQUMsZUFzRDVCO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQTFKOEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURyRXRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTAzMTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9vYmoubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX3RhZyIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsImlzX2Jsb2NrIiwiYSIsImRvdWJsZV9maWVsZCIsIngiLCJpIiwic2V0X2RvdWJsZV9maWVsZCIsInYiLCJvZl92YWwiLCJzbG90IiwiY3N0X09ial9leHRlbnNpb25fY29uc3RydWN0b3IiLCJuYW1lIiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsIiwibGVuZ3RoIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJlIiwibyIsIm1zZyIsImdldF9rZXkiLCJnZXRfa2V5X2NvcHkiLCJzZXRfa2V5IiwidW5zZXRfa2V5IiwiY2hlY2tfa2V5IiwiYmxpdF9rZXkiLCJlMSIsIm8xIiwiZTIiLCJvMiIsIlN0ZGxpYl9PYmoiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0N5QmtDLG1DQUFjO0FBQUEsWUFBQUMsYUFBQUMsR0FBQUMsR0FTUixvQ0FBcUM7QUFBQSxZQUFBQyxpQkFBQUYsR0FBQUMsR0FBQUU7QUFBQUEsSUFFM0U7QUFBQSxJQUF1QztBQUFBO0FBQUEsWUFBQUMsT0FBQUo7QUFBQUE7QUFBQUEsS0FBQUs7QUFBQUEsT0F3Q2hDO0FBQUEsVUFBZ0I7QUFBQTtBQUFBLEtBQUFDLGdDRDVFekI7QUFBQTtBQUFBO0FBQUEsS0NnRlMscUJBQW1CLGdDQUFBQyxPQUF5QztBQUFBLFNBQUFBLE9BQzFEO0FBQUE7QUFBQSxJQUVGO0FBQUE7QUFBQSxjQUNFLG1EQUF1QztBQUFBO0FBQUEsWUFBQUEsS0FBQUYsTUFHcEI7QUFBQSxZQUFBRyxHQUFBSCxNQUdBO0FBQUEsT0FBQUksa0JEMUY5QjtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLFFBQUEsSUN3R0k7QUFBQSxjQUNFO0FBQUEsSUFDRixrQ0FBUTtBQUFBO0FBQUEsWUFBQUMsT0FBQVosR0FFSyx3QkFBZ0M7QUFBQSxZQUFBYSx3QkFBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUc3QyxvQkFBc0IsbUJBQXRCO0FBQUEsZUFDRSw2QkFBZTtBQUFBO0FBQUEsWUFBQUMsUUFBQUgsR0FBQUM7QUFBQUEsSUFJakI7QUFBQSxJQUNBLHNDQUFXO0FBQUE7QUFBQSxZQUFBRyxhQUFBSixHQUFBQztBQUFBQSxJQUlYO0FBQUEsSUFDQSwyQ0FBZ0I7QUFBQTtBQUFBLFlBQUFJLFFBQUFMLEdBQUFDLEdBQUFmO0FBQUFBLElBSWhCO0FBQUEsSUFDQSx5Q0FBYTtBQUFBO0FBQUEsWUFBQW9CLFVBQUFOLEdBQUFDO0FBQUFBLElBSWI7QUFBQSxJQUNBLHdDQUFhO0FBQUE7QUFBQSxZQUFBTSxVQUFBUCxHQUFBQztBQUFBQSxJQUliO0FBQUEsSUFDQSx3Q0FBYTtBQUFBO0FBQUEsWUFBQU8sU0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQWY7QUFBQUEsSUFNYjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBQTJCLHlDQUNOO0FBQUE7QUFBQSxVQUVoQjtBQUFBLGNBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQSxJQURBLHFEQUNxQztBQUFBO0FBQUE7QUFBQSxJQUFBZ0I7QUFBQUEsTURsSjlDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTA0NDUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9hdG9taWMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5tb2R1bGUgTG9jID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGF0b21pY19sb2NcblxuICBleHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRfbG9jXCJcbiAgZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlX2xvY1wiXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNfbG9jXCJcbiAgZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkX2xvY1wiXG5cbiAgbGV0IHNldCB0IHYgPVxuICAgIGlnbm9yZSAoZXhjaGFuZ2UgdCB2KVxuICBsZXQgaW5jciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAxKVxuICBsZXQgZGVjciB0ID1cbiAgICBpZ25vcmUgKGZldGNoX2FuZF9hZGQgdCAoLTEpKVxuZW5kXG5cbnR5cGUgISdhIHQgPVxuICB7IG11dGFibGUgY29udGVudHM6ICdhIFtAYXRvbWljXTtcbiAgfVxuXG5sZXQgbWFrZSB2ID1cbiAgeyBjb250ZW50cyA9IHYgfVxuXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcblxubGV0IGdldCB0ID1cbiAgdC5jb250ZW50c1xubGV0IHNldCB0IHYgPVxuICB0LmNvbnRlbnRzIDwtIHZcblxubGV0IGV4Y2hhbmdlIHQgdiA9XG4gIExvYy5leGNoYW5nZSBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gdlxubGV0IGNvbXBhcmVfYW5kX3NldCB0IG9sZCBuZXdfID1cbiAgTG9jLmNvbXBhcmVfYW5kX3NldCBbJWF0b21pYy5sb2MgdC5jb250ZW50c10gb2xkIG5ld19cbmxldCBmZXRjaF9hbmRfYWRkIHQgaW5jciA9XG4gIExvYy5mZXRjaF9hbmRfYWRkIFslYXRvbWljLmxvYyB0LmNvbnRlbnRzXSBpbmNyXG5sZXQgaW5jciB0ID1cbiAgTG9jLmluY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG5sZXQgZGVjciB0ID1cbiAgTG9jLmRlY3IgWyVhdG9taWMubG9jIHQuY29udGVudHNdXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXRvbWljX2V4Y2hhbmdlX2ZpZWxkIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkX2ZpZWxkIiwic2V0IiwidCIsInYiLCJpbmNyIiwiZGVjciIsIm1ha2UiLCJnZXQiLCJleGNoYW5nZSIsImNvbXBhcmVfYW5kX3NldCIsIm9sZCIsIm5ldyQiLCJmZXRjaF9hbmRfYWRkIiwiU3RkbGliX0F0b21pYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0N5Qkksb0RBQXFCO0FBQUEsWUFBQUMsS0FBQUYsR0FFckIscURBQTBCO0FBQUEsWUFBQUcsS0FBQUgsR0FFMUIsc0RBQTZCO0FBQUEsWUFBQUksS0FBQUgsR0FRL0IsY0FBZ0I7QUFBQSxZQUFBSSxJQUFBTCxHQUtoQixZQUFVO0FBQUEsWUFBQUQsTUFBQUMsR0FBQUMsR0FFViw4Q0FBZTtBQUFBLFlBQUFLLFNBQUFOLEdBQUFDLEdBR2YsMENBQXVDO0FBQUEsWUFBQU0sZ0JBQUFQLEdBQUFRLEtBQUFDO0FBQUFBLElBRXZDLHFEQUFxRDtBQUFBO0FBQUEsWUFBQUMsY0FBQVYsR0FBQUU7QUFBQUEsSUFFckQsOENBQStDO0FBQUE7QUFBQSxZQUFBQSxPQUFBRixHQUUvQyxzQkFBaUM7QUFBQSxZQUFBRyxPQUFBSCxHQUVqQyxzQkFBaUM7QUFBQTtBQUFBLElBQUFXO0FBQUFBLE1EdkRuQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNDg3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsTGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcblxuKCogSWYgW2x6dl0gaXMgYWxyZWFkeSBmb3JjZWQsIHRoZW4gW2luZGlyZWN0IGx6dl0gaXMgW2x6dl0uXG4gICBPdGhlcndpc2UgaXQgcmV0dXJucyBhIGZyZXNoIHRodW5rIHRoYXQsIHdoZW4gZm9yY2VkLCB3aWxsIGZvcmNlIFtsenZdLlxuXG4gICBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGNvcHkvbW92ZSBbbHp2XSB0aGF0IHdvcmtzIGNvcnJlY3RseSBldmVuIGlmXG4gICBbbHp2XSBpcyBiZWluZyBmb3JjZWQgY29uY3VycmVudGx5LlxuKilcbmxldCBpbmRpcmVjdCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogU3lzLm9wYXF1ZV9pZGVudGl0eTogc2VlIFtmb3JjZV9nZW5dIGNvbW1lbnQgYWJvdmUuICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmxhenlfdGFnIHx8IHQgPSBPYmouZm9yY2luZ190YWdcbiAgdGhlbiBsYXp5IChmb3JjZV9sYXp5X2Jsb2NrIGx6dilcbiAgZWxzZSBsenZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9vYmpfdGFnIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUiLCJyZXN1bHQiLCJlIiwicGFyYW0iLCJmb3JjZV9sYXp5X2Jsb2NrIiwiZm9yY2VfZ2VuIiwibHp2IiwidCIsImluZGlyZWN0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBLFlBQUFDLHFCQUFBQyxVQUFBQztBQUFBQSxJQ3VFUTtBQUFBLEtBR0M7QUFBQSxJQUZFO0FBQUEsU0FBQUMsWUFaYztBQUFBLEtBQ3ZCO0FBQUEsU0FBQUMsV0FDYTtBQUFBLEtBQ2I7QUFBQSxLQUNBO0FBQUEsS0FBbUI7QUFBQTtBQUFBLFFBQUFELFVBbkJJO0FBQUEsSUFDdkI7QUFBQSxJQUErQjtBQUFBLFNBQUFDLFNBRWhCO0FBQUEsS0FDYjtBQUFBLEtBQ0E7QUFBQTtBQUFBO0FBQUEsVUFBQUM7QUFBQUEsU0FBQUEsSURsREo7QUFBQSxLQ3FESSxrQkFBQUMsT0FBdUMsd0NBQU87QUFBQSxLQUM5QztBQUFBLEtBQWU7QUFBQTtBQUFBLEdBb0JLO0FBQUEsWUFBQUMsaUJBQUFMLEtBR0csbUNBQXdDO0FBQUEsWUFBQU0sVUFBQVAsVUFBQVE7QUFBQUEsUUFBQUMsSUFxQnpEO0FBQUEsSUFDUix5QkFDMEI7QUFBQSxJQUVyQix3QkFBNEI7QUFBQSxJQUM1QixtQ0FDQSxtQ0FBa0M7QUFBQTtBQUFBLFlBQUFDLFNBQUFGO0FBQUFBLFFBQUFDLElBWS9CO0FBQUEsSUFDUiwrQ0FFSztBQUFBLElBREEseUJEdEhQLCtCQ3NITztBQUFBLEdBQ0c7QUFBQSxHRHZIViIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEwNTUyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbGF6eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX2FycmF5X21ha2VdIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJnbG9iYWxfZGF0YSIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWJfT2JqIiwiVW5kZWZpbmVkIiwiZm9yY2VfdmFsIiwibCIsImZyb21fZnVuIiwieCIsImZyb21fdmFsIiwidiIsInQiLCJpc192YWwiLCJtYXAiLCJwYXJhbSIsIm1hcF92YWwiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxlQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxZQUFBQyxVQUFBQyxHQ3VEa0IsMkNBQTJDO0FBQUEsWUFBQUMsU0FBQVI7QUFBQUEsUUFBQVMsSUFHbkQ7QUFBQSxJQUNSO0FBQUEsSUFBOEI7QUFBQSxHQUNWO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHWjtBQUFBLElBQ1I7QUFBQTtBQUFBO0FBQUEsS0FJRztBQUFBLElBSCtDLHdDQUkvQztBQUFBO0FBQUEsWUFBQUMsT0FBQU47QUFBQUEsUUFBQSxJQUVxQjtBQUFBLHdDQUFvQjtBQUFBLEdBQWdCO0FBQUEsWUFBQU8sSUFBQWQsR0FBQVM7QUFBQUEsSUFHNUQ7QUFBQSxxQkFBQU07QUFBQUEsaUJBQUEsSUQxRUY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0MwRUU7QUFBQSxHQUFrQjtBQUFBLFlBQUFDLFFBQUFoQixHQUFBUztBQUFBQSxJQUdmO0FBQUEsS0FFRTtBQUFBLHNCQUFBTTtBQUFBQSxrQkFBQSxJRC9FUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQytFTztBQUFBLFlBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQVMsT0FBYSxTQUFiLGlCQUNTO0FBQUE7QUFBQSxHRC9FekIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMDYzMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3NlcS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCBzaW5nbGV0b24geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBmaWx0ZXJpX2F1eCBmIGkgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIGYgaSB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlcmlfYXV4IGYgaScgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyaV9hdXggZiBpJyBuZXh0ICgpXG5cbmxldFtAaW5saW5lXSBmaWx0ZXJpIGYgc2VxICgpID1cbiAgZmlsdGVyaV9hdXggZiAwIHNlcSAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX0F0b21pYyIsIkNhbWxpbnRlcm5hbExhenkiLCJTdGRsaWIiLCJTdGRsaWJfTGF6eSIsImVtcHR5IiwicGFyYW0iLCJyZXR1cm4kIiwieCIsImNvbnMiLCJuZXh0Iiwic2luZ2xldG9uIiwiYXBwZW5kIiwic2VxMSIsInNlcTIiLCJtYXRjaCIsIm1hcCIsInNlcSIsImZpbHRlcl9tYXAiLCJ5IiwiZmlsdGVyIiwiZmlsdGVyaV9hdXgiLCJpIiwiZmlsdGVyaSIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiaXRlciIsInVuZm9sZCIsInUiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwibGVuZ3RoIiwiYWNjdSIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiZmluZCIsImZpbmRfaW5kZXgiLCJmaW5kX21hcCIsInJlc3VsdCIsImZpbmRfbWFwaSIsIml0ZXIyIiwieXMiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJjIiwiaW5pdF9hdXgiLCJqIiwiaW5pdCIsIm4iLCJyZXBlYXQiLCJmb3JldmVyIiwiY3ljbGVfbm9uZW1wdHkiLCJjeWNsZSIsIml0ZXJhdGUxIiwiaXRlcmF0ZSIsIm1hcGlfYXV4IiwibWFwaSIsInRhaWxfc2NhbiIsInMiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwiRm9yY2VkX3R3aWNlIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJtYXBfc25kIiwidW56aXAiLCJmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAiLCJmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIiwieiIsInBhcnRpdGlvbl9tYXAiLCJwYXJ0aXRpb24iLCJwZWVsIiwieHNzIiwidHJhbnNwb3NlIiwidGFpbHMiLCJoZWFkcyIsInJlbWFpbmRlcnMiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLE1BQUFDLE9DdUJlLFNBQUc7QUFBQSxZQUFBQyxRQUFBQyxHQUFBRixPQUVBLHFCQUFlO0FBQUEsWUFBQUcsS0FBQUQsR0FBQUUsTUFBQUosT0FFWixvQkFBYztBQUFBLFlBQUFLLFVBQUFILEdBQUFGLE9BRWQscUJBQWU7QUFBQSxZQUFBTSxPQUFBQyxNQUFBQyxNQUFBUjtBQUFBQSxRQUFBUyxRQUc1QjtBQUFBLElBQU0sWUFDSCwwQkFDcUM7QUFBQSxRQUFBTCxPQUZsQyxVQUFBRixJQUFBO0FBQUEsSUFFaUMsMEJBQWhCLCtCQUFnQjtBQUFBLEdBQUM7QUFBQSxZQUFBUSxJQUFBdkIsR0FBQXdCLEtBQUFYO0FBQUFBLFFBQUFTLFFBRW5CO0FBQUEsSUFBSyxZQUN2QjtBQUFBLFFBQUFMLE9BRHVCLFVBQUFGLElBQUE7QUFBQSxJQUVOLHlDQUFLLHlCQUFGO0FBQUEsR0FBYTtBQUFBLFlBQUFVLFdBQUF6QixHQUFBd0IsT0FBQVg7QUFBQUEsUUFBQVcsTUFFZDtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDOUI7QUFBQSxTQUFBTCxPQUQ4QixVQUFBRixJQUFBLFVBQUFPLFVBRzdCO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBSSxJQUhlO0FBQUEsSUFLZ0IsMEJBQWpCLGdDQUFpQjtBQUFBLEdBQUM7QUFBQSxZQUFBQyxPQUFBM0IsR0FBQXdCLE9BQUFYO0FBQUFBLFFBQUFXLE1BRXJCO0FBQUE7QUFBQSxTQUFBRixRQUFNO0FBQUEsS0FBSyxZQUMxQjtBQUFBLFNBQUFMLE9BRDBCLFVBQUFGLElBQUE7QUFBQSxLQUc1QjtBQUFBLEtBQUc7QUFBQTtBQUFBLElBQ3FCLDBCQUFiLDRCQUFhO0FBQUEsR0FDTjtBQUFBLFlBQUFhLFlBQUE1QixHQUFBNkIsS0FBQUwsT0FBQVg7QUFBQUEsUUFBQWdCLElBRU0sS0FBQUwsTUFBQTtBQUFBO0FBQUEsU0FBQUYsUUFBTTtBQUFBLEtBQUssWUFDakM7QUFBQSxTQUFBTCxPQURpQyxVQUFBRixJQUFBLFVBQUFjLE1BR3RDO0FBQUEsS0FDRztBQUFBLEtBQUs7QUFBQTtBQUFBO0FBQUEsSUFDMkIsMEJBQXJCLHNDQUFxQjtBQUFBLEdBQ047QUFBQSxZQUFBQyxRQUFBOUIsR0FBQXdCLEtBQUFYLE9BR2pDLGdDQUFzQjtBQUFBLFlBQUFrQixPQUFBUCxLQUFBWDtBQUFBQSxRQUFBUyxRQUVNO0FBQUEsSUFBTSxZQUN6QjtBQUFBLFFBQUFMLE9BRHlCLFVBQUFGLElBQUE7QUFBQSxJQUdULDZCQUFiLDRCQUFnQjtBQUFBO0FBQUEsWUFBQWlCLFNBQUFoQyxHQUFBd0IsS0FBQVg7QUFBQUEsUUFBQVMsUUFFSTtBQUFBLElBQU0sWUFDN0I7QUFBQSxRQUFBTCxPQUQ2QixVQUFBRixJQUFBO0FBQUEsSUFHN0IsT0FBSztBQUFBLGFBQUwsOEJBQU0saUNBQW9CO0FBQUE7QUFBQSxZQUFBa0IsVUFBQWpDLEdBQUFrQyxPQUFBVjtBQUFBQSxRQUFBVSxNQUtuQyxPQUFBVixNQUFBO0FBQUE7QUFBQSxTQUFBRixRQUFNO0FBQUEsS0FBTSxZQUNEO0FBQUEsU0FBQUwsT0FEQyxVQUFBRixJQUFBLFVBQUFtQixRQUdJO0FBQUEsS0FDVjtBQUFBO0FBQUE7QUFBQSxHQUFvQjtBQUFBLFlBQUFDLEtBQUFuQyxHQUFBd0I7QUFBQUEsUUFBQUEsTUFHMUI7QUFBQTtBQUFBLFNBQUFGLFFBQU07QUFBQSxLQUFNLFlBQ0Q7QUFBQSxTQUFBTCxPQURDLFVBQUFGLElBQUE7QUFBQSxLQUdOO0FBQUEsS0FBRztBQUFBO0FBQUEsR0FDUTtBQUFBLFlBQUFxQixPQUFBcEMsR0FBQXFDLEdBQUF4QjtBQUFBQSxRQUFBUyxRQUdYO0FBQUEsSUFBRyxZQUNDO0FBQUEsUUFBQUEsVUFERCxVQUFBZSxNQUFBLFlBQUF0QixJQUFBO0FBQUEsSUFFNkIsMEJBQVgsMkJBQVc7QUFBQSxHQUFDO0FBQUEsWUFBQXVCLFNBQUFDLElBR2pDLGdDQUlHO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsUUFBQWpCLFFBR0g7QUFBQSxJQUFJLFlBSU47QUFBQSxRQUFBaUIsT0FKTSxVQUFBeEIsSUFBQTtBQUFBLElBRU47QUFBQSxHQUVJO0FBQUEsWUFBQTBCLE9BQUFGO0FBQUFBLFFBQUFHLE9BWVIsR0FBQUgsS0FBQTtBQUFBO0FBQUEsU0FBQWpCLFFBUE07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBRyxTQUlOO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FHVztBQUFBLFlBQUFDLE1BQUEzQyxHQUFBdUM7QUFBQUEsUUFBQVYsSUFXZixHQUFBVSxLQUFBO0FBQUE7QUFBQSxTQUFBakIsUUFSTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJTjtBQUFBLFNBQUFjLE1BQUs7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUlPO0FBQUEsWUFBQWUsV0FBQTVDLEdBQUEwQyxRQUFBSDtBQUFBQSxRQUFBRyxPQVdoQixRQUFBYixJQUFBLEdBQUFVLEtBQUE7QUFBQTtBQUFBLFNBQUFqQixRQVJNO0FBQUEsS0FBSSxZQUVOO0FBQUE7QUFBQSxNQUFBaUIsT0FGTTtBQUFBLE1BQUF4QixJQUFBO0FBQUEsTUFBQTJCLFNBSUs7QUFBQSxNQUFBYixNQUNYO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdzQjtBQUFBLFlBQUFnQixRQUFBQyxHQUFBUDtBQUFBQSxRQUFBQSxLQUcxQjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlOO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxHQUFnQjtBQUFBLFlBQUFnQyxPQUFBRCxHQUFBUDtBQUFBQSxRQUFBQSxLQUd2QjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlOO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxHQUFlO0FBQUEsWUFBQWlDLEtBQUFGLEdBQUFQO0FBQUFBLFFBQUFBLEtBR3RCO0FBQUE7QUFBQSxTQUFBakIsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJSCxxQkFBUztBQUFBLEtBQU47QUFBQTtBQUFBLEdBQTJCO0FBQUEsWUFBQWtDLFdBQUFILEdBQUFQO0FBQUFBLFFBQUFWLElBUXJDLEdBQUFVLE9BQUE7QUFBQTtBQUFBLFNBQUFqQixRQUx5QjtBQUFBLEtBQUksWUFFdkI7QUFBQSxTQUFBaUIsT0FGdUIsVUFBQXhCLElBQUE7QUFBQSxLQUlwQixxQkFBUztBQUFBLFNBQUFjLE1BQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUN0QjtBQUFBLFlBQUFxQixTQUFBbEQsR0FBQXVDO0FBQUFBLFFBQUFBLEtBR1I7QUFBQTtBQUFBLFNBQUFqQixRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQW9DLFNBSUE7QUFBQSxLQUFHLFdBSUw7QUFBQSxLQUpLO0FBQUE7QUFBQSxHQUlDO0FBQUEsWUFBQUMsVUFBQXBELEdBQUF1QztBQUFBQSxRQUFBVixJQVlkLEdBQUFVLE9BQUE7QUFBQTtBQUFBLFNBQUFqQixRQVR5QjtBQUFBLEtBQUksWUFFdkI7QUFBQSxTQUFBaUIsT0FGdUIsVUFBQXhCLElBQUEsVUFBQW9DLFNBSWpCO0FBQUEsS0FBSyxXQUlQO0FBQUEsU0FBQXRCLE1BRkE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdGO0FBQUEsWUFBQXdCLE1BQUFyRCxHQUFBdUMsTUFBQWU7QUFBQUEsUUFBQWYsS0FVUixNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxLQUFJLGNBRU47QUFBQSxTQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLEtBSU47QUFBQSxLQUFLO0FBQUE7QUFBQTtBQUFBLEdBQ1E7QUFBQSxZQUFBNkIsV0FBQXZELEdBQUEwQyxRQUFBSCxNQUFBZTtBQUFBQSxRQUFBWixPQUdyQixRQUFBSCxLQUFBLE1BQUFlLEtBQUE7QUFBQTtBQUFBLFNBQUFoQyxRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQU8sVUFJQTtBQUFBLEtBQUksY0FFTjtBQUFBO0FBQUEsTUFBQWdDLE9BRk07QUFBQSxNQUFBNUIsSUFBQTtBQUFBLE1BQUFnQixTQUlLO0FBQUEsS0FDWDtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQXVCO0FBQUEsWUFBQWMsU0FBQXhELEdBQUF1QyxNQUFBZTtBQUFBQSxRQUFBZixLQUcvQixNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTTtBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxLQUFJLGNBRU47QUFBQSxTQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQSxnQkFJTjtBQUFBLEtBQUs7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUFvQjtBQUFBLFlBQUErQixRQUFBekQsR0FBQXVDLE1BQUFlO0FBQUFBLFFBQUFmLEtBR2pDLE1BQUFlLEtBQUE7QUFBQTtBQUFBLFNBQUFoQyxRQUFNO0FBQUEsS0FBSSxZQUVOO0FBQUEsU0FBQWlCLE9BRk0sVUFBQXhCLElBQUEsVUFBQU8sVUFJQTtBQUFBLEtBQUksY0FFTjtBQUFBLFNBQUFnQyxPQUZNLFlBQUE1QixJQUFBLGdCQUlOO0FBQUEsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQW1CO0FBQUEsWUFBQWdDLE1BQUFDLElBQUFwQixNQUFBZTtBQUFBQSxRQUFBZixLQUdoQyxNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTSxtQkFBQUEsVUFBTTtBQUFBLEtBQUk7QUFBQTtBQUFBO0FBQUEsUUFBQWdDLE9BQUE7QUFBQSxRQUFBNUIsSUFBQTtBQUFBLFFBQUFhLE9BQUE7QUFBQSxRQUFBeEIsSUFBQTtBQUFBLFlBSVo7QUFBQSxPQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUZOO0FBQUEsS0FLQTtBQUFBO0FBQUEsR0FBSztBQUFBLFlBQUE2QyxRQUFBQyxLQUFBdEIsTUFBQWU7QUFBQUEsUUFBQWYsS0FHVCxNQUFBZSxLQUFBO0FBQUE7QUFBQSxTQUFBaEMsUUFBTSxtQkFBQUEsVUFBTTtBQUFBLEtBQUksbUNBU1Y7QUFBQSxTQUFBaUIsT0FUVSxVQUFBeEIsSUFBQTtBQUFBLG1CQVNaO0FBQUEsU0FBQXVDLE9BVFksWUFBQTVCLElBQUEsWUFBQW9DLElBSUo7QUFBQSxLQUNSLFlBQWU7QUFBQSxLQUFmO0FBQUE7QUFBQTtBQUFBLEdBSUU7QUFBQSxZQUFBQyxTQUFBL0QsR0FBQTZCLEdBQUFtQyxHQUFBbkQ7QUFBQUEsSUFPTixXQUlFO0FBQUEsWUFIVztBQUFBLElBQUwseUNBQUssOEJBQUY7QUFBQSxHQUdOO0FBQUEsWUFBQW9ELEtBQUFDLEdBQUFsRTtBQUFBQSxJQUdMLFVBQ0UsdUNBRWM7QUFBQSxJQUFkLG1CRDlSSiw2QkM4Ukk7QUFBQSxHQUFjO0FBQUEsWUFBQW1FLE9BQUFwRCxHQUFBRjtBQUFBQSxJQUdDLDBCQUFSLHNCQUFRO0FBQUEsR0FBQztBQUFBLFlBQUF1RCxRQUFBcEUsR0FBQWE7QUFBQUEsSUFHWix5Q0FBSyx1QkFBRjtBQUFBLEdBQVk7QUFBQSxZQUFBd0QsZUFBQTlCLElBQUExQjtBQUFBQSxJQU9RLDhCQUFuQixrQ0FBc0I7QUFBQTtBQUFBLFlBQUF5RCxNQUFBL0IsSUFBQTFCO0FBQUFBLFFBQUFTLFFBUTFCO0FBQUEsSUFBSSxZQUVOO0FBQUEsUUFBQWlCLE9BRk0sVUFBQXhCLElBQUE7QUFBQSxrQkFJYztBQUFBLElBQW1CLDBCQUE5Qiw0QkFBOEI7QUFBQSxHQUFDO0FBQUEsWUFBQXdELFNBQUF2RSxHQUFBZSxHQUFBRjtBQUFBQSxRQUFBYSxJQU9wQztBQUFBLElBQ2EsMEJBQVosMkJBQVk7QUFBQSxHQUFDO0FBQUEsWUFBQThDLFFBQUF4RSxHQUFBZTtBQUFBQSxhQUFBRSxLQUFBLEdBWWY7QUFBQSxJQUFjLGdCQUFBSixPQWhURixxQkFnVEU7QUFBQTtBQUFBLFlBQUE0RCxTQUFBekUsR0FBQTZCLEdBQUFVLElBQUExQjtBQUFBQSxRQUFBUyxRQUtmO0FBQUEsSUFBSSxZQUVOO0FBQUEsUUFBQWlCLE9BRk0sVUFBQXhCLElBQUEsY0FJTztBQUFBLElBQVA7QUFBQTtBQUFBLHdCQUFPLGlDQUFGO0FBQUEsR0FBc0I7QUFBQSxZQUFBMkQsS0FBQTFFLEdBQUF1QyxJQUdyQyxtQkR2VkYsOEJDdVZFLENBQWU7QUFBQSxZQUFBb0MsVUFBQTNFLEdBQUE0RSxHQUFBckMsSUFBQTFCO0FBQUFBLFFBQUFTLFFBU1Q7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBNkQsTUFJRTtBQUFBLElBQ2lCLDRCQUFoQixvQ0FBZ0I7QUFBQSxHQUFDO0FBQUEsWUFBQUMsS0FBQTdFLEdBQUE0RSxHQUFBckM7QUFBQUEsYUFBQXRCLEtBQUEsR0FHdkI7QUFBQSxJQUFrQixnQkFBQUosT0E3VU4scUJBNlVNO0FBQUE7QUFBQSxZQUFBaUUsU0FBQVosR0FBQTNCO0FBQUFBLElBTXpCO0FBQUE7QUFBQTtBQUFBLGNBQUExQjtBQUFBQSxrQkFBQVMsUUFJVTtBQUFBLGNBQUksWUFFTjtBQUFBLGtCQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLGNBSUcsd0NBQWlCO0FBQUEsYUFBQztBQUFBO0FBQUEsWUFBQWdFLEtBQUFiLEdBQUEzQjtBQUFBQSxJQUduQyxVQUFjO0FBQUEsSUFDZCxzQkFBYTtBQUFBO0FBQUEsWUFBQXlDLEtBQUFkLEdBQUEzQjtBQUFBQSxJQXFCYjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQUExQjtBQUFBQSxvQkFBQXFELE1BS0ksR0FBQTNCLE9BQUE7QUFBQTtBQUFBLHFCQUFBakIsUUFuQkU7QUFBQSxpQkFBSSxZQUVOO0FBQUEscUJBQUFpQixPQUZNLFVBQUEyQixNQUlOO0FBQUEsaUJBQ0EsY0FDRSwwQkFhYTtBQUFBLGlCQWRmO0FBQUE7QUFBQTtBQUFBLGVBY2U7QUFBQSxjQUxMLGdDQUtLO0FBQUE7QUFBQSxZQUFBZSxXQUFBbkMsR0FBQVAsSUFBQTFCO0FBQUFBLFFBQUFTLFFBR2I7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLElBSUg7QUFBQSxpQ0FBa0I7QUFBQSxlQUF5QjtBQUFBO0FBQUEsWUFBQW1FLFdBQUFwQyxHQUFBUCxNQUFBMUI7QUFBQUEsUUFBQTBCLEtBR2xEO0FBQUE7QUFBQSxTQUFBNEMsT0FBTTtBQUFBLEtBQUksV0FFTjtBQUFBLFNBQUE1QyxPQUZNLFNBQUF4QixJQUFBO0FBQUEsS0FJSCx1QkFBaUM7QUFBQSxLQUE5QjtBQUFBO0FBQUEsR0FBa0M7QUFBQSxZQUFBcUUsTUFBQXpCLElBQUFwQixJQUFBMUI7QUFBQUEsUUFBQVMsUUFHdEM7QUFBQSxJQUFJLFlBRU47QUFBQSxRQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxjQUlvRDtBQUFBLGtCQUFaO0FBQUEsWUFBckI7QUFBQSxhQUFBRSxLQUFBLEdBQVo7QUFBQSxJQUFzQjtBQUFBLHFCQUFBSixPQTlZcEI7QUFBQSx3QkE4WXNCLHlCQUFGO0FBQUEsR0FBa0M7QUFBQTtBQUFBLElBQUF3RTtBQUFBQSxNRHphM0U7QUFBQSxJQUFBQyxVQUFBO0FBQUEsWUFBQUMsUUFBQTFFO0FBQUFBLElDcWNNO0FBQUEsR0FBa0I7QUFBQSxZQUFBMkUsUUFBQWpEO0FBQUFBLGFBQUFxQyxJQUFBL0Q7QUFBQUEsU0FBQVMsUUFtQmQ7QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQTtBQUFBLEtBSUcsNEJBQVU7QUFBQSxJQUFDO0FBQUEsUUFBQTZELElBOUJkO0FBQUEsSUFMVixnQkFBQS9EO0FBQUFBLFNBQUEsSUFBVTtBQUFBO0FBQUE7QUFBQSw2Q0FBWSxFQUF0QjtBQUFBLEdBb0NEO0FBQUEsWUFBQTRFLEtBQUFsRDtBQUFBQSxhQUFBdkMsRUFBQWE7QUFBQUEsU0FBQVMsUUFJTztBQUFBLEtBQUksWUFFTjtBQUFBLFNBQUFpQixPQUZNLFVBQUF4QixJQUFBO0FBQUEsS0FJRyx5QkFBTztBQUFBLElBQUM7QUFBQSxRQUFBMkUsU0F6QlI7QUFBQSxJQUNiLGdCQUFBN0U7QUFBQUEsU0FBQWIsSUFJVTtBQUFBLEtBQ1IsdUJBQUcsRUFMTDtBQUFBLEdBeUJEO0FBQUEsWUFBQTJGLElBQUFwRCxJQUFBZSxJQUFBekM7QUFBQUEsUUFBQVMsUUFJSztBQUFBLElBQUksWUFFTjtBQUFBLFFBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxJQUFJLGNBRU47QUFBQSxRQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLElBSWlCLGtDQUFULDRCQUFTO0FBQUEsR0FBQztBQUFBLFlBQUFrRSxLQUFBNUYsR0FBQXVDLElBQUFlLElBQUF6QztBQUFBQSxRQUFBUyxRQUcxQjtBQUFBLElBQUksWUFFTjtBQUFBLFFBQUFpQixPQUZNLFVBQUF4QixJQUFBLFVBQUFPLFVBSUE7QUFBQSxJQUFJLGNBRU47QUFBQSxRQUFBZ0MsT0FGTSxZQUFBNUIsSUFBQTtBQUFBLElBSUE7QUFBQTtBQUFBLHdCQUFPLGdDQUFGO0FBQUEsR0FBZTtBQUFBLFlBQUFtRSxXQUFBdEQsSUFBQWUsSUFBQXpDO0FBQUFBLFFBQUFTLFFBRzVCO0FBQUEsSUFBSSxZQUVOLHdCQUUwQjtBQUFBLFFBQUFpQixPQUpwQixVQUFBeEIsSUFBQTtBQUFBLElBSW1CLDBCQUFoQixpQ0FBZ0I7QUFBQSxHQUFDO0FBQUEsWUFBQStFLGNBQUFqQyxLQUFBOUMsR0FBQXdCLElBQUFiLEdBQUE0QjtBQUFBQSxJQTZCM0I7QUFBQTtBQUFBO0FBQUEsdUJBQUF6QztBQUFBQSxtQkFBQVMsUUFkRztBQUFBLGVBQUksWUFFTjtBQUFBLG1CQUFBZ0MsT0FGTSxVQUFBNUIsSUFBQTtBQUFBLGVBSU47QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFBQWI7QUFBQUEsbUJBQUFTLFFBR0U7QUFBQSxlQUFJLFlBRU47QUFBQSxtQkFBQWlCLE9BRk0sVUFBQXhCLElBQUE7QUFBQSxlQUlOO0FBQUEsZ0JBTWtDO0FBQUE7QUFBQSxZQUFBZ0YsYUFBQWxDLEtBQUF0QixJQUFBZSxJQUFBekM7QUFBQUEsUUFBQVMsUUFHaEMsbUJBQUFBLFVBQU07QUFBQSxJQUFJO0FBQUE7QUFBQSxVQUFBZ0MsT0FBQSxZQUFBNUIsSUFBQSxZQUFBYSxPQUFBLFVBQUF4QixJQUFBO0FBQUEsTUFPViwyQ0FBMkI7QUFBQTtBQUFBLFNBQUErQyxJQVBqQjtBQUFBO0FBQUEsdUJBRVYsY0FBQUEsSUFGVTtBQUFBLElBS1Y7QUFBQSxHQUUyQjtBQUFBLFlBQUFrQyxRQUFBQyxLQUFBcEY7QUFBQUEsUUFBQVMsUUFJM0I7QUFBQSxJQUFLLFlBRVA7QUFBQSxRQUFBMkUsUUFGTyxVQUFBbEYsSUFBQTtBQUFBLElBSWEsMEJBQVgsMkJBQVc7QUFBQSxHQUFDO0FBQUEsWUFBQW1GLFFBQUFELEtBQUFwRjtBQUFBQSxRQUFBUyxRQUduQjtBQUFBLElBQUssWUFFUDtBQUFBLFFBQUEyRSxRQUZPLFVBQUF2RSxJQUFBO0FBQUEsSUFJYSwwQkFBWCwyQkFBVztBQUFBLEdBQUM7QUFBQSxZQUFBeUUsTUFBQUY7QUFBQUEsSUFHZDtBQUFBLHdCQUFYO0FBQUEsd0JBQWEseUJBQUY7QUFBQSxHQUFhO0FBQUEsWUFBQUcseUJBQUFwRyxHQUFBdUMsTUFBQTFCO0FBQUFBLFFBQUEwQixLQVN4QjtBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBTyxVQUlBO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBSSxJQUpiO0FBQUEsSUFNOEMsMEJBQTdCLDhDQUE2QjtBQUFBLEdBRU47QUFBQSxZQUFBMkUsMEJBQUFyRyxHQUFBdUMsTUFBQTFCO0FBQUFBLFFBQUEwQixLQUd4QztBQUFBO0FBQUEsU0FBQWpCLFFBQU07QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBaUIsT0FGTSxVQUFBeEIsSUFBQSxVQUFBTyxVQUlBO0FBQUEsS0FBRztBQUFBO0FBQUE7QUFBQSxRQUFBZ0YsSUFKYjtBQUFBLElBUStDLDBCQUE5QiwrQ0FBOEI7QUFBQSxHQUFDO0FBQUEsWUFBQUMsY0FBQXZHLEdBQUF1QztBQUFBQSxJQUduQjtBQUFBLHdCQUE3QjtBQUFBLHdCQUNBLDZDQUQ2QjtBQUFBLEdBQ0M7QUFBQSxZQUFBaUUsVUFBQTFELEdBQUFQO0FBQUFBLGFBQUEsRUFBQXhCLEdBR0ksMkJBQUs7QUFBQSxJQUE1QjtBQUFBLHdCQUFYO0FBQUEsd0JBQWEsMEJBQUY7QUFBQSxHQUFnQztBQUFBLFlBQUEwRixLQUFBQztBQUFBQSxJQVlkLHlCQUF2QixvQ0FBdUI7QUFBQTtBQUFBLFdEL21CL0I7QUFBQSxZQUFBQyxVQUFBRCxLQUFBN0Y7QUFBQUEsUUFBQVMsUUNrbkJxQixXQUFBc0YsUUFBUSxVQUFBQyxRQUFBO0FBQUEsSUFDeEI7QUFBQSxLQUsyQiw4QkFBZiw2QkFBZTtBQUFBLElBSnJCLG9CQUNQO0FBQUEsSUFEdUI7QUFBQSxHQUlNO0FBQUEsY0FBQUMsWUFBQUosS0FBQTdGO0FBQUFBLFFBQUFTLFFBT3pCO0FBQUEsSUFBSyxZQXNCUCwrQkFBdUI7QUFBQSxRQUFBb0YsUUF0QmhCLFVBQUFuRSxLQUFBLFVBQUFqQixVQUVLO0FBQUEsSUFBSTtBQUFBO0FBQUEsTUFBQWlCLE9BQUE7QUFBQSxNQUFBeEIsSUFBQTtBQUFBLE1BQUFPLFVBUU87QUFBQSxNQUFBc0YsUUFBZTtBQUFBLE1BQUFDLFFBQUE7QUFBQSxVQUNKLFNBQUFoRyxPQS9tQm5CO0FBQUEsS0ErbUJPO0FBQUEsc0JBQUFBLE9BL21CUDtBQUFBLHlCQSttQlMsd0JBQUY7QUFBQTtBQUFBO0FBQUEsS0FBQVMsVUFLQztBQUFBLEtBQUFzRixVQUFlO0FBQUEsS0FBQUMsVUFBQTtBQUFBLElBQ0YsZ0NBQW5CLDhCQUFtQjtBQUFBLEdBS2I7QUFBQSxZQUFBRSxZQUFBL0csR0FBQXVDLElBQUFlO0FBQUFBLGFBQUEsRUFBQXZDO0FBQUFBLGNBQUEsRUFBQVcsR0FzQnJCLDBCQUFLO0FBQUEsS0FEUCxtQkQxcUJOLHNCQzBxQk07QUFBQSxJQUVJO0FBQUEsYUFBQWdGLElBQUEsR0FKVTtBQUFBLGtCQUhsQjtBQUFBLElBU0U7QUFBQTtBQUFBLFlBQUFNLFFBQUF6RSxJQUFBZTtBQUFBQSxJQUdGLDRCQUFBdkMsR0FBQVcsR0FBd0IsaUJBQU0sVUFBTztBQUFBO0FBQUEsWUFBQXVGLGFBQUFDO0FBQUFBLGFBQUFwRCxFQUFBakQ7QUFBQUEsU0FBQVMsUUFJN0I7QUFBQSxLQUFJLFlBRU47QUFBQSxTQUFBUCxJQUZNO0FBQUEsS0FJTjtBQUFBLElBQVc7QUFBQSxJQUVqQjtBQUFBLEdBQUM7QUFBQSxZQUFBb0csYUFBQTVFO0FBQUFBLFFBQUFxQyxJQUdEO0FBQUEsSUFDQSxnQkFBQS9EO0FBQUFBLFNBQUFTLFFBQ1E7QUFBQSxLQUFNLFlBRVI7QUFBQSxTQUFBaUIsS0FGUSxVQUFBeEIsSUFBQTtBQUFBLEtBSVI7QUFBQSxLQUNBLGNBQU0sQ0FOWjtBQUFBLEdBTVk7QUFBQSxZQUFBcUcsS0FBQXZGLEdBQUFoQjtBQUFBQSxRQUFBLElBS0g7QUFBQSxJQUFZLDBCQUFaLG9CQUFZO0FBQUEsR0FBQztBQUFBLEdEMXNCeEIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTM0MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWIiLCJzb21lIiwidiIsInZhbHVlIiwibyIsImRlZmF1bHQkIiwiZ2V0IiwicGFyYW0iLCJiaW5kIiwiam9pbiIsIm1hcCIsImZvbGQiLCJub25lIiwiaXRlciIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDLEdDa0JhLGNBQU07QUFBQSxZQUFBQyxNQUFBQyxHQUFBQztBQUFBQSxJQUNJLFFBQW1DO0FBQUEsUUFBQUgsSUFBbkM7QUFBQSxJQUF1QjtBQUFBLEdBQW1CO0FBQUEsWUFBQUksSUFBQUM7QUFBQUEsSUFDdkQsWUFBK0IsNkNBQTRCO0FBQUEsUUFBQUwsSUFBM0Q7QUFBQSxJQUFtQjtBQUFBLEdBQXdDO0FBQUEsWUFBQU0sS0FBQUosR0FBQVY7QUFBQUEsSUFDdEQsUUFBcUI7QUFBQSxRQUFBUSxJQUFyQjtBQUFBLElBQXNDLHVCQUFHO0FBQUE7QUFBQSxZQUFBTyxLQUFBRixPQUM3QyxZQUErQixjQUFBSCxJQUEvQixVQUFtQixTQUFnQjtBQUFBLFlBQUFNLElBQUFoQixHQUFBVTtBQUFBQSxJQUNoQyxRQUFxQjtBQUFBLFFBQUFGLElBQXJCO0FBQUEsSUFBMkMsNEJBQUs7QUFBQTtBQUFBLFlBQUFTLEtBQUFDLE1BQUFYLE1BQUFNO0FBQUFBLElBQ3JELFlBQWtEO0FBQUEsUUFBQUwsSUFBbEQ7QUFBQSxJQUFpQywwQkFBcUI7QUFBQTtBQUFBLFlBQUFXLEtBQUFuQixHQUFBYTtBQUFBQSxJQUN0RCxZQUFxQztBQUFBLFFBQUFMLElBQXJDO0FBQUEsSUFBdUIsdUJBQWdCO0FBQUE7QUFBQSxZQUFBWSxRQUFBUCxPQUNsQyxvQkFBdUM7QUFBQSxZQUFBUSxRQUFBUixPQUN2QyxvQkFBdUM7QUFBQSxZQUFBUyxNQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUVoQztBQUFBLGdCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FDQyw2QkFFVjtBQUFBO0FBQUEsa0JBREk7QUFBQSxJQUNUO0FBQUEsR0FBSztBQUFBLFlBQUFDLFFBQUFDLEtBQUFMLElBQUFDO0FBQUFBLElBRVksMkJBSUw7QUFBQSxRQUFBRSxLQUpLO0FBQUEsYUFJTjtBQUFBLFFBQUFELEtBSk07QUFBQSxJQUNGLDhCQUdIO0FBQUE7QUFBQSxZQUFBSSxVQUFBWixNQUFBTDtBQUFBQSxJQUVMLFlBQXlCO0FBQUEsUUFBQUwsSUFBekI7QUFBQSxJQUFnRDtBQUFBLEdBQUk7QUFBQSxZQUFBdUIsUUFBQWxCO0FBQUFBLElBQ3BELFlBQWlCO0FBQUEsUUFBQUwsSUFBakI7QUFBQSxJQUFnQztBQUFBLEdBQUc7QUFBQSxZQUFBd0IsT0FBQW5CO0FBQUFBLElBQ3BDLFlBQWlCO0FBQUEsUUFBQUwsSUFBakIsY0FBdUM7QUFBQSx1QkQxQ3BELGdCQzBDb0Q7QUFBQSxHQUFZO0FBQUEsR0QxQ2hFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE0NDksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X29rJyA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gaW52YWxpZF9hcmcgZVxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgZXJyb3JfdG9fZmFpbHVyZSA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIGUgLT4gZmFpbHdpdGggZVxubGV0IGJpbmQgciBmID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBqb2luID0gZnVuY3Rpb24gT2sgciAtPiByIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXAgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gT2sgKGYgdikgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IHByb2R1Y3QgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCAoRXJyb3IgXyBhcyByKSwgX1xufCBfLCAoRXJyb3IgXyBhcyByKSAtPiByXG58IE9rIHYwLCBPayB2MSAtPiBPayAodjAsIHYxKVxuXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCByZXRyYWN0ID0gZnVuY3Rpb24gT2sgdiAtPiB2IHwgRXJyb3IgdiAtPiB2XG5sZXQgaXRlciBmID0gZnVuY3Rpb24gT2sgdiAtPiBmIHYgfCBFcnJvciBfIC0+ICgpXG5sZXQgaXRlcl9lcnJvciBmID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBmIGUgfCBPayBfIC0+ICgpXG5sZXQgaXNfb2sgPSBmdW5jdGlvbiBPayBfIC0+IHRydWUgfCBFcnJvciBfIC0+IGZhbHNlXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvbiBFcnJvciBfIC0+IHRydWUgfCBPayBfIC0+IGZhbHNlXG5cbmxldCBlcXVhbCB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBfLCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IE9rIF8sIEVycm9yIF8gLT4gLTFcbnwgRXJyb3IgXywgT2sgXyAtPiAxXG5cbmxldCB0b19vcHRpb24gPSBmdW5jdGlvbiBPayB2IC0+IFNvbWUgdiB8IEVycm9yIF8gLT4gTm9uZVxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBPayB2IC0+IFt2XSB8IEVycm9yIF8gLT4gW11cbmxldCB0b19zZXEgPSBmdW5jdGlvbiBPayB2IC0+IFNlcS5yZXR1cm4gdiB8IEVycm9yIF8gLT4gU2VxLmVtcHR5XG5cbm1vZHVsZSBTeW50YXggPSBzdHJ1Y3RcbiAgbGV0ICggbGV0KiApID0gYmluZFxuICBsZXQgKCBhbmQqICkgPSBwcm9kdWN0XG4gIGxldCAoIGxldCsgKSByIGYgPSBtYXAgZiByXG4gIGxldCAoIGFuZCsgKSA9IHByb2R1Y3RcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU2VxIiwiU3RkbGliIiwib2siLCJ2IiwiZXJyb3IiLCJlIiwidmFsdWUiLCJyIiwiZGVmYXVsdCQiLCJnZXRfb2siLCJwYXJhbSIsImdldF9lcnJvciIsImVycm9yX3RvX2ZhaWx1cmUiLCJiaW5kIiwiam9pbiIsIm1hcCIsInByb2R1Y3QiLCJyMCIsInIxIiwidjAiLCJ2MSIsIm1hcF9lcnJvciIsImZvbGQiLCJyZXRyYWN0IiwiaXRlciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwiZXF1YWwiLCJlMCIsImUxIiwiY29tcGFyZSIsInRvX29wdGlvbiIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxHQUFBQyxHQ2lCVyxjQUFJO0FBQUEsWUFBQUMsTUFBQUMsR0FDRCxjQUFPO0FBQUEsWUFBQUMsTUFBQUMsR0FBQUM7QUFBQUEsSUFDRSxlQUFvQztBQUFBLFFBQUFMLElBQXBDO0FBQUEsSUFBcUI7QUFBQSxHQUFzQjtBQUFBLFlBQUFNLE9BQUFDO0FBQUFBLElBQ3JELG1CQUFnQyxnREFBK0I7QUFBQSxRQUFBUCxJQUEvRDtBQUFBLElBQWlCO0FBQUEsR0FBOEM7QUFBQSxZQUFBTSxTQUFBQztBQUFBQSxJQUM5RCx1QkFBQVAsSUFBQSxVQUFpQjtBQUFBLFFBQUFFLElBQWpCO0FBQUEsSUFBZ0MsOEJBQWE7QUFBQTtBQUFBLFlBQUFNLFVBQUFEO0FBQUFBLElBQzNDLG1CQUFnQyw2Q0FBNEI7QUFBQSxRQUFBTCxJQUE1RDtBQUFBLElBQW9CO0FBQUEsR0FBd0M7QUFBQSxZQUFBTyxpQkFBQUY7QUFBQUEsSUFDckQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBRSxJQUFqQjtBQUFBLElBQWdDLDhCQUFVO0FBQUE7QUFBQSxZQUFBUSxLQUFBTixHQUFBWjtBQUFBQSxJQUNsRCxlQUEyQztBQUFBLFFBQUFRLElBQTNDO0FBQUEsSUFBcUIsdUJBQXVCO0FBQUE7QUFBQSxZQUFBVyxLQUFBVCxHQUNoRCxlQUFxQyxjQUFBRSxJQUFyQyxNQUFpQixTQUFxQjtBQUFBLFlBQUFRLElBQUFwQixHQUFBVTtBQUFBQSxJQUN6QyxlQUFnRDtBQUFBLFFBQUFGLElBQWhEO0FBQUEsSUFBd0IsNEJBQUs7QUFBQSxHQUFvQjtBQUFBLFlBQUFhLFFBQUFDLElBQUFDO0FBQUFBLElBQ3JDO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BR0Y7QUFBQSxTQUFBYixJQUhFO0FBQUE7QUFBQTtBQUFBLFNBQUFBLElBQUE7QUFBQSxJQUVHO0FBQUEsR0FDTTtBQUFBLFlBQUFjLFVBQUExQixHQUFBUTtBQUFBQSxJQUVmLGVBQW1EO0FBQUEsUUFBQUUsSUFBbkQ7QUFBQSxJQUE4Qiw0QkFBSztBQUFBLEdBQWlCO0FBQUEsWUFBQWlCLEtBQUFwQixJQUFBRSxPQUFBTTtBQUFBQSxJQUN6RCx1QkFBQVAsSUFBQSxVQUE4Qix3QkFBeUI7QUFBQSxRQUFBRSxJQUF2RDtBQUFBLElBQWdELDJCQUFPO0FBQUE7QUFBQSxZQUFBa0IsUUFBQWI7QUFBQUEsSUFDbEQsdUJBQUFQLElBQUEsVUFBaUI7QUFBQSxRQUFBQSxNQUFqQjtBQUFBLElBQWdDO0FBQUEsR0FBQztBQUFBLFlBQUFxQixLQUFBN0IsR0FBQWU7QUFBQUEsSUFDdEMsbUJBQXNDO0FBQUEsUUFBQVAsSUFBdEM7QUFBQSxJQUFxQix1QkFBbUI7QUFBQTtBQUFBLFlBQUFzQixXQUFBOUIsR0FBQWU7QUFBQUEsSUFDbEMsbUJBQXNDO0FBQUEsUUFBQUwsSUFBdEM7QUFBQSxJQUF3Qix1QkFBZ0I7QUFBQTtBQUFBLFlBQUFxQixNQUFBaEIsT0FDM0MsNkJBQXdDO0FBQUEsWUFBQWlCLFNBQUFqQixPQUNyQyw2QkFBd0M7QUFBQSxZQUFBa0IsTUFBQTFCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRTFCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHlCQUFBQyxLQUFBLE9BQ1gsNkJBRUg7QUFBQTtBQUFBO0FBQUEsU0FBQVMsS0FIYztBQUFBLHlCQUFBQyxLQUFBLE9BRUwsZ0NBQ1Q7QUFBQTtBQUFBLElBQUw7QUFBQSxHQUFLO0FBQUEsWUFBQUMsUUFBQTdCLElBQUFFLE9BQUFhLElBQUFDO0FBQUFBLElBRWdCO0FBQUEsU0FBQUMsS0FBQTtBQUFBLHFCQUdaO0FBQUEsU0FBQUMsS0FIWTtBQUFBLEtBQ2IsNkJBR0U7QUFBQTtBQUFBLFFBQUFTLEtBSlc7QUFBQSxvQkFJWjtBQUFBLFFBQUFDLEtBSlk7QUFBQSxJQUVQLGdDQUVKO0FBQUE7QUFBQSxZQUFBRSxVQUFBdEI7QUFBQUEsSUFFSixtQkFBcUM7QUFBQSxRQUFBUCxJQUFyQztBQUFBLElBQWlCO0FBQUEsR0FBd0I7QUFBQSxZQUFBOEIsUUFBQXZCO0FBQUFBLElBQzNDLG1CQUFrQztBQUFBLFFBQUFQLElBQWxDO0FBQUEsSUFBaUI7QUFBQSxHQUFtQjtBQUFBLFlBQUErQixPQUFBeEI7QUFBQUEsSUFDckMsbUJBQTJDO0FBQUEsUUFBQVAsSUFBM0MsY0FBaUI7QUFBQSx1QkRyRDlCLGdCQ3FEOEI7QUFBQSxHQUFtQztBQUFBLFlBQUFnQyxLQUFBNUIsR0FBQVosR0FLNUMsZ0JBQU87QUFBQSxHRDFENUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMTYxNiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2NoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBc2NpaSA9IHN0cnVjdFxuXG4gICgqIENoYXJhY3RlcnMgKilcblxuICBsZXQgbWluID0gJ1xceDAwJ1xuICBsZXQgbWF4ID0gJ1xceDdGJ1xuXG4gICgqIFByZWRpY2F0ZXMgKilcblxuICBsZXQgaXNfdmFsaWQgPSBmdW5jdGlvbiAnXFx4MDAnIC4uICdcXHg3RicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbiAgbGV0IGlzX3VwcGVyID0gZnVuY3Rpb24gJ0EnIC4uICdaJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfbG93ZXIgPSBmdW5jdGlvbiAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvbiAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ibGFuayA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19ncmFwaGljID0gZnVuY3Rpb24gJyEnIC4uICd+JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgaXNfcHJpbnQgPSBmdW5jdGlvbiAnICcgLi4gJ34nIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gIGxldCBpc19jb250cm9sID0gZnVuY3Rpb24gJ1xceDAwJyAuLiAnXFx4MUYnIHwgJ1xceDdGJyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICgqIERlY2ltYWwgZGlnaXRzICopXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICBsZXQgZGlnaXRfdG9faW50ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjb2RlIGMgLSAweDMwXG4gICAgfCBjIC0+IGludmFsaWRfYXJnIChlc2NhcGVkIGMgXiBcIjogbm90IGEgZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBkaWdpdF9vZl9pbnQgbiA9IHVuc2FmZV9jaHIgKDB4MzAgKyBhYnMgKG4gbW9kIDEwKSlcblxuICAoKiBIZXhhZGVjaW1hbCBkaWdpdHMgKilcblxuICBsZXQgaXNfaGV4X2RpZ2l0ID0gZnVuY3Rpb25cbiAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdF90b19pbnQgPSBmdW5jdGlvblxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNvZGUgYyAtIDB4MzBcbiAgICB8ICdBJyAuLiAnRicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NDFcbiAgICB8ICdhJyAuLiAnZicgYXMgYyAtPiAxMCArIGNvZGUgYyAtIDB4NjFcbiAgICB8IGMgLT4gaW52YWxpZF9hcmcgKGVzY2FwZWQgYyBeIFwiOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiKVxuXG4gIGxldCBsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4NTcgKyBkKVxuXG4gIGxldCB1cHBlcl9oZXhfZGlnaXRfb2ZfaW50IG4gPVxuICAgIGxldCBkID0gYWJzIChuIG1vZCAxNikgaW5cbiAgICB1bnNhZmVfY2hyIChpZiBkIDwgMTAgdGhlbiAweDMwICsgZCBlbHNlIDB4MzcgKyBkKVxuXG4gICgqIENhc2luZyB0cmFuc2Zvcm1zICopXG5cbiAgbGV0IGxvd2VyY2FzZSA9IGxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdXBwZXJjYXNlID0gdXBwZXJjYXNlX2FzY2lpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2hhc2giLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsIlN0ZGxpYiIsImNociIsIm4iLCJlc2NhcGVkIiwiYyIsInMiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjb21wYXJlIiwiYzEiLCJjMiIsImVxdWFsIiwic2VlZGVkX2hhc2giLCJzZWVkIiwieCIsImhhc2giLCJpc192YWxpZCIsInBhcmFtIiwiaXNfdXBwZXIiLCJpc19sb3dlciIsImlzX2xldHRlciIsImlzX2FscGhhbnVtIiwiaXNfd2hpdGUiLCJpc19ibGFuayIsImlzX2dyYXBoaWMiLCJpc19wcmludCIsImlzX2NvbnRyb2wiLCJpc19kaWdpdCIsImRpZ2l0X3RvX2ludCIsImRpZ2l0X29mX2ludCIsImlzX2hleF9kaWdpdCIsImhleF9kaWdpdF90b19pbnQiLCJsb3dlcl9oZXhfZGlnaXRfb2ZfaW50IiwiZCIsInVwcGVyX2hleF9kaWdpdF9vZl9pbnQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxJQUFBQztBQUFBQSxJQ3FCRSx1QkFBcUQ7QUFBQSxJQUE1Qix1Q0FBd0M7QUFBQTtBQUFBLFlBQUFDLFFBQUFDO0FBQUFBO0FBQUFBO0FBQUFBLEtBT3JEO0FBQUEsbUJBRUY7QUFBQSxNQUZFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFNRjtBQUFBO0FBQUEsVUFGQTtBQUFBO0FBQUEsVUFEQTtBQUFBO0FBQUEsVUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTEUsWUFDRjtBQUFBO0FBQUEsU0FBQUMsTUFPRTtBQUFBLEtBQ1I7QUFBQSxLQUNBLGdDQVFrQjtBQUFBO0FBQUEsUUFBQUEsSUFMVjtBQUFBLElBQ1I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLDhCQUFrQjtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFGLEdBRUYseUNBRVo7QUFBQSxZQUFBRyxnQkFBQUgsR0FFWSx5Q0FFWjtBQUFBLFlBQUFJLFFBQUFDLElBQUFDLElBSVUsbUJBQWlCO0FBQUEsWUFBQUMsTUFBQUYsSUFBQUMsSUFDSSxtQ0FBSTtBQUFBLFlBQUFFLFlBQUFDLE1BQUFDLEdBSXBCLGtDQUErQjtBQUFBLFlBQUFDLEtBQUFELEdBQzNDLCtCQUE0QjtBQUFBLFlBQUFFLFNBQUFDLE9BV3hCLDJCQUE4QztBQUFBLFlBQUFDLFNBQUFELE9BQzlDLG9DQUF3QztBQUFBLFlBQUFFLFNBQUFGLE9BQ3hDLG9DQUF3QztBQUFBLFlBQUFHLFVBQUFIO0FBQUFBO0FBQUFBO0FBQUFBLEtBQ3ZDO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBb0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQUksWUFBQUo7QUFBQUEsUUFBQSxJQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQzBCO0FBQUE7QUFBQSxJQUFZO0FBQUEsR0FBSztBQUFBLFlBQUFLLFNBQUFMO0FBQUFBO0FBQUFBO0FBQUFBLEtBRTlDO0FBQUEsS0FBZ0M7QUFBQTtBQUFBLElBQVk7QUFBQSxHQUFLO0FBQUEsWUFBQU0sU0FBQU47QUFBQUEsSUFDakQsZ0NBQW1DO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQU8sV0FBQVAsT0FDdEMsb0NBQXdDO0FBQUEsWUFBQVEsU0FBQVIsT0FDMUMsb0NBQXdDO0FBQUEsWUFBQVMsV0FBQVQ7QUFBQUEsSUFDdEMsaUNBQWtEO0FBQUEsSUFBWjtBQUFBLEdBQWlCO0FBQUEsWUFBQVUsU0FBQVYsT0FJekQsbUNBQXdDO0FBQUEsWUFBQVcsYUFBQXhCO0FBQUFBLElBQ3BDLHNCQUNJO0FBQUEsWUFDRCxnQkFBRDtBQUFBLElBQXFDO0FBQUE7QUFBQSxZQUFBeUIsYUFBQTNCO0FBQUFBLElBRWxCLGlEQUFjO0FBQUEsR0FBQztBQUFBLFlBQUE0QixhQUFBYjtBQUFBQSxRQUFBLElBSXBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDeUI7QUFBQTtBQUFBLElBQ25DO0FBQUEsR0FBSztBQUFBLFlBQUFjLGlCQUFBM0I7QUFBQUEsSUFFUztBQUFBO0FBQUEsa0JBR0E7QUFBQTtBQUFBLHFCQURBO0FBQUE7QUFBQSwrQkFEQTtBQUFBO0FBQUEsU0FHRDtBQUFBLFNBQUQ7QUFBQSxJQUF5QztBQUFBO0FBQUEsWUFBQTRCLHVCQUFBOUI7QUFBQUEsUUFBQStCLElBR3BEO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLFlBQUFDLHVCQUFBaEM7QUFBQUEsUUFBQStCLElBRzFDO0FBQUEsSUFDUix3Q0FBa0Q7QUFBQTtBQUFBLEdEbkh0RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjExNzk3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvdWNoYXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhIFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbmxldCBlcnJfbm90X2xhdGluMSB1ID0gXCJVK1wiIF4gZm9ybWF0X2ludCBcIiUwNFhcIiB1IF4gXCIgaXMgbm90IGEgbGF0aW4xIGNoYXJhY3RlclwiXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgbWluID0gMHgwMDAwXG5sZXQgbWF4ID0gMHgxMEZGRkZcbmxldCBsb19ib3VuZCA9IDB4RDdGRlxubGV0IGhpX2JvdW5kID0gMHhFMDAwXG5cbmxldCBib20gPSAweEZFRkZcbmxldCByZXAgPSAweEZGRkRcblxubGV0IHN1Y2MgdSA9XG4gIGlmIHUgPSBsb19ib3VuZCB0aGVuIGhpX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1heCB0aGVuIGludmFsaWRfYXJnIGVycl9ub19zdWNjIGVsc2VcbiAgdSArIDFcblxubGV0IHByZWQgdSA9XG4gIGlmIHUgPSBoaV9ib3VuZCB0aGVuIGxvX2JvdW5kIGVsc2VcbiAgaWYgdSA9IG1pbiB0aGVuIGludmFsaWRfYXJnIGVycl9ub19wcmVkIGVsc2VcbiAgdSAtIDFcblxubGV0IGlzX3ZhbGlkIGkgPSAobWluIDw9IGkgJiYgaSA8PSBsb19ib3VuZCkgfHwgKGhpX2JvdW5kIDw9IGkgJiYgaSA8PSBtYXgpXG5sZXQgb2ZfaW50IGkgPSBpZiBpc192YWxpZCBpIHRoZW4gaSBlbHNlIGludmFsaWRfYXJnIChlcnJfbm90X3N2IGkpXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19pbnQgOiB0IC0+IGludCA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX2NoYXIgdSA9IHUgPCAyNTZcbmxldCBvZl9jaGFyIGMgPSBDaGFyLmNvZGUgY1xubGV0IHRvX2NoYXIgdSA9XG4gIGlmIHUgPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyAoZXJyX25vdF9sYXRpbjEgdSkgZWxzZVxuICBDaGFyLnVuc2FmZV9jaHIgdVxuXG5sZXQgdW5zYWZlX3RvX2NoYXIgPSBDaGFyLnVuc2FmZV9jaHJcblxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgPSBmdW5jdGlvblxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiAxXG4gIHwgJ1xceDgwJyAuLiAnXFx4QzEnIC0+IDBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT4gMlxuICB8ICdcXHhFMCcgLi4gJ1xceEVGJyAtPiAzXG4gIHwgJ1xceEYwJyAuLiAnXFx4RjQnIC0+IDRcbiAgfCBfIC0+IDBcblxubGV0IG1heF91dGZfOF9kZWNvZGVfbGVuZ3RoID0gNFxuXG5sZXQgdXRmXzhfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweDAwN0YgLT4gMVxufCB1IHdoZW4gdSA8PSAweDA3RkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gM1xufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCB1dGZfMTZfYnl0ZV9sZW5ndGggdSA9IG1hdGNoIHRvX2ludCB1IHdpdGhcbnwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxufCB1IHdoZW4gdSA8PSAweEZGRkYgLT4gMlxufCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPiA0XG58IF8gLT4gYXNzZXJ0IGZhbHNlXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImdsb2JhbF9kYXRhIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWIiLCJzdWNjIiwidSIsInByZWQiLCJpc192YWxpZCIsImkiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsImMiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJlcXVhbCIsImNvbXBhcmUiLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJ4IiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsIm4iLCJ1dGZfZGVjb2RlX2ludmFsaWQiLCJ1dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUiLCJwYXJhbSIsImNzdF91Y2hhcl9tbCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwiU3RkbGliX1VjaGFyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDaUNFO0FBQUE7QUFBQTtBQUFBO0FBQUEsZ0JBQ2dCO0FBQUEseUJBQ1g7QUFBQTtBQUFBLFlBQUFDLEtBQUFEO0FBQUFBLElBR0w7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFDZ0I7QUFBQSx5QkFDWDtBQUFBO0FBQUEsWUFBQUUsU0FBQUM7QUFBQUEsUUFBQSxJQUVVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTBEO0FBQUEsWUFBQUMsT0FBQUQ7QUFBQUEsSUFDekQsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLE9BeEJFO0FBQUEsZUFBakI7QUFBQSxJQXdCZ0Q7QUFBQTtBQUFBLFlBQUFFLFFBQUFMLEdBSW5ELHVCQUFPO0FBQUEsWUFBQU0sUUFBQUMsR0FDUCxTQUFXO0FBQUEsWUFBQUMsUUFBQVI7QUFBQUEsSUFFekIsYUFDQTtBQUFBO0FBQUE7QUFBQSxPQS9CNEI7QUFBQTtBQUFBLFNBQWtEO0FBQUEsSUE4QmhDLDhCQUM3QjtBQUFBO0FBQUEsWUFBQVMsZUFBQSxHRG5EbkI7QUFBQSxZQUFBQyxNQUFBO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLFlBQUFDLE1BQUFDLEdDNER5QixrQ0FBK0I7QUFBQSxZQUFBQyxLQUFBRCxHQUMzQywrQkFBNEI7QUFBQSxZQUFBRSxvQkFBQUMsR0FlSixvQ0FBcUI7QUFBQSxZQUFBQyxrQkFBQUQsR0FDdkIsMEJBQThCO0FBQUEsWUFBQUUsaUJBQUFGLEdBQy9CLG9CQUErQjtBQUFBLFlBQUFHLFdBQUFDLEdBQUFyQixHQUNuQyx5QkFBMEM7QUFBQSxZQUFBc0IsbUJBQUFELEdBQ3BDLHVCQUEyQjtBQUFBLFlBQUFFLDRCQUFBQztBQUFBQSxJQUU3QjtBQUFBO0FBQUEsa0NBTXhCO0FBQUE7QUFBQTtBQUFBLElBQUFDLGVEeEZWO0FBQUE7QUFBQTtBQUFBLFlBQUFDLGtCQUFBMUI7QUFBQUEsSUM2RlMsVUFBUztBQUFBLElBQ1QsYUFBZTtBQUFBLElBQ2YsY0FBZTtBQUFBLElBQ2YsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUEsV0RsR25CO0FBQUEsWUFBQTJCLG1CQUFBM0I7QUFBQUEsSUNxR1MsVUFBUztBQUFBLElBQ1QsZUFBZTtBQUFBLElBQ2Y7QUFBQSxLQUNGO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBNEI7QUFBQUEsTUR4R25CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTE5MjQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IHNpbmdsZXRvbiBhID0gW2FdXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCB0YWtlIG4gbCA9XG4gIGxldFtAdGFpbF9tb2RfY29uc10gcmVjIGF1eCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMCwgXyB8IF8sIFtdIC0+IFtdXG4gICAgfCBuLCB4OjpsIC0+IHg6OmF1eCAobiAtIDEpIGxcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gW10gZWxzZSBhdXggbiBsXG5cbmxldCBkcm9wIG4gbCA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICAgIHwgX3g6Omwgd2hlbiBpIDwgbiAtPiBhdXggKGkgKyAxKSBsXG4gICAgfCByZXN0IC0+IHJlc3RcbiAgaW5cbiAgaWYgbiA8PSAwIHRoZW4gbCBlbHNlIGF1eCAwIGxcblxubGV0IHRha2Vfd2hpbGUgcCBsID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IHg6Omwgd2hlbiBwIHggLT4geDo6YXV4IGxcbiAgICB8IF9yZXN0IC0+IFtdXG4gIGluXG4gIGF1eCBsXG5cbmxldCByZWMgZHJvcF93aGlsZSBwID0gZnVuY3Rpb25cbiAgfCB4OjpsIHdoZW4gcCB4IC0+IGRyb3Bfd2hpbGUgcCBsXG4gIHwgcmVzdCAtPiByZXN0XG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBub24tZmlyc3QgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDNdIGVsc2UgW3gzOyB4MV1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT4gZmFsc2VcblxuKCoqIHsxIENvbXBhcmlzb259ICopXG5cbigqIE5vdGU6IHdlIGFyZSAqbm90KiBzaG9ydGN1dHRpbmcgdGhlIGxpc3QgYnkgdXNpbmdcbiAgIFtMaXN0LmNvbXBhcmVfbGVuZ3Roc10gZmlyc3Q7IHRoaXMgbWF5IGJlIHNsb3dlciBvbiBsb25nIGxpc3RzXG4gICBpbW1lZGlhdGVseSBzdGFydCB3aXRoIGRpc3RpbmN0IGVsZW1lbnRzLiBJdCBpcyBhbHNvIGluY29ycmVjdCBmb3JcbiAgIFtjb21wYXJlXSBiZWxvdywgYW5kIGl0IGlzIGJldHRlciAocHJpbmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlKSB0b1xuICAgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGZvciBib3RoIGZ1bmN0aW9ucy4gKilcbmxldCByZWMgZXF1YWwgZXEgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB0cnVlXG4gIHwgW10sIF86Ol8gfCBfOjpfLCBbXSAtPiBmYWxzZVxuICB8IGExOjpsMSwgYTI6OmwyIC0+IGVxIGExIGEyICYmIGVxdWFsIGVxIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF86Ol8gLT4gLTFcbiAgfCBfOjpfLCBbXSAtPiAxXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT5cbiAgICBsZXQgYyA9IGNtcCBhMSBhMiBpblxuICAgIGlmIGMgPD4gMCB0aGVuIGNcbiAgICBlbHNlIGNvbXBhcmUgY21wIGwxIGwyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgbCA9XG4gIGxldCByZWMgYXV4IGwgKCkgPSBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFNlcS5OaWxcbiAgICB8IHggOjogdGFpbCAtPiBTZXEuQ29ucyAoeCwgYXV4IHRhaWwpXG4gIGluXG4gIGF1eCBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG9mX3NlcSBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gW11cbiAgfCBTZXEuQ29ucyAoeDEsIHNlcSkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW3gxXVxuICAgICAgfCBTZXEuQ29ucyAoeDIsIHNlcSkgLT4geDEgOjogeDIgOjogb2Zfc2VxIHNlcVxuICAgICAgZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY29tcGFyZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJTdGRsaWIiLCJsZW5ndGgiLCJsIiwibGVuIiwicGFyYW0iLCJjb25zIiwiYSIsInNpbmdsZXRvbiIsImhkIiwidGwiLCJjc3RfTGlzdF9udGgiLCJudGgiLCJuIiwibnRoX29wdCIsImFwcGVuZCIsInJldl9hcHBlbmQiLCJsMSIsImwyIiwicmV2IiwiaW5pdCIsImxhc3QiLCJpIiwicjEiLCJyMiIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwiZmxhdHRlbiIsInIiLCJtYXAiLCJtYXRjaCIsIm1hcGkiLCJyZXZfbWFwIiwiYWNjdSIsIml0ZXIiLCJpdGVyaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJtYXAyIiwiY3N0X0xpc3RfbWFwMiIsImIyIiwiYjEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJ4IiwibWVtcSIsImFzc29jIiwiYiIsImFzc29jX29wdCIsImFzc3EiLCJhc3NxX29wdCIsIm1lbV9hc3NvYyIsIm1lbV9hc3NxIiwicmVtb3ZlX2Fzc29jIiwicGFpciIsInJlbW92ZV9hc3NxIiwiZmluZCIsImZpbmRfb3B0IiwiZmluZF9pbmRleCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9tYXBpIiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcCIsInYiLCJjb25jYXRfbWFwIiwieHMiLCJ5cyIsInkiLCJ0YWtlIiwiZHJvcCIsInJlc3QiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJwYXJ0aXRpb24iLCJ5ZXMiLCJubyIsInBhcnRpdGlvbl9tYXAiLCJsZWZ0IiwicmlnaHQiLCJzcGxpdCIsInJ5IiwicngiLCJjb21iaW5lIiwibWVyZ2UiLCJjbXAiLCJ0MiIsImgyIiwidDEiLCJoMSIsInN0YWJsZV9zb3J0Iiwic29ydCIsIngyIiwieDEiLCJzIiwieDMiLCJuMSIsIm4yIiwiczEiLCJzMiIsInJldl9zb3J0Iiwic29ydF91bmlxIiwiYyIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJpc19lbXB0eSIsImVxdWFsIiwiZXEiLCJjb21wYXJlIiwidG9fc2VxIiwiYXV4IiwidGFpbCIsIm9mX3NlcSIsInNlcSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FB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MEJBQVIsc0JBQVE7QUFBQSxJQUFDO0FBQUEsSUFFdkM7QUFBQSxHQUFLO0FBQUEsWUFBQXVFLE9BQUFDO0FBQUFBLFFBQUE5RixRQUdDO0FBQUEsSUFBTSxZQUNDO0FBQUEsUUFBQThGLFFBREQsVUFBQXBCLEtBQUEsVUFBQTFFLFVBR0k7QUFBQSxJQUFNLGNBQ0w7QUFBQTtBQUFBLEtBQUE4RixRQURLO0FBQUEsS0FBQXJCLEtBQUE7QUFBQSxLQUFBL0UsUUFFTTtBQUFBLEtBQUFDLE1BQVk7QUFBQSxLQUFBQyxTQUFBO0FBQUEsS0FBQWtHLFFBQUE7QUFBQTtBQUFBLFNBQUE5RixVQUxsQztBQUFBLEtBQU07QUFBQTtBQUFBLE9BQUE4RixRQUFBO0FBQUEsT0FBQXBCLE9BQUE7QUFBQSxPQUFBMUUsVUFHSTtBQUFBLE1BQU07QUFBQSxXQUFBOEYsUUFBQSxZQUFBckIsT0FBQSxZQUFBOUUsUUFFTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRFg7QUFBQTtBQUFBO0FBQUEsTUFISjtBQUFBLEtBSXFDO0FBQUE7QUFBQSxHQUMzQztBQUFBLEdEcm1CVCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjEzMzUwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2hhc2giLCJhYnMiLCJ4IiwibG9nbm90IiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwieSIsIm1heCIsInRvX3N0cmluZyIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBLHlCQUFBQyxZQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0M0QlksMkJBQXdCO0FBQUEsWUFBQUMsT0FBQUQsR0FNckIsY0FBYTtBQUFBLFlBQUFFLE1BQUEsTURsQzVCO0FBQUEsT0FBQUMsVUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFLLEdDd0NrQixxQkFBdUI7QUFBQSxZQUFBQyxJQUFBTixHQUFBSyxHQUN2QixxQkFBdUI7QUFBQSxZQUFBRSxVQUFBUCxHQVVOO0FBQUEsWUFBQVEsWUFBQUMsTUFBQVQsR0FJVixrQ0FBK0I7QUFBQSxZQUFBVSxLQUFBVixHQUMzQywrQkFBNEI7QUFBQSxHRHhEekMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxMzM4OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2FycmF5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X21ha2VcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfbWFrZVwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9hcnJheV9jcmVhdGVfZmxvYXRcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlbiBmYWxzZSBlbHNlXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGVxICh1bnNhZmVfZ2V0IGEgIWkpICh1bnNhZmVfZ2V0IGIgIWkpIGRvIGluY3IgaSBkb25lO1xuICAhaSA9IGxlblxuXG5sZXQgc3RkbGliX2NvbXBhcmUgPSBjb21wYXJlXG5sZXQgY29tcGFyZSBjbXAgYSBiID1cbiAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgYW5kIGxlbl9iID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gIGlmIGRpZmYgPD4gMCB0aGVuIChpZiBkaWZmIDwgMCB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICBsZXQgaSA9IHJlZiAwIGFuZCBjID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgZG8gYyA6PSBjbXAgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSk7IGluY3IgaSBkb25lO1xuICAhY1xuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHN0ZGxpYl9jb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtcSB4IGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiB4ID09ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9vcHQgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICBlbHNlIGxvb3AgKHN1Y2MgaSlcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX2luZGV4IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcGkgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IHggPVxuICBpZiB4ID0gW3x8XSB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCBhMCwgYjAgPSB1bnNhZmVfZ2V0IHggMCBpblxuICAgIGxldCBuID0gbGVuZ3RoIHggaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBuIGEwIGluXG4gICAgbGV0IGIgPSBjcmVhdGUgbiBiMCBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IGFpLCBiaSA9IHVuc2FmZV9nZXQgeCBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSBhaTtcbiAgICAgIHVuc2FmZV9zZXQgYiBpIGJpXG4gICAgZG9uZTtcbiAgICBhLCBiXG4gIGVuZFxuXG5sZXQgY29tYmluZSBhIGIgPVxuICBsZXQgbmEgPSBsZW5ndGggYSBpblxuICBsZXQgbmIgPSBsZW5ndGggYiBpblxuICBpZiBuYSA8PiBuYiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuY29tYmluZVwiO1xuICBpZiBuYSA9IDAgdGhlbiBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgeCA9IGNyZWF0ZSBuYSAodW5zYWZlX2dldCBhIDAsIHVuc2FmZV9nZXQgYiAwKSBpblxuICAgIGZvciBpID0gMSB0byBuYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgeCBpICh1bnNhZmVfZ2V0IGEgaSwgdW5zYWZlX2dldCBiIGkpXG4gICAgZG9uZTtcbiAgICB4XG4gIGVuZFxuXG5leGNlcHRpb24gQm90dG9tIG9mIGludFxubGV0IHNvcnQgY21wIGEgPVxuICBsZXQgbWF4c29uIGwgaSA9XG4gICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAheFxuICAgIGVuZCBlbHNlXG4gICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgIHRoZW4gaTMxKzFcbiAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgaW5cbiAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICBidWJibGVkb3duIGwgalxuICBpblxuICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gIGRvbmU7XG4gIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cblxubGV0IGN1dG9mZiA9IDVcbmxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgZW5kXG4gICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gIGluXG4gIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgIGRlY3IgajtcbiAgICAgIGRvbmU7XG4gICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgZG9uZTtcbiAgaW5cbiAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgIGxldCB0ID0gbWFrZSBsMiAoZ2V0IGEgMCkgaW5cbiAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgZW5kXG5cblxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbmxldCBzaHVmZmxlX2NvbnRyYWN0X3Zpb2xhdGlvbiBpIGogPVxuICBsZXQgaW50ID0gc3RyaW5nX29mX2ludCBpblxuICBpbnZhbGlkX2FyZ1xuICAgIChcIkFycmF5LnNodWZmbGU6ICdyYW5kIFwiIF4gaW50IChpICsgMSkgXlxuICAgICBcIicgcmV0dXJuZWQgXCIgXiBpbnQgaiBeXG4gICAgIFwiLCBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2UgWzA7IFwiIF4gaW50IGkgXiBcIl1cIilcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgaWYgbm90ICgwIDw9IGogJiYgaiA8PSBpKSB0aGVuIHNodWZmbGVfY29udHJhY3RfdmlvbGF0aW9uIGkgajtcbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgdW5zYWZlX3NldCBhIGkgKHVuc2FmZV9nZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIkFzc2VydF9mYWlsdXJlIiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwieCIsImluaXRfbWF0cml4Iiwicm93IiwieSIsImNvcHkiLCJhIiwiYXBwZW5kIiwiYTIiLCJsMSIsInN1YiIsIm9mcyIsImxlbiIsImZpbGwiLCJ2IiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiaXRlciIsIml0ZXIyIiwiYiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcGlfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwidG9fbGlzdCIsImxpc3RfbGVuZ3RoIiwiYWNjdSIsInBhcmFtIiwidCIsIm9mX2xpc3QiLCJ0bCIsImhkIiwiZXF1YWwiLCJlcSIsImNvbXBhcmUiLCJjbXAiLCJsZW5fYSIsImxlbl9iIiwiZGlmZiIsImMiLCJmb2xkX2xlZnQiLCJmb2xkX2xlZnRfbWFwIiwiYWNjIiwiaW5wdXRfYXJyYXkiLCJtYXRjaCIsImVsdCIsIm91dHB1dF9hcnJheSIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwibiIsImZvcl9hbGwiLCJmb3JfYWxsMiIsImwyIiwibjEiLCJuMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJzcGxpdCIsImIwIiwiYmkiLCJhaSIsImNvbWJpbmUiLCJuYSIsIm5iIiwiQm90dG9tIiwic29ydCIsIm1heHNvbiIsImkzMSIsImUiLCJqIiwiZXhuIiwiZmF0aGVyIiwic3RhYmxlX3NvcnQiLCJtZXJnZSIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0IiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyIiwiczEiLCJpMSIsImkyIiwiZCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsImludCIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJTdGRsaWJfQXJyYXkiXSwibWFwcGluZ3MiOiJJQUFBQSxV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O0FBQUEsS0FBQU4sSUFDRjtBQUFBLEtBQUFULE1BS1I7QUFBQSxLQUFBQSxJQUFBO0FBQUEsS0FBQW9DLFFBQUE7QUFBQTtBQUFBLEtBSmEsWUFDSDtBQUFBLFNBQUFHLE9BREcsVUFBQUMsT0FBQTtBQUFBLEtBRUM7QUFBQSxTQUFBeEMsTUFBaUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQU10QjtBQUFBO0FBQUEsSUFBQWlIO0FBQUFBLE1EN2ZmIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTQxODIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9ieXRlcy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JsaXRfYnl0ZXMiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ieXRlc19zZXQzMiIsImNhbWxfYnl0ZXNfc2V0NjQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9nZXQiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfaW50MzJfYnN3YXAiLCJjYW1sX2ludDY0X2Jzd2FwIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9VY2hhciIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0NoYXIiLCJtYWtlIiwibiIsImMiLCJzIiwiaW5pdCIsImkiLCJlbXB0eSIsImNvcHkiLCJsZW4iLCJyIiwidG9fc3RyaW5nIiwiYiIsIm9mX3N0cmluZyIsInN1YiIsIm9mcyIsInN1Yl9zdHJpbmciLCJzeW1ib2wiLCJhIiwibWF0Y2giLCJleHRlbmQiLCJsZWZ0IiwicmlnaHQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsInMxIiwib2ZzMSIsInMyIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwiaXRlciIsIml0ZXJpIiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJsMSIsImwyIiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsInVuc2FmZV9lc2NhcGUiLCJlc2NhcGVkIiwibWFwIiwibWFwaSIsImZvbGRfbGVmdCIsImZvbGRfcmlnaHQiLCJleGlzdHMiLCJwIiwiZm9yX2FsbCIsInVwcGVyY2FzZV9hc2NpaSIsImxvd2VyY2FzZV9hc2NpaSIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJjb21wYXJlIiwic3BsaXRfb25fY2hhciIsInRvX3NlcSIsImF1eCIsInRvX3NlcWkiLCJvZl9zZXEiLCJidWYiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsImRlY19pbnZhbGlkIiwiZGVjX3JldCIsInUiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsIm1heCIsImNzdF9ieXRlc19tbCIsInNldF91dGZfOF91Y2hhciIsInNldCIsImxhc3QiLCJpc192YWxpZF91dGZfOCIsImNzdF9pbmRleF9vdXRfb2ZfYm91bmRzIiwiZ2V0X3V0Zl8xNmJlX3VjaGFyIiwiaGkiLCJsbyIsInNldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwic2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJTdGRsaWJfQnl0ZXMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtB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QUFBQSxLQUNoQixjQUFnQjtBQUFBLFNBQUFvSCxJQUNWO0FBQUEsS0FDRztBQUFBLE1BQ0EsY0FBYztBQUFBLFVBQUFpQixPQUVuQjtBQUFBLE1BQ0EsZUFBbUI7QUFBQSxVQUFBakIsTUFDYjtBQUFBLE1BQ0c7QUFBQSxXQUFBcEgsTUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BRDRCO0FBQUE7QUFBQSxTQUFBQSxNQU5KO0FBQUE7QUFBQTtBQUFBLEdBU2hCO0FBQUE7QUFBQSxJQUFBZ0o7QUFBQUEsTUEzeEJMO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcERwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE1MzgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvc3RyaW5nLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzID0gMCAmJiBsZW5ndGggcyA9IGxlbiB0aGVuIHMgZWxzZVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgW3NdIC0+IHNcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBsZXQgYicgPSBCLnVuc2FmZV9lc2NhcGUgYiBpblxuICAoKiBXaXRoIGpzX29mX29jYW1sLCBbYm9zXSBhbmQgW2J0c10gYXJlIG5vdCB0aGUgaWRlbnRpdHkuXG4gICAgIFdlIGNhbiBhdm9pZCBhIFtidHNdIGNvbnZlcnNpb24gaWYgW3Vuc2FmZV9lc2NhcGVdIHJldHVybmVkXG4gICAgIGl0cyBhcmd1bWVudC4gKilcbiAgaWYgYiA9PSBiJyB0aGVuIHMgZWxzZSBidHMgYidcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuXG4oKiBTcGVsbGNoZWNraW5nICopXG5cbmxldCB1dGZfOF91Y2hhcl9sZW5ndGggcyA9XG4gIGxldCBzbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBhbmQgdWxlbiA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlY19sZW4gPSBVY2hhci51dGZfOF9kZWNvZGVfbGVuZ3RoX29mX2J5dGUgKHVuc2FmZV9nZXQgcyAhaSkgaW5cbiAgICBpIDo9ICghaSArIGlmIGRlY19sZW4gPSAwIHRoZW4gMSAoKiBjb3VudCBvbmUgVWNoYXIucmVwICopIGVsc2UgZGVjX2xlbik7XG4gICAgaW5jciB1bGVuO1xuICBkb25lO1xuICAhdWxlblxuXG5sZXQgdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMgPVxuICBsZXQgc2xlbiA9IGxlbmd0aCBzIGluICgqIGlzIGFuIHVwcGVyIGJvdW5kIG9uIFVjaGFyLnQgY291bnQgKilcbiAgbGV0IHVjaGFycyA9IEFycmF5Lm1ha2Ugc2xlbiBVY2hhci5tYXggaW5cbiAgbGV0IGsgPSByZWYgMCBhbmQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICghaSA8IHNsZW4pIGRvXG4gICAgbGV0IGRlYyA9IGdldF91dGZfOF91Y2hhciBzICFpIGluXG4gICAgaSA6PSAhaSArIFVjaGFyLnV0Zl9kZWNvZGVfbGVuZ3RoIGRlYztcbiAgICB1Y2hhcnMuKCFrKSA8LSBVY2hhci51dGZfZGVjb2RlX3VjaGFyIGRlYztcbiAgICBpbmNyIGs7XG4gIGRvbmU7XG4gIHVjaGFycywgIWtcblxubGV0IGVkaXRfZGlzdGFuY2UnID8obGltaXQgPSBJbnQubWF4X2ludCkgcyAoczAsIGxlbjApIHMxID1cbiAgaWYgbGltaXQgPD0gMSB0aGVuIChpZiBlcXVhbCBzIHMxIHRoZW4gMCBlbHNlIGxpbWl0KSBlbHNlXG4gIGxldFtAaW5saW5lXSBtaW5pbXVtIGEgYiBjID0gSW50Lm1pbiBhIChJbnQubWluIGIgYykgaW5cbiAgbGV0IHMxLCBsZW4xID0gdWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIHMxIGluXG4gIGxldCBsaW1pdCA9IEludC5taW4gKEludC5tYXggbGVuMCBsZW4xKSBsaW1pdCBpblxuICBpZiBJbnQuYWJzIChsZW4xIC0gbGVuMCkgPj0gbGltaXQgdGhlbiBsaW1pdCBlbHNlXG4gIGxldCBzMCwgczEgPSBpZiBsZW4wID4gbGVuMSB0aGVuIHMwLCBzMSBlbHNlIHMxLCBzMCBpblxuICBsZXQgbGVuMCwgbGVuMSA9IGlmIGxlbjAgPiBsZW4xIHRoZW4gbGVuMCwgbGVuMSBlbHNlIGxlbjEsIGxlbjAgaW5cbiAgbGV0IHJlYyBsb29wIHJvd19taW51czIgcm93X21pbnVzMSByb3cgaSBsZW4wIGxpbWl0IHMwIHMxID1cbiAgICBpZiBpID4gbGVuMCB0aGVuIHJvd19taW51czEuKEFycmF5Lmxlbmd0aCByb3dfbWludXMxIC0gMSkgZWxzZVxuICAgIGxldCBsZW4xID0gQXJyYXkubGVuZ3RoIHJvdyAtIDEgaW5cbiAgICBsZXQgcm93X21pbiA9IHJlZiBJbnQubWF4X2ludCBpblxuICAgIHJvdy4oMCkgPC0gaTtcbiAgICBsZXQgam1heCA9XG4gICAgICBsZXQgam1heCA9IEludC5taW4gbGVuMSAoaSArIGxpbWl0IC0gMSkgaW5cbiAgICAgIGlmIGptYXggPCAwIHRoZW4gKCogb3ZlcmZsb3cgKikgbGVuMSBlbHNlIGptYXhcbiAgICBpblxuICAgIGZvciBqID0gSW50Lm1heCAxIChpIC0gbGltaXQpIHRvIGptYXggZG9cbiAgICAgIGxldCBjb3N0ID0gaWYgVWNoYXIuZXF1YWwgczAuKGktMSkgczEuKGotMSkgdGhlbiAwIGVsc2UgMSBpblxuICAgICAgbGV0IG1pbiA9IG1pbmltdW1cbiAgICAgICAgICAocm93X21pbnVzMS4oai0xKSArIGNvc3QpICgqIHN1YnN0aXR1dGUgKilcbiAgICAgICAgICAocm93X21pbnVzMS4oaikgKyAxKSAgICAgICgqIGRlbGV0ZSAqKVxuICAgICAgICAgIChyb3cuKGotMSkgKyAxKSAgICAgICAgICAgKCogaW5zZXJ0ICopXG4gICAgICAgICAgKCogTm90ZSB3aGVuIGogPSBpIC0gbGltaXQsIHRoZSBsYXR0ZXIgW3Jvd10gcmVhZCBtYWtlcyBhIGJvZ3VzIHJlYWRcbiAgICAgICAgICAgICBvbiB0aGUgdmFsdWUgdGhhdCB3YXMgaW4gdGhlIG1hdHJpeCBhdCBkLihpLTIpLihpIC0gbGltaXQgLSAxKS5cbiAgICAgICAgICAgICBTaW5jZSBieSBpbmR1Y3Rpb24gZm9yIGFsbCBpLGosIGQuKGkpLihqKSA+PSBhYnMgKGkgLSBqKSxcbiAgICAgICAgICAgICAocm93LihqLTEpICsgMSkgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBbbGltaXRdIGFuZCB0aHVzIGRvZXNcbiAgICAgICAgICAgICBub3QgYWZmZWN0IGFkdmVyc2VseSB0aGUgbWluaW11bSBjb21wdXRhdGlvbi4gKilcbiAgICAgIGluXG4gICAgICBsZXQgbWluID1cbiAgICAgICAgaWYgKGkgPiAxICYmIGogPiAxICYmXG4gICAgICAgICAgICBVY2hhci5lcXVhbCBzMC4oaS0xKSBzMS4oai0yKSAmJlxuICAgICAgICAgICAgVWNoYXIuZXF1YWwgczAuKGktMikgczEuKGotMSkpXG4gICAgICAgIHRoZW4gSW50Lm1pbiBtaW4gKHJvd19taW51czIuKGotMikgKyBjb3N0KSAoKiB0cmFuc3Bvc2UgKilcbiAgICAgICAgZWxzZSBtaW5cbiAgICAgIGluXG4gICAgICByb3cuKGopIDwtIG1pbjtcbiAgICAgIHJvd19taW4gOj0gSW50Lm1pbiAhcm93X21pbiBtaW47XG4gICAgZG9uZTtcbiAgICBpZiAhcm93X21pbiA+PSBsaW1pdCB0aGVuICgqIGNhbiBubyBsb25nZXIgZGVjcmVhc2UgKikgbGltaXQgZWxzZVxuICAgIGxvb3Agcm93X21pbnVzMSByb3cgcm93X21pbnVzMiAoaSArIDEpIGxlbjAgbGltaXQgczAgczFcbiAgaW5cbiAgbGV0IGlnbm9yZSA9XG4gICAgKCogVmFsdWUgdXNlZCB0byBtYWtlIHRoZSB2YWx1ZXMgYXJvdW5kIHRoZSBkaWFnb25hbCBzdHJpcGUgaWdub3JlZFxuICAgICAgIGJ5IHRoZSBtaW4gY29tcHV0YXRpb25zIHdoZW4gd2UgaGF2ZSBhIGxpbWl0LiAqKVxuICAgIGxpbWl0ICsgMVxuICBpblxuICBsZXQgcm93X21pbnVzMiA9IEFycmF5Lm1ha2UgKGxlbjEgKyAxKSBpZ25vcmUgaW5cbiAgbGV0IHJvd19taW51czEgPSBBcnJheS5pbml0IChsZW4xICsgMSkgKGZ1biB4IC0+IHgpIGluXG4gIGxldCByb3cgPSBBcnJheS5tYWtlIChsZW4xICsgMSkgaWdub3JlIGluXG4gIGxldCBkID0gbG9vcCByb3dfbWludXMyIHJvd19taW51czEgcm93IDEgbGVuMCBsaW1pdCBzMCBzMSBpblxuICBpZiBkID4gbGltaXQgdGhlbiBsaW1pdCBlbHNlIGRcblxubGV0IGVkaXRfZGlzdGFuY2UgP2xpbWl0IHMwIHMxID1cbiAgbGV0IHVzMCA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzMCBpblxuICBlZGl0X2Rpc3RhbmNlJyA/bGltaXQgczAgdXMwIHMxXG5cbmxldCBkZWZhdWx0X21heF9kaXN0IHMgPSBtYXRjaCB1dGZfOF91Y2hhcl9sZW5ndGggcyB3aXRoXG4gIHwgMCB8IDEgfCAyIC0+IDBcbiAgfCAzIHwgNCAtPiAxXG4gIHwgXyAtPiAyXG5cbmxldCBzcGVsbGNoZWNrID8obWF4X2Rpc3QgPSBkZWZhdWx0X21heF9kaXN0KSBpdGVyX2RpY3QgcyA9XG4gIGxldCBtaW4gPSByZWYgKG1heF9kaXN0IHMpIGluXG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHNlbGVjdF93b3JkcyBzIHVzIHdvcmQgPVxuICAgIGxldCBkID0gZWRpdF9kaXN0YW5jZScgfmxpbWl0OighbWluICsgMSkgcyB1cyB3b3JkIGluXG4gICAgaWYgZCA9ICFtaW4gdGhlbiAoYWNjIDo9IHdvcmQgOjogIWFjYykgZWxzZVxuICAgIGlmIGQgPCAhbWluIHRoZW4gKG1pbiA6PSBkOyBhY2MgOj0gW3dvcmRdKSBlbHNlICgpXG4gIGluXG4gIGxldCB1cyA9IHVjaGFyX2FycmF5X29mX3V0Zl84X3N0cmluZyBzIGluXG4gIGl0ZXJfZGljdCAoc2VsZWN0X3dvcmRzIHMgdXMpO1xuICBMaXN0LnJldiAhYWNjXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfYmxpdF9zdHJpbmciLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX3N0cmluZ19oYXNoIiwiY2FtbF9zdHJpbmdfdW5zYWZlX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfQnl0ZXMiLCJidHMiLCJib3MiLCJtYWtlIiwibiIsImMiLCJpbml0Iiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsInN1YiIsInMiLCJvZnMiLCJsZW4iLCJibGl0IiwiY3N0IiwiY29uY2F0Iiwic2VwIiwibCIsInNlcGxlbiIsImFjYyIsInBhcmFtIiwicG9zIiwiaGQiLCJ0bCIsIngiLCJkc3QiLCJjYXQiLCJpdGVyIiwiaSIsIml0ZXJpIiwibWFwIiwibWFwaSIsImZvbGRfcmlnaHQiLCJhIiwiZm9sZF9sZWZ0IiwiZXhpc3RzIiwiZm9yX2FsbCIsImlzX3NwYWNlIiwidHJpbSIsImVzY2FwZWQiLCJiIiwiaW5kZXhfcmVjIiwibGltIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImV4biIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJ1cHBlcmNhc2VfYXNjaWkiLCJsb3dlcmNhc2VfYXNjaWkiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImhhc2giLCJzcGxpdF9vbl9jaGFyIiwiaiIsInIiLCJjb21wYXJlIiwidG9fc2VxIiwidG9fc2VxaSIsIm9mX3NlcSIsImciLCJnZXRfdXRmXzhfdWNoYXIiLCJpc192YWxpZF91dGZfOCIsImdldF91dGZfMTZiZV91Y2hhciIsImlzX3ZhbGlkX3V0Zl8xNmJlIiwiZ2V0X3V0Zl8xNmxlX3VjaGFyIiwiaXNfdmFsaWRfdXRmXzE2bGUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidWNoYXJfYXJyYXlfb2ZfdXRmXzhfc3RyaW5nIiwic2xlbiIsInVjaGFycyIsImsiLCJkZWMiLCJlZGl0X2Rpc3RhbmNlIiwib3B0IiwiczEiLCJsaW1pdCIsImxlbjAiLCJzMCIsIm1hdGNoIiwibGVuMSIsImlnbm9yZSIsInJvd19taW51czIiLCJyb3dfbWludXMxIiwicm93IiwiZCIsInJvd19taW4iLCJqbWF4IiwiY29zdCIsIm1pbiIsInVzMCIsImRlZmF1bHRfbWF4X2Rpc3QiLCJ1bGVuIiwiZGVjX2xlbiIsInNwZWxsY2hlY2siLCJpdGVyX2RpY3QiLCJtYXhfZGlzdCIsInVzIiwid29yZCIsIlN0ZGxpYl9TdHJpbmciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdBQUFDLEdDbUNFLE9BQVUsSUFBVixpQ0FBaUI7QUFBQSxZQUFBQyxLQUFBRixHQUFBZCxHQUVqQixPQUFVLElBQVYsaUNBQWlCO0FBQUEsT0FBQWlCLFdEckNuQixpQkFBQUMsV0FBQTtBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDMENFLGtEQUFrQztBQUFBLFlBQzVCO0FBQUEsSUFBTixPQUFxQixJQUFyQix3Q0FBNEI7QUFBQTtBQUFBLE9BQUFDLE9EM0M5QixrQkFBQUMsTUFBQTtBQUFBLFlBQUFDLE9BQUFDLEtBQUFDO0FBQUFBLElDK0RXLFFBQ0Q7QUFBQSxJQURDLGVBQUFQLElBQUEsTUFFQTtBQUFB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QUFBQTtBQUFBO0FBQUE7QUFBQSxVQUFBb0YsSUFEQTtBQUFBO0FBQUEsS0FZRjtBQUFBO0FBQUE7QUFBQSxZQUFBWixnQkFBQUcsT0FBQUUsSUFBQUg7QUFBQUEsUUFBQWUsTUFHVTtBQUFBLElBQ1Ysd0NBQStCO0FBQUE7QUFBQSxZQUFBQyxpQkFBQTVHO0FBQUFBLFFBQUFzRixPQTVFL0IsMEJBQUF1QixPQUVBLEdBQUEzRixJQUFBO0FBQUE7QUFBQTtBQUFBLE1BNEVpRCwyQkFFdEMsOEJBREk7QUFBQSxNQUVSO0FBQUE7QUFBQTtBQUFBLE1BQUE0RixVQTlFUyw0QkFBZDtBQUFBLFVBQ0E7QUFBQSxNQUFBRCxTQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0E0RU07QUFBQSxZQUFBRSxXQUFBcEIsS0FBQXFCLFdBQUFoSDtBQUFBQTtBQUFBQSxLQUFBaUgsV0FFSztBQUFBLEtBQUFQLE1BQ0M7QUFBQSxLQUFBUSxLQU9MO0FBQUEsS0FBQXpHLE1BTlQ7QUFBQSxJQU9BO0FBQUE7QUFBQSxlQUFBMEc7QUFBQUEsV0FBQWIsSUFMVTtBQUFBLE9BQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUkyQix5Q0FDaEI7QUFBQTtBQUFBO0FBQUEsSUFBQWM7QUFBQUEsTUQzWGYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxNjAwMywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgbWFrZSA6IChpbnRbQHVudGFnZ2VkXSkgLT4gKGZsb2F0W0B1bmJveGVkXSkgLT4gdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfbWFrZVwiIFwiY2FtbF9mbG9hdGFycmF5X21ha2VfdW5ib3hlZFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2ZpbGxcbiAgICA6IHQgLT4gKGludFtAdW50YWdnZWRdKSAtPiAoaW50W0B1bnRhZ2dlZF0pIC0+IChmbG9hdFtAdW5ib3hlZF0pIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9mbG9hdGFycmF5X2ZpbGxcIiBcImNhbWxfZmxvYXRhcnJheV9maWxsX3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3N1YiA6IHQgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc3ViXCJcbiAgZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2FwcGVuZFwiXG4gIGV4dGVybmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0XCJcblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IGVtcHR5ID0gY3JlYXRlIDBcblxuICBsZXQgaW5pdCBsIGYgPVxuICAgIGlmIGwgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0XCJcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzID0gY3JlYXRlIGwgaW5cbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgICBkb25lO1xuICAgICAgcmVzXG5cbiAgbGV0IG1ha2VfbWF0cml4IHN4IHN5IHYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFrZV9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCAobWFrZSBzeSB2KVxuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAgICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICAgIGlmIHN5IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdF9tYXRyaXhcIjtcbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBzeCAoY3JlYXRlIDApIGluXG4gICAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICAgIGZvciB4ID0gMCB0byBzeCAtIDEgZG9cbiAgICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSBpblxuICAgICAgICBmb3IgeSA9IDAgdG8gc3kgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCByb3cgeSAoZiB4IHkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBlbXB0eVxuICAgIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbiAgKCogaW5saW5pbmcgZXhwb3NlcyBhIGZsb2F0LXVuYm94aW5nIG9wcG9ydHVuaXR5IGZvciBbdl0gKilcbiAgbGV0W0BpbmxpbmVdIGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXF1YWwgZXEgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuIGZhbHNlIGVsc2VcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgZXEgKHVuc2FmZV9nZXQgYSAhaSkgKHVuc2FmZV9nZXQgYiAhaSkgZG8gaW5jciBpIGRvbmU7XG4gICAgIWkgPSBsZW5cblxuICBsZXQgZmxvYXRfY29tcGFyZSA9IGNvbXBhcmVcbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCBsZW5fYSA9IGxlbmd0aCBhIGFuZCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IGRpZmYgPSBsZW5fYSAtIGxlbl9iIGluXG4gICAgaWYgZGlmZiA8PiAwIHRoZW4gKGlmIGRpZmYgPCAwIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IGkgPSByZWYgMCBhbmQgYyA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW5fYSAmJiAhYyA9IDBcbiAgICBkbyBjIDo9IGNtcCAodW5zYWZlX2dldCBhICFpKSAodW5zYWZlX2dldCBiICFpKTsgaW5jciBpIGRvbmU7XG4gICAgIWNcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgbGV0IG1hcDIgZiBhIGIgPVxuICAgIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGNyZWF0ZSBsYSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcmkgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICBsZXQgbWFwaSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgZmxvYXRfY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX29wdCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9pbmRleCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gU29tZSBpXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXAgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwaSBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBzaHVmZmxlIH5yYW5kIGEgPSAoKiBGaXNoZXItWWF0ZXMgKilcbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0YXJyYXlfY29uY2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZmxvYXRhcnJheV9tYWtlIiwiY2FtbF9mbG9hdGFycmF5X3N1YiIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9zaWduYml0X2Zsb2F0IiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkFzc2VydF9mYWlsdXJlIiwiU3RkbGliIiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJpc19maW5pdGUiLCJ4IiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInRvX3N0cmluZyIsImlzX2ludGVnZXIiLCJzdWNjIiwicHJlZCIsImVxdWFsIiwieSIsIm1pbiIsIm1heCIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsImNoZWNrIiwiYSIsIm9mcyIsImxlbiIsIm1zZyIsImVtcHR5IiwiaW5pdCIsImwiLCJyZXMiLCJpIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwidiIsImluaXRfbWF0cml4Iiwicm93Iiwic3ViIiwiY29weSIsImFwcGVuZCIsImEyIiwibDEiLCJmaWxsIiwiYmxpdCIsInNyYyIsInNvZnMiLCJkc3QiLCJkb2ZzIiwiY3N0X0Zsb2F0X2FycmF5X2JsaXQiLCJ0b19saXN0Iiwib2ZfbGlzdCIsInJlc3VsdCIsInQiLCJoIiwiZXEiLCJiIiwiY29tcGFyZSIsImNtcCIsImxlbl9hIiwibGVuX2IiLCJkaWZmIiwiYyIsIml0ZXIiLCJpdGVyMiIsIm1hcCIsInIiLCJtYXBfaW5wbGFjZSIsIm1hcDIiLCJsYSIsImxiIiwiaXRlcmkiLCJtYXBpIiwibWFwaV9pbnBsYWNlIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsImV4aXN0cyIsInAiLCJuIiwiZm9yX2FsbCIsIm1lbSIsIm1lbV9pZWVlIiwiZmluZF9vcHQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJCb3R0b20iLCJzb3J0IiwibWF4c29uIiwiaTMxIiwiZSIsImoiLCJleG4iLCJmYXRoZXIiLCJzdGFibGVfc29ydCIsIm1lcmdlIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIiLCJzMSIsImkxIiwiaTIiLCJkIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImwyIiwic2h1ZmZsZSIsInJhbmQiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsInRvX3NlcWkiLCJvZl9zZXEiLCJhY2MiLCJ0bCIsImhkIiwibWFwX3RvX2FycmF5IiwibWFwX2Zyb21fYXJyYXkiLCJTdGRsaWJfRmxvYXQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FB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QTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0JEeE10QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdDd01zQjtBQUFBO0FBQUEsRUR4TXRCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTY4NjEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfaGFzaCIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX211bCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYiIsIlN0ZGxpYl9TeXMiLCJBc3NlcnRfZmFpbHVyZSIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsImxvZ25vdCIsIm1hdGNoIiwibWF4X2ludCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ1bnNpZ25lZF9jb21wYXJlIiwibSIsInkiLCJ4IiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCIsIlN0ZGxpYl9JbnQzMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0MrQ3FCO0FBQUEsWUFBQUMsS0FBQUQsR0FDQTtBQUFBLFlBQUFFLElBQUFGLEdBQ04sNENBQXlCO0FBQUEsWUFBQUcsT0FBQUgsR0FHWDtBQUFBLE9BQUFJLFFEcEQ3QjtBQUFBO0FBQUE7QUFBQSxLQUFBQyxVQ3lEb0I7QUFBQSxLQUFBQztBQUFBQSxPQUNkLFNBQUFOO0FBQUFBLFFBQ0ssOEJBQVc7QUFBQSxTQUNaO0FBQUEsUUFFQTtBQUFBLE9BQUk7QUFBQTtBQUFBLElEOURkO0FBQUEsS0NvRU07QUFBQTtBQUFBLFFBQUFNLGtCQUZBLFNBQUFOLEdBQVMsbUJBQXlCO0FBQUE7QUFBQSxZQUFBTyxVQUFBUCxHQUt0Qix1Q0FBYTtBQUFBLFlBQUFRLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRDVFWDtBQUFBLDhCQzZFb0I7QUFBQSxLRDdFcEI7QUFBQTtBQUFBLEdDNkV3QjtBQUFBLE9BQUFDLFFEN0V4QjtBQUFBLFlBQUFDLGlCQUFBWixHQUFBYTtBQUFBQSxRQUFBQyxJQ3FGMEIsb0JBQUFDLElBQWhCO0FBQUEsSUFKa0IsNkJBSWE7QUFBQTtBQUFBLFlBQUFDLFlBQUFoQixHQUFBYTtBQUFBQSxJQUd2Qyw0REFBNkI7QUFBQTtBQUFBLFlBQUFJLElBQUFGLEdBQUFELEdBRVYsbUNBQW9CO0FBQUEsWUFBQUksSUFBQUgsR0FBQUQsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQUssT0QzRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBckIsR0FBQXNCO0FBQUFBLElDaUdLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUF6QixHQUFBc0I7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQVosR0FJVCxrQ0FBK0I7QUFBQSxZQUFBYSxLQUFBYixHQUMzQywrQkFBNEI7QUFBQTtBQUFBLElBQUFjO0FBQUFBLE1EOUd6QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE2OTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ncmVhdGVyZXF1YWwiLCJjYW1sX2hhc2giLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibWluX2ludCIsIm1heF9pbnQiLCJTdGRsaWIiLCJzdWNjIiwibiIsInByZWQiLCJhYnMiLCJsb2dub3QiLCJ1bnNpZ25lZF90b19pbnQiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmdfb3B0IiwicyIsImV4biIsImNvbXBhcmUiLCJ4IiwieSIsImVxdWFsIiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsIm1pbiIsIm1heCIsInVuc2lnbmVkX2RpdiIsImQiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsInNlZWRlZF9oYXNoIiwic2VlZCIsImhhc2giXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLDZCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQzZDYSwyQkFBUTtBQUFBLFlBQUFDLEtBQUFELEdBQ1IsMkJBQVE7QUFBQSxZQUFBRSxJQUFBRjtBQUFBQSxJQUNOLHFDQUFvQix5QkFBSztBQUFBO0FBQUEsWUFBQUcsT0FBQUgsR0FHekIsbUNBQWM7QUFBQTtBQUFBLElBQUFILFlBR2I7QUFBQSxRQUNkO0FBQUEsWUFBQU8sZ0JBQUFKO0FBQUFBLElBQ0ssOEJBQVc7QUFBQSxLQUNaO0FBQUEsSUFFQTtBQUFBLEdBQUk7QUFBQSxZQUFBSyxVQUFBTCxHQUdRLHlDQUFhO0FBQUEsWUFBQU0sY0FBQUM7QUFBQUEsSUFLN0IsWUFBUztBQUFBLFVBQUFDO0FBQUFBLFNBQUFBLE1EbEVYO0FBQUEsOEJDbUVvQjtBQUFBLEtEbkVwQjtBQUFBO0FBQUEsR0NtRXdCO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUMsR0FXSSwrQkFBa0I7QUFBQSxPQUFBQyxRQXhCNUM7QUFBQSxZQUFBQyxpQkFBQWIsR0FBQWM7QUFBQUEsUUFBQUgsSUE0QndCLDRCQUFBRCxJQUFoQjtBQUFBLElBSmtCLCtCQUlhO0FBQUE7QUFBQSxZQUFBSyxZQUFBZixHQUFBYztBQUFBQSxJQUd2QztBQUFBLHlDQUFnQiwyQkFBYTtBQUFBO0FBQUEsWUFBQUUsSUFBQU4sR0FBQUMsR0FFVixtQ0FBb0I7QUFBQSxZQUFBTSxJQUFBUCxHQUFBQyxHQUNwQixzQ0FBb0I7QUFBQSxZQUFBTyxhQUFBbEIsR0FBQW1CO0FBQUFBLElBTXBDLDJCQUNFLHFDQUlrQztBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FGN0I7QUFBQSxTQUFXO0FBQUEsV0FBSztBQUFBO0FBQUEsS0FBQUMsSUFDaEIsa0JBQU07QUFBQSxJQUNYLCtCQXRETSxvQkFzRDRCO0FBQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQW1CO0FBQUFBLElBRzVCLE9BQVgsa0JBQU0sZUFBSyx1QkFBcUI7QUFBQTtBQUFBLFlBQUFJLFlBQUFDLE1BQUFkLEdBSVQsa0NBQStCO0FBQUEsWUFBQWUsS0FBQWYsR0FDM0MsK0JBQTRCO0FBQUEsR0FyRHZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHRERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MDY3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMG4gJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmcgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nOiBzdHJpbmcgLT4gbmF0aXZlaW50ID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9oYXNoIiwiY2FtbF9pbnRfY29tcGFyZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbXVsIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX1N5cyIsInN1Y2MiLCJuIiwicHJlZCIsImFicyIsInNpemUiLCJtaW5faW50IiwibWF4X2ludCIsImxvZ25vdCIsInVuc2lnbmVkX3RvX2ludCIsInRvX3N0cmluZyIsIm9mX3N0cmluZ19vcHQiLCJzIiwiZXhuIiwiZXF1YWwiLCJ4IiwieSIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfbHQiLCJtaW4iLCJtYXgiLCJ6ZXJvIiwib25lIiwidW5zaWduZWRfZGl2IiwiZCIsInEiLCJyIiwidW5zaWduZWRfcmVtIiwic2VlZGVkX2hhc2giLCJzZWVkIiwiaGFzaCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEtBQUFDLEdDMkNxQjtBQUFBLFlBQUFDLEtBQUFELEdBQ0E7QUFBQSxZQUFBRSxJQUFBRixHQUNOLDRDQUF5QjtBQUFBO0FBQUEsSUFBQUcsT0Q3Q3hDO0FBQUEsSUFBQUMsVUMrQ2M7QUFBQSxJQUFBQyxVQUNBO0FBQUEsWUFBQUMsT0FBQU4sR0FDZTtBQUFBLE9BQUFLLFlBR2I7QUFBQSxZQUFBRSxnQkFBQVA7QUFBQUEsSUFFVCw4QkFBVyw4QkFDWjtBQUFBLElBRUE7QUFBQSxHQUFJO0FBQUEsWUFBQVEsVUFBQVIsR0FHUSx1Q0FBYTtBQUFBLFlBQUFTLGNBQUFDO0FBQUFBLElBSzdCLFlBQVM7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxNRGpFWDtBQUFBLDhCQ2tFb0I7QUFBQSxLRGxFcEI7QUFBQTtBQUFBLEdDa0V3QjtBQUFBLFlBQUFDLE1BQUFDLEdBQUFDLEdBSUksMkNBQ1MsQ0FBSTtBQUFBLFlBQUFDLGlCQUFBZixHQUFBZ0I7QUFBQUEsUUFBQUYsSUFHZixpQkFBQUQsSUFBaEI7QUFBQSxJQUprQiw2QkFJYTtBQUFBO0FBQUEsWUFBQUksWUFBQWpCLEdBQUFnQjtBQUFBQSxJQUd2QyxzREFBNkI7QUFBQTtBQUFBLFlBQUFFLElBQUFMLEdBQUFDLEdBRVYsbUNBQW9CO0FBQUEsWUFBQUssSUFBQU4sR0FBQUMsR0FDcEIsc0NBQW9CO0FBQUEsT0FBQU0sT0RoRnpDLEdBQUFDLE1BQUE7QUFBQSxZQUFBQyxhQUFBdEIsR0FBQXVCO0FBQUFBLElDc0ZLLHdCQUNFLHFDQUlrQztBQUFBLFFBQUFDLElBRmxCLHVDQUFBQyxJQUNMO0FBQUEsSUFDWCx3Q0FBa0M7QUFBQTtBQUFBLFlBQUFDLGFBQUExQixHQUFBdUI7QUFBQUEsSUFHNUIsV0FBTCxTQUFLLDBCQUFxQjtBQUFBO0FBQUEsWUFBQUksWUFBQUMsTUFBQWYsR0FJVCxrQ0FBK0I7QUFBQSxZQUFBZ0IsS0FBQWhCLEdBQzNDLCtCQUE0QjtBQUFBLEdBOUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHJERiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE3MTU4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvbWFwLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkX3RvX2xpc3Q6IGtleSAtPiAnYSAtPiAnYSBsaXN0IHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPlxuICAgICAgJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBvZl9saXN0IDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgYWRkX3RvX2xpc3QgeCBkYXRhIG0gPVxuICAgICAgbGV0IGFkZCA9IGZ1bmN0aW9uIE5vbmUgLT4gU29tZSBbZGF0YV0gfCBTb21lIGwgLT4gU29tZSAoZGF0YSA6OiBsKSBpblxuICAgICAgdXBkYXRlIHggYWRkIG1cblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IHRvX2xpc3QgPSBiaW5kaW5nc1xuICAgIGxldCBvZl9saXN0IGJzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IGJzXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJBc3NlcnRfZmFpbHVyZSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9NYXAiLCJPcmQiLCJoZWlnaHQiLCJwYXJhbSIsImgiLCJjcmVhdGUiLCJsIiwieCIsImQiLCJyIiwiaGwiLCJociIsInNpbmdsZXRvbiIsImJhbCIsImNzdF9NYXBfYmFsIiwibHIiLCJsZCIsImx2IiwibGwiLCJscnIiLCJscmQiLCJscnYiLCJscmwiLCJyciIsInJkIiwicnYiLCJybCIsInJsciIsInJsZCIsInJsdiIsInJsbCIsImlzX2VtcHR5IiwiYWRkIiwiZGF0YSIsIm0iLCJ2IiwiYyIsImZpbmQiLCJmaW5kX2ZpcnN0IiwiZDAiLCJ2MCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfb3B0IiwibWVtIiwibWluX2JpbmRpbmciLCJtaW5fYmluZGluZ19vcHQiLCJtYXhfYmluZGluZyIsIm1heF9iaW5kaW5nX29wdCIsInJlbW92ZV9taW5fYmluZGluZyIsInQxIiwidDIiLCJtYXRjaCIsInJlbW92ZSIsInVwZGF0ZSIsImFkZF90b19saXN0IiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwiYWNjdSIsImZvcl9hbGwiLCJwIiwiZXhpc3RzIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImpvaW4iLCJyaCIsImxoIiwiY29uY2F0IiwiY29uY2F0X29yX2pvaW4iLCJzcGxpdCIsInByZXMiLCJtZXJnZSIsInMxIiwiczIiLCJoMSIsInIxIiwiZDEiLCJ2MSIsImwxIiwicjIiLCJkMiIsImwyIiwidjIiLCJ1bmlvbiIsImgyIiwicyIsImZpbHRlciIsInB2ZCIsImZpbHRlcl9tYXAiLCJmdmQiLCJwYXJ0aXRpb24iLCJsZiIsImx0IiwicmYiLCJydCIsImNvbnNfZW51bSIsImUiLCJjb21wYXJlIiwiY21wIiwibTEiLCJtMiIsImUyIiwiZTEiLCJlcXVhbCIsImNhcmRpbmFsIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJlbXB0eSIsIm9mX2xpc3QiLCJicyIsImFkZF9zZXEiLCJpIiwib2Zfc2VxIiwic2VxX29mX2VudW0iLCJyZXN0IiwidCIsInRvX3NlcSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsIm4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxnQkFBQUM7QUFBQUEsaUJBQUFDLE9BQUFDO0FBQUFBLFNDZ0ZpQixZQUNBO0FBQUEsYUFBQUMsSUFEQTtBQUFBLFNBRUc7QUFBQSxRQUFDO0FBQUEsaUJBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLFVBQUFDLEtBR047QUFBQSxVQUFBQyxLQUFrQjtBQUFBLGNBQzNCO0FBQUE7QUFBQSxRQUEyRDtBQUFBLGlCQUFBQyxVQUFBTCxHQUFBQyxHQUV6QywwQkFBbUM7QUFBQSxpQkFBQUssSUFBQVAsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsU0FH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R0FBQWpDO0FBQUFBLFNBRXRCLFFBQ3JCO0FBQUE7QUFBQSxVQUFBbUgsT0FEcUI7QUFBQSxVQUFBQyxJQUFBO0FBQUEsVUFBQXBGLElBQUE7QUFBQSxVQUFBK0IsSUFBQTtBQUFBLGNBR1E7QUFBQSxTQUFrQixrQ0FBbkMsK0JBQW1DO0FBQUEsUUFBQztBQUFBLGlCQUFBeUQsV0FBQXZGO0FBQUFBLGFBQUEsSUFHeEM7QUFBQSxTQUFpQjtBQUFBO0FBQUEsaUJBQUF3RixZQUFBQyxLQUFBM0Y7QUFBQUE7QUFBQUE7QUFBQUEsY0FBQUEsTUFZckIsR0FBQUUsSUFBQTtBQUFBO0FBQUEsV0FUUztBQUFBO0FBQUEsWUFBQTNCLElBQUE7QUFBQSxZQUFBRCxJQUFBO0FBQUEsWUFBQTJCLElBQUE7QUFBQSxZQUFBN0IsSUFBQTtBQUFBLFlBQUF3SCxJQUdKO0FBQUEsV0FBaUI7QUFBQSxXQUVsQjtBQUFBLGdCQUFBMUYsTUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFERTtBQUFBO0FBQUEsa0JBREY7QUFBQTtBQUFBLFNBS2E7QUFBQTtBQUFBLFFEamlCbEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODAxMCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3N0YWNrLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCBkcm9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IF9oZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDFcbiAgfCBbXSAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfTGlzdCIsIkVtcHR5IiwiY3JlYXRlIiwicGFyYW0iLCJjbGVhciIsInMiLCJjb3B5IiwicHVzaCIsIngiLCJwb3AiLCJtYXRjaCIsInRsIiwiaGQiLCJwb3Bfb3B0IiwiZHJvcCIsInRvcCIsInRvcF9vcHQiLCJpc19lbXB0eSIsImxlbmd0aCIsIml0ZXIiLCJmIiwiZm9sZCIsImFjYyIsInRvX3NlcSIsImFkZF9zZXEiLCJxIiwiaSIsIm9mX3NlcSIsImciXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsT0FBQUMsT0NtQmdCLGlCQUFvQjtBQUFBLFlBQUFDLE1BQUFDLEdBRXRCLFVBQVcsbUJBQVU7QUFBQSxZQUFBQyxLQUFBRCxHQUV0Qix1QkFBeUI7QUFBQSxZQUFBRSxLQUFBQyxHQUFBSCxHQUV2QixxQkFBaUIsOEJBQWtCO0FBQUEsWUFBQUksSUFBQUo7QUFBQUEsUUFBQUssUUFHaEQ7QUFBQSxnQkFFWTtBQUFBLFFBQUFDLEtBRlosVUFBQUMsS0FBQTtBQUFBLElBQ1k7QUFBQSxJQUFXO0FBQUEsSUFBb0I7QUFBQSxHQUNwQjtBQUFBLFlBQUFDLFFBQUFSO0FBQUFBLFFBQUFLLFFBR3ZCO0FBQUEsZ0JBRVk7QUFBQSxRQUFBQyxLQUZaLFVBQUFDLEtBQUE7QUFBQSxJQUNZO0FBQUEsSUFBVztBQUFBLElBQW9CO0FBQUEsR0FDM0I7QUFBQSxZQUFBRSxLQUFBVDtBQUFBQSxRQUFBSyxRQUdoQjtBQUFBLGdCQUVRO0FBQUEsUUFBQUMsS0FGUjtBQUFBLElBQ2E7QUFBQSxJQUFXO0FBQUE7QUFBQSxHQUNMO0FBQUEsWUFBQUksSUFBQVY7QUFBQUEsUUFBQUssUUFHbkI7QUFBQSxnQkFFVztBQUFBLFFBQUFFLEtBRlg7QUFBQSxJQUNXO0FBQUEsR0FDVztBQUFBLFlBQUFJLFFBQUFYO0FBQUFBLFFBQUFLLFFBR3RCO0FBQUEsZ0JBRVc7QUFBQSxRQUFBRSxLQUZYO0FBQUEsSUFDVztBQUFBLEdBQ0k7QUFBQSxZQUFBSyxTQUFBWixHQUVBLDBCQUFVO0FBQUEsWUFBQWEsT0FBQWIsR0FFWixZQUFLO0FBQUEsWUFBQWMsS0FBQUMsR0FBQWYsR0FFTCwwQ0FBZTtBQUFBLFlBQUFnQixLQUFBRCxHQUFBRSxLQUFBakIsR0FFWCwrQ0FBd0I7QUFBQSxZQUFBa0IsT0FBQWxCLEdBSTVCLHVDQUFlO0FBQUEsWUFBQW1CLFFBQUFDLEdBQUFDO0FBQUFBLElBRVoseUNBQUFsQixHQUFtQixpQkFBUSxNQUFHO0FBQUE7QUFBQSxZQUFBbUIsT0FBQUMsT0FBQXZCLElBR3RDLFdBQ1IsZUFBVyxTQUNWO0FBQUEsR0RyRUgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODA5NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBkcm9wIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHFcbiAgfCBDb25zIHsgY29udGVudCA9IF87IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHRcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJTdGRsaWJfU2VxIiwiRW1wdHkiLCJjcmVhdGUiLCJwYXJhbSIsImNsZWFyIiwicSIsImFkZCIsIngiLCJjZWxsIiwibWF0Y2giLCJwZWVrIiwiY29udGVudCIsInBlZWtfb3B0IiwidGFrZSIsIm5leHQiLCJ0YWtlX29wdCIsImRyb3AiLCJjb3B5IiwicV9yZXMiLCJwcmV2IiwiaXNfZW1wdHkiLCJsZW5ndGgiLCJpdGVyIiwiZm9sZCIsImFjY3UiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJ0b19zZXEiLCJhdXgiLCJjIiwiYWRkX3NlcSIsImkiLCJvZl9zZXEiLCJnIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEs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QUNWO0FBQUEsR0E5QkQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEOUlGIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTgyNjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9idWZmZXIubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIGJ5dGVzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gQnl0ZXMubGVuZ3RoIGJ5dGVzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdCBieXRlcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXQgYnl0ZXMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGFkZF9zdWJzdHJpbmcgYiBzIDAgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkZF9ieXRlcyBiIGJ5dGVzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnl0ZXMgMCAoQnl0ZXMubGVuZ3RoIGJ5dGVzKVxuXG5sZXQgYWRkX2J1ZmZlciBiIGJzID1cbiAgYWRkX3N1YmJ5dGVzIGIgYnMuaW5uZXIuYnVmZmVyIDAgYnMucG9zaXRpb25cblxuKCogdGhpcyAocHJpdmF0ZSkgZnVuY3Rpb24gY291bGQgbW92ZSBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG5sZXQgcmVhbGx5X2lucHV0X3VwX3RvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWQgPVxuICAgIGlmIHRvX3JlYWQgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBpbnB1dCBpYyBidWYgb2ZzIHRvX3JlYWQgaW5cbiAgICAgIGlmIHIgPSAwIHRoZW4gYWxyZWFkeV9yZWFkXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBhbHJlYWR5X3JlYWQgKyByIGluXG4gICAgICAgIGxldCBvZnMgPSBvZnMgKyByIGluXG4gICAgICAgIGxldCB0b19yZWFkID0gdG9fcmVhZCAtIHIgaW5cbiAgICAgICAgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW4gbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZDowIH5vZnMgfnRvX3JlYWQ6bGVuXG5cblxubGV0IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiA9XG4gIGlmIGIucG9zaXRpb24gKyBsZW4gPiBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIGxlbjtcbiAgbGV0IG4gPSByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgaW5cbiAgICAgaWYgc3RvcCA9IHN0YXJ0IHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCBmaW5kX2lkZW50IHMgaiBsaW0gd2l0aFxuICAgICAgICAgfCBpZGVudCwgbmV4dF9pIC0+XG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiICckJztcbiAgICAgICAgICAgc3Vic3QgJyAnIGpcbiAgICAgICAgIGVuZFxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXM7XG4gICAgICAgICBpZiBjdXJyZW50IDw+ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLmdldCBiLmlubmVyLmJ1ZmZlciBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IGFkZF9zZXEgYiBzZXEgPSBTZXEuaXRlciAoYWRkX2NoYXIgYikgc2VxXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBiID0gY3JlYXRlIDMyIGluXG4gIGFkZF9zZXEgYiBpO1xuICBiXG5cbigqKiB7NiBCaW5hcnkgZW5jb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMSBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBzZXRfaW50OCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ4IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDI7XG4gICAgc2V0X2ludDE2IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDE2IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDMyX25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDQ7XG4gICAgc2V0X2ludDMyIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDMyIGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDY0X25lIGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDg7XG4gICAgc2V0X2ludDY0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDY0IGJ1ZmZlciBwb3NpdGlvbiB4O1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX2ludDE2X2xlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQxNl9iZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG5cbmxldCBhZGRfaW50MzJfbGUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDMyX2JlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcblxubGV0IGFkZF9pbnQ2NF9sZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50NjRfYmUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuXG5sZXQgYWRkX3VpbnQ4ID0gYWRkX2ludDhcbmxldCBhZGRfdWludDE2X25lID0gYWRkX2ludDE2X25lXG5sZXQgYWRkX3VpbnQxNl9sZSA9IGFkZF9pbnQxNl9sZVxubGV0IGFkZF91aW50MTZfYmUgPSBhZGRfaW50MTZfYmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ic3dhcDE2IiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2J5dGVzX3NldCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImNhbWxfYnl0ZXNfdW5zYWZlX3NldCIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX2dldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfU3lzIiwiU3RkbGliX1NlcSIsIlN0ZGxpYiIsIlN0ZGxpYl9TdHJpbmciLCJBc3NlcnRfZmFpbHVyZSIsImR1bW15IiwiY3JlYXRlIiwibiIsInMiLCJjb250ZW50cyIsImIiLCJ0b19ieXRlcyIsInN1YiIsIm9mcyIsImxlbiIsImJsaXQiLCJzcmMiLCJzcmNvZmYiLCJkc3QiLCJkc3RvZmYiLCJudGgiLCJwb3NpdGlvbiIsIm1hdGNoIiwibGVuZ3RoIiwiYnVmZmVyIiwiY2xlYXIiLCJyZXNldCIsImlubmVyIiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsImMiLCJwb3MiLCJhZGRfdXRmXzhfdWNoYXIiLCJ1IiwidWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4IiwidWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCIsImFkZF91dGZfMTZiZV91Y2hhciIsImFkZF91dGZfMTZsZV91Y2hhciIsImFkZF9zdWJzdHJpbmciLCJvZmZzZXQiLCJuZXdfcG9zaXRpb24iLCJhZGRfc3ViYnl0ZXMiLCJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsImljIiwidG9fcmVhZCIsImJ1ZiIsImFscmVhZHlfcmVhZCIsInIiLCJvdXRwdXRfYnVmZmVyIiwib2MiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSIsInByZXZpb3VzIiwiaSIsInN0YXJ0Iiwib3BlbmluZyIsInN0b3AiLCJ2YWwiLCJuZXdfc3RhcnQiLCJjbG9zaW5nIiwiayIsImV4biIsIm5leHRfaSIsImlkZW50IiwidHJ1bmNhdGUiLCJ0b19zZXEiLCJhdXgiLCJwYXJhbSIsIngiLCJ0b19zZXFpIiwiYWRkX3NlcSIsInNlcSIsIm9mX3NlcSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBO0FBQUFBLEtBQUFBLE1Dd0NDO0FBQUEsS0FBQUEsTUFDQTtBQUFBLEtBQUFDLElBQ1E7QUFBQSxJQUNSO0FBQUEsR0FBc0U7QUFBQSxZQUFBQyxTQUFBQyxHQUV0RCxtREFBNEM7QUFBQSxZQUFBQyxTQUFBRCxHQUM1QyxtREFBcUM7QUFBQSxZQUFBRSxJQUFBRixHQUFBRyxLQUFBQztBQUFBQSxJQUdwRDtBQUFBLEtBRUssb0RBQXVDO0FBQUEsSUFEdkMseUNBQ3VDO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxLQUFBQyxRQUFBQyxLQUFBQyxRQUFBTDtBQUFBQSxJQUk1QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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QUEsS0FDQTtBQUFBO0FBQUE7QUFBQSxLQUVBO0FBQUEsSUFDRjtBQUFBO0FBQUEsR0FBMEI7QUFBQSxZQUFBMEMsYUFBQTdFLEdBQUFvRTtBQUFBQSxRQUFBLElBRzFCLGlCQUF1QztBQUFBLElBQXZDLHlCQUF1RDtBQUFBO0FBQUEsWUFBQVUsYUFBQTlFLEdBQUFvRTtBQUFBQSxRQUFBQSxNQUd2RCxxQkFBOEM7QUFBQSxJQUE5QywyQkFBdUQ7QUFBQTtBQUFBLFlBQUFXLGFBQUEvRSxHQUFBb0U7QUFBQUEsUUFBQSxJQUd2RCxpQkFBdUM7QUFBQSxJQUF2Qyx5QkFBdUQ7QUFBQTtBQUFBLFlBQUFZLGFBQUFoRixHQUFBb0U7QUFBQUEsUUFBQUEsTUFHdkQscUJBQThDO0FBQUEsSUFBOUMsMkJBQXVEO0FBQUE7QUFBQSxZQUFBYSxhQUFBakYsR0FBQW9FO0FBQUFBLFFBQUEsSUFHdkQsaUJBQXVDO0FBQUEsSUFBdkMseUJBQXVEO0FBQUE7QUFBQSxZQUFBYyxhQUFBbEYsR0FBQW9FO0FBQUFBLFFBQUFBLE1BR3ZELHFCQUE4QztBQUFBLElBQTlDLDJCQUF1RDtBQUFBO0FBQUEsR0Q5WXpEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTg3NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9tdXRleC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIFBhc2NhbCBDdW9xLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTUgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0XG5leHRlcm5hbCBjcmVhdGU6IHVuaXQgLT4gdCA9IFwiY2FtbF9tbF9tdXRleF9uZXdcIlxuZXh0ZXJuYWwgbG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X2xvY2tcIlxuZXh0ZXJuYWwgdHJ5X2xvY2s6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9tdXRleF90cnlfbG9ja1wiXG5leHRlcm5hbCB1bmxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF91bmxvY2tcIlxuXG4oKiBwcml2YXRlIHJlLWV4cG9ydCAqKVxuZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4oKiBjYW5ub3QgaW5saW5lLCBvdGhlcndpc2UgZmxhbWJkYSBtaWdodCBtb3ZlIGNvZGUgYXJvdW5kLiAqKVxubGV0W0BpbmxpbmUgbmV2ZXJdIHByb3RlY3QgbSBmID1cbiAgbG9jayBtO1xuICBtYXRjaCBmKCkgd2l0aFxuICB8IHggLT5cbiAgICB1bmxvY2sgbTsgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgKCogTk9URTogW3VubG9ja10gZG9lcyBub3QgcG9sbCBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMgKilcbiAgICB1bmxvY2sgbTtcbiAgICByZXJhaXNlIGVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9tdXRleF9sb2NrIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsInByb3RlY3QiLCJtIiwieCIsImUiLCJTdGRsaWJfTXV0ZXgiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsR0FBQUg7QUFBQUEsSUMwQkU7QUFBQSxJQUFNLFFBQUFJLElBQ0E7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxJRDNCUjtBQUFBLEtDZ0NJO0FBQUEsS0FBUTtBQUFBO0FBQUEsSUFIUjtBQUFBLElBQVE7QUFBQSxHQUlDO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRGpDYiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjE4Nzk2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJTdGRsaWJfQ29uZGl0aW9uIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoxODgxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL2RvbWFpbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbmV4dGVybmFsIHNlbGZfaW5kZXggOiB1bml0IC0+IGludFxuICA9IFwiY2FtbF9tbF9kb21haW5faW5kZXhcIiBbQEBub2FsbG9jXVxuXG4oKioqKioqKiogQ2FsbGJhY2tzICoqKioqKioqKiopXG5cbigqIGZpcnN0IHNwYXduLCBkb21haW4gc3RhcnR1cCBhbmQgYXQgZXhpdCBmdW5jdGlvbmFsaXR5ICopXG5sZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgPSBBdG9taWMubWFrZSBmYWxzZVxuXG5sZXQgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gPSByZWYgKGZ1biAoKSAtPiAoKSlcblxubGV0IGJlZm9yZV9maXJzdF9zcGF3biBmID1cbiAgaWYgQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJmaXJzdCBkb21haW4gYWxyZWFkeSBzcGF3bmVkXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgb2xkX2YgPSAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24gaW5cbiAgICBsZXQgbmV3X2YgKCkgPSBvbGRfZiAoKTsgZiAoKSBpblxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IG5ld19mXG4gIGVuZFxuXG5sZXQgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpID1cbiAgaWYgbm90IChBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkKSB0aGVuIGJlZ2luXG4gICAgQXRvbWljLnNldCBmaXJzdF9kb21haW5fc3Bhd25lZCB0cnVlO1xuICAgICFmaXJzdF9zcGF3bl9mdW5jdGlvbigpO1xuICAgICgqIFJlbGVhc2UgdGhlIG9sZCBmdW5jdGlvbiAqKVxuICAgIGZpcnN0X3NwYXduX2Z1bmN0aW9uIDo9IChmdW4gKCkgLT4gKCkpXG4gIGVuZFxuXG5sZXQgYXRfZXhpdF9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+IChmdW4gKCkgLT4gKCkpKVxuXG5sZXQgYXRfZXhpdCBmID1cbiAgbGV0IG9sZF9leGl0IDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBsZXQgbmV3X2V4aXQgKCkgPVxuICAgIGYgKCk7IG9sZF9leGl0ICgpXG4gIGluXG4gIERMUy5zZXQgYXRfZXhpdF9rZXkgbmV3X2V4aXRcblxubGV0IGRvX2F0X2V4aXQgKCkgPVxuICBsZXQgZiA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgZiAoKVxuXG5sZXQgXyA9IFN0ZGxpYi5kb19kb21haW5fbG9jYWxfYXRfZXhpdCA6PSBkb19hdF9leGl0XG5cbigqKioqKioqIENyZWF0aW9uIGFuZCBUZXJtaW5hdGlvbiAqKioqKioqKilcblxubGV0IHNwYXduIGYgPVxuICBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCk7XG4gIGxldCBwayA9IERMUy5nZXRfaW5pdGlhbF9rZXlzICgpIGluXG5cbiAgKCogW3Rlcm1fc3luY10gaXMgdXNlZCB0byBzeW5jaHJvbml6ZSB3aXRoIHRoZSBqb2luaW5nIGRvbWFpbnMgKilcbiAgbGV0IHRlcm1fc3luYyA9XG4gICAgUmF3Lnsgc3RhdGUgPSBSdW5uaW5nIDtcbiAgICAgICAgICBtdXQgPSBNdXRleC5jcmVhdGUgKCkgO1xuICAgICAgICAgIGNvbmQgPSBDb25kaXRpb24uY3JlYXRlICgpIH1cbiAgaW5cblxuICBsZXQgYm9keSAoKSA9XG4gICAgbWF0Y2hcbiAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgRExTLnNldF9pbml0aWFsX2tleXMgcGs7XG4gICAgICBsZXQgcmVzID0gZiAoKSBpblxuICAgICAgcmVzXG4gICAgd2l0aFxuICAgICgqIFJ1biB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrcyB3aGVuIHRoZSBkb21haW4gY29tcHV0YXRpb24gZWl0aGVyXG4gICAgICAgdGVybWluYXRlcyBub3JtYWxseSBvciBleGNlcHRpb25hbGx5LiAqKVxuICAgIHwgcmVzIC0+XG4gICAgICAgICgqIElmIHRoZSBkb21haW4gY29tcHV0YXRpb24gdGVybWluYXRlZCBub3JtYWxseSwgYnV0IHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIHJhaXNlZCBhbiBleGNlcHRpb24sIHRoZW4gcmV0dXJuIHRoZVxuICAgICAgICAgICBleGNlcHRpb24uICopXG4gICAgICAgIGRvX2F0X2V4aXQgKCk7XG4gICAgICAgIHJlc1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAoKiBJZiBib3RoIHRoZSBkb21haW4gY29tcHV0YXRpb24gYW5kIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzXG4gICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMsIHRoZW4gaWdub3JlIHRoZSBleGNlcHRpb24gZnJvbSB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyBhbmQgcmV0dXJuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24uICopXG4gICAgICAgICh0cnkgZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgICAgICByYWlzZSBleG5cbiAgaW5cbiAgbGV0IGRvbWFpbiA9IFJhdy5zcGF3biBib2R5IHRlcm1fc3luYyBpblxuICB7IGRvbWFpbiA7IHRlcm1fc3luYyB9XG5cbmxldCBqb2luIHsgdGVybV9zeW5jIDsgXyB9ID1cbiAgbGV0IG9wZW4gUmF3IGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggdGVybV9zeW5jLnN0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgQ29uZGl0aW9uLndhaXQgdGVybV9zeW5jLmNvbmQgdGVybV9zeW5jLm11dDtcbiAgICAgICAgbG9vcCAoKVxuICAgIHwgRmluaXNoZWQgcmVzIC0+XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBNdXRleC5wcm90ZWN0IHRlcm1fc3luYy5tdXQgbG9vcCB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXggLT4gcmFpc2UgZXhcblxubGV0IHJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCA9IFJhdy5nZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYXJyYXlfbWFrZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9tbF9kb21haW5faWQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfQ29uZGl0aW9uIiwiU3RkbGliX011dGV4IiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiQXNzZXJ0X2ZhaWx1cmUiLCJjcHVfcmVsYXgiLCJwYXJhbSIsIm5vbmUiLCJjcmVhdGVfZGxzIiwic3QiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJrIiwic3BsaXQiLCJraSIsImwiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJzIiwic2V0IiwieCIsImdldCIsImluaXQiLCJvbGR2YWwiLCJuZXdfb2JqIiwiY3VydmFsIiwidXBkYXRlZF9vYmoiLCJzZXRfaW5pdGlhbF9rZXlzIiwidiIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJhdF9leGl0Iiwib2xkX2V4aXQiLCJuZXdfZXhpdCIsImRvX2F0X2V4aXQiLCJzcGF3biIsInBrIiwidGVybV9zeW5jIiwiYm9keSIsInJlcyIsImV4biIsImpvaW4iLCJsb29wIiwibWF0Y2giLCJleCIsInJlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsIlN0ZGxpYl9Eb21haW4iXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsWUFBQUMsVUFBQUMsT0M4Q21CLDBDQUFnQjtBQUFBLE9BQUFDLE9EOUNuQztBQUFBLFlBQUFDLFdBQUFGO0FBQUFBLFFBQUFHLEtDd0ZhO0FBQUEsSUFDVDtBQUFBLEdBQWdCO0FBQUEsR0FFVjtBQUFBO0FBQUEsSUFBQUMsY0FJVTtBQUFBLElBQUFDLGNBS0E7QUFBQSxZQUFBQyxRQUFBQyxtQkFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsTUFRTjtBQUFBLEtBQUFDLElBQ1Y7QUFBQSxJQUNBO0FBQUEsU0FBQUMsUUFBQSxzQkFBQUMsS0FFZ0I7QUFBQSxLQVRoQjtBQUFBLFVBQUFDLElBQVE7QUFBQSxNQUNEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFVUDtBQUFBLEdBQUM7QUFBQSxZQUFBQyxXQUFBTDtBQUFBQSxJQUtEO0FBQUEsU0FBQU4sS0FBQSx3QkFBQVksS0FDQTtBQUFBLEtBQ0EsYUFBaUI7QUFBQSxTQUFBQyxTQUFqQjtBQUFBO0FBQUEsTUFHSTtBQUFBLFdBQUFDLFNBR1c7QUFBQSxPQUNiO0FBQUEsT0FPRyx3REFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBQyxJQVpvQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBY3hCO0FBQUEsWUFBQUMsSUFBQW5CLE9BQUFvQjtBQUFBQSxRQUFBWCxNQUVHLFVBQUFOLEtBQ0c7QUFBQSxJQUlUO0FBQUEsSUFBZ0Q7QUFBQTtBQUFBLFdBN0NPO0FBQUEsWUFBQWtCLElBQUFyQjtBQUFBQTtBQUFBQSxLQUFBc0IsT0F5RGpEO0FBQUEsS0FBQWIsTUFBQTtBQUFBLEtBQUFOLEtBQ0c7QUFBQSxLQUFBb0IsU0FDQztBQUFBLElBQ1ksb0JBdEZEO0FBQUE7QUFBQSxLQUFBQyxVQXlGUDtBQUFBLEtBQUFyQixPQVdaO0FBQUEsS0FBQXNCLFNBdkJXO0FBQUEsU0FDYjtBQUFBLElBdUI2QyxNQUN0QztBQUFBLFFBQUFDLGNBSWU7QUFBQSxJQUNZLHlCQTNHYjtBQUFBLElBNkdaO0FBQUEsR0FFTjtBQUFBLFlBQUFDLGlCQUFBZDtBQUFBQSxJQVVIO0FBQUE7QUFBQSxzQkFBQWI7QUFBQUEsa0JBQUE0QixJQUFVLFVBQUFsQixJQUFBO0FBQUEsY0FBb0IsZ0JBQVE7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFtQixPQUFBN0IsV0FBQThCLFNBS2pDLFVBQWdCLGNBQU07QUFBQSxZQUFBQyxLQUFBL0IsT0FFbkIsMkJBQVc7QUFBQSxZQUFBZ0MsZUFBQWhDLE9BQVgseUNBRWtCLENBQVk7QUFBQTtBQUFBLElBQUFpQyx1QkFRakI7QUFBQSxJQUFBQyx1QkFBaUIsYUFBQWxDLE9BRUE7QUFBQSxZQUFBbUMsbUJBQUEvQztBQUFBQSxJQUd2QztBQUFBLEtBQ0Q7QUFBQTtBQUFBLFFBQUFnRCxRQUNHO0FBQUEsYUFBQUMsTUFBQXJDLE9BRVksc0JBQVEsdUJBQU07QUFBQSxJQUM3QjtBQUFBO0FBQUEsR0FDQztBQUFBO0FBQUEsSUFBQXNDO0FBQUFBLE1BVWEsb0JBQUF0QyxPQUF1QixnQkFBQUEsT0FBVyxTQUFFLENBQWIsQ0FBYztBQUFBLFlBQUF1QyxRQUFBbkQ7QUFBQUEsUUFBQW9ELFdBR3ZCO0FBQUEsYUFBQUMsU0FBQXpDO0FBQUFBLEtBRTVCO0FBQUEsS0FBSSw4QkFBYTtBQUFBO0FBQUEsSUFFbkIsaUNBQTRCO0FBQUE7QUFBQSxZQUFBMEMsV0FBQTFDO0FBQUFBLFFBQUFaLElBR0w7QUFBQSxJQUN2Qix1QkFBSTtBQUFBO0FBQUEsR0FYa0Q7QUFBQSxZQUFBdUQsTUFBQXZEO0FBQUFBLElBUC9DO0FBQUEsS0FDTDtBQUFBLEtBQ0E7QUFBQSxLQUF1QixtQ0FBQVksT0FFWSxTQUFFO0FBQUE7QUFBQTtBQUFBLFNBdENuQztBQUFBLEtBQUE0QztBQUFBQSxPQUF3QjtBQUFBO0FBQUEsa0JBQUE1QztBQUFBQSxjQUFBVyxRQUR4QixVQUFBRCxJQUFBO0FBQUEsVUFBc0MsY0FBUCxrQkFBTyxRQUFRO0FBQUEsU0FBRTtBQUFBO0FBQUEsU0FtRXJDO0FBQUEsS0FBQW1DLFlBREQ7QUFBQSxhQUFBQyxLQUFBOUM7QUFBQUEsS0FLWixJQUNFLGVBQ0EsMEJBQUErQyxNQUNVO0FBQUEsV0FBQUM7QUFBQUEsVUFBQUEsTUR6UWhCO0FBQUEsVUN3UmEscUJBQUFBO0FBQUFBLE1BQ0w7QUFBQTtBQUFBLEtBUEE7QUFBQSxLQUFhO0FBQUEsSUFPSjtBQUFBLFFBQUFsQixTQUVGO0FBQUEsSUFDYjtBQUFBLEdBQXNCO0FBQUEsWUFBQW1CLEtBQUFqRDtBQUFBQSxRQUFBNkMsWUFFZjtBQUFBLGFBQUFLLEtBQUFsRDtBQUFBQSxLQUdMO0FBQUEsVUFBQW1ELFFBQUE7QUFBQSxvQkFBQUosTUFBQSxVQUtJO0FBQUEsTUFIQTtBQUFBO0FBQUEsSUFHRztBQUFBLFFBQUFJLFFBRUg7QUFBQSxJQUFnQyx1QkFBQS9CLElBQUEsVUFDNUI7QUFBQSxRQUFBZ0MsS0FENEI7QUFBQTtBQUFBLEdBRWhCO0FBQUE7QUFBQSxJQUFBQywyQkFqRWdDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6T3hEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MTkwMTEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmJcblxuKCogQ29tcHV0ZSBhIHBhZGRpbmcgYXNzb2NpYXRlZCB0byBhIHBhZF9vcHRpb24gKHNlZSBcIiVfNDJkXCIpLiAqKVxubGV0IHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3BhZGRpbmdcbiAgfCBTb21lIHdpZHRoIC0+IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG5cbigqIENvbXB1dGUgYSBwcmVjaXNpb24gYXNzb2NpYXRlZCB0byBhIHByZWNfb3B0aW9uIChzZWUgXCIlXy40MmZcIikuICopXG5sZXQgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCA9IG1hdGNoIHByZWNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IE5vX3ByZWNpc2lvblxuICB8IFNvbWUgbmRlYyAtPiBMaXRfcHJlY2lzaW9uIG5kZWNcblxuKCogVHVybiBhbiBpZ25vcmVkIHBhcmFtIGludG8gaXRzIGVxdWl2YWxlbnQgbm90LWlnbm9yZWQgZm9ybWF0IG5vZGUuICopXG4oKiBVc2VkIGZvciBmb3JtYXQgcHJldHR5LXByaW50aW5nIGFuZCBTY2FuZi4gKilcbmxldCBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT4gKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhcmFtX2Zvcm1hdF9lYmIgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDaGFyIGZtdClcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfY2hhciBmbXQpXG4gIHwgSWdub3JlZF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFN0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX3N0cmluZyAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2ludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoSW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50MzIgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQzMiAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKE5hdGl2ZWludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDY0IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50NjQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9mbG9hdCAocGFkX29wdCwgcHJlY19vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZsb2F0ICgoRmxvYXRfZmxhZ18sIEZsb2F0X2YpLFxuICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfYm9vbCBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQm9vbCAocGFkX29mX3BhZF9vcHQgcGFkX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFJlYWRlciBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX25leHRfY2hhciBmbXQpXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGVzICopXG5cbnR5cGUgKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuID1cbiAgfCBBY2Nfb3Blbl90YWcgb2YgKCdiLCAnYykgYWNjXG4gIHwgQWNjX29wZW5fYm94IG9mICgnYiwgJ2MpIGFjY1xuXG4oKiBSZXZlcnNlZCBsaXN0IG9mIHByaW50aW5nIGF0b21zLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHByaW50ZiBhcmd1bWVudHMuICopXG5hbmQgKCdiLCAnYykgYWNjID1cbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgb2YgKCdiLCAnYykgYWNjICogZm9ybWF0dGluZ19saXRcbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW5cbiAgICAgICgqIFNwZWNpYWwgZm10dGluZyAoYm94KSAqKVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIExpdGVyYWwgc3RyaW5nICopXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogTGl0ZXJhbCBjaGFyICopXG4gIHwgQWNjX2RhdGFfc3RyaW5nICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogR2VuZXJhdGVkIHN0cmluZyAqKVxuICB8IEFjY19kYXRhX2NoYXIgICAgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIEdlbmVyYXRlZCBjaGFyICopXG4gIHwgQWNjX2RlbGF5ICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAqICgnYiAtPiAnYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIERlbGF5ZWQgcHJpbnRpbmcgKCVhLCAldCkgKilcbiAgfCBBY2NfZmx1c2ggICAgICAgICAgb2YgKCdiLCAnYykgYWNjICAgICAgICAgICAgICAoKiBGbHVzaCAqKVxuICB8IEFjY19pbnZhbGlkX2FyZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmdcbiAgICAgICgqIFJhaXNlIEludmFsaWRfYXJndW1lbnQgbXNnICopXG4gIHwgRW5kX29mX2FjY1xuXG4oKiBMaXN0IG9mIGhldGVyb2dlbmVvdXMgdmFsdWVzLiAqKVxuKCogVXNlZCB0byBhY2N1bXVsYXRlIHNjYW5mIGNhbGxiYWNrIGFyZ3VtZW50cy4gKilcbnR5cGUgKCdhLCAnYikgaGV0ZXJfbGlzdCA9XG4gIHwgQ29ucyA6ICdjICogKCdhLCAnYikgaGV0ZXJfbGlzdCAtPiAoJ2MgLT4gJ2EsICdiKSBoZXRlcl9saXN0XG4gIHwgTmlsIDogKCdiLCAnYikgaGV0ZXJfbGlzdFxuXG4oKiBFeGlzdGVudGlhbCBCbGFjayBCb3hlcy4gKilcbigqIFVzZWQgdG8gYWJzdHJhY3Qgc29tZSBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlcnMuICopXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZGRpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9IFBhZGRpbmdfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdHR5LiAqKVxuKCogU2VlIHRoZSB0eXBlX3BhZHByZWMgZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9IFBhZHByZWNfZm10dHlfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3opIHByZWNpc2lvbiAqICgneiwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkZGluZ19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmIgPSBQYWRkaW5nX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHBhZGRpbmcgKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYiA9IFByZWNpc2lvbl9mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYiA9IFBhZHByZWNfZm10X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdwIC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgncCwgJ2IsICdjLCAnZSwgJ2YpIHBhZHByZWNfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCB0aGUgJ2EgYW5kICdkIHBhcmFtZXRlcnMgb2YgYW4gZm10LiAqKVxuKCogT3V0cHV0IHR5cGUgb2YgdGhlIGZvcm1hdCBwYXJzaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmIgPSBGbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ2IsICdjLCAnZSwgJ2YpIGZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfZm9ybWF0X2dlbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgPSBGbXRfZm10dHlfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdCAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiID0gRm10dHlfZm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXR0eSAqXG4gICAgICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXRfZm10dHlfZWJiIC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9mbXRfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBmbXR0eSB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgZm9ybWF0IHR5cGVzLiAqKVxudHlwZSBmbXR0eV9lYmIgPSBGbXR0eV9FQkIgOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT4gZm10dHlfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwYWRkaW5nIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwYWRkaW5ncy4gKilcbnR5cGUgcGFkZGluZ19lYmIgPSBQYWRkaW5nX0VCQiA6ICgnYSwgJ2IpIHBhZGRpbmcgLT4gcGFkZGluZ19lYmJcblxuKCogQWJzdHJhY3QgYWxsIHByZWNpc2lvbiB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcHJlY2lzaW9ucy4gKilcbnR5cGUgcHJlY2lzaW9uX2ViYiA9IFByZWNpc2lvbl9FQkIgOiAoJ2EsICdiKSBwcmVjaXNpb24gLT4gcHJlY2lzaW9uX2ViYlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnN0YW50cyAqKVxuXG4oKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgZmxvYXQgcHJpbnRpbmcuICopXG5sZXQgZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYgPVxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIHwgRmxvYXRfaCB8IEZsb2F0X0hcbiAgfCBGbG9hdF9DRiAtPiAtNlxuICAoKiBGb3IgJWggJUggYW5kICUjRiBmb3JtYXRzLCBhIG5lZ2F0aXZlIHByZWNpc2lvbiBtZWFucyBcImFzIG1hbnkgZGlnaXRzIGFzXG4gICAgIG5lY2Vzc2FyeVwiLiAgRm9yIHRoZSBvdGhlciBGUCBmb3JtYXRzLCB3ZSB0YWtlIHRoZSBhYnNvbHV0ZSB2YWx1ZVxuICAgICBvZiB0aGUgcHJlY2lzaW9uLCBoZW5jZSA2IGRpZ2l0cyBieSBkZWZhdWx0LiAqKVxuICB8IEZsb2F0X0YgLT4gMTJcbiAgKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIE9DYW1sIGZsb2F0IHByaW50aW5nICglRikuICopXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXh0ZXJuYWxzICopXG5cbmV4dGVybmFsIGZvcm1hdF9mbG9hdDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfaW50MzI6IHN0cmluZyAtPiBpbnQzMiAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50MzJfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9uYXRpdmVpbnQ6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDY0OiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5leHRlcm5hbCBoZXhzdHJpbmdfb2ZfZmxvYXQ6IGZsb2F0IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXRcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgKCogVG9vbHMgdG8gcHJldHR5LXByaW50IGZvcm1hdHMgKilcblxuKCogVHlwZSBvZiBleHRlbnNpYmxlIGNoYXJhY3RlciBidWZmZXJzLiAqKVxudHlwZSBidWZmZXIgPSB7XG4gIG11dGFibGUgaW5kIDogaW50O1xuICBtdXRhYmxlIGJ5dGVzIDogYnl0ZXM7XG59XG5cbigqIENyZWF0ZSBhIGZyZXNoIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY3JlYXRlIGluaXRfc2l6ZSA9IHsgaW5kID0gMDsgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgaW5pdF9zaXplIH1cblxuKCogQ2hlY2sgc2l6ZSBvZiB0aGUgYnVmZmVyIGFuZCBncm93IGl0IGlmIG5lZWRlZC4gKilcbmxldCBidWZmZXJfY2hlY2tfc2l6ZSBidWYgb3ZlcmhlYWQgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1Zi5ieXRlcyBpblxuICBsZXQgbWluX2xlbiA9IGJ1Zi5pbmQgKyBvdmVyaGVhZCBpblxuICBpZiBtaW5fbGVuID4gbGVuIHRoZW4gKFxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1heCAobGVuICogMikgbWluX2xlbiBpblxuICAgIGxldCBuZXdfc3RyID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1Zi5ieXRlcyAwIG5ld19zdHIgMCBsZW47XG4gICAgYnVmLmJ5dGVzIDwtIG5ld19zdHI7XG4gIClcblxuKCogQWRkIHRoZSBjaGFyYWN0ZXIgYGMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjID1cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIDE7XG4gIEJ5dGVzLnNldCBidWYuYnl0ZXMgYnVmLmluZCBjO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyAxXG5cbigqIEFkZCB0aGUgc3RyaW5nIGBzJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzID1cbiAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgYnVmZmVyX2NoZWNrX3NpemUgYnVmIHN0cl9sZW47XG4gIFN0cmluZy5ibGl0IHMgMCBidWYuYnl0ZXMgYnVmLmluZCBzdHJfbGVuO1xuICBidWYuaW5kIDwtIGJ1Zi5pbmQgKyBzdHJfbGVuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiB0aGUgYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jb250ZW50cyBidWYgPVxuICBCeXRlcy5zdWJfc3RyaW5nIGJ1Zi5ieXRlcyAwIGJ1Zi5pbmRcblxuKCoqKilcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIGNvbnZlcnNpb24gdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2ljb252IGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9kIHwgSW50X3BkIHwgSW50X3NkIHwgSW50X0NkIC0+ICdkJyB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpXG4gIHwgSW50X0NpIC0+ICdpJyB8IEludF94IHwgSW50X0N4IC0+ICd4JyB8IEludF9YIHwgSW50X0NYIC0+ICdYJyB8IEludF9vXG4gIHwgSW50X0NvIC0+ICdvJyB8IEludF91IHwgSW50X0N1IC0+ICd1J1xuXG4oKiBDb252ZXJ0IGEgZmxvYXQgY29udmVyc2lvbiB0byBjaGFyLiAqKVxuKCogYGNGJyB3aWxsIGJlICdGJyBmb3IgZGlzcGxheWluZyBmb3JtYXQgYW5kICdnJyB0byBjYWxsIGxpYmMgcHJpbnRmICopXG5sZXQgY2hhcl9vZl9mY29udiA/KGNGPSdGJykgZmNvbnYgPSBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2YgLT4gJ2YnIHwgRmxvYXRfZSAtPiAnZSdcbiAgfCBGbG9hdF9FIC0+ICdFJyB8IEZsb2F0X2cgLT4gJ2cnXG4gIHwgRmxvYXRfRyAtPiAnRycgfCBGbG9hdF9GIC0+IGNGXG4gIHwgRmxvYXRfaCAtPiAnaCcgfCBGbG9hdF9IIC0+ICdIJ1xuICB8IEZsb2F0X0NGIC0+ICdGJ1xuXG5cbigqIENvbnZlcnQgYSBzY2FubmluZyBjb3VudGVyIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIgPSBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgIC0+ICdsJ1xuICB8IENoYXJfY291bnRlciAgLT4gJ24nXG4gIHwgVG9rZW5fY291bnRlciAtPiAnTidcblxuKCoqKilcblxuKCogUHJpbnQgYSBjaGFyX3NldCBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBPQ2FtbCBmb3JtYXQgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQgPVxuICBsZXQgcmVjIHByaW50X3N0YXJ0IHNldCA9XG4gICAgbGV0IGlzX2Fsb25lIGMgPVxuICAgICAgbGV0IGJlZm9yZSwgYWZ0ZXIgPSBDaGFyLihjaHIgKGNvZGUgYyAtIDEpLCBjaHIgKGNvZGUgYyArIDEpKSBpblxuICAgICAgaXNfaW5fY2hhcl9zZXQgc2V0IGNcbiAgICAgICYmIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IGJlZm9yZSAmJiBpc19pbl9jaGFyX3NldCBzZXQgYWZ0ZXIpIGluXG4gICAgaWYgaXNfYWxvbmUgJ10nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSc7XG4gICAgcHJpbnRfb3V0IHNldCAxO1xuICAgIGlmIGlzX2Fsb25lICctJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nO1xuICBhbmQgcHJpbnRfb3V0IHNldCBpID1cbiAgICBpZiBpIDwgMjU2IHRoZW5cbiAgICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlbiBwcmludF9maXJzdCBzZXQgaVxuICAgICAgZWxzZSBwcmludF9vdXQgc2V0IChpICsgMSlcbiAgYW5kIHByaW50X2ZpcnN0IHNldCBpID1cbiAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICdcXDI1NScgLT4gcHJpbnRfY2hhciBidWYgMjU1O1xuICAgIHwgJ10nIHwgJy0nIC0+IHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICB8IF8gLT4gcHJpbnRfc2Vjb25kIHNldCAoaSArIDEpO1xuICBhbmQgcHJpbnRfc2Vjb25kIHNldCBpID1cbiAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW5cbiAgICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgICAgfCAnXFwyNTUnIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NDtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU1O1xuICAgICAgfCAnXScgfCAnLScgd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICAgIHwgXyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDIpO1xuICAgICAgfCBfIC0+XG4gICAgICAgIHByaW50X2luIHNldCAoaSAtIDEpIChpICsgMik7XG4gICAgZWxzZSAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIClcbiAgYW5kIHByaW50X2luIHNldCBpIGogPVxuICAgIGlmIGogPSAyNTYgfHwgbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGopKSB0aGVuIChcbiAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaW50X29mX2NoYXIgJy0nKTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChqIC0gMSk7XG4gICAgICBpZiBqIDwgMjU2IHRoZW4gcHJpbnRfb3V0IHNldCAoaiArIDEpO1xuICAgICkgZWxzZVxuICAgICAgcHJpbnRfaW4gc2V0IGkgKGogKyAxKTtcbiAgYW5kIHByaW50X2NoYXIgYnVmIGkgPSBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICB8ICclJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgfCAnQCcgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0AnO1xuICAgIHwgYyAgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgaW5cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnWyc7XG4gIHByaW50X3N0YXJ0IChcbiAgICBpZiBpc19pbl9jaGFyX3NldCBjaGFyX3NldCAnXFwwMDAnXG4gICAgdGhlbiAoIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ14nOyByZXZfY2hhcl9zZXQgY2hhcl9zZXQgKVxuICAgIGVsc2UgY2hhcl9zZXRcbiAgKTtcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXSdcblxuKCoqKilcblxuKCogUHJpbnQgYSBwYWR0eSBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eSA9IG1hdGNoIHBhZHR5IHdpdGhcbiAgfCBMZWZ0ICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICctJ1xuICB8IFJpZ2h0IC0+ICgpXG4gIHwgWmVyb3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnMCdcblxuKCogUHJpbnQgdGhlICdfJyBvZiBhbiBpZ25vcmVkIGZsYWcgaWYgbmVlZGVkLiAqKVxubGV0IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnID1cbiAgaWYgaWduX2ZsYWcgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICdfJ1xuXG4oKioqKVxuXG5sZXQgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB3aWR0aCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgd2lkdGgpXG5cbigqKiopXG5cbigqIFByaW50IHBhZGRpbmcgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWRkaW5nIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHBhZGRpbmcgLT4gdW5pdCA9XG5mdW4gYnVmIHBhZCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT4gKClcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIG4pIC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyonXG5cbigqIFByaW50IHByZWNpc2lvbiBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3ByZWNpc2lvbiA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwcmVjaXNpb24gLT4gdW5pdCA9XG4gIGZ1biBidWYgcHJlYyAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gLT4gKClcbiAgfCBMaXRfcHJlY2lzaW9uIG4gLT5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgbik7XG4gIHwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIi4qXCJcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIG9yICcjJyBhc3NvY2lhdGVkIHRvIGFuIGludCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfcGQgfCBJbnRfcGkgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBJbnRfc2QgfCBJbnRfc2kgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBJbnRfQ3ggfCBJbnRfQ1ggfCBJbnRfQ28gfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgSW50X2QgfCBJbnRfaSB8IEludF94IHwgSW50X1ggfCBJbnRfbyB8IEludF91IC0+ICgpXG5cbigqIFByaW50IGFuIGNvbXBsZXRlIGludCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUzLipkXCIpLiAqKVxubGV0IGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyBjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCoqKilcblxuKCogUHJpbnQgdGhlIG9wdGlvbmFsICcrJywgJyAnIGFuZC9vciAnIycgYXNzb2NpYXRlZCB0byBhIGZsb2F0IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252ID1cbiAgYmVnaW4gbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgfCBGbG9hdF9mbGFnX3AgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKydcbiAgfCBGbG9hdF9mbGFnX3MgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnICdcbiAgfCBGbG9hdF9mbGFnXyAtPiAoKSBlbmQ7XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfQ0YgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfR1xuICB8IEZsb2F0X0YgfCBGbG9hdF9oIHwgRmxvYXRfSCAtPiAoKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZsb2F0IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJSsqLjNmXCIpLiAqKVxubGV0IGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfZmNvbnYgZmNvbnYpXG5cbigqIENvbXB1dGUgdGhlIGxpdGVyYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgRm9ybWF0dGluZ19saXQuICopXG4oKiBVc2VkIGJ5IFByaW50ZiBhbmQgU2NhbmYgd2hlcmUgZm9ybWF0dGluZyBpcyBub3QgaW50ZXJwcmV0ZWQuICopXG5sZXQgc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0ID0gbWF0Y2ggZm9ybWF0dGluZ19saXQgd2l0aFxuICB8IENsb3NlX2JveCAgICAgICAgICAgIC0+IFwiQF1cIlxuICB8IENsb3NlX3RhZyAgICAgICAgICAgIC0+IFwiQH1cIlxuICB8IEJyZWFrIChzdHIsIF8sIF8pICAgIC0+IHN0clxuICB8IEZGbHVzaCAgICAgICAgICAgICAgIC0+IFwiQD9cIlxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgIC0+IFwiQFxcblwiXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgLT4gXCJALlwiXG4gIHwgTWFnaWNfc2l6ZSAoc3RyLCBfKSAgLT4gc3RyXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgLT4gXCJAQFwiXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgLT4gXCJAJVwiXG4gIHwgU2Nhbl9pbmRpYyBjIC0+IFwiQFwiIF4gKFN0cmluZy5tYWtlIDEgYylcblxuKCoqKilcblxuKCogUHJpbnQgYSBsaXRlcmFsIGNoYXIgaW4gYSBidWZmZXIsIGVzY2FwZSAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNociA9IG1hdGNoIGNociB3aXRoXG4gIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUlXCJcbiAgfCBfIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgY2hyXG5cbigqIFByaW50IGEgbGl0ZXJhbCBzdHJpbmcgaW4gYSBidWZmZXIsIGVzY2FwZSBhbGwgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0ciA9XG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN0ciAtIDEgZG9cbiAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBzdHIuW2ldXG4gIGRvbmVcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHByZXR0eS1wcmludGluZyAqKVxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCB0eXBlIChhbiBmbXR0eSkgaW4gYSBidWZmZXIuICopXG5sZXQgcmVjIGJwcmludF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIGkgaiBrIGwgLlxuICAgIGJ1ZmZlciAtPiAoYSwgYiwgYywgZCwgZSwgZiwgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IHVuaXQgPVxuZnVuIGJ1ZiBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlc1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludF90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVpXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbmlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDY0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVMaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWZcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBCb29sX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlQlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFscGhhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVhXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXRcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlP1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFJlYWRlcl90eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVyXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJV9yXCI7XG4gICAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV7XCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV9XCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eSwgXywgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKFwiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlKVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBFbmRfb2ZfZm10dHkgLT4gKClcblxuKCoqKilcblxubGV0IHJlYyBpbnRfb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSBhIGIgYyAuXG4gIChhLCBiLCBjKSBjdXN0b21fYXJpdHkgLT4gaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBDdXN0b21femVybyAtPiAwXG4gIHwgQ3VzdG9tX3N1Y2MgeCAtPiAxICsgaW50X29mX2N1c3RvbV9hcml0eSB4XG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IGluIGEgYnVmZmVyLiAqKVxubGV0IGJwcmludF9mbXQgYnVmIGZtdCA9XG4gIGxldCByZWMgZm10aXRlciA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBib29sIC0+IHVuaXQgPVxuICBmdW4gZm10IGlnbl9mbGFnIC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1MnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ24nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ0wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdjJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdCJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2EnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICd0JzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgIGZvciBfaSA9IDEgdG8gaW50X29mX2N1c3RvbV9hcml0eSBhcml0eSBkb1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJz8nO1xuICAgICAgZG9uZTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFJlYWRlciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdyJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSFcIjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3snO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ30nO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICcoJztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICcpJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiB3aWR0aF9vcHQ7IGJwcmludF9jaGFyX3NldCBidWYgY2hhcl9zZXQ7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9jb3VudGVyIGNvdW50ZXIpO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBcIjBjXCI7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgICAgZm10aXRlciBmbXQnIHRydWU7XG5cbiAgICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQpO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBmbXRpbmdfZ2VuIHdpdGhcbiAgICAgIHwgT3Blbl90YWcgKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQHtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgfCBPcGVuX2JveCAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAW1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICBlbmQ7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IEVuZF9vZl9mb3JtYXQgLT4gKClcblxuICBpbiBmbXRpdGVyIGZtdCBmYWxzZVxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHRvIHN0cmluZy4gKilcbmxldCBzdHJpbmdfb2ZfZm10IGZtdCA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXQgYnVmIGZtdDtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlIGV4dHJhY3Rpb24gKilcblxudHlwZSAoXywgXykgZXEgPSBSZWZsIDogKCdhLCAnYSkgZXFcblxuKCogSW52YXJpYW50OiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBvbiB2YWx1ZXMuXG5cbiAgIEluIHBhcnRpY3VsYXIsIGlmICh0eTEsIHR5MikgaGF2ZSBlcXVhbCB2YWx1ZXMsIHRoZW5cbiAgICh0cmFucyAoc3ltbSB0eTEpIHR5MikgcmVzcGVjdHMgdGhlICd0cmFucycgcHJlY29uZGl0aW9uLiAqKVxubGV0IHJlYyBzeW1tIDogdHlwZSBhMSBiMSBjMSBkMSBlMSBmMSBhMiBiMiBjMiBkMiBlMiBmMiAuXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdHR5X3JlbFxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPiBDaGFyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50X3R5IHJlc3QgLT4gSW50X3R5IChzeW1tIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPiBJbnQzMl90eSAoc3ltbSByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT4gSW50NjRfdHkgKHN5bW0gcmVzdClcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPiBOYXRpdmVpbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+IEZsb2F0X3R5IChzeW1tIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+IEJvb2xfdHkgKHN5bW0gcmVzdClcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPiBTdHJpbmdfdHkgKHN5bW0gcmVzdClcbiAgfCBUaGV0YV90eSByZXN0IC0+IFRoZXRhX3R5IChzeW1tIHJlc3QpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPiBBbHBoYV90eSAoc3ltbSByZXN0KVxuICB8IEFueV90eSByZXN0IC0+IEFueV90eSAoc3ltbSByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+IFJlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT4gSWdub3JlZF9yZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfYXJnX3R5ICh0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgc3ltbSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIsIHR5MSwgc3ltbSByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxubGV0IHJlYyBmbXR0eV9yZWxfZGV0IDogdHlwZSBhMSBiIGMgZDEgZTEgZjEgYTIgZDIgZTIgZjIgLlxuICAoYTEsIGIsIGMsIGQxLCBlMSwgZjEsXG4gICBhMiwgYiwgYywgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKChmMSwgZjIpIGVxIC0+IChhMSwgYTIpIGVxKVxuICAqICgoYTEsIGEyKSBlcSAtPiAoZjEsIGYyKSBlcSlcbiAgKiAoKGUxLCBlMikgZXEgLT4gKGQxLCBkMikgZXEpXG4gICogKChkMSwgZDIpIGVxIC0+IChlMSwgZTIpIGVxKVxuPSBmdW5jdGlvblxuICB8IEVuZF9vZl9mbXR0eSAtPlxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKVxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRmxvYXRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG5cbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBGb3JtYXRfYXJnX3R5IChfdHksIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBsZXQgYWcsIGdhLCBkaiwgamQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBsZXQgUmVmbCA9IGFnIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZ2EgUmVmbCBpbiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBsZXQgUmVmbCA9IGRqIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gamQgUmVmbCBpbiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcblxuKCogUHJlY29uZGl0aW9uOiB3ZSBhc3N1bWUgdGhhdCB0aGUgdHdvIGZtdHR5X3JlbCBhcmd1bWVudHMgaGF2ZSBlcXVhbFxuICAgdmFsdWVzIChhdCBwb3NzaWJseSBkaXN0aW5jdCB0eXBlcyk7IHRoaXMgaW52YXJpYW50IGNvbWVzIGZyb20gdGhlIHdheVxuICAgZm10dHlfcmVsIHdpdG5lc3NlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIHR5cGUtY2hlY2tlclxuXG4gICBUaGUgY29kZSBiZWxvdyB1c2VzIChhc3NlcnQgZmFsc2UpIHdoZW4gdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbi4gVGhlXG4gICBjb2RlIHBhdHRlcm4gaXMgdGhlIGZvbGxvd2luZzpcblxuICAgICB8IEZvbyB4LCBGb28geSAtPlxuICAgICAgICgqIGNhc2Ugd2hlcmUgaW5kZWVkIGJvdGggdmFsdWVzXG4gICAgICAgICAgc3RhcnQgd2l0aCBjb25zdHJ1Y3RvciBGb28gKilcbiAgICAgfCBGb28gXywgX1xuICAgICB8IF8sIEZvbyBfIC0+XG4gICAgICAgKCogZGlmZmVyZW50IGhlYWQgY29uc3RydWN0b3JzOiBicm9rZW4gcHJlY29uZGl0aW9uICopXG4gICAgICAgYXNzZXJ0IGZhbHNlXG4qKVxuYW5kIHRyYW5zIDogdHlwZVxuICBhMSBiMSBjMSBkMSBlMSBmMVxuICBhMiBiMiBjMiBkMiBlMiBmMlxuICBhMyBiMyBjMyBkMyBlMyBmM1xuLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbi0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuPSBmdW4gdHkxIHR5MiAtPiBtYXRjaCB0eTEsIHR5MiB3aXRoXG4gIHwgQ2hhcl90eSByZXN0MSwgQ2hhcl90eSByZXN0MiAtPiBDaGFyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBTdHJpbmdfdHkgcmVzdDEsIFN0cmluZ190eSByZXN0MiAtPiBTdHJpbmdfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEJvb2xfdHkgcmVzdDEsIEJvb2xfdHkgcmVzdDIgLT4gQm9vbF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50X3R5IHJlc3QxLCBJbnRfdHkgcmVzdDIgLT4gSW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQzMl90eSByZXN0MSwgSW50MzJfdHkgcmVzdDIgLT4gSW50MzJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDY0X3R5IHJlc3QxLCBJbnQ2NF90eSByZXN0MiAtPiBJbnQ2NF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QxLCBOYXRpdmVpbnRfdHkgcmVzdDIgLT4gTmF0aXZlaW50X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBGbG9hdF90eSByZXN0MSwgRmxvYXRfdHkgcmVzdDIgLT4gRmxvYXRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuXG4gIHwgQWxwaGFfdHkgcmVzdDEsIEFscGhhX3R5IHJlc3QyIC0+IEFscGhhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbHBoYV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFscGhhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBUaGV0YV90eSByZXN0MSwgVGhldGFfdHkgcmVzdDIgLT4gVGhldGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFRoZXRhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgVGhldGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEFueV90eSByZXN0MSwgQW55X3R5IHJlc3QyIC0+IEFueV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQW55X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQW55X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBSZWFkZXJfdHkgcmVzdDEsIFJlYWRlcl90eSByZXN0MiAtPiBSZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFJlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFJlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDEsIElnbm9yZWRfcmVhZGVyX3R5IHJlc3QyIC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgSWdub3JlZF9yZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9hcmdfdHkgKHR5MSwgcmVzdDEpLCBGb3JtYXRfYXJnX3R5ICh0eTIsIHJlc3QyKSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHRyYW5zIHR5MSB0eTIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9hcmdfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfYXJnX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MTIsIHJlc3QxKSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MjEsIHR5MjIsIHJlc3QyKSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MTIpIHR5MjEgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkyMiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X3N1YnN0X3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBFbmRfb2ZfZm10dHksIEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcbiAgfCBFbmRfb2ZfZm10dHksIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRW5kX29mX2ZtdHR5IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcmVjIGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm9ybWF0dGluZ19nZW4gLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEV4dHJhY3QgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gKGFuIGZtdHR5KSBvZiBhIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG5cbiAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDMyX3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChOYXRpdmVpbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50NjRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoRmxvYXRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG5cbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBCb29sIChwYWQsIHJlc3QpICAgICAgICAgICAtPlxuICAgICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKEJvb2xfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAtPiBBbHBoYV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gVGhldGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpICAgIC0+IGZtdHR5X29mX2N1c3RvbSBhcml0eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgUmVhZGVyIHJlc3QgICAgICAgICAgICAgICAgLT4gUmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHksIHR5LCBmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT4gU3RyaW5nX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPiBJbnRfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgIC0+IGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0XG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgIC0+XG4gICAgY29uY2F0X2ZtdHR5IChmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiBmbXRpbmdfZ2VuKSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAtPiBFbmRfb2ZfZm10dHlcblxuYW5kIGZtdHR5X29mX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgKHksIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBhcml0eSBmbXR0eSAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gZm10dHlcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPiBBbnlfdHkgKGZtdHR5X29mX2N1c3RvbSBhcml0eSBmbXR0eSlcblxuKCogRXh0cmFjdCB0aGUgZm10dHkgb2YgYW4gaWdub3JlZCBwYXJhbWV0ZXIgZm9sbG93ZWQgYnkgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBjb25jYXRfZm10dHkgZm10dHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBJZ25vcmVkX3JlYWRlcl90eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHBhZGRpbmcgaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqc1wiKS4gKilcbmFuZCBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3BhZGRpbmcgXyAtPiBmbXR0eVxuICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBJbnRfdHkgZm10dHlcblxuKCogQWRkIGFuIEludF90eSBub2RlIGlmIHByZWNpc2lvbiBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKS4qKVxuYW5kIGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKHgsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbiAgZnVuIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgfCBOb19wcmVjaXNpb24gICAgLT4gZm10dHlcbiAgICB8IExpdF9wcmVjaXNpb24gXyAtPiBmbXR0eVxuICAgIHwgQXJnX3ByZWNpc2lvbiAgIC0+IEludF90eSBmbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBpbmcgKilcblxuKCogRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgZm9ybWF0IGRvZXMgbm90IG1hdGNoIGEgZ2l2ZW4gZm9ybWF0IHR5cGUuICopXG5leGNlcHRpb24gVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgcGFkZGluZy4gKilcbigqIFRha2UgYW4gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIHRoZSBpbnRlZ2VyIHNob3VsZCBiZSBrZXB0IGFzIGFyZ3VtZW50LiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRkaW5nIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZGRpbmdfZm10dHlfZWJiID1cbmZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkLCBmbXR0eSB3aXRoXG4gIHwgTm9fcGFkZGluZywgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTm9fcGFkZGluZywgZm10dHkpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgXyAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoTGl0X3BhZGRpbmcgKHBhZHR5LHcpLGZtdHR5KVxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBJbnRfdHkgcmVzdCAtPiBQYWRkaW5nX2ZtdHR5X0VCQiAoQXJnX3BhZGRpbmcgcGFkdHkscmVzdClcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogQ29udmVydCBhICh1cGFkZGluZywgdXByZWNpc2lvbikgdG8gYSAocGFkZGluZywgcHJlY2lzaW9uKS4gKilcbigqIFRha2Ugb25lIG9yIHR3byBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgbmVlZGVkLiAqKVxuKCogUmFpc2UgVHlwZV9taXNtYXRjaCBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgdHlwZV9wYWRwcmVjIDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgeiAuXG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6KSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIHBhZHByZWNfZm10dHlfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjLCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgfCBOb19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTm9fcHJlY2lzaW9uLCByZXN0KVxuICB8IExpdF9wcmVjaXNpb24gcCwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBMaXRfcHJlY2lzaW9uIHAsIHJlc3QpXG4gIHwgQXJnX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgSW50X3R5IHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgQXJnX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBfLCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUeXBlIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIElmIHR5cGluZyBzdWNjZWVkLCBnZW5lcmF0ZSBhIGNvcHkgb2YgdGhlIGZvcm1hdCB3aXRoIHRoZSBzYW1lXG4gICAgdHlwZSBwYXJhbWV0ZXJzIGFzIHRoZSBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHJlYyB0eXBlX2Zvcm1hdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSB3aXRoXG4gIHwgRm10X2ZtdHR5X0VCQiAoZm10JywgRW5kX29mX2ZtdHR5KSAtPiBmbXQnXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdF9nZW4gOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCBmbXQsIGZtdHR5IHdpdGhcbiAgfCBDaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhciBmbXQnLCBmbXR0eScpXG4gIHwgQ2FtbF9jaGFyIGZtdF9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9jaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBTdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIFN0cmluZ190eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQzMl90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50NjRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBGbG9hdF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgQm9vbCAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgQm9vbF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoQm9vbCAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEZsdXNoIGZtdF9yZXN0LCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZsdXNoIGZtdCcsIGZtdHR5JylcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXQnKSwgZm10dHknKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQ2hhcl9saXRlcmFsIChjaHIsIGZtdCcpLCBmbXR0eScpXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWJfZm10dHkgPD4gRm10dHlfRUJCIHN1Yl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHknLCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHkxLCBfc3ViX2ZtdHR5MiwgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eTEpIHRoZW5cbiAgICAgIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPVxuICAgICAgdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IChlcmFzZV9yZWwgZm10dHlfcmVzdClcbiAgICBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5MSwgZm10JyksIGZtdHR5JylcbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEFscGhhIGZtdF9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEFscGhhIGZtdCcsIGZtdHR5JylcbiAgfCBUaGV0YSBmbXRfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChUaGV0YSBmbXQnLCBmbXR0eScpXG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmdfZ2VuLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2Zvcm1hdHRpbmdfZ2VuIGZvcm1hdHRpbmdfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3RcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIGZtdF9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChSZWFkZXIgZm10JywgZm10dHknKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdF9yZXN0KSwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10JyksIGZtdHR5JylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCksIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCcpLCBmbXR0eScpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbSBpZ24gcmVzdCBmbXR0eV9yZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0IC0+IEZtdF9mbXR0eV9FQkIgKEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QpXG5cbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGExIGEzIGIxIGIzIGMxIGMzIGQxIGQzIGUxIGUyIGUzIGYxIGYyIGYzIC5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoZjEsIGIxLCBjMSwgZTEsIGUyLCBmMikgZm10IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5IC0+XG4gICAgKGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIGZtdDAgZm10dHkwIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuXG4oKiBUeXBlIGFuIElnbm9yZWRfcGFyYW0gbm9kZSBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtIDogdHlwZSBwIHEgeCB5IHogdCB1IHYgYSBiIGMgZCBlIGYgLlxuICAgICh4LCB5LCB6LCB0LCBxLCBwKSBpZ25vcmVkIC0+XG4gICAgKHAsIHksIHosIHEsIHUsIHYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXRfZm10dHlfZWJiID1cbmZ1biBpZ24gZm10IGZtdHR5IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQgXyAgICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQzMiBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgXyAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9pbnQ2NCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mbG9hdCBfICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgYXMgaWduJyAtPiB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIGlnbicgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSAoSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBzdWJfZm10dHkpKSBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHknLCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHkgZm10IGZtdHR5IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdHR5JylcbiAgfCBJZ25vcmVkX3JlYWRlciAtPiAoXG4gICAgbWF0Y2ggZm10dHkgd2l0aFxuICAgIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXQnKSwgZm10dHknKVxuICAgIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcblxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgOiB0eXBlIGExIGEyIGIxIGIyIGMxIGMyIGQxIGQyIGUxIGUyIGYxIGYyIC5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGQyLCBhMikgaWdub3JlZCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXQgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHkgLT5cbiAgICAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gaWduIGZtdCBmbXR0eSAtPlxuICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgaW5cbiAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoaWduLCBmbXQnKSwgZm10dHknKVxuXG4oKiBUeXBpbmcgb2YgdGhlIGNvbXBsZXggY2FzZTogXCIlXyguLi4lKVwiLiAqKVxuYW5kIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIDogdHlwZSB3IHggeSB6IHAgcyB0IHUgYSBiIGMgZCBlIGYgLlxuICAgICh3LCB4LCB5LCB6LCBzLCBwKSBmbXR0eSAtPlxuICAgIChwLCB4LCB5LCBzLCB0LCB1KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5X2ZtdF9lYmIgPVxuZnVuIHN1Yl9mbXR0eSBmbXQgZm10dHkgLT4gbWF0Y2ggc3ViX2ZtdHR5LCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSBzdWJfZm10dHlfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QsIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChTdHJpbmdfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludF90eSBzdWJfZm10dHlfcmVzdCwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDMyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChOYXRpdmVpbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQ2NF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEZsb2F0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBCb29sX3R5IHN1Yl9mbXR0eV9yZXN0LCBCb29sX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0LCBBbHBoYV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChBbHBoYV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChSZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5LCBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1YjJfZm10dHkgPD4gRm10dHlfRUJCIHN1YjJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBzdWJfZm10dHlfcmVzdCcpLCBmbXQnKVxuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eSwgIHN1YjJfZm10dHksICBzdWJfZm10dHlfcmVzdCksXG4gICAgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgKCogVE9ETyBkZWZpbmUgRm10dHlfcmVsX0VCQiB0byByZW1vdmUgdGhvc2UgZXJhc2VfcmVsICopXG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMV9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjJfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgc3ViX2ZtdHR5JyA9IHRyYW5zIChzeW1tIHN1YjFfZm10dHknKSBzdWIyX2ZtdHR5JyBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHN1Yl9mbXR0eScgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiAoZXJhc2VfcmVsIHN1Yl9mbXR0eV9yZXN0KSBmbXQgZm10dHlfcmVzdFxuICAgIGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5Jywgc3ViMl9mbXR0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1tIHN1Yl9mbXR0eV9yZXN0JyksXG4gICAgICAgICAgICAgICAgICAgZm10JylcbiAgfCBFbmRfb2ZfZm10dHksIGZtdHR5IC0+XG4gICAgRm10dHlfZm10X0VCQiAoRW5kX29mX2ZtdHR5LCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGByZWNhc3RgIGlzIGEgYml0IGRpc2FwcG9pbnRpbmcuIFRoZVxuICAgaW52YXJpYW50IHByb3ZpZGVkIGJ5IHRoZSB0eXBlIGFyZSB2ZXJ5IHN0cm9uZzogdGhlIGlucHV0IGZvcm1hdCdzXG4gICB0eXBlIGlzIGluIHJlbGF0aW9uIHRvIHRoZSBvdXRwdXQgdHlwZSdzIGFzIHdpdG5lc3NlZCBieSB0aGVcbiAgIGZtdHR5X3JlbCBhcmd1bWVudC4gT25lIHdvdWxkIGF0IGZpcnN0IGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHRvIGJlXG4gICB0b3RhbCwgYW5kIGltcGxlbWVudGFibGUgYnkgZXhoYXVzdGl2ZSBwYXR0ZXJuIG1hdGNoaW5nLiBJbnN0ZWFkLFxuICAgd2UgcmV1c2UgdGhlIGhpZ2hseSBwYXJ0aWFsIGFuZCBtdWNoIGxlc3Mgd2VsbC1kZWZpbmVkIGZ1bmN0aW9uXG4gICBgdHlwZV9mb3JtYXRgIHRoYXQgaGFzIGxvc3QgYWxsIGtub3dsZWRnZSBvZiB0aGUgY29ycmVzcG9uZGVuY2VcbiAgIGJldHdlZW4gdGhlIGFyZ3VtZW50J3MgdHlwZXMuXG5cbiAgIEJlc2lkZXMgdGhlIGZhY3QgdGhhdCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBhIGxvdCBvZiB0aGVcbiAgIGB0eXBlX2Zvcm1hdGAgbG9naWMgKGVnLjogc2VlaW5nIEludF90eSBpbiB0aGUgZm10dHkgcGFyYW1ldGVyIGRvZXNcbiAgIG5vdCBsZXQgeW91IG1hdGNoIG9uIEludCBvbmx5LCBhcyB5b3UgbWF5IGluIGZhY3QgaGF2ZSBGbG9hdFxuICAgKEFyZ19wYWRkaW5nLCAuLi4pIChcIiUuKmRcIikgYmVnaW5uaW5nIHdpdGggYW4gSW50X3R5KSwgaXQgaXMgYWxzb1xuICAgYSBwYXJ0aWFsIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSB0eXBpbmcgaW5mb3JtYXRpb24gaW4gYSBmb3JtYXQgaXNcbiAgIG5vdCBxdWl0ZSBlbm91Z2ggdG8gcmVjb25zdHJ1Y3QgaXQgdW5hbWJpZ3VvdXNseS4gRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9ybWF0IHR5cGVzIG9mIFwiJWQlX3JcIiBhbmQgXCIlX3IlZFwiIGhhdmUgdGhlIHNhbWUgZm9ybWF0NlxuICAgcGFyYW1ldGVycywgYnV0IHRoZXkgYXJlIG5vdCBhdCBhbGwgZXhjaGFuZ2VhYmxlLCBhbmQgcHV0dGluZyBvbmVcbiAgIGluIHBsYWNlIG9mIHRoZSBvdGhlciBtdXN0IHJlc3VsdCBpbiBhIGR5bmFtaWMgZmFpbHVyZS5cblxuICAgR2l2ZW4gdGhhdDpcbiAgIC0gd2UnZCBoYXZlIHRvIGR1cGxpY2F0ZSBhIGxvdCBvZiBub24tdHJpdmlhbCB0eXBpbmcgbG9naWMgZnJvbSB0eXBlX2Zvcm1hdFxuICAgLSB0aGlzIHdvdWxkbid0IGV2ZW4gZWxpbWluYXRlIChhbGwpIHRoZSBkeW5hbWljIGZhaWx1cmVzXG4gICB3ZSBkZWNpZGVkIHRvIGp1c3QgcmV1c2UgdHlwZV9mb3JtYXQgZGlyZWN0bHkgZm9yIG5vdy5cbiopXG5sZXQgcmVjYXN0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10XG49IGZ1biBmbXQgZm10dHkgLT5cbiAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQcmludGluZyB0b29scyAqKVxuXG4oKiBBZGQgcGFkZGluZyBzcGFjZXMgYXJvdW5kIGEgc3RyaW5nLiAqKVxubGV0IGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGgsIHBhZHR5ID1cbiAgICBhYnMgd2lkdGgsXG4gICAgKCogd2hpbGUgbGl0ZXJhbCBwYWRkaW5nIHdpZHRocyBhcmUgYWx3YXlzIG5vbi1uZWdhdGl2ZSxcbiAgICAgICBkeW5hbWljYWxseS1zZXQgd2lkdGhzIChBcmdfcGFkZGluZywgZWcuICUqZCkgbWF5IGJlIG5lZ2F0aXZlO1xuICAgICAgIHdlIGludGVycHJldCB0aG9zZSBhcyBzcGVjaWZ5aW5nIGEgcGFkZGluZy10by10aGUtbGVmdDsgdGhpc1xuICAgICAgIG1lYW5zIHRoYXQgJzAnIG1heSBnZXQgZHJvcHBlZCBldmVuIGlmIGl0IHdhcyBleHBsaWNpdGx5IHNldCxcbiAgICAgICBidXQ6XG4gICAgICAgLSB0aGlzIGlzIHdoYXQgdGhlIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkb2VzLCBhbmRcbiAgICAgICAgIHdlIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgaWYgcG9zc2libGVcbiAgICAgICAtIHdlIGNvdWxkIG9ubHkgc2lnbmFsIHRoaXMgaXNzdWUgYnkgZmFpbGluZyBhdCBydW50aW1lLFxuICAgICAgICAgd2hpY2ggaXMgbm90IHZlcnkgbmljZS4uLiAqKVxuICAgIGlmIHdpZHRoIDwgMCB0aGVuIExlZnQgZWxzZSBwYWR0eSBpblxuICBpZiB3aWR0aCA8PSBsZW4gdGhlbiBzdHIgZWxzZVxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHdpZHRoIChpZiBwYWR0eSA9IFplcm9zIHRoZW4gJzAnIGVsc2UgJyAnKSBpblxuICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICB8IExlZnQgIC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAwIGxlblxuICAgIHwgUmlnaHQgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDAgJiYgKHN0ci5bMF0gPSAnKycgfHwgc3RyLlswXSA9ICctJyB8fCBzdHIuWzBdID0gJyAnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAwIHN0ci5bMF07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHdpZHRoIC0gbGVuICsgMSkgKGxlbiAtIDEpXG4gICAgfCBaZXJvcyB3aGVuIGxlbiA+IDEgJiYgc3RyLlswXSA9ICcwJyAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHdpZHRoIC0gbGVuICsgMikgKGxlbiAtIDIpXG4gICAgfCBaZXJvcyAtPlxuICAgICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzICh3aWR0aCAtIGxlbikgbGVuXG4gICAgZW5kO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEFkZCAnMCcgcGFkZGluZyB0byBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqKVxubGV0IGZpeF9pbnRfcHJlY2lzaW9uIHByZWMgc3RyID1cbiAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbWF0Y2ggc3RyLlswXSB3aXRoXG4gIHwgKCcrJyB8ICctJyB8ICcgJykgYXMgYyB3aGVuIHByZWMgKyAxID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAxKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDAgYztcbiAgICBTdHJpbmcuYmxpdCBzdHIgMSByZXMgKHByZWMgLSBsZW4gKyAyKSAobGVuIC0gMSk7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgd2hlbiBwcmVjICsgMiA+IGxlbiAmJiBsZW4gPiAxICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKHByZWMgKyAyKSAnMCcgaW5cbiAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICBTdHJpbmcuYmxpdCBzdHIgMiByZXMgKHByZWMgLSBsZW4gKyA0KSAobGVuIC0gMik7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgd2hlbiBwcmVjID4gbGVuIC0+XG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgcHJlYyAnMCcgaW5cbiAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHByZWMgLSBsZW4pIGxlbjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8IF8gLT5cbiAgICBzdHJcblxuKCogRXNjYXBlIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aW5nIGNvbnZlbnRpb24uICopXG5sZXQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nIHN0ciA9XG4gIGxldCBzdHIgPSBTdHJpbmcuZXNjYXBlZCBzdHIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXFwiJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9pbnQvaW50MzIvbmF0aXZlaW50L2ludDY0IGZpcnN0IGFyZ3VtZW50XG4gICBmcm9tIGFuIGludF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9pY29udiA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlZFwiIHwgSW50X3BkIC0+IFwiJStkXCIgfCBJbnRfc2QgLT4gXCIlIGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWlcIiB8IEludF9waSAtPiBcIiUraVwiIHwgSW50X3NpIC0+IFwiJSBpXCJcbiAgfCBJbnRfeCAtPiBcIiV4XCIgfCBJbnRfQ3ggLT4gXCIlI3hcIlxuICB8IEludF9YIC0+IFwiJVhcIiB8IEludF9DWCAtPiBcIiUjWFwiXG4gIHwgSW50X28gLT4gXCIlb1wiIHwgSW50X0NvIC0+IFwiJSNvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiV1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udkwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJUxkXCIgfCBJbnRfcGQgLT4gXCIlK0xkXCIgfCBJbnRfc2QgLT4gXCIlIExkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVMaVwiIHwgSW50X3BpIC0+IFwiJStMaVwiIHwgSW50X3NpIC0+IFwiJSBMaVwiXG4gIHwgSW50X3ggLT4gXCIlTHhcIiB8IEludF9DeCAtPiBcIiUjTHhcIlxuICB8IEludF9YIC0+IFwiJUxYXCIgfCBJbnRfQ1ggLT4gXCIlI0xYXCJcbiAgfCBJbnRfbyAtPiBcIiVMb1wiIHwgSW50X0NvIC0+IFwiJSNMb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlTHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252bCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbGRcIiB8IEludF9wZCAtPiBcIiUrbGRcIiB8IEludF9zZCAtPiBcIiUgbGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJWxpXCIgfCBJbnRfcGkgLT4gXCIlK2xpXCIgfCBJbnRfc2kgLT4gXCIlIGxpXCJcbiAgfCBJbnRfeCAtPiBcIiVseFwiIHwgSW50X0N4IC0+IFwiJSNseFwiXG4gIHwgSW50X1ggLT4gXCIlbFhcIiB8IEludF9DWCAtPiBcIiUjbFhcIlxuICB8IEludF9vIC0+IFwiJWxvXCIgfCBJbnRfQ28gLT4gXCIlI2xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVsdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZuID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVuZFwiIHwgSW50X3BkIC0+IFwiJStuZFwiIHwgSW50X3NkIC0+IFwiJSBuZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbmlcIiB8IEludF9waSAtPiBcIiUrbmlcIiB8IEludF9zaSAtPiBcIiUgbmlcIlxuICB8IEludF94IC0+IFwiJW54XCIgfCBJbnRfQ3ggLT4gXCIlI254XCJcbiAgfCBJbnRfWCAtPiBcIiVuWFwiIHwgSW50X0NYIC0+IFwiJSNuWFwiXG4gIHwgSW50X28gLT4gXCIlbm9cIiB8IEludF9DbyAtPiBcIiUjbm9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJW51XCJcblxuKCogR2VuZXJhdGUgdGhlIGZvcm1hdF9mbG9hdCBmaXJzdCBhcmd1bWVudCBmcm9tIGEgZmxvYXRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYyA9XG4gICAgbGV0IHByZWMgPSBhYnMgcHJlYyBpblxuICAgIGxldCBzeW1iID0gY2hhcl9vZl9mY29udiB+Y0Y6J2cnIGZjb252IGluXG4gICAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnY7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHByZWMpO1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgc3ltYjtcbiAgICBidWZmZXJfY29udGVudHMgYnVmXG5cbmxldCB0cmFuc2Zvcm1faW50X2FsdCBpY29udiBzID1cbiAgbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgIGxldCBkaWdpdHMgPVxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgfCAnMCcuLic5JyAtPiBpbmNyIG5cbiAgICAgICAgfCBfIC0+ICgpXG4gICAgICBkb25lO1xuICAgICAgIW5cbiAgICBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIChkaWdpdHMgLSAxKSAvIDMpIGluXG4gICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgbGV0IHB1dCBjID0gQnl0ZXMuc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zIGluXG4gICAgbGV0IGxlZnQgPSByZWYgKChkaWdpdHMgLSAxKSBtb2QgMyArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICcwJy4uJzknIGFzIGMgLT5cbiAgICAgICAgICBpZiAhbGVmdCA9IDAgdGhlbiAocHV0ICdfJzsgbGVmdCA6PSAzKTsgZGVjciBsZWZ0OyBwdXQgY1xuICAgICAgfCBjIC0+IHB1dCBjXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICB8IF8gLT4gc1xuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgY29udmVyc2lvbi4gKilcbmxldCBjb252ZXJ0X2ludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQgKGZvcm1hdF9vZl9pY29udiBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDMyIGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDMyIChmb3JtYXRfb2ZfaWNvbnZsIGljb252KSBuKVxubGV0IGNvbnZlcnRfbmF0aXZlaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X25hdGl2ZWludCAoZm9ybWF0X29mX2ljb252biBpY29udikgbilcbmxldCBjb252ZXJ0X2ludDY0IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludDY0IChmb3JtYXRfb2ZfaWNvbnZMIGljb252KSBuKVxuXG4oKiBDb252ZXJ0IGEgZmxvYXQgdG8gc3RyaW5nLiAqKVxuKCogRml4IHNwZWNpYWwgY2FzZSBvZiBcIk9DYW1sIGZsb2F0IGZvcm1hdFwiLiAqKVxubGV0IGNvbnZlcnRfZmxvYXQgZmNvbnYgcHJlYyB4ID1cbiAgbGV0IGhleCAoKSA9XG4gICAgbGV0IHNpZ24gPVxuICAgICAgbWF0Y2ggZnN0IGZjb252IHdpdGhcbiAgICAgIHwgRmxvYXRfZmxhZ19wIC0+ICcrJ1xuICAgICAgfCBGbG9hdF9mbGFnX3MgLT4gJyAnXG4gICAgICB8IF8gLT4gJy0nIGluXG4gICAgaGV4c3RyaW5nX29mX2Zsb2F0IHggcHJlYyBzaWduIGluXG4gIGxldCBhZGRfZG90X2lmX25lZWRlZCBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgaXNfdmFsaWQgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnLicgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gaXNfdmFsaWQgKGkgKyAxKSBpblxuICAgIGlmIGlzX3ZhbGlkIDAgdGhlbiBzdHIgZWxzZSBzdHIgXiBcIi5cIiBpblxuICBsZXQgY2FtbF9zcGVjaWFsX3ZhbCBzdHIgPSBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gc3RyXG4gICAgfCBGUF9pbmZpbml0ZSAtPiBpZiB4IDwgMC4wIHRoZW4gXCJuZWdfaW5maW5pdHlcIiBlbHNlIFwiaW5maW5pdHlcIlxuICAgIHwgRlBfbmFuIC0+IFwibmFuXCIgaW5cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9oIC0+IGhleCAoKVxuICB8IEZsb2F0X0ggLT4gU3RyaW5nLnVwcGVyY2FzZV9hc2NpaSAoaGV4ICgpKVxuICB8IEZsb2F0X0NGIC0+IGNhbWxfc3BlY2lhbF92YWwgKGhleCAoKSlcbiAgfCBGbG9hdF9GIC0+XG4gICAgbGV0IHN0ciA9IGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHggaW5cbiAgICBjYW1sX3NwZWNpYWxfdmFsIChhZGRfZG90X2lmX25lZWRlZCBzdHIpXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgLT5cbiAgICBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4XG5cbigqIENvbnZlcnQgYSBjaGFyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uLiAqKVxubGV0IGZvcm1hdF9jYW1sX2NoYXIgYyA9XG4gIGxldCBzdHIgPSBDaGFyLmVzY2FwZWQgYyBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcJycgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdHlwZSB0byBzdHJpbmcgKilcbmxldCBzdHJpbmdfb2ZfZm10dHkgZm10dHkgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10dHkgYnVmIGZtdHR5O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHByaW50aW5nIGZ1bmN0aW9uLiAqKVxuKCogVXNlZCB0byBnZW5lcmF0ZSBQcmludGYgYW5kIEZvcm1hdCBwcmludGluZyBmdW5jdGlvbnMuICopXG4oKiBQYXJhbWV0ZXJzOlxuICAgICBrOiBhIGNvbnRpbnVhdGlvbiBmaW5hbGx5IGFwcGxpZWQgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgbzogdGhlIG91dHB1dCBzdHJlYW0gKHNlZSBrLCAlYSBhbmQgJXQpLlxuICAgICBhY2M6IHJldiBsaXN0IG9mIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXNoLCBmb3JtYXR0aW5nLCAuLi4pLlxuICAgICBmbXQ6IHRoZSBmb3JtYXQuICopXG5sZXQgcmVjIG1ha2VfcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfY2FtbF9jaGFyIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCAoZnVuIHN0ciAtPiBzdHIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX3RvX2NhbWxfc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQgaWNvbnZcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50MzIgaWNvbnZcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X25hdGl2ZWludCBpY29udlxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQ2NCBpY29udlxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBmY29udlxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgc3RyaW5nX29mX2Jvb2xcbiAgfCBBbHBoYSByZXN0IC0+XG4gICAgZnVuIGYgeCAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZnVuIG8gLT4gZiBvIHgpKSByZXN0XG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIGZ1biBmIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiAoKSlcbiAgfCBSZWFkZXIgXyAtPlxuICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gKilcbiAgICAoKiBJbmRlZWQsIHNpbmNlIHByaW50ZiBhbmQgY28uIHRha2UgYSBmb3JtYXQ0IGFzIGFyZ3VtZW50LCB0aGUgJ2QgYW5kICdlXG4gICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIGZtdCBhcmUgb2J2aW91c2x5IGVxdWFscy4gVGhlIFJlYWRlciBpcyB0aGVcbiAgICAgICBvbmx5IGNvbnN0cnVjdG9yIHdoaWNoIHRvdWNoICdkIGFuZCAnZSB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIGZvcm1hdFxuICAgICAgIHR5cGUsIGl0IGFkZHMgYW4gKC0+KSB0byB0aGUgJ2QgcGFyYW1ldGVycy4gQ29uc2VxdWVudGx5LCBhIGZvcm1hdDRcbiAgICAgICBjYW5ub3QgY29udGFpbiBhIFJlYWRlciBub2RlLCBleGNlcHQgaW4gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0b1xuICAgICAgIGFuICV7Li4uJX0uIEl0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG1ha2VfcHJpbnRmIGRvIG5vdCBjYWxsXG4gICAgICAgaXRzZWxmIHJlY3Vyc2l2ZWx5IG9uIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG8gJXsuLi4lfS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2ZsdXNoIGFjYykgcmVzdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2Nfc3RyaW5nX2xpdGVyYWwgKGFjYywgc3RyKSkgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19jaGFyX2xpdGVyYWwgKGFjYywgY2hyKSkgcmVzdFxuXG4gIHwgRm9ybWF0X2FyZyAoXywgc3ViX2ZtdHR5LCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHN0cmluZ19vZl9mbXR0eSBzdWJfZm10dHkgaW5cbiAgICAoZnVuIHN0ciAtPlxuICAgICAgaWdub3JlIHN0cjtcbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCB0eSkpIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT4gbWFrZV9wcmludGYgayBhY2NcbiAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICBsZXQgbmV3X2FjYyA9IEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVtcIikgaW5cbiAgICBmdW4gXyAtPiBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgKCogVGhpcyBjYXNlIHNob3VsZCBiZSByZWZ1c2VkIGZvciBQcmludGYuICopXG4gICAgKCogQWNjZXB0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICopXG4gICAgKCogSW50ZXJwcmV0ICVsLCAlbiBhbmQgJUwgYXMgJXUuICopXG4gICAgZnVuIG4gLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9pbnQgXCIldVwiIG4pIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBtYWtlX2lnbm9yZWRfcGFyYW0gayBhY2MgaWduIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2xpdCAoYWNjLCBmbXRpbmdfbGl0KSkgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX3RhZyBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgbGV0IGsnIGthY2MgPVxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfZ2VuIChhY2MsIEFjY19vcGVuX2JveCBrYWNjKSkgcmVzdCBpblxuICAgIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10J1xuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGsgYWNjXG5cbigqIERlbGF5IHRoZSBlcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikuICopXG4oKiBHZW5lcmF0ZSBmdW5jdGlvbnMgdG8gdGFrZSByZW1haW5pbmcgYXJndW1lbnRzIChhZnRlciB0aGUgXCIlX1wiKS4gKilcbmFuZCBtYWtlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuXG5cbigqIFNwZWNpYWwgY2FzZSBvZiBwcmludGYgXCIlXyhcIi4gKilcbmFuZCBtYWtlX2Zyb21fZm10dHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBmbXR0eSAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFJlYWRlcl90eSBfICAgICAgICAgICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IF8gICAgIC0+IGFzc2VydCBmYWxzZVxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBJbnNlcnQgYW4gQWNjX2ludmFsaWRfYXJnIGluIHRoZSBhY2N1bXVsYXRvciBhbmQgY29udGludWUgdG8gZ2VuZXJhdGVcbiAgIGNsb3N1cmVzIHRvIGdldCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4gKilcbmFuZCBtYWtlX2ludmFsaWRfYXJnIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgZm10IC0+XG4gIG1ha2VfcHJpbnRmIGsgKEFjY19pbnZhbGlkX2FyZyAoYWNjLCBcIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJV9cIikpIGZtdFxuXG4oKiBGaXggcGFkZGluZywgdGFrZSBpdCBhcyBhbiBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50IGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX3BhZGRpbmcgOiB0eXBlIHggeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeiAtPiBhKSBwYWRkaW5nIC0+ICh6IC0+IHN0cmluZykgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHRyYW5zIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCB0cmFucyB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHdpZHRoICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuXG4oKiBGaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGZvciBpbnQsIGludDMyLCBuYXRpdmVpbnQgb3IgaW50NjQuICopXG4oKiBUYWtlIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4gKGludF9jb252IC0+IHogLT4gc3RyaW5nKSAtPlxuICAgIGludF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIHRyYW5zIGljb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSB0cmFucyBpY29udiB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5cbigqIENvbnZlcnQgYSBmbG9hdCwgZml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBpZiBuZWVkZWQuICopXG4oKiBUYWtlIHRoZSBmbG9hdCBhcmd1bWVudCBhbmQgb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCBmbG9hdCAtPiBhKSBwcmVjaXNpb24gLT4gZmxvYXRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyBmY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiAoZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24gZmNvbnYpIHggaW5cbiAgICAgIGxldCBzdHInID0gZml4X3BhZGRpbmcgcGFkdHkgdyBzdHIgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHInKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuYW5kIG1ha2VfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB4IC0+IHkgPVxuICBmdW4gayBhY2MgcmVzdCBhcml0eSBmIC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmIHgpXG5cbmxldCBjb25zdCB4IF8gPSB4XG5cbmxldCByZWMgbWFrZV9pcHJpbnRmIDogdHlwZSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYSA9XG4gIGZ1biBrIG8gZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IENhbWxfc3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgRmxvYXQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEJvb2wgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBUaGV0YSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9jdXN0b21fYXJpdHkgayBvIHJlc3QgYXJpdHlcbiAgICB8IFJlYWRlciBfIC0+XG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBpbXBvc3NpYmxlLCBieSB0eXBpbmcgb2YgZm9ybWF0cy4gIFNlZSB0aGVcbiAgICAgICAgICAgbm90ZSBpbiB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGZvciBtYWtlX3ByaW50Zi4gKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgICAgICBmdW4gKEZvcm1hdCAoZm10LCBfKSkgLT5cbiAgICAgICAgICBtYWtlX2lwcmludGYgayBvXG4gICAgICAgICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcbiAgICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lnbm9yZWRfcGFyYW0gKGZ1biBfIC0+IGsgbykgKEVuZF9vZl9hY2MpIGlnbiByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICAgICAgayBvXG5hbmQgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gOlxuICB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT4geCA9XG4gIGZ1biBrIG8gZm10IHBhZCBwcmVjIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IExpdF9wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgQXJnX3BhZGRpbmcgXywgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSkpXG5hbmQgZm5fb2ZfY3VzdG9tX2FyaXR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPlxuICBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geSA9XG4gIGZ1biBrIG8gZm10IC0+IGZ1bmN0aW9uXG4gICAgfCBDdXN0b21femVybyAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIGZtdFxuICAgIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICAgICAgY29uc3QgKGZuX29mX2N1c3RvbV9hcml0eSBrIG8gZm10IGFyaXR5KVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb250aW51YXRpb25zIGZvciBtYWtlX3ByaW50ZiAqKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIG8gYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAe1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gXCJAW1wiOyBvdXRwdXRfYWNjIG8gYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfc3RyaW5nIG8gc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBvdXRwdXRfY2hhciBvIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGYgb1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZmx1c2ggb1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIG8gcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgYnVmcHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7IGYgYlxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gYnVmcHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIGJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mICVhIGFuZCAldC4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIChmICgpKVxuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBiIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRXJyb3IgbWFuYWdlbWVudCAqKVxuXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIHByZXR0eS1wcmludGVkIGVycm9yIG1lc3NhZ2UuICopXG5sZXQgZmFpbHdpdGhfbWVzc2FnZSAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDI1NiBpblxuICBsZXQgayBhY2MgPSBzdHJwdXRfYWNjIGJ1ZiBhY2M7IGZhaWx3aXRoIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrIEVuZF9vZl9hY2MgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0dGluZyB0b29scyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGFuIG9wZW4gYmxvY2sgZGVzY3JpcHRpb24gKGluZGVudCwgYmxvY2tfdHlwZSkgKilcbmxldCBvcGVuX2JveF9vZl9zdHJpbmcgc3RyID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuICgwLCBQcF9ib3gpIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgaW52YWxpZF9ib3ggKCkgPSBmYWlsd2l0aF9tZXNzYWdlIFwiaW52YWxpZCBib3ggZGVzY3JpcHRpb24gJVNcIiBzdHIgaW5cbiAgICBsZXQgcmVjIHBhcnNlX3NwYWNlcyBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBpIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgLT4gcGFyc2Vfc3BhY2VzIChpICsgMSlcbiAgICAgICAgfCBfIC0+IGlcbiAgICBhbmQgcGFyc2VfbHdvcmQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJ2EnIC4uICd6JyAtPiBwYXJzZV9sd29yZCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGpcbiAgICBhbmQgcGFyc2VfaW50IGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gcGFyc2VfaW50IGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4gaiBpblxuICAgIGxldCB3c3RhcnQgPSBwYXJzZV9zcGFjZXMgMCBpblxuICAgIGxldCB3ZW5kID0gcGFyc2VfbHdvcmQgd3N0YXJ0IHdzdGFydCBpblxuICAgIGxldCBib3hfbmFtZSA9IFN0cmluZy5zdWIgc3RyIHdzdGFydCAod2VuZCAtIHdzdGFydCkgaW5cbiAgICBsZXQgbnN0YXJ0ID0gcGFyc2Vfc3BhY2VzIHdlbmQgaW5cbiAgICBsZXQgbmVuZCA9IHBhcnNlX2ludCBuc3RhcnQgbnN0YXJ0IGluXG4gICAgbGV0IGluZGVudCA9XG4gICAgICBpZiBuc3RhcnQgPSBuZW5kIHRoZW4gMCBlbHNlXG4gICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0ciBuc3RhcnQgKG5lbmQgLSBuc3RhcnQpKVxuICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIGxldCBleHBfZW5kID0gcGFyc2Vfc3BhY2VzIG5lbmQgaW5cbiAgICBpZiBleHBfZW5kIDw+IGxlbiB0aGVuIGludmFsaWRfYm94ICgpO1xuICAgIGxldCBib3hfdHlwZSA9IG1hdGNoIGJveF9uYW1lIHdpdGhcbiAgICAgIHwgXCJcIiB8IFwiYlwiIC0+IFBwX2JveFxuICAgICAgfCBcImhcIiAgICAgIC0+IFBwX2hib3hcbiAgICAgIHwgXCJ2XCIgICAgICAtPiBQcF92Ym94XG4gICAgICB8IFwiaHZcIiAgICAgLT4gUHBfaHZib3hcbiAgICAgIHwgXCJob3ZcIiAgICAtPiBQcF9ob3Zib3hcbiAgICAgIHwgXyAgICAgICAgLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICAoaW5kZW50LCBib3hfdHlwZSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBQYXJzaW5nIHRvb2xzICopXG5cbigqIENyZWF0ZSBhIHBhZGRpbmdfZm10X2ViYiBmcm9tIGEgcGFkZGluZyBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkZGluZ19mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwYWRkaW5nX2ZtdF9lYmIgPVxuZnVuIHBhZCBmbXQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChOb19wYWRkaW5nLCBmbXQpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZGRpbmdfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBmbXQpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgZm10KVxuXG4oKiBDcmVhdGUgYSBwcmVjaXNpb25fZm10X2ViYiBmcm9tIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIDogdHlwZSB4IHkgLlxuICAgICh4LCB5KSBwcmVjaXNpb24gLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHByZWNpc2lvbl9mbXRfZWJiID1cbmZ1biBwcmVjIGZtdCAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgfCBOb19wcmVjaXNpb24gICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKE5vX3ByZWNpc2lvbiwgZm10KVxuICB8IExpdF9wcmVjaXNpb24gcCAtPiBQcmVjaXNpb25fZm10X0VCQiAoTGl0X3ByZWNpc2lvbiBwLCBmbXQpXG4gIHwgQXJnX3ByZWNpc2lvbiAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChBcmdfcHJlY2lzaW9uLCBmbXQpXG5cbigqIENyZWF0ZSBhIHBhZHByZWNfZm10X2ViYiBmcm9tIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyBhbmQgdGhlIHByZWNpc2lvbiB0byBkaXNqb2luIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudHNcbiAgIGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgOiB0eXBlIHggeSB6IHQgLlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT5cbiAgICAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgKF8sIF8sIF8sIF8sIF8pIHBhZHByZWNfZm10X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10IC0+XG4gIGxldCBQcmVjaXNpb25fZm10X0VCQiAocHJlYywgZm10JykgPSBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiIHByZWMgZm10IGluXG4gIG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoTm9fcGFkZGluZywgcHJlYywgZm10JylcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkcHJlY19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIHByZWMsIGZtdCcpXG4gIHwgQXJnX3BhZGRpbmcgcyAgICAgIC0+IFBhZHByZWNfZm10X0VCQiAoQXJnX3BhZGRpbmcgcywgcHJlYywgZm10JylcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHBhcnNpbmcgKilcblxuKCogUGFyc2UgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZm9ybWF0IGFuZCBjcmVhdGUgYSBmbXRfZWJiLiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIGluIGNhc2Ugb2YgaW52YWxpZCBmb3JtYXQuICopXG5sZXQgZm10X2ViYl9vZl9zdHJpbmcgP2xlZ2FjeV9iZWhhdmlvciBzdHIgPVxuICAoKiBQYXJhbWV0ZXJzIG5hbWluZyBjb252ZW50aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBsaXRfc3RhcnQ6IHN0YXJ0IG9mIHRoZSBsaXRlcmFsIHNlcXVlbmNlLiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN0cl9pbmQ6IGN1cnJlbnQgaW5kZXggaW4gdGhlIHN0cmluZy4gICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gZW5kX2luZDogZW5kIG9mIHRoZSBjdXJyZW50IChzdWItKWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwY3RfaW5kOiBpbmRleCBvZiB0aGUgJyUnIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgKilcbiAgKCogICAtIHplcm86ICBpcyB0aGUgJzAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gbWludXM6IGlzIHRoZSAnLScgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwbHVzOiAgaXMgdGhlICcrJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGhhc2g6ICBpcyB0aGUgJyMnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gc3BhY2U6IGlzIHRoZSAnICcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBpZ246ICAgaXMgdGhlICdfJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBhZDogcGFkZGluZyBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcHJlYzogcHJlY2lzaW9uIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzeW1iOiBjaGFyIHJlcHJlc2VudGluZyB0aGUgY29udmVyc2lvbiAoJ2MnLCAncycsICdkJywgLi4uKS4gKilcbiAgKCogICAtIGNoYXJfc2V0OiBzZXQgb2YgY2hhcmFjdGVycyBhcyBiaXRtYXAgKHNlZSBzY2FuZiAlWy4uLl0pLiAgICAqKVxuXG4gIGxldCBsZWdhY3lfYmVoYXZpb3IgPSBtYXRjaCBsZWdhY3lfYmVoYXZpb3Igd2l0aFxuICAgIHwgU29tZSBmbGFnIC0+IGZsYWdcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAoKiAgV2hlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZCwgdGhlIGZvcm1hdCBwYXJzZXIgdHJpZXMgdG8gYmVoYXZlIGFzXG4gICAgICB0aGUgPDQuMDIgaW1wbGVtZW50YXRpb25zLCBpbiBwYXJ0aWN1bGFyIGl0IGlnbm9yZXMgbW9zdCBiZW5pZ25cbiAgICAgIG5vbnNlbnNpY2FsIGZvcm1hdHMuIFdoZW4gdGhlIGZsYWcgaXMgZGlzYWJsZWQsIGl0IHdpbGwgcmVqZWN0IGFueVxuICAgICAgZm9ybWF0IHRoYXQgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuXG4gICAgICBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZSBcIiUrIGRcIjogc3BlY2lmeWluZyBib3RoICcrJyAoaWYgdGhlXG4gICAgICBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoIGEgJysnIHRvIGdldCB0aGUgc2FtZSB3aWR0aCBhc1xuICAgICAgbmVnYXRpdmUgbnVtYmVycykgYW5kICcgJyAoaWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGhcbiAgICAgIGEgc3BhY2UpIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIGJ1dCB0aGUgbGVnYWN5ICg8IDQuMDIpXG4gICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaGFwcHkgdG8ganVzdCBpZ25vcmUgdGhlIHNwYWNlLlxuICAqKVxuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZCBtc2cgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIG1zZ1xuICBpblxuXG4gICgqIFVzZWQgd2hlbiB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgKG9yIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXQpIHdhcyBlbmNvdW50ZXJlZFxuICAgICAgdW5leHBlY3RlZGx5LiAqKVxuICBsZXQgdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UgZW5kX2luZFxuICAgICAgXCJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXRcIlxuICBpblxuXG4gICgqIFVzZWQgZm9yICUwYzogbm8gb3RoZXIgd2lkdGhzIGFyZSBpbXBsZW1lbnRlZCAqKVxuICBsZXQgaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kXG4gICAgICBcIm5vbi16ZXJvIHdpZHRocyBhcmUgdW5zdXBwb3J0ZWQgZm9yICVjIGNvbnZlcnNpb25zXCJcbiAgaW5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIG9wdGlvbiBkZXBlbmRlbmN5XG4gICAgIHByb2JsZW0uICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IHN0cl9pbmQgYyBzID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAnJWMnIHdpdGhvdXQgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgYyBzXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGFuIHVuZXhwZWN0ZWRcbiAgICAgY2hhcmFjdGVyLiAqKVxuICBsZXQgZXhwZWN0ZWRfY2hhcmFjdGVyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZCA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlcyBleHBlY3RlZCwgcmVhZCAlQ1wiXG4gICAgICBzdHIgc3RyX2luZCBleHBlY3RlZCByZWFkXG4gIGluXG5cbiAgKCogUGFyc2UgdGhlIHN0cmluZyBmcm9tIGJlZ19pbmQgKGluY2x1ZGVkKSB0byBlbmRfaW5kIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgcGFyc2UgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gYmVnX2luZCBlbmRfaW5kIC0+IHBhcnNlX2xpdGVyYWwgYmVnX2luZCBiZWdfaW5kIGVuZF9pbmRcblxuICAoKiBSZWFkIGxpdGVyYWwgY2hhcmFjdGVycyB1cCB0byAnJScgb3IgJ0AnIHNwZWNpYWwgY2hhcmFjdGVycy4gKilcbiAgYW5kIHBhcnNlX2xpdGVyYWwgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIEVuZF9vZl9mb3JtYXQgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2Zvcm1hdCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfYWZ0ZXJfYXQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfbGl0ZXJhbCBsaXRfc3RhcnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgKCogUGFyc2UgYSBmb3JtYXQgYWZ0ZXIgJyUnICopXG4gIGFuZCBwYXJzZV9mb3JtYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBlbmRfaW5kIC0+IHBhcnNlX2lnbiBwY3RfaW5kIChwY3RfaW5kICsgMSkgZW5kX2luZFxuXG4gIGFuZCBwYXJzZV9pZ24gOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ18nIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgKHN0cl9pbmQrMSkgZW5kX2luZCB0cnVlXG4gICAgICB8IF8gLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgZmFsc2VcblxuICBhbmQgcGFyc2VfZmxhZ3MgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmJcbiAgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgaWduIC0+XG4gICAgbGV0IHplcm8gPSByZWYgZmFsc2UgYW5kIG1pbnVzID0gcmVmIGZhbHNlXG4gICAgYW5kIHBsdXMgPSByZWYgZmFsc2UgYW5kIHNwYWNlID0gcmVmIGZhbHNlXG4gICAgYW5kIGhhc2ggPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2V0X2ZsYWcgc3RyX2luZCBmbGFnID1cbiAgICAgICgqIGluIGxlZ2FjeSBtb2RlLCBkdXBsaWNhdGUgZmxhZ3MgYXJlIGFjY2VwdGVkICopXG4gICAgICBpZiAhZmxhZyAmJiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGR1cGxpY2F0ZSBmbGFnICVDXCJcbiAgICAgICAgICBzdHIgc3RyX2luZCBzdHIuW3N0cl9pbmRdO1xuICAgICAgZmxhZyA6PSB0cnVlO1xuICAgIGluXG4gICAgbGV0IHJlYyByZWFkX2ZsYWdzIHN0cl9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnMCcgLT4gc2V0X2ZsYWcgc3RyX2luZCB6ZXJvOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICctJyAtPiBzZXRfZmxhZyBzdHJfaW5kIG1pbnVzOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJysnIC0+IHNldF9mbGFnIHN0cl9pbmQgcGx1czsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnIycgLT4gc2V0X2ZsYWcgc3RyX2luZCBoYXNoOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyAnIC0+IHNldF9mbGFnIHN0cl9pbmQgc3BhY2U7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmRcbiAgICAgICAgICAhemVybyAhbWludXMgIXBsdXMgIWhhc2ggIXNwYWNlIGlnblxuICAgICAgZW5kXG4gICAgaW5cbiAgICByZWFkX2ZsYWdzIHN0cl9pbmRcblxuICAoKiBUcnkgdG8gcmVhZCBhIGRpZ2l0YWwgb3IgYSAnKicgcGFkZGluZy4gKilcbiAgYW5kIHBhcnNlX3BhZGRpbmcgOiB0eXBlIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCB6ZXJvIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYWR0eSA9IG1hdGNoIHplcm8sIG1pbnVzIHdpdGhcbiAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IFJpZ2h0XG4gICAgICB8IGZhbHNlLCB0cnVlICAtPiBMZWZ0XG4gICAgICB8ICB0cnVlLCBmYWxzZSAtPiBaZXJvc1xuICAgICAgfCAgdHJ1ZSwgdHJ1ZSAgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGVmdFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnLScgXCIwXCIgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgIGxldCBuZXdfaW5kLCB3aWR0aCA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgKExpdF9wYWRkaW5nIChwYWR0eSwgd2lkdGgpKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gKEFyZ19wYWRkaW5nIHBhZHR5KVxuICAgIHwgXyAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgICAgfCBMZWZ0ICAtPlxuICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy0nIFwicGFkZGluZ1wiO1xuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICB8IFplcm9zIC0+XG4gICAgICAgICAoKiBhICcwJyBwYWRkaW5nIGluZGljYXRpb24gbm90IGZvbGxvd2VkIGJ5IGFueXRoaW5nIHNob3VsZFxuICAgICAgICAgICBiZSBpbnRlcnByZXRlZCBhcyBhIFJpZ2h0IHBhZGRpbmcgb2Ygd2lkdGggMC4gVGhpcyBpcyB1c2VkXG4gICAgICAgICAgIGJ5IHNjYW5uaW5nIGNvbnZlcnNpb25zICUwcyBhbmQgJTBjICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIChMaXRfcGFkZGluZyAoUmlnaHQsIDApKVxuICAgICAgfCBSaWdodCAtPlxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBOb19wYWRkaW5nXG4gICAgICBlbmRcblxuICAoKiBJcyBwcmVjaXNpb24gZGVmaW5lZD8gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3BhZGRpbmcgOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnLicgLT5cbiAgICAgIHBhcnNlX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZFxuICAgIHwgc3ltYiAtPlxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBOb19wcmVjaXNpb24gcGFkIHN5bWJcblxuICAoKiBSZWFkIHRoZSBkaWdpdGFsIG9yICcqJyBwcmVjaXNpb24uICopXG4gIGFuZCBwYXJzZV9wcmVjaXNpb24gOiB0eXBlIHggZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgXykgcGFkZGluZyAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZCA9XG4gICAgICBsZXQgbmV3X2luZCwgcHJlYyA9IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwIGluXG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gcHJlYykgaW5cbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kXG4gICAgfCAoJysnIHwgJy0nKSBhcyBzeW1iIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+XG4gICAgICAoKiBMZWdhY3kgbW9kZSB3b3VsZCBhY2NlcHQgYW5kIGlnbm9yZSAnKycgb3IgJy0nIGJlZm9yZSB0aGVcbiAgICAgICAgIGludGVnZXIgZGVzY3JpYmluZyB0aGUgZGVzaXJlZCBwcmVjaXNpb247IG5vdGUgdGhhdCB0aGlzXG4gICAgICAgICBjYW5ub3QgaGFwcGVuIGZvciBwYWRkaW5nIHdpZHRoLCBhcyAnKycgYW5kICctJyBhbHJlYWR5IGhhdmVcbiAgICAgICAgIGEgc2VtYW50aWNzIHRoZXJlLlxuXG4gICAgICAgICBUaGF0IHNhaWQsIHRoZSBpZGVhIChzdXBwb3J0ZWQgYnkgdGhpcyB0d2VhaykgdGhhdCB3aWR0aCBhbmRcbiAgICAgICAgIHByZWNpc2lvbiBsaXRlcmFscyBhcmUgXCJpbnRlZ2VyIGxpdGVyYWxzXCIgaW4gdGhlIE9DYW1sIHNlbnNlIGlzXG4gICAgICAgICBzdGlsbCBibGF0YW50bHkgd3JvbmcsIGFzIDEyM180NTYgb3IgMHhGRiBhcmUgcmVqZWN0ZWQuICopXG4gICAgICBwYXJzZV9saXRlcmFsIChtaW51cyB8fCBzeW1iID0gJy0nKSAoc3RyX2luZCArIDEpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIHBhZCBBcmdfcHJlY2lzaW9uXG4gICAgfCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBub3RlIHRoYXQgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRpZCBub3QgaWdub3JlICcuJyB3aXRob3V0XG4gICAgICAgICAgIGEgbnVtYmVyIChhcyBpdCBkb2VzIGZvciBwYWRkaW5nIGluZGljYXRpb25zKSwgYnV0XG4gICAgICAgICAgIGludGVycHJldHMgaXQgYXMgJy4wJyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiAwKVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX2Zvcm1hdF93aXRob3V0IChzdHJfaW5kIC0gMSkgJy4nIFwicHJlY2lzaW9uXCJcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogdCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCB5KSBwYWRkaW5nIC0+ICh6LCB0KSBwcmVjaXNpb24gLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhcnNlX2NvbnYgKHR5cGUgdSkgKHR5cGUgdikgKHBhZHByZWMgOiAodSwgdikgcGFkZGluZykgPVxuICAgICAgcGFyc2VfY29udmVyc2lvbiBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZFxuICAgICAgICBwcmVjIHBhZHByZWMgc3RyLltzdHJfaW5kXSBpblxuICAgICgqIGluIGxlZ2FjeSBtb2RlLCBzb21lIGZvcm1hdHMgKCVzIGFuZCAlUykgYWNjZXB0IGEgd2VpcmQgbWl4IG9mXG4gICAgICAgcGFkZGluZyBhbmQgcHJlY2lzaW9uLCB3aGljaCBpcyBtZXJnZWQgYXMgYSBzaW5nbGUgcGFkZGluZ1xuICAgICAgIGluZm9ybWF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gJS4xMHMgdGhlIHByZWNpc2lvbiBpcyBpbXBsaWNpdGx5XG4gICAgICAgdW5kZXJzdG9vZCBhcyBwYWRkaW5nICUxMHMsIGJ1dCB0aGUgbGVmdC1wYWRkaW5nIGNvbXBvbmVudCBtYXlcbiAgICAgICBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgbGVmdCBwYWRkaW5nIG9yIGEgbmVnYXRpdmUgcHJlY2lzaW9uOlxuICAgICAgICUtLjNzIGFuZCAlLi0zcyBhcmUgZXF1aXZhbGVudCB0byAlLTNzICopXG4gICAgbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgLT4gKFxuICAgICAgbWF0Y2ggbWludXMsIHByZWMgd2l0aFxuICAgICAgICB8IF8sIE5vX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IE5vX3BhZGRpbmdcbiAgICAgICAgfCBmYWxzZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChSaWdodCwgbikpXG4gICAgICAgIHwgdHJ1ZSwgTGl0X3ByZWNpc2lvbiBuIC0+IHBhcnNlX2NvbnYgKExpdF9wYWRkaW5nIChMZWZ0LCBuKSlcbiAgICAgICAgfCBmYWxzZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBSaWdodClcbiAgICAgICAgfCB0cnVlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIExlZnQpXG4gICAgKVxuICAgIHwgcGFkIC0+IHBhcnNlX2NvbnYgcGFkXG5cbiAgKCogQ2FzZSBhbmFseXNpcyBvbiBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfY29udmVyc2lvbiA6IHR5cGUgeCB5IHogdCB1IHYgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gKHgsIHkpIHBhZGRpbmcgLT5cbiAgICAgICAgKHosIHQpIHByZWNpc2lvbiAtPiAodSwgdikgcGFkZGluZyAtPiBjaGFyIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgcGFkcHJlYyBzeW1iIC0+XG4gICAgKCogRmxhZ3MgdXNlZCB0byBjaGVjayBvcHRpb24gdXNhZ2VzL2NvbXBhdGliaWxpdGllcy4gKilcbiAgICBsZXQgcGx1c191c2VkICA9IHJlZiBmYWxzZSBhbmQgaGFzaF91c2VkID0gcmVmIGZhbHNlXG4gICAgYW5kIHNwYWNlX3VzZWQgPSByZWYgZmFsc2UgYW5kIGlnbl91c2VkICAgPSByZWYgZmFsc2VcbiAgICBhbmQgcGFkX3VzZWQgICA9IHJlZiBmYWxzZSBhbmQgcHJlY191c2VkICA9IHJlZiBmYWxzZSBpblxuXG4gICAgKCogQWNjZXNzIHRvIG9wdGlvbnMsIHVwZGF0ZSBmbGFncy4gKilcbiAgICBsZXQgZ2V0X3BsdXMgICAgKCkgPSBwbHVzX3VzZWQgIDo9IHRydWU7IHBsdXNcbiAgICBhbmQgZ2V0X2hhc2ggICAoKSA9IGhhc2hfdXNlZCA6PSB0cnVlOyBoYXNoXG4gICAgYW5kIGdldF9zcGFjZSAgICgpID0gc3BhY2VfdXNlZCA6PSB0cnVlOyBzcGFjZVxuICAgIGFuZCBnZXRfaWduICAgICAoKSA9IGlnbl91c2VkICAgOj0gdHJ1ZTsgaWduXG4gICAgYW5kIGdldF9wYWQgICAgICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRcbiAgICBhbmQgZ2V0X3ByZWMgICAgKCkgPSBwcmVjX3VzZWQgIDo9IHRydWU7IHByZWNcbiAgICBhbmQgZ2V0X3BhZHByZWMgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZHByZWMgaW5cblxuICAgIGxldCBnZXRfaW50X3BhZCAoKSA6ICh4LHkpIHBhZGRpbmcgPVxuICAgICAgKCogJTUuM2QgaXMgYWNjZXB0ZWQgYW5kIG1lYW5pbmdmdWw6IHBhZCB0byBsZW5ndGggNSB3aXRoXG4gICAgICAgICBzcGFjZXMsIGJ1dCBmaXJzdCBwYWQgd2l0aCB6ZXJvcyB1cHRvIGxlbmd0aCAzICgwLXBhZGRpbmdcbiAgICAgICAgIGlzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBcInByZWNpc2lvblwiIGZvciBpbnRlZ2VyIGZvcm1hdHMpLlxuXG4gICAgICAgICAlMDUuM2QgaXMgcmVkdW5kYW50OiBwYWQgdG8gbGVuZ3RoIDUgKndpdGggemVyb3MqLCBidXRcbiAgICAgICAgIGZpcnN0IHBhZCB3aXRoIHplcm9zLi4uIFRvIGFkZCBpbnN1bHQgdG8gdGhlIGluanVyeSwgdGhlXG4gICAgICAgICBsZWdhY3kgaW1wbGVtZW50YXRpb24gaWdub3JlcyB0aGUgMC1wYWRkaW5nIGluZGljYXRpb24gYW5kXG4gICAgICAgICBkb2VzIHRoZSA1IHBhZGRpbmcgd2l0aCBzcGFjZXMgaW5zdGVhZC4gV2UgcmV1c2UgdGhpc1xuICAgICAgICAgaW50ZXJwcmV0YXRpb24gZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBzdGF0aWNhbGx5IHJlamVjdCB0aGlzXG4gICAgICAgICBmb3JtYXQgd2hlbiB0aGUgbGVnYWN5IG1vZGUgaXMgZGlzYWJsZWQsIHRvIHByb3RlY3Qgc3RyaWN0XG4gICAgICAgICB1c2VycyBmcm9tIHRoaXMgY29ybmVyIGNhc2UuICopXG4gICAgICAgbWF0Y2ggZ2V0X3BhZCAoKSwgZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgICAgfCBwYWQsIE5vX3ByZWNpc2lvbiAtPiBwYWRcbiAgICAgICAgIHwgTm9fcGFkZGluZywgXyAgICAgLT4gTm9fcGFkZGluZ1xuICAgICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIG4pLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgbilcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MsIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJzAnIFwicHJlY2lzaW9uXCJcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZCBpblxuXG4gICAgKCogQ2hlY2sgdGhhdCBwYWR0eSA8PiBaZXJvcy4gKilcbiAgICBsZXQgY2hlY2tfbm9fMCBzeW1iICh0eXBlIGEgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA6IChhLGIpIHBhZGRpbmcgPVxuICAgICAgbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKChMZWZ0IHwgUmlnaHQpLCBfKSAtPiBwYWRcbiAgICAgIHwgQXJnX3BhZGRpbmcgKExlZnQgfCBSaWdodCkgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgWmVyb3MgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gQXJnX3BhZGRpbmcgUmlnaHRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgIGluXG5cbiAgICAoKiBHZXQgcGFkZGluZyBhcyBhIHBhZF9vcHRpb24gKHNlZSBcIiVfXCIsIFwiJXtcIiwgXCIlKFwiIGFuZCBcIiVbXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IG9wdF9vZl9wYWQgYyAodHlwZSBhKSAodHlwZSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpID0gbWF0Y2ggcGFkIHdpdGhcbiAgICAgIHwgTm9fcGFkZGluZyAtPiBOb25lXG4gICAgICB8IExpdF9wYWRkaW5nIChSaWdodCwgd2lkdGgpIC0+IFNvbWUgd2lkdGhcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJzAnXCJcbiAgICAgIHwgTGl0X3BhZGRpbmcgKExlZnQsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInLSdcIlxuICAgICAgfCBBcmdfcGFkZGluZyBfIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJyonXCJcbiAgICBpblxuICAgIGxldCBnZXRfcGFkX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkICgpKSBpblxuICAgIGxldCBnZXRfcGFkcHJlY19vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZHByZWMgKCkpIGluXG5cbiAgICAoKiBHZXQgcHJlY2lzaW9uIGFzIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfZlwiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBnZXRfcHJlY19vcHQgKCkgPSBtYXRjaCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICB8IE5vX3ByZWNpc2lvbiAgICAgICAtPiBOb25lXG4gICAgICB8IExpdF9wcmVjaXNpb24gbmRlYyAtPiBTb21lIG5kZWNcbiAgICAgIHwgQXJnX3ByZWNpc2lvbiAgICAgIC0+IGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKidcIlxuICAgIGluXG5cbiAgICBsZXQgZm10X3Jlc3VsdCA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJywnIC0+XG4gICAgICBwYXJzZSBzdHJfaW5kIGVuZF9pbmRcbiAgICB8ICdjJyAtPlxuICAgICAgbGV0IGNoYXJfZm9ybWF0IGZtdF9yZXN0ID0gKCogJWMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKENoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IHNjYW5fZm9ybWF0IGZtdF9yZXN0ID0gKCogJTBjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3NjYW5fbmV4dF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10X3Jlc3QpXG4gICAgICBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIGdldF9wYWRfb3B0ICdjJyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgMCAtPiBzY2FuX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgICB8IFNvbWUgX24gLT5cbiAgICAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvclxuICAgICAgICAgICB0aGVuIGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmRcbiAgICAgICAgICAgZWxzZSAoKiBsZWdhY3kgaWdub3JlcyAlYyB3aWR0aHMgKikgY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgIGVuZFxuICAgIHwgJ0MnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfY2FtbF9jaGFyLGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoQ2FtbF9jaGFyIGZtdF9yZXN0KVxuICAgIHwgJ3MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoU3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ1MnIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2NhbWxfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChDYW1sX3N0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPlxuICAgICAgbGV0IGljb252ID0gY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ04nIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBUb2tlbl9jb3VudGVyIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyB8ICduJyB8ICdMJyB3aGVuIHN0cl9pbmQ9ZW5kX2luZCB8fCBub3QgKGlzX2ludF9iYXNlIHN0ci5bc3RyX2luZF0pIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIgc3ltYiBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDMyIChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50MzIgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICduJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKVxuICAgICAgICAgIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTCcgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAgIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2ludDY0IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50NjQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdmJyB8ICdlJyB8ICdFJyB8ICdnJyB8ICdHJyB8ICdGJyB8ICdoJyB8ICdIJyAtPlxuICAgICAgbGV0IGZjb252ID1cbiAgICAgICAgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZFxuICAgICAgICAgIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mbG9hdCAoZ2V0X3BhZF9vcHQgJ18nLCBnZXRfcHJlY19vcHQgKCkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEZsb2F0IChmY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnYicgfCAnQicgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfYm9vbCAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQm9vbCAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdhJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEFscGhhIGZtdF9yZXN0KVxuICAgIHwgJ3QnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoVGhldGEgZm10X3Jlc3QpXG4gICAgfCAncicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2UgRm10X0VCQiAoUmVhZGVyIGZtdF9yZXN0KVxuICAgIHwgJyEnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRmx1c2ggZm10X3Jlc3QpXG4gICAgfCAoJyUnIHwgJ0AnKSBhcyBjIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsIChjLCBmbXRfcmVzdCkpXG4gICAgfCAneycgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICd9JyBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfYXJnIChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfYXJnIChnZXRfcGFkX29wdCAneycsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJygnIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnKScgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnXycsIHN1Yl9mbXR0eSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChGb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICcoJywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnWycgLT5cbiAgICAgIGxldCBuZXh0X2luZCwgY2hhcl9zZXQgPSBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnXycsIGNoYXJfc2V0KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdbJywgY2hhcl9zZXQsIGZtdF9yZXN0KSlcbiAgICB8ICctJyB8ICcrJyB8ICcjJyB8ICcgJyB8ICdfJyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgZmxhZyAlQyBpcyBvbmx5IGFsbG93ZWQgYWZ0ZXIgdGhlICclJScsIGJlZm9yZSBwYWRkaW5nIGFuZCBwcmVjaXNpb25cIlxuICAgICAgICBzdHIgcGN0X2luZCBzeW1iXG4gICAgfCBfIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBpbnZhbGlkIGNvbnZlcnNpb24gXFxcIiUlJWNcXFwiXCIgc3RyIChzdHJfaW5kIC0gMSkgc3ltYlxuICAgIGluXG4gICAgKCogQ2hlY2sgZm9yIHVudXNlZCBvcHRpb25zLCBhbmQgcmVqZWN0IHRoZW0gYXMgaW5jb21wYXRpYmxlLlxuXG4gICAgICAgU3VjaCBjaGVja3MgbmVlZCB0byBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSwgYXMgdGhlIGxlZ2FjeVxuICAgICAgIHBhcnNlciBzaWxlbnRseSBpZ25vcmVkIGluY29tcGF0aWJsZSBmbGFncy4gKilcbiAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yIHRoZW4gYmVnaW5cbiAgICBpZiBub3QgIXBsdXNfdXNlZCAmJiBwbHVzIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCI7XG4gICAgaWYgbm90ICFoYXNoX3VzZWQgJiYgaGFzaCB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiO1xuICAgIGlmIG5vdCAhc3BhY2VfdXNlZCAmJiBzcGFjZSB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiO1xuICAgIGlmIG5vdCAhcGFkX3VzZWQgICYmIFBhZGRpbmdfRUJCIHBhZCA8PiBQYWRkaW5nX0VCQiBOb19wYWRkaW5nIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiYHBhZGRpbmcnXCI7XG4gICAgaWYgbm90ICFwcmVjX3VzZWQgJiYgUHJlY2lzaW9uX0VCQiBwcmVjIDw+IFByZWNpc2lvbl9FQkIgTm9fcHJlY2lzaW9uIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAoaWYgaWduIHRoZW4gJ18nIGVsc2Ugc3ltYilcbiAgICAgICAgXCJgcHJlY2lzaW9uJ1wiO1xuICAgIGlmIGlnbiAmJiBwbHVzIHRoZW4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicrJ1wiO1xuICAgIGVuZDtcbiAgICAoKiB0aGlzIGxhc3QgdGVzdCBtdXN0IG5vdCBiZSBkaXNhYmxlZCBpbiBsZWdhY3kgbW9kZSxcbiAgICAgICBhcyBpZ25vcmluZyBpdCB3b3VsZCB0eXBpY2FsbHkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHR5cGluZ1xuICAgICAgIHRoYW4gd2hhdCB0aGUgbGVnYWN5IHBhcnNlciB1c2VkICopXG4gICAgaWYgbm90ICFpZ25fdXNlZCAmJiBpZ24gdGhlblxuICAgICAgYmVnaW4gbWF0Y2ggc3ltYiB3aXRoXG4gICAgICAgICgqIGFyZ3VtZW50LWxlc3MgZm9ybWF0cyBjYW4gc2FmZWx5IGJlIGlnbm9yZWQgaW4gbGVnYWN5IG1vZGUgKilcbiAgICAgICAgfCAoJ0AnIHwgJyUnIHwgJyEnIHwgJywnKSB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIidfJ1wiXG4gICAgICBlbmQ7XG4gICAgZm10X3Jlc3VsdFxuXG4gICgqIFBhcnNlIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gKGFmdGVyICdAJykuICopXG4gIGFuZCBwYXJzZV9hZnRlcl9hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBFbmRfb2ZfZm9ybWF0KSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ1snIC0+XG4gICAgICAgIHBhcnNlX3RhZyBmYWxzZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV9ib3gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIHBhcnNlX3RhZyB0cnVlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnfScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX3RhZywgZm10X3Jlc3QpKVxuICAgICAgfCAnLCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAsXCIsIDAsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCBcIiwgMSwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJzsnIC0+XG4gICAgICAgIHBhcnNlX2dvb2RfYnJlYWsgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICc/JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRkZsdXNoLCBmbXRfcmVzdCkpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGb3JjZV9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRmx1c2hfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgcGFyc2VfbWFnaWNfc2l6ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ0AnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX2F0LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyB3aGVuIHN0cl9pbmQgKyAxIDwgZW5kX2luZCAmJiBzdHIuW3N0cl9pbmQgKyAxXSA9ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMikgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9wZXJjZW50LCBmbXRfcmVzdCkpXG4gICAgICB8ICclJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgZm10X3Jlc3QpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljIGMsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPG5hbWU+IGFmdGVyIFwiQHtcIiBvciBcIkBbXCIuICopXG4gIGFuZCBwYXJzZV90YWcgOiB0eXBlIGUgZiAuIGJvb2wgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBpc19vcGVuX3RhZyBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICB0cnlcbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBsZXQgaW5kID0gU3RyaW5nLmluZGV4X2Zyb20gc3RyIChzdHJfaW5kICsgMSkgJz4nIGluXG4gICAgICAgIGlmIGluZCA+PSBlbmRfaW5kIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIHN0cl9pbmQgKGluZCAtIHN0cl9pbmQgKyAxKSBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChpbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIChpbmQgKyAxKSBpblxuICAgICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoc3ViX2ZtdCwgc3ViX3N0cikgaW5cbiAgICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcbiAgICAgIHwgXyAtPlxuICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChFbmRfb2ZfZm9ybWF0LCBcIlwiKSBpblxuICAgICAgbGV0IGZvcm1hdHRpbmcgPVxuICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8d2lkdGggb2Zmc2V0PiBhZnRlciBcIkA7XCIuICopXG4gIGFuZCBwYXJzZV9nb29kX2JyZWFrIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGxldCBuZXh0X2luZCwgZm9ybWF0dGluZ19saXQgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHx8IHN0ci5bc3RyX2luZF0gPD4gJzwnIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gKFxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHdpZHRoID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzNdIHdpdGhcbiAgICAgICAgICAgICAgfCAnPicgLT5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzMtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfMyArIDEsIEJyZWFrIChzLCB3aWR0aCwgMClcbiAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNCwgb2Zmc2V0ID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzMgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF80IGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfNV0gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfNS1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF81ICsgMSwgQnJlYWsgKHMsIHdpZHRoLCBvZmZzZXQpXG4gICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgKVxuICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBzdHJfaW5kLCBCcmVhayAoXCJAO1wiLCAxLCAwKVxuICAgIGluXG4gICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgdGhlIHNpemUgaW4gYSA8bj4uICopXG4gIGFuZCBwYXJzZV9tYWdpY19zaXplIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIG1hdGNoXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+XG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgc2l6ZSA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzNdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kIC0gMikgKHN0cl9pbmRfMyAtIHN0cl9pbmQgKyAzKSBpblxuICAgICAgICAgIFNvbWUgKHN0cl9pbmRfMyArIDEsIE1hZ2ljX3NpemUgKHMsIHNpemUpKVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgJzwnLCBmbXRfcmVzdCkpXG5cbiAgKCogUGFyc2UgYW5kIGNvbnN0cnVjdCBhIGNoYXIgc2V0LiAqKVxuICBhbmQgcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuXG4gICAgbGV0IGNoYXJfc2V0ID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gICAgbGV0IGFkZF9jaGFyIGMgPVxuICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGM7XG4gICAgaW5cbiAgICBsZXQgYWRkX3JhbmdlIGMgYycgPVxuICAgICAgZm9yIGkgPSBpbnRfb2ZfY2hhciBjIHRvIGludF9vZl9jaGFyIGMnIGRvXG4gICAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCAoY2hhcl9vZl9pbnQgaSk7XG4gICAgICBkb25lO1xuICAgIGluXG5cbiAgICBsZXQgZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kID1cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogJyUlJyBhbG9uZSBpcyBub3QgYWNjZXB0ZWQgaW4gY2hhcmFjdGVyIHNldHMsIFxcXG4gICAgICAgICB1c2UgJSUlJSBpbnN0ZWFkIGF0IHBvc2l0aW9uICVkLlwiIHN0ciBzdHJfaW5kXG4gICAgaW5cblxuICAgICgqIFBhcnNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBjaGFyIHNldC4gKilcbiAgICBsZXQgcmVjIHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbGV0IGMgPSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBQYXJzZSB0aGUgY29udGVudCBvZiBhIGNoYXIgc2V0IHVudGlsIHRoZSBmaXJzdCAnXScuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogVGVzdCBmb3IgcmFuZ2UgaW4gY2hhciBzZXQuICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG4gICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIHdoZW4gYyA9ICclJyAtPlxuICAgICAgICBhZGRfY2hhciBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgaWYgYyA9ICclJyB0aGVuIGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZDtcbiAgICAgICAgKCogbm90ZSB0aGF0ICdAJyBhbG9uZSBpcyBhY2NlcHRlZCwgYXMgZG9uZSBieSB0aGUgbGVnYWN5XG4gICAgICAgICAgIGltcGxlbWVudGF0aW9uOyB0aGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgcmVxdWlyZXMgJUBcbiAgICAgICAgICAgc28gd2UgY291bGQgd2FybiBvbiB0aGF0ICopXG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGMnXG5cbiAgICAoKiBNYW5hZ2UgcmFuZ2UgaW4gY2hhciBzZXQgKGV4Y2VwdCBpZiB0aGUgJy0nIHRoZSBsYXN0IGNoYXIgYmVmb3JlICddJykgKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgICB8ICgnJScgfCAnQCcpIGFzIGMnIC0+XG4gICAgICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kXG4gICAgICAgICAgfCBfIC0+IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZFxuICAgICAgICBlbmRcbiAgICAgIHwgYycgLT5cbiAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgaW5cbiAgICBsZXQgc3RyX2luZCwgcmV2ZXJzZSA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICAgIHwgJ14nIC0+IHN0cl9pbmQgKyAxLCB0cnVlXG4gICAgICAgIHwgXyAtPiBzdHJfaW5kLCBmYWxzZSBpblxuICAgIGxldCBuZXh0X2luZCA9IHBhcnNlX2NoYXJfc2V0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgIGxldCBjaGFyX3NldCA9IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCBpblxuICAgIG5leHRfaW5kLCAoaWYgcmV2ZXJzZSB0aGVuIHJldl9jaGFyX3NldCBjaGFyX3NldCBlbHNlIGNoYXJfc2V0KVxuXG4gICgqIENvbnN1bWUgYWxsIG5leHQgc3BhY2VzLCByYWlzZSBhbiBGYWlsdXJlIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3NwYWNlcyBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgaWYgc3RyLltzdHJfaW5kXSA9ICcgJyB0aGVuIHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgZWxzZSBzdHJfaW5kXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmUgaWYgZW5kX2luZCBpc1xuICAgICByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIGFjYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBhY2MgKiAxMCArIChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnKSBpblxuICAgICAgaWYgbmV3X2FjYyA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2VyICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWRcIlxuICAgICAgICAgIHN0ciBuZXdfYWNjIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgbmV3X2FjY1xuICAgIHwgXyAtPiBzdHJfaW5kLCBhY2NcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZVxuICAgICBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9pbnRlZ2VyIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDBcbiAgICB8ICctJyAtPiAoXG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICBsZXQgbmV4dF9pbmQsIG4gPSBwYXJzZV9wb3NpdGl2ZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgMCBpblxuICAgICAgICBuZXh0X2luZCwgLW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImRpZ2l0XCIgY1xuICAgIClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQWRkIGEgbGl0ZXJhbCB0byBhIGZvcm1hdCBmcm9tIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgc3ViLXNlcXVlbmNlLiAqKVxuICBhbmQgYWRkX2xpdGVyYWwgOiB0eXBlIGEgZCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiAoYSwgXywgXywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBmbXQgLT4gbWF0Y2ggc3RyX2luZCAtIGxpdF9zdGFydCB3aXRoXG4gICAgfCAwICAgIC0+IEZtdF9FQkIgZm10XG4gICAgfCAxICAgIC0+IEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoc3RyLltsaXRfc3RhcnRdLCBmbXQpKVxuICAgIHwgc2l6ZSAtPiBGbXRfRUJCIChTdHJpbmdfbGl0ZXJhbCAoU3RyaW5nLnN1YiBzdHIgbGl0X3N0YXJ0IHNpemUsIGZtdCkpXG5cbiAgKCogU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdFxuICAgICAoaS5lLiB0aGUgY29ycmVzcG9uZGluZyBcIiV9XCIgb3IgXCIlKVwiKSAqKVxuICBhbmQgc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kIGMgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogdW5jbG9zZWQgc3ViLWZvcm1hdCwgXFxcbiAgICAgICAgIGV4cGVjdGVkIFxcXCIlJSVjXFxcIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkXCIgc3RyIGMgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICclJyAtPlxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBpZiBzdHIuW3N0cl9pbmQgKyAxXSA9IGMgdGhlbiAoKiBFbmQgb2YgZm9ybWF0IGZvdW5kICopIHN0cl9pbmQgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgIHwgJ18nIC0+XG4gICAgICAgICAgKCogU2VhcmNoIGZvciBcIiVfKFwiIG9yIFwiJV97XCIuICopXG4gICAgICAgICAgaWYgc3RyX2luZCArIDIgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMl0gd2l0aFxuICAgICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kIGNcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAoKiAley4uLiV9IHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnKCcgLT5cbiAgICAgICAgICAoKiAlKC4uLiUpIHN1Yi1mb3JtYXQgZm91bmQuICopXG4gICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgfCAnfScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJSguLi4lfS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnKSdcIiAnfSdcbiAgICAgICAgfCAnKScgLT5cbiAgICAgICAgICAoKiBFcnJvcjogJXsuLi4lKS4gKilcbiAgICAgICAgICBleHBlY3RlZF9jaGFyYWN0ZXIgKHN0cl9pbmQgKyAxKSBcImNoYXJhY3RlciAnfSdcIiAnKSdcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgZW5kXG4gICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgKCogQ2hlY2sgaWYgc3ltYiBpcyBhIHZhbGlkIGludCBjb252ZXJzaW9uIGFmdGVyIFwiJWxcIiwgXCIlblwiIG9yIFwiJUxcIiAqKVxuICBhbmQgaXNfaW50X2Jhc2Ugc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICAoKiBDb252ZXJ0IGEgY2hhciAobCwgbiBvciBMKSB0byBpdHMgYXNzb2NpYXRlZCBjb3VudGVyLiAqKVxuICBhbmQgY291bnRlcl9vZl9jaGFyIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdsJyAtPiBMaW5lX2NvdW50ZXIgIHwgJ24nIC0+IENoYXJfY291bnRlclxuICAgIHwgJ0wnIC0+IFRva2VuX2NvdW50ZXIgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGludF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIG1hdGNoIHBsdXMsIGhhc2gsIHNwYWNlLCBzeW1iIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfZCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X2lcbiAgICB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdkJyAtPiBJbnRfc2QgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnaScgLT4gSW50X3NpXG4gICAgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X3BkIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9waVxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3gnIC0+IEludF94ICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdYJyAtPiBJbnRfWFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3gnIC0+IEludF9DeCB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdYJyAtPiBJbnRfQ1hcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdvJyAtPiBJbnRfb1xuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ28nIC0+IEludF9Db1xuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ3UnIC0+IEludF91XG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnZCcgLT4gSW50X0NkXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnaScgLT4gSW50X0NpXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAndScgLT4gSW50X0N1XG4gICAgfCBfLCB0cnVlLCBfLCAneCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0N4XG4gICAgfCBfLCB0cnVlLCBfLCAnWCcgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NYXG4gICAgfCBfLCB0cnVlLCBfLCAnbycgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gSW50X0NvXG4gICAgfCBfLCB0cnVlLCBfLCAoJ2QnIHwgJ2knIHwgJ3UnKSAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgZmFsc2Ugc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicjJ1wiXG4gICAgfCB0cnVlLCBfLCB0cnVlLCBfIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCB0cnVlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIlxuICAgIHwgdHJ1ZSwgXywgZmFsc2UsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBmYWxzZSBoYXNoIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIGZhbHNlLCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIENvbnZlcnQgKHBsdXMsIHNwYWNlLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBmbG9hdF9jb252LiAqKVxuICBhbmQgY29tcHV0ZV9mbG9hdF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbGV0IGZsYWcgPSBtYXRjaCBwbHVzLCBzcGFjZSB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19cbiAgICB8IGZhbHNlLCAgdHJ1ZSAtPiBGbG9hdF9mbGFnX3NcbiAgICB8ICB0cnVlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX3BcbiAgICB8ICB0cnVlLCAgdHJ1ZSAtPlxuICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEZsb2F0X2ZsYWdfcFxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJyAnIFwiJysnXCIgaW5cbiAgICBsZXQga2luZCA9IG1hdGNoIGhhc2gsIHN5bWIgd2l0aFxuICAgIHwgXywgJ2YnIC0+IEZsb2F0X2ZcbiAgICB8IF8sICdlJyAtPiBGbG9hdF9lXG4gICAgfCBfLCAnRScgLT4gRmxvYXRfRVxuICAgIHwgXywgJ2cnIC0+IEZsb2F0X2dcbiAgICB8IF8sICdHJyAtPiBGbG9hdF9HXG4gICAgfCBfLCAnaCcgLT4gRmxvYXRfaFxuICAgIHwgXywgJ0gnIC0+IEZsb2F0X0hcbiAgICB8IGZhbHNlLCAnRicgLT4gRmxvYXRfRlxuICAgIHwgdHJ1ZSwgJ0YnIC0+IEZsb2F0X0NGXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICAgIGZsYWcsIGtpbmRcblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgaW5jb21wYXRpYmxlIG9wdGlvbnMuKilcbiAgYW5kIGluY29tcGF0aWJsZV9mbGFnIDogdHlwZSBhIC4gaW50IC0+IGludCAtPiBjaGFyIC0+IHN0cmluZyAtPiBhID1cbiAgICBmdW4gcGN0X2luZCBzdHJfaW5kIHN5bWIgb3B0aW9uIC0+XG4gICAgICBsZXQgc3ViZm10ID0gU3RyaW5nLnN1YiBzdHIgcGN0X2luZCAoc3RyX2luZCAtIHBjdF9pbmQpIGluXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAnJWMnIGluIHN1Yi1mb3JtYXQgJVNcIlxuICAgICAgICBzdHIgcGN0X2luZCBvcHRpb24gc3ltYiBzdWJmbXRcblxuICBpbiBwYXJzZSAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICgqIEd1YXJkZWQgc3RyaW5nIHRvIGZvcm1hdCBjb252ZXJzaW9ucyAqKVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgc3RyIGZtdHR5ID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCBmbXR0eSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIlxuICAgICAgc3RyIChzdHJpbmdfb2ZfZm10dHkgZm10dHkpXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIGFuIG90aGVyIGZvcm1hdC4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciAoRm9ybWF0IChmbXQnLCBzdHInKSkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IChmbXR0eV9vZl9mbXQgZm10JyksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCIgc3RyIHN0cidcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0IiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsImNhbWxfZm9ybWF0X2ludCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIkFzc2VydF9mYWlsdXJlIiwiQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIiwiU3RkbGliIiwiU3RkbGliX0J1ZmZlciIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfU3lzIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJTdGRsaWJfSW50IiwiY3JlYXRlX2NoYXJfc2V0IiwicGFyYW0iLCJhZGRfaW5fY2hhcl9zZXQiLCJjaGFyX3NldCIsImMiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImkiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiaWduIiwiZm10IiwiaWNvbnYiLCJwcmVjX29wdCIsIm5kZWMiLCJmbXR0eSIsIndpZHRoX29wdCIsImNvdW50ZXIiLCJkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiIsImZjb252IiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwiYnVmIiwib3ZlcmhlYWQiLCJsZW4iLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19zdHIiLCJidWZmZXJfYWRkX2NoYXIiLCJidWZmZXJfYWRkX3N0cmluZyIsInMiLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJvcHQiLCJjRiIsImJwcmludF9jaGFyX3NldCIsInByaW50X2NoYXIiLCJzZXQiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwic3dpdGNoZXIiLCJqIiwiYnByaW50X3BhZHR5IiwicGFkdHkiLCJicHJpbnRfaWdub3JlZF9mbGFnIiwiaWduX2ZsYWciLCJicHJpbnRfcGFkX29wdCIsImJwcmludF9wYWRkaW5nIiwicGFkIiwibiIsImJwcmludF9wcmVjaXNpb24iLCJwcmVjIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm9ybWF0dGluZ19saXQiLCJzdHIiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiY2hyIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiY3N0X0xpIiwiY3N0X2kiLCJjc3RfbGkiLCJjc3RfbmkiLCJicHJpbnRfZm10dHkiLCJzdWJfZm10dHkiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5IiwieCIsImNzdCIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwicmVzdCIsImZtdGluZ19saXQiLCJmbXRpbmdfZ2VuIiwiYXJpdHkiLCJzeW1tIiwidHkiLCJ0eTIiLCJ0eTEiLCJmbXR0eV9yZWxfZGV0IiwibWF0Y2giLCJkZSIsImFmIiwiamQiLCJnYSIsImNzdF9jYW1saW50ZXJuYWxGb3JtYXRfbWwiLCJ0cmFucyIsInJlc3QxIiwicmVzdDIiLCJ0eTEyIiwidHkxMSIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsImZtdHR5X29mX2ZtdCIsInR5X3Jlc3QiLCJwcmVjX3R5IiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwiZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IiwiVHlwZV9taXNtYXRjaCIsInR5cGVfcGFkZGluZyIsInciLCJ0eXBlX3BhZHByZWMiLCJwIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJzdWJfZm10dHkxIiwiZm10MSIsImZtdHR5MiIsImZtdDIiLCJmbXR0eTMiLCJmbXQzIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsInN1Yl9mbXR0eV9yZXN0Iiwic3ViMl9mbXR0eSIsInN1YjFfZm10dHkiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsInJlcyIsImZpeF9pbnRfcHJlY2lzaW9uIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwibCIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsInBvcyIsInB1dCIsImxlZnQiLCJjc3RfdSIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmIiwiayIsImFjYyIsImthY2MiLCJuZXdfYWNjIiwibyIsIm1ha2VfaWdub3JlZF9wYXJhbSIsIm1ha2VfZnJvbV9mbXR0eSIsIm1ha2VfaW52YWxpZF9hcmciLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsIm1ha2VfY3VzdG9tIiwibWFrZV9pcHJpbnRmIiwia29jIiwiZm5fb2ZfY3VzdG9tX2FyaXR5Iiwib3V0cHV0X2FjYyIsIm1zZyIsImJ1ZnB1dF9hY2MiLCJiIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleG4iLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiY3N0X2F0X2NoYXJhY3Rlcl9udW1iZXIiLCJjc3RfaW52YWxpZF9mb3JtYXQiLCJzdWJfZm9ybWF0IiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInJlYWQiLCJjc3RfdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwicGFyc2UiLCJsaXRfc3RhcnQiLCJlbmRfaW5kIiwiY3N0XzAiLCJwYXJzZV9mbGFncyIsInBjdF9pbmQiLCJzZXRfZmxhZyIsInplcm8iLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsImhhc2giLCJuZXdfaW5kIiwiY3N0X3ByZWNpc2lvbiIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9saXRlcmFsIiwicGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIiwicGFyc2VfY29udiIsInBhZHByZWMiLCJwYXJzZV9jb252ZXJzaW9uIiwicGx1c191c2VkIiwiZ2V0X3BsdXMiLCJoYXNoX3VzZWQiLCJnZXRfaGFzaCIsInNwYWNlX3VzZWQiLCJnZXRfc3BhY2UiLCJpZ25fdXNlZCIsImdldF9pZ24iLCJwYWRfdXNlZCIsImdldF9wYWQiLCJwcmVjX3VzZWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsImdldF9wYWRfb3B0IiwiZ2V0X3BhZHByZWNfb3B0IiwiZm10X3Jlc3VsdCIsInN1Yl9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCIsIm5leHRfaW5kIiwiY2hhcl9mb3JtYXQiLCJraW5kIiwicGFyc2VfYWZ0ZXJfYXQiLCJzdHJfaW5kXzEiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJvZmZzZXQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzaXplIiwicGFyc2VfdGFnIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwiZm9ybWF0dGluZyIsInBhcnNlX2NoYXJfc2V0IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsInBhcnNlX3Bvc2l0aXZlIiwicGFyc2VfaW50ZWdlciIsImFkZF9saXRlcmFsIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJjb21wdXRlX2ludF9jb252IiwiaW5jb21wYXRpYmxlX2ZsYWciLCJvcHRpb24iLCJzdWJmbXQiLCJjc3RfYW5kIiwiY3N0X2JhZF9pbnB1dF9mb3JtYXRfdHlwZV9taXNtIiwiZm9ybWF0X29mX3N0cmluZ19mbXR0eSIsImZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyx5QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FB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QU9GO0FBQUEsU0FFSyxxREFDNkI7QUFBQSxRQUZoQztBQUFBO0FBQUE7QUFBQSxPQTlCSjtBQUFBLFFBZ0N3QjtBQUFBLE9BUHRCO0FBQUEsUUFFSyx1REFLNkI7QUFBQSxPQU5oQztBQUFBO0FBQUE7QUFBQSxJQU1nQztBQUFBLGFBQUE4TixrQkFBQWhFLFNBQUExTSxTQUFBdUksTUFBQW9JO0FBQUFBO0FBQUFBLE1BQUFDO0FBQUFBLFFBNEJyQjtBQUFBLEtBQ2I7QUFBQSxzRUFHZ0M7QUFBQTtBQUFBLElBRWpDO0FBQUE7QUFBQTtBQUFBLElBQUFDLFVEeDVGTDtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQSxJQUFBQTtBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyx1QkFBQWxOLEtBQUE5QztBQUFBQSxRQUFBSixNQ2c2Rm9CO0FBQUEsSUFDbEIsWUFBWTtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRGo2RmQ7QUFBQTtBQUFBLGFDcTZGVTtBQUFBLEtBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNRHI2RmpDO0FBQUE7QUFBQTtBQUFBLFlBQUE0Rix3QkFBQW5OLEtBQUFqRTtBQUFBQTtBQUFBQSxLQUFBaUUsUUN5NkY0QjtBQUFBLEtBQUFsRCxNQUFBO0FBQUEsS0FBQUEsUUFDUjtBQUFBLElBQ2xCLFlBQTRCLElBQWhCLG1CQUFnQjtBQUFBLFVBQUF5SztBQUFBQSxTQUFBQSxNRDM2RjlCO0FBQUE7QUFBQSxNQzY2Rkksa0RBQzhEO0FBQUEsS0Q5NkZsRTtBQUFBO0FBQUEsR0M4NkZrRTtBQUFBLEdEOTZGbEUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzg2NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50Zi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgWGF2aWVyIExlcm95IGFuZCBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbmxldCBrZnByaW50ZiBrIG8gKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIG8gYWNjOyBrIG8pIEVuZF9vZl9hY2MgZm10XG5sZXQga2JwcmludGYgayBiIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gYnVmcHV0X2FjYyBiIGFjYzsgayBiKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGlrZnByaW50ZiBrIG9jIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgb2MgZm10XG5sZXQgaWticHJpbnRmID0gaWtmcHJpbnRmXG5cbmxldCBmcHJpbnRmIG9jIGZtdCA9IGtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBicHJpbnRmIGIgZm10ID0ga2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgaWZwcmludGYgb2MgZm10ID0gaWtmcHJpbnRmIGlnbm9yZSBvYyBmbXRcbmxldCBpYnByaW50ZiBiIGZtdCA9IGlrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBwcmludGYgZm10ID0gZnByaW50ZiBzdGRvdXQgZm10XG5sZXQgZXByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZGVyciBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgaycgYWNjID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHN0cnB1dF9hY2MgYnVmIGFjYztcbiAgICBrIChCdWZmZXIuY29udGVudHMgYnVmKSBpblxuICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gcykgZm10XG5cbmxldCBrcHJpbnRmID0ga3NwcmludGZcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYiIsImtmcHJpbnRmIiwiayIsIm8iLCJwYXJhbSIsImZtdCIsImFjYyIsImticHJpbnRmIiwiYiIsImlrZnByaW50ZiIsIm9jIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwiYnVmIiwic3ByaW50ZiIsInMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsU0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsUUFBQUMsTUNrQmE7QUFBQSxJQUNYO0FBQUE7QUFBQSxzQkFBQUM7QUFBQUEsY0FBd0I7QUFBQSxjQUFnQix1QkFBSztBQUFBO0FBQUE7QUFBQSxpQkFBZ0I7QUFBQTtBQUFBLFlBQUFDLFNBQUFMLEdBQUFNLEdBQUFKO0FBQUFBLFFBQUFDLE1BQ2xEO0FBQUEsSUFDWDtBQUFBO0FBQUEsc0JBQUFDO0FBQUFBLGNBQXdCO0FBQUEsY0FBZ0IsdUJBQUs7QUFBQTtBQUFBO0FBQUEsaUJBQWdCO0FBQUE7QUFBQSxZQUFBRyxVQUFBUCxHQUFBUSxJQUFBTjtBQUFBQSxRQUFBQyxNQUNqRDtBQUFBLElBQ1osbURBQXFCO0FBQUE7QUFBQSxZQUFBTSxRQUFBRCxJQUFBTDtBQUFBQSxJQUdGLDRCRDFCckIsb0JDMEIyQztBQUFBO0FBQUEsWUFBQU8sUUFBQUosR0FBQUgsS0FDdkIsNEJEM0JwQixtQkMyQnlDO0FBQUEsWUFBQVEsU0FBQUgsSUFBQUw7QUFBQUEsSUFDbkIsNkJENUJ0QixvQkM0QjZDO0FBQUE7QUFBQSxZQUFBUyxTQUFBTixHQUFBSDtBQUFBQSxJQUN4Qiw2QkQ3QnJCLG1CQzZCMkM7QUFBQTtBQUFBLFlBQUFVLE9BQUFWLEtBQzFCLCtCQUFrQjtBQUFBLFlBQUFXLFFBQUFYLEtBQ2pCLCtCQUFrQjtBQUFBLFlBQUFZLFNBQUFmLEdBQUFFO0FBQUFBLFFBQUFDLE1BRXZCO0FBQUEsYUFBQUgsSUFBQUk7QUFBQUEsU0FBQVksTUFFQztBQUFBLEtBQ1Y7QUFBQSxLQUNFLE9BQXFCLGNBQXJCLGlDQUFxQjtBQUFBO0FBQUEsSUFDekIsb0RBQTZCO0FBQUE7QUFBQSxZQUFBQyxRQUFBZCxLQUViLHlCQUFBZSxHQUFtQixTQUFDLE9BQUs7QUFBQSxHRHhDM0MiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjoyMzk1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGRsaWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL29jYW1sL3ByaW50ZXhjLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfb2JqX3RhZyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsNSIsImEyIiwiYTMiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUHJpbnRmIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYiIsIlN0ZGxpYl9CdWZmZXIiLCJTdGRsaWJfT2JqIiwicHJpbnRlcnMiLCJmaWVsZCIsIngiLCJpIiwiY3N0Iiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwicGFyYW0iLCJ0bCIsImhkIiwidmFsIiwicyIsInN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0byIsInQiLCJjb25zdHJ1Y3RvciIsIm1hdGNoIiwiZmllbGRzX29wdCIsImNzdF9jaGFyYWN0ZXJzIiwibG9jZm10IiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyIiwibGluZSIsImZpbGUiLCJ0b19zdHJpbmciLCJlIiwiY3N0X1VuY2F1Z2h0X2V4Y2VwdGlvbiIsImNzdF9VbmNhdWdodF9leGNlcHRpb25fcyIsInByaW50IiwiZmN0IiwiYXJnIiwiY2F0Y2gkIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJwb3MiLCJzbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJjc3RfcyIsImNzdF9Qcm9ncmFtX25vdF9saW5rZWRfd2l0aF9nXyIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsImEiLCJzdHIiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImIiLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsInN1Y2Nlc3MiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImNzdF9GYXRhbF9lcnJvcl9leGNlcHRpb24iLCJjc3RfRmF0YWxfZXJyb3JfZXhjZXB0aW9uX3MiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJleG4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJTdGRsaWJfUHJpbnRleGMiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQ0FBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtB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eldOO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0M0V1E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUFBLEtBVUo7QUFBQSxHQUFFO0FBQUEsR0FNSjtBQUFBO0FBQUE7QUFBQSxJQUFBTztBQUFBQSxNQUMyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEN1g3QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NDMzLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZnVuLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9QcmludGV4YyIsIlN0ZGxpYiIsImNvbnN0JCIsImMiLCJwYXJhbSIsImNvbXBvc2UiLCJnIiwieCIsImZsaXAiLCJ5IiwibmVnYXRlIiwicCIsInYiLCJGaW5hbGx5X3JhaXNlZCIsImV4biIsImR1bW15IiwicHJvdGVjdCIsImZpbmFsbHkkIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwiZSIsImJ0IiwicmVzdWx0Iiwid29ya19leG4iLCJ3b3JrX2J0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsWUFBQUMsT0FBQUMsR0FBQUMsT0NnQmdCLFNBQUM7QUFBQSxZQUFBQyxRQUFBVixHQUFBVyxHQUFBQyxHQUNLLE9BQUssY0FBTCxpQkFBSztBQUFBLFlBQUFDLEtBQUFiLEdBQUFZLEdBQUFFLEdBQ1YsMEJBQUs7QUFBQSxZQUFBQyxPQUFBQyxHQUFBQyxHQUNELDJCQUFLO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNRG5CMUI7QUFBQSxHQ3VCUztBQUFBO0FBQUEsY0FBQVQ7QUFBQUEsTUFBNkIsZ0NBRS9CO0FBQUEsVUFBQVUsTUFGK0IsY0FDaUI7QUFBQSxNQUExQiw0REFBaUQ7QUFBQSxLQUNuRTtBQUFBLE9BQUFDLFFBQUE7QUFBQSxZQUFBQyxRQUFBQyxVQUFBQztBQUFBQSxhQUFBQyxlQUFBZjtBQUFBQSxLQUlQLElBQUk7QUFBQSxXQUFBZ0I7QUFBQUE7QUFBQUEsT0FBQUEsSUQ3QlI7QUFBQSxPQUFBQyxLQzhCZTtBQUFBLE9BQUFQLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFtRDtBQUFBLElBRXZELFFBQUFRLFNBQU07QUFBQSxVQUFBQztBQUFBQTtBQUFBQSxNQUFBQSxXRGpDUjtBQUFBLE1BQUFDLFVDb0NvQjtBQUFBLEtBQ2Q7QUFBQSxLQUFpQjtBQUFBO0FBQUE7QUFBQSxJQUhUO0FBQUEsSUFBaUI7QUFBQSxHQUlxQjtBQUFBLEdBYnpDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRHpCWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NTA0LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IFN5cy5pb19idWZmZXJfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICB0cnlcbiAgICAgIFN0ZGxpYi5pbl9jaGFubmVsX2xlbmd0aCBpYyAtIFN0ZGxpYi5wb3NfaW4gaWNcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgICAtMVxuICBpblxuICBsZXQgaW5pdGlhbF9zaXplID0gaWYgaW5pdGlhbF9zaXplIDwgMCB0aGVuIGNodW5rX3NpemUgZWxzZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgaWYgaW5pdGlhbF9zaXplIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBpbml0aWFsX3NpemVcbiAgICBlbHNlXG4gICAgICBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBpbml0aWFsX3NpemUgaW5cbiAgbGV0IG5yZWFkID0gcmVhZF91cHRvIGljIGJ1ZiAwIGluaXRpYWxfc2l6ZSBpblxuICBpZiBucmVhZCA8IGluaXRpYWxfc2l6ZSB0aGVuICgqIEVPRiByZWFjaGVkLCBidWZmZXIgcGFydGlhbGx5IGZpbGxlZCAqKVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgbnJlYWRcbiAgZWxzZSBiZWdpbiAoKiBucmVhZCA9IGluaXRpYWxfc2l6ZSwgbWF5YmUgRU9GIHJlYWNoZWQgKilcbiAgICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgICAgKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZpbGxlZCAqKVxuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuICAgIHwgYyAtPlxuICAgICAgICAoKiBFT0Ygbm90IHJlYWNoZWQgKilcbiAgICAgICAgbGV0IHJlYyBsb29wIGJ1ZiBvZnMgPVxuICAgICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG9mcyBjaHVua19zaXplIGluXG4gICAgICAgICAgbGV0IHJlbSA9IEJ5dGVzLmxlbmd0aCBidWYgLSBvZnMgaW5cbiAgICAgICAgICAoKiBbcmVtXSBjYW4gYmUgPCBbY2h1bmtfc2l6ZV0gaWYgYnVmZmVyIHNpemUgY2xvc2UgdG9cbiAgICAgICAgICAgICBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAqKVxuICAgICAgICAgIGxldCByID0gcmVhZF91cHRvIGljIGJ1ZiBvZnMgcmVtIGluXG4gICAgICAgICAgaWYgciA8IHJlbSB0aGVuICgqIEVPRiByZWFjaGVkICopXG4gICAgICAgICAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIChvZnMgKyByKVxuICAgICAgICAgIGVsc2UgKCogciA9IHJlbSAqKVxuICAgICAgICAgICAgbG9vcCBidWYgKG9mcyArIHJlbSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgbnJlYWQgKGNodW5rX3NpemUgKyAxKSBpblxuICAgICAgICBCeXRlcy5zZXQgYnVmIG5yZWFkIGM7XG4gICAgICAgIGxvb3AgYnVmIChucmVhZCArIDEpXG4gIGVuZFxuXG5sZXQgW0B0YWlsX21vZF9jb25zXSByZWMgaW5wdXRfbGluZXMgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBsaW5lIDo6IGlucHV0X2xpbmVzIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IFtdXG5cbmxldCByZWMgZm9sZF9saW5lcyBmIGFjY3UgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgbGluZSAtPiBmb2xkX2xpbmVzIGYgKGYgYWNjdSBsaW5lKSBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBhY2N1XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmV4dGVybmFsIGlzX2JpbmFyeV9tb2RlIDogaW5fY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgaXNhdHR5IDogdCAtPiBib29sID0gXCJjYW1sX3N5c19pc2F0dHlcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImdsb2JhbF9kYXRhIiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9GdW4iLCJzdGRpbiIsIm9wZW5fYmluIiwib3Blbl90ZXh0Iiwib3Blbl9nZW4iLCJ3aXRoX29wZW4iLCJvcGVuZnVuIiwicyIsImljIiwicGFyYW0iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwiZmxhZ3MiLCJwZXJtIiwic2VlayIsInBvcyIsImxlbmd0aCIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiYyIsImV4biIsImlucHV0X2J5dGUiLCJuIiwiaW5wdXRfbGluZSIsImlucHV0IiwiaW5wdXRfYmlnYXJyYXkiLCJidWYiLCJvZnMiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfYmlnYXJyYXkiLCJyIiwicmVhbGx5X2lucHV0X3N0cmluZyIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsIm5yZWFkIiwicmVtIiwiaW5wdXRfbGluZXMiLCJsaW5lIiwiYmxvY2siLCJkc3QiLCJvZmZzZXQiLCJmb2xkX2xpbmVzIiwiYWNjdSIsInNldF9iaW5hcnlfbW9kZSIsIlN0ZGxpYl9Jbl9jaGFubmVsIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLFlBQUFDLFdBQUFD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QSxVQUFBQSxRRG5NUjtBQUFBO0FBQUEsTUNxTTZCO0FBQUEsTUFESztBQUFBO0FBQUEsU0FBQXlCLFFBQXRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUNtQjtBQUFBLFlBQUFFLFdBQUF6RCxHQUFBMEQsUUFBQTFDO0FBQUFBLFFBQUEwQyxPQUc3QjtBQUFBO0FBQUEsYUFBQUwsT0FBTTtBQUFBLFdBQUF2QjtBQUFBQSxVQUFBQSxNRHhNUjtBQUFBLDZCQzBNNkI7QUFBQSxNRDFNN0I7QUFBQTtBQUFBLFNBQUE0QixTQ3lNeUI7QUFBQSxLQUFhO0FBQUE7QUFBQSxHQUNMO0FBQUE7QUFBQSxJQUFBQyxrQkQxTWpDO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI0NzcxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvZGlnZXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgaGV4X29mX3N0cmluZyBkID1cbiAgbGV0IGNoYXJfaGV4IG4gPVxuICAgIENoYXIuY2hyIChpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnICsgblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDaGFyLmNvZGUgJ2EnICsgbiAtIDEwKSBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBkIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgKGxlbiAqIDIpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IHN0cmluZ19vZl9oZXggcyA9XG4gIGxldCBkaWdpdCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcwJy4uJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ0EnLi4nRicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8ICdhJy4uJ2YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdhJyArIDEwXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiIGluXG4gIGxldCBieXRlIGkgPSBkaWdpdCBzLltpXSBsc2wgNCArIGRpZ2l0IHMuW2krMV0gaW5cbiAgU3RyaW5nLmluaXQgKFN0cmluZy5sZW5ndGggcyAvIDIpIChmdW4gaSAtPiBDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSlcblxuKCogR2VuZXJpYyBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHQgPSBzdHJpbmdcbiAgdmFsIGhhc2hfbGVuZ3RoIDogaW50XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgLT4gdFxuICB2YWwgc3Vic3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgc3ViYnl0ZXMgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIGNoYW5uZWwgOiBpbl9jaGFubmVsIC0+IGludCAtPiB0XG4gIHZhbCBmaWxlIDogc3RyaW5nIC0+IHRcbiAgdmFsIG91dHB1dCA6IG91dF9jaGFubmVsIC0+IHQgLT4gdW5pdFxuICB2YWwgaW5wdXQgOiBpbl9jaGFubmVsIC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9oZXggOiBzdHJpbmcgLT4gdFxuZW5kXG5cbigqIEJMQUtFMiBoYXNoaW5nLCBwYXJhbWV0ZXJpemVkIGJ5IGhhc2ggc2l6ZSAqKVxuXG5tb2R1bGUgQkxBS0UyIChYOiBzaWcgdmFsIGhhc2hfbGVuZ3RoIDogaW50IGVuZCkgOiBTID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID1cbiAgICBpZiBYLmhhc2hfbGVuZ3RoIDwgMSB8fCBYLmhhc2hfbGVuZ3RoID4gNjRcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LkJMQUtFMjogd3JvbmcgaGFzaCBzaXplXCI7XG4gICAgWC5oYXNoX2xlbmd0aFxuXG4gIGxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbiAgdHlwZSBzdGF0ZVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9nZW46IGludCAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcImNhbWxfYmxha2UyX2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVwZGF0ZTogc3RhdGUgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2J5dGVzOiBpbnQgLT4gc3RyaW5nIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxha2UyX2J5dGVzXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHVuc2FmZV9ieXRlcyBoYXNoX2xlbmd0aCBcIlwiIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIjtcbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YmJ5dGVzXCI7XG4gICAgdW5zYWZlX2J5dGVzIGhhc2hfbGVuZ3RoIFwiXCIgYiBvZnMgbGVuXG5cbiAgbGV0IGNoYW5uZWwgaWMgdG9yZWFkID1cbiAgICBsZXQgYnVmX3NpemUgPSA0MDk2IGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCBjdHggPSBjcmVhdGUgKCkgaW5cbiAgICBpZiB0b3JlYWQgPCAwIHRoZW4gYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCAoKSA9XG4gICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCBidWZfc2l6ZSBpblxuICAgICAgICBpZiBuID0gMFxuICAgICAgICB0aGVuIGZpbmFsIGN0eCBoYXNoX2xlbmd0aFxuICAgICAgICBlbHNlICh1cGRhdGUgY3R4IGJ1ZiAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggYnVmIDAgbjtcbiAgICAgICAgICAgIGRvX3JlYWQgKHRvcmVhZCAtIG4pXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgaW4gZG9fcmVhZCB0b3JlYWRcbiAgICBlbmRcblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gaGFzaF9sZW5ndGhcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiBoYXNoX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGhhc2hfbGVuZ3RoICogMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxubW9kdWxlIEJMQUtFMTI4ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAxNiBlbmQpXG5tb2R1bGUgQkxBS0UyNTYgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDMyIGVuZClcbm1vZHVsZSBCTEFLRTUxMiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gNjQgZW5kKVxuXG4oKiBNRDUgaGFzaGluZyAqKVxuXG5tb2R1bGUgTUQ1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID0gMTZcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG4gIGV4dGVybmFsIHVuc2FmZV9ieXRlczogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9ieXRlc1wiXG4gIGV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9XG4gICAgdW5zYWZlX2J5dGVzIGIgMCAoQnl0ZXMubGVuZ3RoIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIlxuICAgIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG4gIGxldCBzdWJieXRlcyBiIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYiAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3ViYnl0ZXNcIlxuICAgIGVsc2UgdW5zYWZlX2J5dGVzIGIgb2ZzIGxlblxuXG4gIGxldCBmaWxlIGZpbGVuYW1lID1cbiAgICBJbl9jaGFubmVsLndpdGhfb3Blbl9iaW4gZmlsZW5hbWUgKGZ1biBpYyAtPiBjaGFubmVsIGljICgtMSkpXG5cbiAgbGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9IG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxuICBsZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG4gIGxldCB0b19oZXggZCA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gICAgaGV4X29mX3N0cmluZyBkXG5cbiAgbGV0IG9mX2hleCBzID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxuKCogRGVmYXVsdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbiBpcyBNRDUgKilcblxuaW5jbHVkZSBNRDVcblxubGV0IGZyb21faGV4ID0gb2ZfaGV4XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfYmxha2UyX2J5dGVzIiwiY2FtbF9ibGFrZTJfZmluYWwiLCJjYW1sX2JsYWtlMl9zdHJpbmciLCJjYW1sX2JsYWtlMl91cGRhdGUiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9tZDVfY2hhbiIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfbWxfYnl0ZXNfbGVuZ3RoIiwiY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIiwiY2FtbF9zdHJpbmdfZ2V0IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfSW5fY2hhbm5lbCIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0NoYXIiLCJTdGRsaWJfQnl0ZXMiLCJoZXhfb2Zfc3RyaW5nIiwiZCIsImNoYXJfaGV4IiwibiIsImxlbiIsInJlc3VsdCIsImkiLCJ4IiwiY3N0X0RpZ2VzdF9vZl9oZXgiLCJzdHJpbmdfb2ZfaGV4IiwicyIsImRpZ2l0IiwiYyIsImNzdF9EaWdlc3Rfc3ViYnl0ZXMiLCJjc3RfRGlnZXN0X3N1YnN0cmluZyIsImNzdF9EaWdlc3RfdG9faGV4IiwiQkxBS0UyIiwiWCIsImhhc2hfbGVuZ3RoIiwiY29tcGFyZSIsImVxdWFsIiwiY3N0Iiwic3RyaW5nIiwic3RyIiwiYnl0ZXMiLCJiIiwic3Vic3RyaW5nIiwib2ZzIiwic3ViYnl0ZXMiLCJjaGFubmVsIiwiaWMiLCJ0b3JlYWQiLCJidWYiLCJjdHgiLCJidWZfc2l6ZSIsImZpbGUiLCJmaWxlbmFtZSIsIm91dHB1dCIsImNoYW4iLCJkaWdlc3QiLCJpbnB1dCIsInRvX2hleCIsIm9mX2hleCIsIkJMQUtFMTI4IiwiQkxBS0UyNTYiLCJCTEFLRTUxMiJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFB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V0RwRUo7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUExQixVQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFFLE9BQUFDO0FBQUFBLElDbUtJLDBEQUF1QztBQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0FHdkMsb0RBQWlDO0FBQUEsWUFBQUMsVUFBQUgsS0FBQUksS0FBQXZCO0FBQUFBLElBR2pDO0FBQUEsS0FFSyxxQ0FBeUI7QUFBQSxJQUR6QixpREFDeUI7QUFBQTtBQUFBLFlBQUF3QixTQUFBSCxHQUFBRSxLQUFBdkI7QUFBQUEsSUFHOUI7QUFBQSxLQUVLLGtDQUFzQjtBQUFBLElBRHRCLGdEQUNzQjtBQUFBO0FBQUEsWUFBQStCLEtBQUFDO0FBQUFBLElBRzNCO0FBQUEsc0NBQUFOLElBQTZDLDRCQUFlLEdBQUM7QUFBQTtBQUFBLFlBQUFPLE9BQUFDLE1BQUFDLFFBRXRDLDBDQUF5QjtBQUFBLFlBQUFDLE1BQUFGLE1BRWpDLHNDQUEyQjtBQUFBLFlBQUFHLE9BQUF4QztBQUFBQSxJQUcxQztBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLFlBQUF5QyxPQUFBaEM7QUFBQUEsSUFHZjtBQUFBLEtBQThCO0FBQUEsSUFDOUIsdUJBQWU7QUFBQTtBQUFBLEdEL0xuQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1MDEwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvYmlnYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MTZfZWx0ID0gRmxvYXQxNl9lbHRcbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbigqIEtlZXAgdGhlIG9yZGVyIG9mIHRoZXNlIGNvbnN0cnVjdG9ycyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZFxuICAgZW51bWVyYXRpb24gaW4gYmlnYXJyYXkuaCAqKVxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICB8IEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBGbG9hdDE2IDogKGZsb2F0LCBmbG9hdDE2X2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbmxldCBmbG9hdDE2ID0gRmxvYXQxNlxubGV0IGZsb2F0MzIgPSBGbG9hdDMyXG5sZXQgZmxvYXQ2NCA9IEZsb2F0NjRcbmxldCBpbnQ4X3NpZ25lZCA9IEludDhfc2lnbmVkXG5sZXQgaW50OF91bnNpZ25lZCA9IEludDhfdW5zaWduZWRcbmxldCBpbnQxNl9zaWduZWQgPSBJbnQxNl9zaWduZWRcbmxldCBpbnQxNl91bnNpZ25lZCA9IEludDE2X3Vuc2lnbmVkXG5sZXQgaW50MzIgPSBJbnQzMlxubGV0IGludDY0ID0gSW50NjRcbmxldCBpbnQgPSBJbnRcbmxldCBuYXRpdmVpbnQgPSBOYXRpdmVpbnRcbmxldCBjb21wbGV4MzIgPSBDb21wbGV4MzJcbmxldCBjb21wbGV4NjQgPSBDb21wbGV4NjRcbmxldCBjaGFyID0gQ2hhclxuXG5sZXQga2luZF9zaXplX2luX2J5dGVzIDogdHlwZSBhIGIuIChhLCBiKSBraW5kIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgRmxvYXQxNiAtPiAyXG4gIHwgRmxvYXQzMiAtPiA0XG4gIHwgRmxvYXQ2NCAtPiA4XG4gIHwgSW50OF9zaWduZWQgLT4gMVxuICB8IEludDhfdW5zaWduZWQgLT4gMVxuICB8IEludDE2X3NpZ25lZCAtPiAyXG4gIHwgSW50MTZfdW5zaWduZWQgLT4gMlxuICB8IEludDMyIC0+IDRcbiAgfCBJbnQ2NCAtPiA4XG4gIHwgSW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgTmF0aXZlaW50IC0+IFN5cy53b3JkX3NpemUgLyA4XG4gIHwgQ29tcGxleDMyIC0+IDhcbiAgfCBDb21wbGV4NjQgLT4gMTZcbiAgfCBDaGFyIC0+IDFcblxuKCogS2VlcCB0aG9zZSBjb25zdGFudHMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2xheW91dCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgY19sYXlvdXQgPSBDX2xheW91dFxubGV0IGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIEdlbmFycmF5ID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHRcbiAgZXh0ZXJuYWwgY3JlYXRlOiAoJ2EsICdiKSBraW5kIC0+ICdjIGxheW91dCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgPSBcImNhbWxfYmFfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2FcbiAgICAgPSBcImNhbWxfYmFfZ2V0X2dlbmVyaWNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYSAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX3NldF9nZW5lcmljXCJcblxuICBsZXQgcmVjIGNsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPSBBcnJheS5sZW5ndGggaWR4IHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAwIHRvIHByZWQgbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBjbG9vcCBhcnIgaWR4IGYgKHN1Y2MgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IHJlYyBmbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sIDwgMCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMSB0byBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGZsb29wIGFyciBpZHggZiAocHJlZCBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltcyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbXMgaW5cbiAgICBsZXQgZGxlbiA9IEFycmF5Lmxlbmd0aCBkaW1zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDApIGYgMCBkaW1zOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZsb29wIGFyciAoQXJyYXkubWFrZSBkbGVuIDEpIGYgKHByZWQgZGxlbikgZGltczsgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2FycmF5X21ha2UiLCJjYW1sX2JhX2NoYW5nZV9sYXlvdXQiLCJjYW1sX2JhX2NyZWF0ZSIsImNhbWxfYmFfZGltXzEiLCJjYW1sX2JhX2RpbV8yIiwiY2FtbF9iYV9raW5kIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9iYV9zZXRfMyIsImNhbWxfYmFfc2V0X2dlbmVyaWMiLCJjYW1sX2JhX3NsaWNlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfbXVsIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImR1bW15IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3lzIiwia2luZF9zaXplX2luX2J5dGVzIiwicGFyYW0iLCJjbG9vcCIsImFyciIsImlkeCIsImNvbCIsIm1heCIsImoiLCJmbG9vcCIsImluaXQiLCJraW5kIiwibGF5b3V0IiwiZGltcyIsImRsZW4iLCJhIiwibiIsImQiLCJpIiwic2l6ZV9pbl9ieXRlcyIsImNyZWF0ZSIsImdldCIsInNldCIsIm9mX3ZhbHVlIiwidiIsImRpbSIsInNsaWNlIiwib2ZfYXJyYXkiLCJkYXRhIiwiYmEiLCJvZnMiLCJkaW0xIiwiZGltMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsInJvdyIsImRpbTMiLCJzbGljZV9sZWZ0XzEiLCJtIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJrIiwiY3N0X0JpZ2FycmF5X0FycmF5M19vZl9hcnJheV9uIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMs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ImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9yYW5kb20ubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVsbHkgYXZvaWRpbmdcbiAgICAgKiBvdmVyZmxvd3MgYW5kIHNwYXJpbmcgYSBkaXZpc2lvbiBbbWFzayAvIG5dLiAqKVxuICAgIGlmIHIgLSB2ID4gbWFzayAtIG4gKyAxIHRoZW4gaW50X2F1eCBzIG4gbWFzayBlbHNlIHZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBUaGUgYm91bmQgbXVzdCBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycy5cbiAgICAgVGhpcyBmdW5jdGlvbiB5aWVsZHMgdGhlIHNhbWUgb3V0cHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVnZXIgc2l6ZS4gKilcbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IG1heF9pbnQzMSB8fCBib3VuZCA8PSAwXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRcIlxuICAgIGVsc2UgaW50X2F1eCBzIGJvdW5kIG1heF9pbnQzMVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gKilcbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgICgqIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHRoZSBzYW1lIG1hc2tcbiAgICAgICBhcyBpbiBmdW5jdGlvbiBbaW50XSBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgIHN1cHBvcnRlZCBieSBPQ2FtbCAoMzItYml0IE9DYW1sLCA2NC1iaXQgT0NhbWwsIGFuZCBKYXZhU2NyaXB0KS5cbiAgICAgICBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBbbWF4X2ludDMyXVxuICAgICAgIGFzIHRoZSBtYXNrIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHdoZXJlXG4gICAgICAgW1N5cy5pbnRfc2l6ZSA+PSAzMl0gKGkuZS4gSmF2YVNjcmlwdCBhbmQgNjQtYml0IE9DYW1sKS4gKilcbiAgICBlbHNlXG4gICAgICBpbnRfYXV4IHMgYm91bmRcbiAgICAgICAgKGlmIGJvdW5kIDw9IG1heF9pbnQzMSB0aGVuIG1heF9pbnQzMVxuICAgICAgICAgZWxzZSBpZiBib3VuZCA8PSBtYXhfaW50MzIgdGhlbiBtYXhfaW50MzJcbiAgICAgICAgIGVsc2UgbWF4X2ludClcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFRoZSBbbmJpdHNdIHBhcmFtZXRlciBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBzaWduZWQgaW50ZWdlcnNcbiAgICAgd2UgZHJhdyBmcm9tIFtzXS5cbiAgICAgV2UgbXVzdCBoYXZlIFstMntebmJpdHMgLSAxfSA8PSBtaW4gPD0gbWF4IDwgMntebmJpdHMgLSAxfV0uXG4gICAgIE1vcmVvdmVyLCBmb3IgdGhlIGl0ZXJhdGlvbiB0byBjb252ZXJnZSBxdWlja2x5LCB0aGUgaW50ZXJ2YWxcbiAgICAgW1ttaW4sIG1heF1dIHNob3VsZCBoYXZlIHdpZHRoIGF0IGxlYXN0IFsye15uYml0cyAtIDF9XS5cbiAgICAgQXMgdGhlIHdpZHRoIGFwcHJvYWNoZXMgdGhpcyBsb3dlciBsaW1pdCwgdGhlIGF2ZXJhZ2UgbnVtYmVyIG9mXG4gICAgIGRyYXdzIGFwcHJvYWNoZXMgMiwgd2l0aCBhIHF1aXRlIGhpZ2ggc3RhbmRhcmQgZGV2aWF0aW9uICgyICsgZXBzaWxvbikuICopXG4gIGxldCByZWMgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyA9XG4gICAgbGV0IGRyb3AgPSBTeXMuaW50X3NpemUgLSBuYml0cyBpblxuICAgICgqIFRoZSBiaXRzaGlmdHMgcmVwbGljYXRlIHRoZSBbbmJpdHNdLXRoIGJpdCAoc2lnbiBiaXQpIHRvIGhpZ2hlciBiaXRzOiAqKVxuICAgIGxldCByID0gKChJbnQ2NC50b19pbnQgKG5leHQgcykpIGxzbCBkcm9wKSBhc3IgZHJvcCBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgZWxzZSByXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBbbWFza10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2F1eF0uXG4gICAgIFtuYml0c10gaXMgYXMgZGVzY3JpYmVkIGZvciBbaW50X2luX2xhcmdlX3JhbmdlXS4gKilcbiAgbGV0IGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2sgfm5iaXRzID1cbiAgICBsZXQgc3BhbiA9IG1heCAtIG1pbiArIDEgaW5cbiAgICBpZiBzcGFuIDw9IG1hc2sgKCogW3NwYW5dIGlzIHNtYWxsIGVub3VnaCAqKVxuICAgICYmIHNwYW4gPiAwICAgICAoKiBubyBvdmVyZmxvdyBvY2N1cnJlZCB3aGVuIGNvbXB1dGluZyBbc3Bhbl0gKilcbiAgICB0aGVuXG4gICAgICAoKiBKdXN0IGRyYXcgYSBudW1iZXIgaW4gW1swLCBzcGFuKV0gYW5kIHNoaWZ0IGl0IGJ5IFttaW5dLiAqKVxuICAgICAgbWluICsgaW50X2F1eCBzIHNwYW4gbWFza1xuICAgIGVsc2VcbiAgICAgICgqIFNwYW4gdG9vIGxhcmdlLCB1c2UgdGhlIGFsdGVybmF0aXZlIGRyYXdpbmcgbWV0aG9kLiAqKVxuICAgICAgaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0c1xuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IGludF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludF9pbl9yYW5nZVwiO1xuICAgICgqIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMS1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydGVkIGJ5IE9DYW1sLlxuICAgICAgIFdoZW4gYm90aCBib3VuZHMgZml0IGluIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSBwYXJhbWV0ZXJzXG4gICAgICAgW21hc2tdIGFuZCBbbmJpdHNdIGFwcHJvcHJpYXRlIGZvciAzMi1iaXQgaW50ZWdlcnMsIHNvIGFzIHRvXG4gICAgICAgeWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIEphdmFTY3JpcHQgYW5kIG9uIDY0LWJpdCBPQ2FtbC4gKilcbiAgICBpZiBtaW4gPj0gbWluX2ludDMxICYmIG1heCA8PSBtYXhfaW50MzEgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzEgfm5iaXRzOjMxXG4gICAgZWxzZSBpZiBtaW4gPj0gbWluX2ludDMyICYmIG1heCA8PSBtYXhfaW50MzIgdGhlblxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50MzIgfm5iaXRzOjMyXG4gICAgZWxzZVxuICAgICAgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzazptYXhfaW50IH5uYml0czpTeXMuaW50X3NpemVcblxuICAoKiBSZXR1cm4gMzIgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDMyXSAqKVxuICBsZXQgYml0czMyIHMgPVxuICAgIEludDY0LnRvX2ludDMyIChuZXh0IHMpXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQzMmF1eCBzIG4gPVxuICAgIGxldCByID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czMyIHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDMyLnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQzMi4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMWwpXG4gICAgdGhlbiBpbnQzMmF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50MzIgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyXCJcbiAgICBlbHNlIGludDMyYXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IEludDY0LnRvX2ludDMyIChuZXh0IHMpIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQzMl9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDMyX2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDMyLnN1Y2MgKEludDMyLnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDMyLnplcm8gdGhlblxuICAgICAgICBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50MzIuYWRkIG1pbiAoaW50MzJhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfYXV4XS4gKilcbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCByZWMgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4ID1cbiAgICBsZXQgciA9IG5leHQgcyBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50NjRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NF9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQ2NC5zdWNjIChJbnQ2NC5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgICAgaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDY0LmFkZCBtaW4gKGludDY0YXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludF9pbl9yYW5nZSA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyX2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooTmF0aXZlaW50LnRvX2ludDMyIG1pbikgfm1heDooTmF0aXZlaW50LnRvX2ludDMyIG1heCkpXG4gICAgZWxzZSBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIEludDY0LnRvX25hdGl2ZWludCAoaW50NjRfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihJbnQ2NC5vZl9uYXRpdmVpbnQgbWluKSB+bWF4OihJbnQ2NC5vZl9uYXRpdmVpbnQgbWF4KSlcblxuICAoKiBSZXR1cm4gYSBmbG9hdCAwIDwgeCA8IDEgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGFtb25nIHRoZVxuICAgICBtdWx0aXBsZXMgb2YgMl4tNTMgKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzID1cbiAgICBsZXQgYiA9IG5leHQgcyBpblxuICAgIGxldCBuID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCBiIDExIGluXG4gICAgaWYgbiA8PiAwTCB0aGVuIEludDY0LnRvX2Zsb2F0IG4gKi4gMHgxLnAtNTMgZWxzZSByYXdmbG9hdCBzXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgYmV0d2VlbiAwIGFuZCBbYm91bmRdICopXG4gIGxldCBmbG9hdCBzIGJvdW5kID0gcmF3ZmxvYXQgcyAqLiBib3VuZFxuXG4gICgqIFJldHVybiBhIHJhbmRvbSBCb29sZWFuICopXG4gIGxldCBib29sIHMgPSBuZXh0IHMgPCAwTFxuXG4gICgqIFNwbGl0IGEgbmV3IFBSTkcgb2ZmIHRoZSBnaXZlbiBQUk5HICopXG4gIGxldCBzcGxpdCBzID1cbiAgICBsZXQgaTEgPSBiaXRzNjQgcyBpbiBsZXQgaTIgPSBiaXRzNjQgcyBpblxuICAgIGxldCBpMyA9IGJpdHM2NCBzIGluIGxldCBpNCA9IGJpdHM2NCBzIGluXG4gICAgbWsgaTEgaTIgaTMgaTRcbmVuZFxuXG5sZXQgbWtfZGVmYXVsdCAoKSA9XG4gICgqIFRoaXMgaXMgdGhlIHN0YXRlIG9idGFpbmVkIHdpdGggW1N0YXRlLm1ha2UgW3wgMzE0MTU5MjY1IHxdXS4gKilcbiAgU3RhdGUubWsgKC02MTk2ODc0Mjg5NTY3NzA1MDk3TClcbiAgICAgICAgICAgNTg2NTczMjQ5ODMzNzEzMTg5TFxuICAgICAgICAgICAoLTg1OTEyNjg4MDM4NjUwNDM0MDdMKVxuICAgICAgICAgICA2Mzg4NjEzNTk1ODQ5NzcyMDQ0TFxuXG5sZXQgcmFuZG9tX2tleSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6U3RhdGUuc3BsaXQgbWtfZGVmYXVsdFxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgaW50IGJvdW5kID0gU3RhdGUuaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZ1bGxfaW50IGJvdW5kID0gU3RhdGUuZnVsbF9pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMl9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQzMl9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5uYXRpdmVpbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDY0IGJvdW5kID0gU3RhdGUuaW50NjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50NjRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50NjRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2JhX2JsaXQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9ieXRlc19zZXQiLCJjYW1sX2NyZWF0ZV9ieXRlcyIsImNhbWxfZ3JlYXRlcnRoYW4iLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZSIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbHhtX25leHQiLCJjYW1sX21vZCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfU3lzIiwiU3RkbGliX0ludDMyIiwiU3RkbGliX0ludDY0IiwiU3RkbGliIiwiU3RkbGliX0J5dGVzIiwiU3RkbGliX0RpZ2VzdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfQmlnYXJyYXkiLCJTdGRsaWJfTmF0aXZlaW50IiwiY3JlYXRlIiwicGFyYW0iLCJzZXQiLCJzIiwiaTEiLCJpMiIsImkzIiwiaTQiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4IiwidG9fYmluYXJ5X3N0cmluZyIsImJ1ZiIsImkiLCJvZl9iaW5hcnlfc3RyaW5nIiwiY29weSIsInNyYyIsImRzdCIsInJlaW5pdCIsInNlZWQiLCJuIiwiYiIsImQxIiwiZDIiLCJtYWtlIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiaW50X2F1eCIsIm1hc2siLCJyIiwidiIsIm1heF9pbnQzMSIsImludCIsImJvdW5kIiwibWF4X2ludDMyIiwiZnVsbF9pbnQiLCJpbnRfaW5fcmFuZ2VfYXV4IiwibWluIiwibWF4IiwibmJpdHMiLCJzcGFuIiwiZHJvcCIsImludF9pbl9yYW5nZSIsImJpdHMzMiIsImludDMyYXV4IiwiaW50MzIiLCJpbnQzMl9pbl9yYW5nZSIsImludDY0YXV4IiwiaW50NjQiLCJpbnQ2NF9pbl9yYW5nZSIsIm5hdGl2ZWJpdHMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfaW5fcmFuZ2UiLCJmbG9hdCIsImJvb2wiLCJzcGxpdCIsIm1rX2RlZmF1bHQiLCJyYW5kb21fa2V5Iiwic2NhbGUiLCJiaXRzNjQiLCJmdWxsX2luaXQiLCJpbml0Iiwic2VsZl9pbml0IiwiZ2V0X3N0YXRlIiwic2V0X3N0YXRlIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLGlDQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElB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O0FBQUEsSUF0R3pCLHVCQXNHb0Q7QUFBQTtBQUFBLFlBQUE4QyxhQUFBaEQ7QUFBQUEsSUFDbkIsT0FBMkIsV0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBMEQsVUFBQXpDO0FBQUFBLElBRTlCLE9BQTJCLE9BQTNCLG1EQUFnQztBQUFBO0FBQUEsWUFBQTBDLEtBQUExQyxNQUNsRCwyQkFBb0I7QUFBQSxZQUFBMkMsVUFBQTVELE9BQ1AsT0FBZSxVQUFmLHdCQUFlO0FBQUEsWUFBQXFELFFBQUFyRDtBQUFBQSxJQUlqQixPQUEyQixNQUEzQiw2Q0FBMkI7QUFBQTtBQUFBLFlBQUE2RCxVQUFBN0Q7QUFBQUEsSUFJeEIsT0FBMkIsS0FBM0IsNkNBQTJCO0FBQUE7QUFBQSxZQUFBOEQsVUFBQWhEO0FBQUFBLFFBQUFDLE1BQzFCO0FBQUEsSUFoUzNCLDZCQWdTd0Q7QUFBQTtBQUFBLEdBakNFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEcFY5RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI1OTAyLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvaGFzaHRibC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxubGV0IG1lbSBoIGtleSA9XG4gIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9hcnJheV9tYWtlIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY29tcGFyZSIsImNhbWxfaGFzaCIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfc3lzX2dldGVudiIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfU3lzIiwiU3RkbGliIiwiU3RkbGliX0F0b21pYyIsIlN0ZGxpYl9Eb21haW4iLCJTdGRsaWJfUmFuZG9tIiwiU3RkbGliX1NlcSIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfU3RyaW5nIiwib25nb2luZ190cmF2ZXJzYWwiLCJoIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsImV4biIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJwYXJhbSIsImlzX3JhbmRvbWl6ZWQiLCJwcm5nX2tleSIsInBvd2VyXzJfYWJvdmUiLCJ4IiwibiIsImNyZWF0ZSIsIm9wdCIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsInMiLCJzZWVkIiwiY2xlYXIiLCJyZXNldCIsImxlbiIsImNvcHlfYnVja2V0bGlzdCIsImtleSIsImRhdGEiLCJuZXh0IiwicHJlYyIsImNvcHkiLCJsZW5ndGgiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwiaSIsImNlbGwiLCJuaWR4IiwibWF0Y2giLCJyZXNpemUiLCJvc2l6ZSIsIml0ZXIiLCJvbGRfdHJhdiIsImQiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzbG90IiwiZm9sZCIsImluaXQiLCJhY2N1IiwiYiIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsIm0iLCJoaXN0byIsImwiLCJ0b19zZXEiLCJ0YmwiLCJ0YmxfZGF0YSIsImF1eCIsImJ1Y2siLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJNYWtlU2VlZGVkIiwiSCIsImtleV9pbmRleCIsImFkZCIsImJ1Y2tldCIsInJlbW92ZSIsImsiLCJmaW5kIiwiazEiLCJkMSIsIm5leHQxIiwiazIiLCJkMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9vcHQiLCJmaW5kX2FsbCIsImJsb2NrIiwiZHN0Iiwib2Zmc2V0IiwicmVwbGFjZSIsIm1lbSIsImFkZF9zZXEiLCJ2IiwicmVwbGFjZV9zZXEiLCJvZl9zZXEiLCJNYWtlIiwiZXF1YWwiLCJzZWVkZWRfaGFzaCIsImluY2x1ZGUiLCJzeiIsImhhc2giLCJoYXNoX3BhcmFtIiwibjEiLCJuMiIsInJlYnVpbGQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQTtBQUFBLE9BQUFDLGdCQUFBO0FBQUEsWUFBQUMsa0JBQUFDO0FBQUFBLFFBQUEsSUN3Q0U7QUFBQTtBQUFBLEdBQ3FCO0FBQUEsWUFBQUMsdUJBQUFELEdBR3JCLDRCQUFrQztBQUFBLEdENUNwQyxZQ2tEUSxrQ0FBQUUsU0FBQTtBQUFBLFNBQUFDO0FBQUFBLFFBQUFBLE1EbERSO0FBQUE7QUFBQSxnQkNtRFEsaUNBQUFELFNBQUE7QUFBQSxVQUFBQztBQUFBQSxTQUFBQSxRRG5EUjtBQUFBO0FBQUEsU0FBQUQsU0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFFLHFCQ29ERTtBQUFBLElBQUFDLGFBRWU7QUFBQSxZQUFBQyxVQUFBQztBQUFBQSxJQUVFLGlEQUEwQjtBQUFBO0FBQUEsWUFBQUMsY0FB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RCxJQUZnQjtBQUFBLE1BQUE3QyxPQUFBO0FBQUEsVUFJaEI7QUFBQSxLQUFhO0FBQUE7QUFBQTtBQUFBLEdBR3lCO0FBQUEsWUFBQStELFFBQUE5QixLQUFBdEI7QUFBQUEsSUFHMUM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyxxQkFBWTtBQUFBO0FBQUEsZUFBRTtBQUFBO0FBQUEsWUFBQW9CLFlBQUFoQyxLQUFBdEI7QUFBQUEsSUFHckM7QUFBQTtBQUFBLHNCQUFBN0I7QUFBQUEsa0JBQUFrRixJQUFTLFVBQUFuQixJQUFBO0FBQUEsY0FBYyx5QkFBZ0I7QUFBQTtBQUFBLGVBQUU7QUFBQTtBQUFBLFlBQUFxQixPQUFBdkQ7QUFBQUEsUUFBQXNCLE1BRy9CO0FBQUEsSUFDVjtBQUFBLElBQWlCO0FBQUEsR0FDZDtBQUFBLFlBQUEyQyxRQUFBdkYsS0FBQWQ7QUFBQUE7QUFBQUEsS0FBQWdCLFNBRU8sZUFBVztBQUFBLEtBQUFDLElBQ2I7QUFBQSxJQUNSO0FBQUE7QUFBQSxVQUNtQztBQUFBLE1BQUFDLE9BQWxCO0FBQUE7QUFBQSxTQUFBQSxPQUNWO0FBQUE7QUFBQSxTQUVQO0FBQUEsS0FBQWxCLE1BRVM7QUFBQSxJQUlUO0FBQUEsa0JBQW1CO0FBQUEsSUFBbUM7QUFBQSxHQUNwRDtBQUFBLEdBOWpCeUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQzRDdEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MjY3MTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RkbGliLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX3N1YnN0cmluZyBvZiB7IHNvdXJjZTpzdHJpbmc7IHBvczppbnQ7IGxlbjppbnR9ICgqIHNsaWNlIG9mIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBtdXRhYmxlIHBwX291dF93aWR0aCA6IHN0cmluZyAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X3dpZHRoOiBzdHJpbmcgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxubGV0IHBwX3N0cmluZ193aWR0aCBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3dpZHRoIHMgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyBzIHBvcyBsZW5cbmFuZCBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgPSBzdGF0ZS5wcF9vdXRfd2lkdGggcyB+cG9zIH5sZW5cbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHNsaWNlICopXG5sZXQgZm9ybWF0X3BwX3N1YnN0cmluZyBzdGF0ZSBzaXplIH5wb3MgfmxlbiBzb3VyY2UgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3Vic3RyaW5nIHN0YXRlIH5wb3MgfmxlbiBzb3VyY2U7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAocHBfc3RyaW5nX3dpZHRoIHN0YXRlIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG4gIHwgUHBfc3Vic3RyaW5nIHtzb3VyY2U7cG9zO2xlbn0gLT5cbiAgICBmb3JtYXRfcHBfc3Vic3RyaW5nIHN0YXRlIHNpemUgfnBvcyB+bGVuIHNvdXJjZVxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDw+IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIHBwX3N0cmluZ193aWR0aCBzdGF0ZSBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJGb3JtYXQ6IFVuc3luY2hyb25pemVkIGFjY2VzcyB0byBmb3JtYXR0ZXJcIlxuICAgICAgfCBTb21lIF8gLT4gICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICAgIGxldCBzaXplID1cbiAgICAgICAgICBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHlcbiAgICAgICAgaW5cbiAgICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbigqIFRvIGVucXVldWUgc3Vic3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gc3RhdGUgc2l6ZSBzb3VyY2UgPVxuICBsZXQgdG9rZW4gPSBQcF9zdWJzdHJpbmcge3NvdXJjZTtwb3M7bGVufSBpblxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgbGV0IHNpemUgPSBwcF9zdHJpbmdfd2lkdGggc3RhdGUgcyBpblxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgc2l6ZSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3Vic3RyaW5nIF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX3NldF9wcmludF90YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9wcmludF90YWdzIDwtIGJcbmxldCBwcF9zZXRfbWFya190YWdzIHN0YXRlIGIgPSBzdGF0ZS5wcF9tYXJrX3RhZ3MgPC0gYlxubGV0IHBwX2dldF9wcmludF90YWdzIHN0YXRlICgpID0gc3RhdGUucHBfcHJpbnRfdGFnc1xubGV0IHBwX2dldF9tYXJrX3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJrX3RhZ3NcbmxldCBwcF9zZXRfdGFncyBzdGF0ZSBiID1cbiAgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYjsgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiXG5cblxuKCogSGFuZGxpbmcgdGFnIGhhbmRsaW5nIGZ1bmN0aW9uczogZ2V0L3NldCBmdW5jdGlvbnMuICopXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgbWFya19vcGVuX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnO1xuICBtYXJrX2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZztcbiAgcHJpbnRfb3Blbl9zdGFnID0gc3RhdGUucHBfcHJpbnRfb3Blbl90YWc7XG4gIHByaW50X2Nsb3NlX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWc7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUge1xuICAgICBtYXJrX29wZW5fc3RhZyA9IG1vdDtcbiAgICAgbWFya19jbG9zZV9zdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3N0YWcgPSBwb3Q7XG4gICAgIHByaW50X2Nsb3NlX3N0YWcgPSBwY3Q7XG4gIH0gPVxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIG1vdDtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gbWN0O1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBwb3Q7XG4gIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyA8LSBwY3RcblxuXG4oKiBJbml0aWFsaXplIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX3Jpbml0IHN0YXRlID1cbiAgcHBfY2xlYXJfcXVldWUgc3RhdGU7XG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9mb3JtYXRfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3Rib3hfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfbWFya19zdGFjaztcbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gMDtcbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSAwO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbjtcbiAgcHBfb3Blbl9zeXNfYm94IHN0YXRlXG5cbmxldCBjbGVhcl90YWdfc3RhY2sgc3RhdGUgPVxuICBTdGFjay5pdGVyIChmdW4gXyAtPiBwcF9jbG9zZV9zdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZSA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgZW5kX3dpdGhfbmV3bGluZSB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChwcF9zdHJpbmdfd2lkdGggc3RhdGUgcykgc1xuXG5sZXQgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdWJzdHJpbmdfYXMgfnBvcyB+bGVuIHN0YXRlIChTaXplLm9mX2ludCBzaXplKSBzXG5cbmxldCBwcF9wcmludF9zdWJzdHJpbmcgfnBvcyB+bGVuIHN0YXRlIHMgPVxuICBsZXQgd2lkdGggPSBwcF9zdWJzdHJpbmdfd2lkdGggc3RhdGUgfnBvcyB+bGVuIHMgaW5cbiAgcHBfcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBzdGF0ZSB3aWR0aCBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cbmxldCBwcF9wcmludF9ub3RoaW5nIF9zdGF0ZSAoKSA9ICgpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOnRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPVxuICAgICAgcHBfc3RyaW5nX3dpZHRoIHN0YXRlIGJlZm9yZVxuICAgICAgKyB3aWR0aFxuICAgICAgKyBwcF9zdHJpbmdfd2lkdGggc3RhdGUgYWZ0ZXJcbiAgICBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBpZiBtYXJnaW4gPj0gcHBfaW5maW5pdHkgdGhlblxuICAgIEVycm9yIFwibWFyZ2luID49IHBwX2luZmluaXR5XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF93aWR0aCA9IGYyO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X3dpZHRoIDwtIGYyO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF93aWR0aCA9IHN0YXRlLnBwX291dF93aWR0aDtcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG5sZXQgdXRmXzhfc2NhbGFyX3dpZHRoIHMgfnBvcyB+bGVuID1cbiAgbGV0IHJlYyB3aWR0aCBzIGNvdW50IGN1cnJlbnQgc3RvcCA9XG4gICAgaWYgY3VycmVudCA+PSBzdG9wIHRoZW4gY291bnRcbiAgICBlbHNlXG4gICAgICBsZXQgZGVjb2RlID0gU3RyaW5nLmdldF91dGZfOF91Y2hhciBzIGN1cnJlbnQgaW5cbiAgICAgIGxldCBhZHZhbmNlID0gVWNoYXIudXRmX2RlY29kZV9sZW5ndGggZGVjb2RlIGluXG4gICAgICB3aWR0aCBzIChjb3VudCArIDEpIChjdXJyZW50K2FkdmFuY2UpIHN0b3BcbiAgaW5cbiAgd2lkdGggcyAwIHBvcyAocG9zICsgbGVuKVxuXG5sZXQgYXNjaWlfd2lkdGggXyB+cG9zOl8gfmxlbiA9IGxlblxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9vdXRfd2lkdGggPSB1dGZfOF9zY2FsYXJfd2lkdGggaW5cbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfb3V0X3dpZHRoO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3N1YnN0cmluZyB+cG9zIH5sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZyAgfnBvcyB+bGVuIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3Vic3RyaW5nX2FzIH5wb3MgfmxlbiBhc19sZW4gdiA9XG4gIHBwX3ByaW50X3N1YnN0cmluZ19hcyB+cG9zIH5sZW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIGFzX2xlbiB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxubGV0IHBwX3ByaW50X2l0ZXIgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIGl0ZXIgcHBfdiBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF92IHYgPVxuICAgIGlmICFpc19maXJzdCB0aGVuIGlzX2ZpcnN0IDo9IGZhbHNlIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2XG4gIGluXG4gIGl0ZXIgcHBfdiB2XG5cbigqIFRvIGZvcm1hdCBhIGxpc3QgKilcbmxldCBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIExpc3QuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhbiBhcnJheSAqKVxubGV0IHBwX3ByaW50X2FycmF5ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiB2ID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIEFycmF5Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYSBzZXF1ZW5jZSAqKVxubGV0IHBwX3ByaW50X3NlcSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgc2VxID1cbiAgcHBfcHJpbnRfaXRlciB+cHBfc2VwIFNlcS5pdGVyIHBwX3YgcHBmIHNlcVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBwcF9wcmludF90ZXh0IHBwZiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGVmdCA9IHJlZiAwIGluXG4gIGxldCByaWdodCA9IHJlZiAwIGluXG4gIGxldCBmbHVzaCAoKSA9XG4gICAgcHBfcHJpbnRfc3Vic3RyaW5nIH5wb3M6IWxlZnQgfmxlbjooIXJpZ2h0IC0gIWxlZnQpIHBwZiBzO1xuICAgIGluY3IgcmlnaHQ7IGxlZnQgOj0gIXJpZ2h0O1xuICBpblxuICB3aGlsZSAoIXJpZ2h0IDw+IGxlbikgZG9cbiAgICBtYXRjaCBzLlshcmlnaHRdIHdpdGhcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgZmx1c2ggKCk7XG4gICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gICAgICB8ICcgJyAtPlxuICAgICAgICBmbHVzaCAoKTsgcHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICAoKiB0aGVyZSBpcyBubyBzcGVjaWZpYyBzdXBwb3J0IGZvciAnXFx0J1xuICAgICAgICAgYXMgaXQgaXMgdW5jbGVhciB3aGF0IGEgcmlnaHQgc2VtYW50aWNzIHdvdWxkIGJlICopXG4gICAgICB8IF8gLT4gaW5jciByaWdodFxuICBkb25lO1xuICBpZiAhbGVmdCA8PiBsZW4gdGhlbiBmbHVzaCAoKVxuXG4oKiBUbyBmb3JtYXQgZnJlZS1mbG93aW5nIHRleHQgKilcbmxldCBmb3JtYXRfdGV4dCBmbXQ2ID1cbiAgbGV0IG9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzIGluXG4gIGxldCBGb3JtYXQoZm10LF8pID0gZm10NiBpblxuICBsZXQgY29uc19zcGFjZSB+c3BhY2VzIGZtdCA9IEZvcm1hdHRpbmdfbGl0IChCcmVhayhcIlwiLHNwYWNlcywwKSwgZm10KSBpblxuICBsZXQgcmVjIHNraXBfYW5kX2NvdW50X3doaXRlcyBzcGFjZXMgbmV3bGluZXMgbGVuIHMgcG9zID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gcG9zLCBzcGFjZXMsIG5ld2xpbmVzIGVsc2VcbiAgICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgKDErc3BhY2VzKSBuZXdsaW5lcyBsZW4gcyAoMStwb3MpXG4gICAgfCAnXFxuJyAtPiBza2lwX2FuZF9jb3VudF93aGl0ZXMgc3BhY2VzICgxK25ld2xpbmVzKSBsZW4gcyAoMStwb3MpXG4gICAgfCBfIC0+IHBvcywgc3BhY2VzLCBuZXdsaW5lc1xuICBpblxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBzcGxpdCBsZW4gcyBwb3MgZm10ID1cbiAgICBpZiBwb3MgPj0gbGVuIHRoZW4gZm10XG4gICAgZWxzZVxuICAgICAgbGV0IHNwYWNlID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHMgcG9zICcgJyBpblxuICAgICAgbGV0IG5ld2xpbmUgPSBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgaW5cbiAgICAgIGxldCBmaXJzdCA9IG1hdGNoIHNwYWNlLCBuZXdsaW5lIHdpdGhcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChtaW4geCB5KVxuICAgICAgICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgICAgIGluXG4gICAgICBtYXRjaCBmaXJzdCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBTdHJpbmdfbGl0ZXJhbChTdHJpbmcuc3ViIHMgcG9zIChsZW4tcG9zKSwgZm10KVxuICAgICAgfCBTb21lIHNlcCAtPlxuICAgICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgcG9zIChzZXAtcG9zKSBpblxuICAgICAgICAgIGxldCBwb3MsIHNwYWNlcywgbmV3bGluZXMgPSBza2lwX2FuZF9jb3VudF93aGl0ZXMgMCAwIGxlbiBzIHNlcCBpblxuICAgICAgICAgIGxldCByZXBlYXQsIGJyZWFrID1cbiAgICAgICAgICAgIG1hdGNoIG5ld2xpbmVzLCBzcGFjZXMgd2l0aFxuICAgICAgICAgICAgfCAoMHwxKSwgc3BhY2VzIC0+IDEsIEJyZWFrKFwiXCIsIG1heCBzcGFjZXMgMSwgMClcbiAgICAgICAgICAgIHwgYmwsIF8gLT4gYmwsIEZvcmNlX25ld2xpbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0cmluZ19saXRlcmFsKGJlZm9yZSwgY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQpXG4gIGFuZFtAdGFpbF9tb2RfY29uc10gY29ucyB+cmVwZWF0IGJyZWFrIGxlbiBzIHBvcyBmbXQgPVxuICAgIGlmIHJlcGVhdCA9IDAgdGhlblxuICAgICAgc3BsaXQgbGVuIHMgcG9zIGZtdFxuICAgIGVsc2VcbiAgICAgIEZvcm1hdHRpbmdfbGl0IChicmVhaywgY29ucyB+cmVwZWF0OihyZXBlYXQtMSkgYnJlYWsgbGVuIHMgcG9zIGZtdClcbiAgaW5cbiAgbGV0IGNvbmNhdCBzIGZtdCA9IG1hdGNoIHMgd2l0aFxuICAgIHwgYENoYXIgKCcgJ3wnXFxuJykgLT4gY29uc19zcGFjZSB+c3BhY2VzOjEgZm10XG4gICAgfCBgQ2hhciBjIC0+IENoYXJfbGl0ZXJhbChjLGZtdClcbiAgICB8IGBTdHJpbmcgcyAtPiBzcGxpdCAoU3RyaW5nLmxlbmd0aCBzKSBzIDAgZm10IGluXG4gIGxldCBmbXQgPSBzdHJpbmdfY29uY2F0X21hcCB7Zj1jb25jYXR9IGZtdCBpblxuICBGb3JtYXQoZm10LCBDYW1saW50ZXJuYWxGb3JtYXQuc3RyaW5nX29mX2ZtdCBmbXQpXG5cblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZHVtbXkiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9RdWV1ZSIsIlN0ZGxpYiIsIkNhbWxpbnRlcm5hbEZvcm1hdCIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfRG9tYWluIiwiU3RkbGliX0J1ZmZlciIsIkNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIsIlN0ZGxpYl9TZXEiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIlN0ZGxpYl9TdGFjayIsIlN0ZGxpYl9VY2hhciIsIlN0ZGxpYl9JbnQiLCJTdGRsaWJfQnl0ZXMiLCJpZCIsIngiLCJTdHJpbmdfdGFnIiwicHBfZW5xdWV1ZSIsInN0YXRlIiwidG9rZW4iLCJwcF9vdXRwdXRfc3RyaW5nIiwicyIsInBwX3N0cmluZ193aWR0aCIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJzaXplIiwidGV4dCIsImNzdCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInBhcmFtIiwid2lkdGgiLCJhZnRlciIsIm9mZnNldCIsImJlZm9yZSIsImluZGVudCIsInJlYWxfaW5kZW50IiwibiIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsIm1hdGNoIiwidGFicyIsImFkZF90YWIiLCJscyIsImwiLCJsZW5ndGgiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImxlbiIsInBvcyIsInNvdXJjZSIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSIsImluc2VydGlvbl9wb2ludCIsImZpcnN0IiwidGFiIiwidGFpbCIsImhlYWQiLCJ0eSIsInRib3giLCJwcF9pbmZpbml0eSIsImFkdmFuY2VfbGVmdCIsInBlbmRpbmdfY291bnQiLCJlbnF1ZXVlX2FkdmFuY2UiLCJ0b2siLCJlbnF1ZXVlX3N0cmluZ19hcyIsInVua25vd24iLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInNldF9zaXplIiwicXVldWVfZWxlbSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJiIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwiemVybyIsInBwX2Nsb3NlX2JveCIsInBwX29wZW5fc3RhZyIsInBwX2Nsb3NlX3N0YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJlbmRfd2l0aF9uZXdsaW5lIiwicHBfcHJpbnRfYXNfc2l6ZSIsInBwX3ByaW50X2FzIiwiaXNpemUiLCJwcF9wcmludF9zdHJpbmciLCJwcF9wcmludF9zdWJzdHJpbmdfYXMiLCJwcF9wcmludF9zdWJzdHJpbmciLCJwcF9wcmludF9ieXRlcyIsInBwX3ByaW50X2ludCIsImkiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwiYyIsInBwX3ByaW50X25vdGhpbmciLCJwcF9vcGVuX2hib3giLCJwcF9vcGVuX3Zib3giLCJwcF9vcGVuX2h2Ym94IiwicHBfb3Blbl9ob3Zib3giLCJwcF9vcGVuX2JveCIsInBwX3ByaW50X25ld2xpbmUiLCJwcF9wcmludF9mbHVzaCIsInBwX2ZvcmNlX25ld2xpbmUiLCJwcF9wcmludF9pZl9uZXdsaW5lIiwicHBfcHJpbnRfY3VzdG9tX2JyZWFrIiwicHBfcHJpbnRfYnJlYWsiLCJwcF9wcmludF9zcGFjZSIsInBwX3ByaW50X2N1dCIsInBwX29wZW5fdGJveCIsInBwX2Nsb3NlX3Rib3giLCJwcF9wcmludF90YnJlYWsiLCJwcF9wcmludF90YWIiLCJwcF9zZXRfdGFiIiwicHBfc2V0X21heF9ib3hlcyIsInBwX2dldF9tYXhfYm94ZXMiLCJwcF9vdmVyX21heF9ib3hlcyIsInBwX3NldF9lbGxpcHNpc190ZXh0IiwicHBfZ2V0X2VsbGlwc2lzX3RleHQiLCJwcF9saW1pdCIsInBwX3NldF9tYXhfaW5kZW50IiwicHBfZ2V0X21heF9pbmRlbnQiLCJwcF9zZXRfbWFyZ2luIiwibmV3X21heF9pbmRlbnQiLCJ2YWxpZGF0ZV9nZW9tZXRyeSIsIm1hcmdpbiIsIm1heF9pbmRlbnQiLCJjaGVja19nZW9tZXRyeSIsImdlb21ldHJ5IiwicHBfZ2V0X21hcmdpbiIsInBwX3NldF9mdWxsX2dlb21ldHJ5IiwicHBfc2V0X2dlb21ldHJ5IiwibXNnIiwicHBfc2FmZV9zZXRfZ2VvbWV0cnkiLCJwcF9nZXRfZ2VvbWV0cnkiLCJwcF91cGRhdGVfZ2VvbWV0cnkiLCJ1cGRhdGUiLCJwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMiLCJqIiwiaCIsImciLCJmMiIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJvYyIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJ1dGZfOF9zY2FsYXJfd2lkdGgiLCJjdXJyZW50Iiwic3RvcCIsImNvdW50IiwiZGVjb2RlIiwiYWR2YW5jZSIsImFzY2lpX3dpZHRoIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwib3V0cHV0IiwiZmx1c2giLCJwcGYiLCJmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwicHBfYnVmZmVyX3NpemUiLCJwcF9tYWtlX2J1ZmZlciIsInN0ZGJ1ZiIsInN0ZF9mb3JtYXR0ZXIiLCJlcnJfZm9ybWF0dGVyIiwic3RyX2Zvcm1hdHRlciIsInN0ZGJ1Zl9rZXkiLCJzdHJfZm9ybWF0dGVyX2tleSIsImJ1ZmZlcmVkX291dF9zdHJpbmciLCJrZXkiLCJzdHIiLCJvZnMiLCJidWZmZXJlZF9vdXRfZmx1c2giLCJidWYiLCJzdGRfYnVmX2tleSIsImVycl9idWZfa2V5Iiwic3RkX2Zvcm1hdHRlcl9rZXkiLCJlcnJfZm9ybWF0dGVyX2tleSIsImdldF9zdGRfZm9ybWF0dGVyIiwiZ2V0X2Vycl9mb3JtYXR0ZXIiLCJnZXRfc3RyX2Zvcm1hdHRlciIsImdldF9zdGRidWYiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciIsInN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0XyIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJ2Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJ3IiwicHJpbnRfc3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nIiwicHJpbnRfc3Vic3RyaW5nX2FzIiwiYXNfbGVuIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2NoYXIiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X25ld2xpbmUiLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9pdGVyIiwib3B0IiwiaXRlciIsInBwX3YiLCJwcF9zZXAiLCJpc19maXJzdCIsInBwX3ByaW50X2xpc3QiLCJwcF9wcmludF9hcnJheSIsInBwX3ByaW50X3NlcSIsInNlcSIsInBwX3ByaW50X3RleHQiLCJsZWZ0IiwicmlnaHQiLCJmb3JtYXRfdGV4dCIsImZtdDYiLCJmbXQiLCJza2lwX2FuZF9jb3VudF93aGl0ZXMiLCJzcGFjZXMiLCJuZXdsaW5lcyIsImNvbmNhdCIsInZhcmlhbnQiLCJzcGFjZSIsIm5ld2xpbmUiLCJ5Iiwic2VwIiwiYnJlYWskIiwicmVwZWF0IiwiYmxvY2siLCJkc3QiLCJwcF9wcmludF9vcHRpb24iLCJub25lIiwicHBfcHJpbnRfcmVzdWx0Iiwib2siLCJlcnJvciIsImUiLCJwcF9wcmludF9laXRoZXIiLCJyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nX2xpdCIsIm91dHB1dF9hY2MiLCJhY2MiLCJwIiwiYnR5Iiwic3RycHV0X2FjYyIsImtmcHJpbnRmIiwiayIsImlrZnByaW50ZiIsImlmcHJpbnRmIiwiZnByaW50ZiIsInByaW50ZiIsImVwcmludGYiLCJrZHByaW50ZiIsImRwcmludGYiLCJrc3ByaW50ZiIsInNwcmludGYiLCJrYXNwcmludGYiLCJhc3ByaW50ZiIsImZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMiLCJmcyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7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QUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEdGpERCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTU3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZGxpYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvb2NhbWwvY2FsbGJhY2subWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFJlZ2lzdGVyaW5nIE9DYW1sIHZhbHVlcyB3aXRoIHRoZSBDIHJ1bnRpbWUgZm9yIGxhdGVyIGNhbGxiYWNrcyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiBPYmoudCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCByZWdpc3RlciBuYW1lIHYgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIChPYmoucmVwciB2KVxuXG5sZXQgcmVnaXN0ZXJfZXhjZXB0aW9uIG5hbWUgKGV4biA6IGV4bikgPVxuICBsZXQgZXhuID0gT2JqLnJlcHIgZXhuIGluXG4gIGxldCBzbG90ID0gaWYgT2JqLnRhZyBleG4gPSBPYmoub2JqZWN0X3RhZyB0aGVuIGV4biBlbHNlIE9iai5maWVsZCBleG4gMCBpblxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBuYW1lIHNsb3RcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsIlN0ZGxpYl9PYmoiLCJyZWdpc3Rlcl9leGNlcHRpb24iLCJuYW1lIiwiZXhuIiwic2xvdCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw0QkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxtQkFBQUMsTUFBQUM7QUFBQUE7QUFBQUEsS0FBQSxJQ3lCZ0I7QUFBQSxLQUFBQyxPQUFBO0FBQUEsSUFDZCw0Q0FBOEI7QUFBQTtBQUFBLEdEMUJoQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjI4NTgwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImZtdC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvZm10L2ZtdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIGZtdCBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubGV0IGludmFsaWRfYXJnJyA9IGludmFsaWRfYXJnXG5cbigqIEVycm9ycyAqKVxuXG5sZXQgZXJyX3N0cl9mb3JtYXR0ZXIgPSBcIkZvcm1hdC5zdHJfZm9ybWF0dGVyIGNhbid0IGJlIHNldC5cIlxuXG4oKiBTdGFuZGFyZCBvdXRwdXRzICopXG5cbmxldCBzdGRvdXQgPSBGb3JtYXQuc3RkX2Zvcm1hdHRlclxubGV0IHN0ZGVyciA9IEZvcm1hdC5lcnJfZm9ybWF0dGVyXG5cbigqIEZvcm1hdHRpbmcgKilcblxubGV0IHBmID0gRm9ybWF0LmZwcmludGZcbmxldCBwciA9IEZvcm1hdC5wcmludGZcbmxldCBlcHIgPSBGb3JtYXQuZXByaW50ZlxubGV0IHN0ciA9IEZvcm1hdC5hc3ByaW50ZlxubGV0IGtwZiA9IEZvcm1hdC5rZnByaW50ZlxubGV0IGtzdHIgPSBGb3JtYXQua2FzcHJpbnRmXG5sZXQgZmFpbHdpdGggZm10ID0ga3N0ciBmYWlsd2l0aCBmbXRcbmxldCBmYWlsd2l0aF9ub3RyYWNlIGZtdCA9IGtzdHIgKGZ1biBzIC0+IHJhaXNlX25vdHJhY2UgKEZhaWx1cmUgcykpIGZtdFxubGV0IGludmFsaWRfYXJnIGZtdCA9IGtzdHIgaW52YWxpZF9hcmcgZm10XG5sZXQgZXJyb3IgZm10ID0ga3N0ciAoZnVuIHMgLT4gRXJyb3IgcykgZm10XG5sZXQgZXJyb3JfbXNnIGZtdCA9IGtzdHIgKGZ1biBzIC0+IEVycm9yIChgTXNnIHMpKSBmbXRcblxuKCogRm9ybWF0dGVycyAqKVxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGZsdXNoIHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKVxubGV0IG5vcCBmbXQgcHBmID0gKClcbmxldCBhbnkgZm10IHBwZiBfID0gcGYgcHBmIGZtdFxubGV0IHVzaW5nIGYgcHAgcHBmIHYgPSBwcCBwcGYgKGYgdilcbmxldCBjb25zdCBwcF92IHYgcHBmIF8gPSBwcF92IHBwZiB2XG5sZXQgaWYnIGJvb2wgcHAgPSBpZiBib29sIHRoZW4gcHAgZWxzZSBub3BcbmxldCBmbXQgZm10IHBwZiA9IHBmIHBwZiBmbXRcblxuKCogU2VwYXJhdG9ycyAqKVxuXG5sZXQgY3V0IHBwZiBfID0gRm9ybWF0LnBwX3ByaW50X2N1dCBwcGYgKClcbmxldCBzcCBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zcGFjZSBwcGYgKClcbmxldCBzcHMgbiBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9icmVhayBwcGYgbiAwXG5sZXQgY29tbWEgcHBmIF8gPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBcIixcIjsgc3AgcHBmICgpXG5sZXQgc2VtaSBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIFwiO1wiOyBzcCBwcGYgKClcblxuKCogU2VxdWVuY2luZyAqKVxuXG5sZXQgaXRlciA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfZWx0IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX2VsdCB2ID1cbiAgICBpZiAhaXNfZmlyc3QgdGhlbiAoaXNfZmlyc3QgOj0gZmFsc2UpIGVsc2UgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9lbHQgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF9lbHQgdlxuXG5sZXQgaXRlcl9iaW5kaW5ncyA/c2VwOihwcF9zZXAgPSBjdXQpIGl0ZXIgcHBfYmluZGluZyBwcGYgdiA9XG4gIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gIGxldCBwcF9iaW5kaW5nIGsgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gKGlzX2ZpcnN0IDo9IGZhbHNlKSBlbHNlIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfYmluZGluZyBwcGYgKGssIHYpXG4gIGluXG4gIGl0ZXIgcHBfYmluZGluZyB2XG5cbmxldCBhcHBlbmQgcHBfdjAgcHBfdjEgcHBmIHYgPSBwcF92MCBwcGYgdjsgcHBfdjEgcHBmIHZcbmxldCAoICsrICkgPSBhcHBlbmRcbmxldCBjb25jYXQgP3NlcCBwcHMgcHBmIHYgPSBpdGVyID9zZXAgTGlzdC5pdGVyIChmdW4gcHBmIHBwIC0+IHBwIHBwZiB2KSBwcGYgcHBzXG5cbigqIEJveGVzICopXG5cbmxldCBib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2JveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaGJveCBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hib3ggcHBmICgpOyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgdmJveCA/KGluZGVudCA9IDApIHBwX3YgcHBmIHYgPVxuICBGb3JtYXQuKHBwX29wZW5fdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG5sZXQgaHZib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2h2Ym94IHBwZiBpbmRlbnQ7IHBwX3YgcHBmIHY7IHBwX2Nsb3NlX2JveCBwcGYgKCkpXG5cbmxldCBob3Zib3ggPyhpbmRlbnQgPSAwKSBwcF92IHBwZiB2ID1cbiAgRm9ybWF0LihwcF9vcGVuX2hvdmJveCBwcGYgaW5kZW50OyBwcF92IHBwZiB2OyBwcF9jbG9zZV9ib3ggcHBmICgpKVxuXG4oKiBCcmFja2V0cyAqKVxuXG5sZXQgc3Vycm91bmQgczEgczIgcHBfdiBwcGYgdiA9XG4gIEZvcm1hdC4ocHBfcHJpbnRfc3RyaW5nIHBwZiBzMTsgcHBfdiBwcGYgdjsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzMilcblxubGV0IHBhcmVucyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCIoXCIgXCIpXCIgcHBfdilcbmxldCBicmFja2V0cyBwcF92ID0gYm94IH5pbmRlbnQ6MSAoc3Vycm91bmQgXCJbXCIgXCJdXCIgcHBfdilcbmxldCBveGZvcmRfYnJhY2tldHMgcHBfdiA9IGJveCB+aW5kZW50OjIgKHN1cnJvdW5kIFwiW3xcIiBcInxdXCIgcHBfdilcbmxldCBicmFjZXMgcHBfdiA9IGJveCB+aW5kZW50OjEgKHN1cnJvdW5kIFwie1wiIFwifVwiIHBwX3YpXG5sZXQgcXVvdGUgPyhtYXJrID0gXCJcXFwiXCIpIHBwX3YgPVxuICBsZXQgcHBfbWFyayBwcGYgXyA9IEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMSBtYXJrIGluXG4gIGJveCB+aW5kZW50OjEgKHBwX21hcmsgKysgcHBfdiArKyBwcF9tYXJrKVxuXG4oKiBTdGRsaWIgdHlwZXMgZm9ybWF0dGVycyAqKVxuXG5sZXQgYm9vbCA9IEZvcm1hdC5wcF9wcmludF9ib29sXG5sZXQgaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxubGV0IG5hdGl2ZWludCBwcGYgdiA9IHBmIHBwZiBcIiVuZFwiIHZcbmxldCBpbnQzMiBwcGYgdiA9IHBmIHBwZiBcIiVsZFwiIHZcbmxldCBpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMZFwiIHZcbmxldCB1aW50IHBwZiB2ID0gcGYgcHBmIFwiJXVcIiB2XG5sZXQgdWludDMyIHBwZiB2ID0gcGYgcHBmIFwiJWx1XCIgdlxubGV0IHVpbnQ2NCBwcGYgdiA9IHBmIHBwZiBcIiVMdVwiIHZcbmxldCB1bmF0aXZlaW50IHBwZiB2ID0gcGYgcHBmIFwiJW51XCIgdlxubGV0IGNoYXIgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxubGV0IHN0cmluZyA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbmxldCBidWZmZXIgcHBmIGIgPSBzdHJpbmcgcHBmIChCdWZmZXIuY29udGVudHMgYilcbmxldCBleG4gcHBmIGUgPSBzdHJpbmcgcHBmIChQcmludGV4Yy50b19zdHJpbmcgZSlcbmxldCBleG5fYmFja3RyYWNlIHBwZiAoZSwgYnQpID1cbiAgbGV0IHBwX2JhY2t0cmFjZV9zdHIgcHBmIHMgPVxuICAgIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAoKiB0aGVyZSdzIGEgbmV3bGluZSBhdCB0aGUgZW5kICopIGluXG4gICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgPVxuICAgICAgaWYgcmlnaHQgPSBzdG9wIHRoZW4gc3RyaW5nIHBwZiAoU3RyaW5nLnN1YiBzIGxlZnQgKHJpZ2h0IC0gbGVmdCkpIGVsc2VcbiAgICAgIGlmIHMuW3JpZ2h0XSA8PiAnXFxuJyB0aGVuIGxvb3AgbGVmdCAocmlnaHQgKyAxKSBlbHNlXG4gICAgICBiZWdpblxuICAgICAgICBzdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgbGVmdCAocmlnaHQgLSBsZWZ0KSk7XG4gICAgICAgIGN1dCBwcGYgKCk7XG4gICAgICAgIGxvb3AgKHJpZ2h0ICsgMSkgKHJpZ2h0ICsgMSlcbiAgICAgIGVuZFxuICAgIGluXG4gICAgaWYgcyA9IFwiXCIgdGhlbiAoc3RyaW5nIHBwZiBcIk5vIGJhY2t0cmFjZSBhdmFpbGFibGUuXCIpIGVsc2VcbiAgICBsb29wIDAgMFxuICBpblxuICBwZiBwcGYgXCJAWzx2PkV4Y2VwdGlvbjogJWFALCVhQF1cIlxuICAgIGV4biBlIHBwX2JhY2t0cmFjZV9zdHIgKFByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGJ0KVxuXG5sZXQgZmxvYXQgcHBmIHYgPSBwZiBwcGYgXCIlZ1wiIHZcbmxldCByb3VuZCB4ID0gZmxvb3IgKHggKy4gMC41KVxubGV0IHJvdW5kX2RmcmFjIGQgeCA9XG4gIGlmIHggLS4gKHJvdW5kIHgpID0gMC4gdGhlbiB4IGVsc2UgICAgICAgICAgICAgICAgICAgKCogeCBpcyBhbiBpbnRlZ2VyLiAqKVxuICBsZXQgbSA9IDEwLiAqKiAoZmxvYXRfb2ZfaW50IGQpIGluICAgICAgICAgICAgICAgICgqIG0gbW92ZXMgMTBeLWQgdG8gMS4gKilcbiAgKGZsb29yICgoeCAqLiBtKSArLiAwLjUpKSAvLiBtXG5cbmxldCByb3VuZF9kc2lnIGQgeCA9XG4gIGlmIHggPSAwLiB0aGVuIDAuIGVsc2VcbiAgbGV0IG0gPSAxMC4gKiogKGZsb29yIChsb2cxMCAoYWJzX2Zsb2F0IHgpKSkgaW4gICAgICAgKCogdG8gbm9ybWFsaXplIHguICopXG4gIChyb3VuZF9kZnJhYyBkICh4IC8uIG0pKSAqLiBtXG5cbmxldCBmbG9hdF9kZnJhYyBkIHBwZiBmID0gcGYgcHBmIFwiJWdcIiAocm91bmRfZGZyYWMgZCBmKVxubGV0IGZsb2F0X2RzaWcgZCBwcGYgZiA9IHBmIHBwZiBcIiVnXCIgKHJvdW5kX2RzaWcgZCBmKVxuXG5sZXQgcGFpciA/c2VwOihwcF9zZXAgPSBjdXQpIHBwX2ZzdCBwcF9zbmQgcHBmIChmc3QsIHNuZCkgPVxuICBwcF9mc3QgcHBmIGZzdDsgcHBfc2VwIHBwZiAoKTsgcHBfc25kIHBwZiBzbmRcblxubGV0IG9wdGlvbiA/bm9uZToocHBfbm9uZSA9IG5vcCkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IHBwX25vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCByZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IGxpc3QgP3NlcCBwcF9lbHQgPSBpdGVyID9zZXAgTGlzdC5pdGVyIHBwX2VsdFxubGV0IGFycmF5ID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIEFycmF5Lml0ZXIgcHBfZWx0XG5sZXQgc2VxID9zZXAgcHBfZWx0ID0gaXRlciA/c2VwIFNlcS5pdGVyIHBwX2VsdFxubGV0IGhhc2h0YmwgP3NlcCBwcF9iaW5kaW5nID0gaXRlcl9iaW5kaW5ncyA/c2VwIEhhc2h0YmwuaXRlciBwcF9iaW5kaW5nXG5sZXQgcXVldWUgP3NlcCBwcF9lbHQgPSBpdGVyIFF1ZXVlLml0ZXIgcHBfZWx0XG5sZXQgc3RhY2sgP3NlcCBwcF9lbHQgPSBpdGVyIFN0YWNrLml0ZXIgcHBfZWx0XG5cbigqIFN0ZGxpYiB0eXBlIGR1bXBlcnMgKilcblxubW9kdWxlIER1bXAgPSBzdHJ1Y3RcblxuICAoKiBTdGRsaWIgdHlwZXMgKilcblxuICBsZXQgc2lnX25hbWVzID1cbiAgICBTeXMuWyBzaWdhYnJ0LCBcIlNJR0FCUlRcIjsgc2lnYWxybSwgXCJTSUdBTFJNXCI7IHNpZ2ZwZSwgXCJTSUdGUEVcIjtcbiAgICAgICAgICBzaWdodXAsIFwiU0lHSFVQXCI7IHNpZ2lsbCwgXCJTSUdJTExcIjsgc2lnaW50LCBcIlNJR0lOVFwiO1xuICAgICAgICAgIHNpZ2tpbGwsIFwiU0lHS0lMTFwiOyBzaWdwaXBlLCBcIlNJR1BJUEVcIjsgc2lncXVpdCwgXCJTSUdRVUlUXCI7XG4gICAgICAgICAgc2lnc2VndiwgXCJTSUdTRUdWXCI7IHNpZ3Rlcm0sIFwiU0lHVEVSTVwiOyBzaWd1c3IxLCBcIlNJR1VTUjFcIjtcbiAgICAgICAgICBzaWd1c3IyLCBcIlNJR1VTUjJcIjsgc2lnY2hsZCwgXCJTSUdDSExEXCI7IHNpZ2NvbnQsIFwiU0lHQ09OVFwiO1xuICAgICAgICAgIHNpZ3N0b3AsIFwiU0lHU1RPUFwiOyBzaWd0c3RwLCBcIlNJR1RTVFBcIjsgc2lndHRpbiwgXCJTSUdUVElOXCI7XG4gICAgICAgICAgc2lndHRvdSwgXCJTSUdUVE9VXCI7IHNpZ3Z0YWxybSwgXCJTSUdWVEFMUk1cIjsgc2lncHJvZiwgXCJTSUdQUk9GXCI7XG4gICAgICAgICAgc2lnYnVzLCBcIlNJR0JVU1wiOyBzaWdwb2xsLCBcIlNJR1BPTExcIjsgc2lnc3lzLCBcIlNJR1NZU1wiO1xuICAgICAgICAgIHNpZ3RyYXAsIFwiU0lHVFJBUFwiOyBzaWd1cmcsIFwiU0lHVVJHXCI7IHNpZ3hjcHUsIFwiU0lHWENQVVwiO1xuICAgICAgICAgIHNpZ3hmc3osIFwiU0lHWEZTWlwiOyBdXG5cbiAgbGV0IHNpZ25hbCBwcGYgcyA9IG1hdGNoIExpc3QuYXNzcV9vcHQgcyBzaWdfbmFtZXMgd2l0aFxuICB8IFNvbWUgbmFtZSAtPiBzdHJpbmcgcHBmIG5hbWVcbiAgfCBOb25lIC0+IHBmIHBwZiBcIlNJRyglZClcIiBzXG5cbiAgbGV0IHVjaGFyIHBwZiB1ID0gcGYgcHBmIFwiVSslMDRYXCIgKFVjaGFyLnRvX2ludCB1KVxuICBsZXQgc3RyaW5nIHBwZiBzID0gcGYgcHBmIFwiJVNcIiBzXG4gIGxldCBwYWlyIHBwX2ZzdCBwcF9zbmQgPVxuICAgIHBhcmVucyAodXNpbmcgZnN0IChib3ggcHBfZnN0KSArKyBjb21tYSArKyB1c2luZyBzbmQgKGJveCBwcF9zbmQpKVxuXG4gIGxldCBvcHRpb24gcHBfdiBwcGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGYgcHBmIFwiTm9uZVwiXG4gIHwgU29tZSB2IC0+IHBmIHBwZiBcIkBbPDI+U29tZUAgQFslYUBdQF1cIiBwcF92IHZcblxuICBsZXQgcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHBmIHBwZiBcIkBbPDI+T2tAIEBbJWFAXUBdXCIgb2sgdlxuICB8IEVycm9yIGUgLT4gcGYgcHBmIFwiQFs8Mj5FcnJvckAgQFslYUBdQF1cIiBlcnJvciBlXG5cbiAgKCogU2VxdWVuY2luZyAqKVxuXG4gIGxldCBpdGVyIGl0ZXJfZiBwcF9uYW1lIHBwX2VsdCA9XG4gICAgbGV0IHBwX3YgPSBpdGVyIH5zZXA6c3AgaXRlcl9mIChib3ggcHBfZWx0KSBpblxuICAgIHBhcmVucyAocHBfbmFtZSArKyBzcCArKyBwcF92KVxuXG4gIGxldCBpdGVyX2JpbmRpbmdzIGl0ZXJfZiBwcF9uYW1lIHBwX2sgcHBfdiA9XG4gICAgbGV0IHBwX3YgPSBpdGVyX2JpbmRpbmdzIH5zZXA6c3AgaXRlcl9mIChwYWlyIHBwX2sgcHBfdikgaW5cbiAgICBwYXJlbnMgKHBwX25hbWUgKysgc3AgKysgcHBfdilcblxuICAoKiBTdGRsaWIgZGF0YSBzdHJ1Y3R1cmVzICopXG5cbiAgbGV0IGxpc3QgcHBfZWx0ID0gYnJhY2tldHMgKGxpc3QgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IGFycmF5IHBwX2VsdCA9IG94Zm9yZF9icmFja2V0cyAoYXJyYXkgfnNlcDpzZW1pIChib3ggcHBfZWx0KSlcbiAgbGV0IHNlcSBwcF9lbHQgPSBicmFja2V0cyAoc2VxIH5zZXA6c2VtaSAoYm94IHBwX2VsdCkpXG5cbiAgbGV0IGhhc2h0YmwgcHBfayBwcF92ID1cbiAgICBpdGVyX2JpbmRpbmdzIEhhc2h0YmwuaXRlciAoYW55IFwiaGFzaHRibFwiKSBwcF9rIHBwX3ZcblxuICBsZXQgc3RhY2sgcHBfZWx0ID0gaXRlciBTdGFjay5pdGVyIChhbnkgXCJzdGFja1wiKSBwcF9lbHRcbiAgbGV0IHF1ZXVlIHBwX2VsdCA9IGl0ZXIgUXVldWUuaXRlciAoYW55IFwicXVldWVcIikgcHBfZWx0XG5cbiAgKCogUmVjb3JkcyAqKVxuXG4gIGxldCBmaWVsZCA/KGxhYmVsID0gc3RyaW5nKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgICBwZiBwcGYgXCJAWzwxPiVhID1AICVhQF1cIiBsYWJlbCBsIHBwX3YgKHByaiB2KVxuXG4gIGxldCByZWNvcmQgcHBzID1cbiAgICBib3ggfmluZGVudDoyIChzdXJyb3VuZCBcInsgXCIgXCIgfVwiIEBAIHZib3ggKGNvbmNhdCB+c2VwOihhbnkgXCI7QCxcIikgcHBzKSlcbmVuZFxuXG4oKiBNYWduaXR1ZGVzICopXG5cbmxldCBpbG9nMTAgeCA9XG4gIGxldCByZWMgbG9vcCBwIHggPSBpZiB4ID0gMCB0aGVuIHAgZWxzZSBsb29wIChwICsgMSkgKHggLyAxMCkgaW5cbiAgbG9vcCAoLTEpIHhcblxubGV0IGlwb3cxMCBuID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChhY2MgKiAxMCkgKG4gLSAxKSBpblxuICBsb29wIDEgblxuXG5sZXQgc2lfc3ltYl9tYXggPSAxNlxubGV0IHNpX3N5bWIgPVxuICBbfCBcInlcIjsgXCJ6XCI7IFwiYVwiOyBcImZcIjsgXCJwXCI7IFwiblwiOyBcInVcIjsgXCJtXCI7IFwiXCI7IFwia1wiOyBcIk1cIjsgXCJHXCI7IFwiVFwiOyBcIlBcIjtcbiAgICAgXCJFXCI7IFwiWlwiOyBcIllcInxdXG5cbmxldCByZWMgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHN5bWIgZmFjdG9yIHBwZiBzID1cbiAgbGV0IG0gPSBzIC8gZmFjdG9yIGluXG4gIGxldCBuID0gcyBtb2QgZmFjdG9yIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBtID49IDEwMCAtPiAoKiBObyBmcmFjdGlvbmFsIGRpZ2l0ICopXG4gICAgICBsZXQgbV91cCA9IGlmIG4gPiAwIHRoZW4gbSArIDEgZWxzZSBtIGluXG4gICAgICBpZiBtX3VwID49IDEwMDAgdGhlbiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobV91cCAqIGZhY3RvcikgZWxzZVxuICAgICAgcGYgcHBmIFwiJWQlcyVzXCIgbV91cCBzeW1iIHVcbiAgfCBtIHdoZW4gbSA+PSAxMCAtPiAoKiBPbmUgZnJhY3Rpb25hbCBkaWdpdCB3Lm8uIHRyYWlsaW5nIDAgKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IGZhY3RvciAvIDEwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgYmVnaW4gbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMCAtPiBzaV9zaXplIH5zY2FsZSB1IHBwZiAobSAqIGZhY3RvciArIGYgKiBmX2ZhY3RvcilcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lZCVzJXNcIiBtIGYgc3ltYiB1XG4gICAgICBlbmRcbiAgfCBtIC0+ICgqIFR3byBvciB6ZXJvIGZyYWN0aW9uYWwgZGlnaXRzIHcuby4gdHJhaWxpbmcgMCAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gZmFjdG9yIC8gMTAwIGluXG4gICAgICBsZXQgZl9tID0gbiAvIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9uID0gbiBtb2QgZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX21fdXAgPSBpZiBmX24gPiAwIHRoZW4gZl9tICsgMSBlbHNlIGZfbSBpblxuICAgICAgbWF0Y2ggZl9tX3VwIHdpdGhcbiAgICAgIHwgMCAtPiBwZiBwcGYgXCIlZCVzJXNcIiBtIHN5bWIgdVxuICAgICAgfCBmIHdoZW4gZiA+PSAxMDAgLT4gc2lfc2l6ZSB+c2NhbGUgdSBwcGYgKG0gKiBmYWN0b3IgKyBmICogZl9mYWN0b3IpXG4gICAgICB8IGYgd2hlbiBmIG1vZCAxMCA9IDAgLT4gcGYgcHBmIFwiJWQuJWQlcyVzXCIgbSAoZiAvIDEwKSBzeW1iIHVcbiAgICAgIHwgZiAtPiBwZiBwcGYgXCIlZC4lMDJkJXMlc1wiIG0gZiBzeW1iIHVcblxuYW5kIHNpX3NpemUgfnNjYWxlIHUgcHBmIHMgPSBtYXRjaCBzY2FsZSA8IC04IHx8IHNjYWxlID4gOCB3aXRoXG58IHRydWUgLT4gaW52YWxpZF9hcmcgXCJ+c2NhbGUgaXMgJWQsIG11c3QgYmUgaW4gWy04OzhdXCIgc2NhbGVcbnwgZmFsc2UgLT5cbiAgICBsZXQgcG93X2Rpdl8zID0gaWYgcyA9IDAgdGhlbiAwIGVsc2UgKGlsb2cxMCBzIC8gMykgaW5cbiAgICBsZXQgc3ltYiA9IChzY2FsZSArIDgpICsgcG93X2Rpdl8zIGluXG4gICAgbGV0IHN5bWIsIGZhY3RvciA9IG1hdGNoIHN5bWIgPiBzaV9zeW1iX21heCB3aXRoXG4gICAgfCB0cnVlIC0+IHNpX3N5bWJfbWF4LCBpcG93MTAgKCg4IC0gc2NhbGUpICogMylcbiAgICB8IGZhbHNlIC0+IHN5bWIsIGlwb3cxMCAocG93X2Rpdl8zICogMylcbiAgICBpblxuICAgIGlmIGZhY3RvciA9IDFcbiAgICB0aGVuIHBmIHBwZiBcIiVkJXMlc1wiIHMgc2lfc3ltYi4oc3ltYikgdVxuICAgIGVsc2UgcHBfYXRfZmFjdG9yIH5zY2FsZSB1IHNpX3N5bWIuKHN5bWIpIGZhY3RvciBwcGYgc1xuXG5sZXQgYnl0ZV9zaXplIHBwZiBzID0gc2lfc2l6ZSB+c2NhbGU6MCBcIkJcIiBwcGYgc1xuXG5sZXQgYmlfYnl0ZV9zaXplIHBwZiBzID1cbiAgKCogWFhYIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRoaXMuICopXG4gIGxldCBfcHBfYnl0ZV9zaXplIGsgaSBwcGYgcyA9XG4gICAgbGV0IHBwX2ZyYWMgPSBmbG9hdF9kZnJhYyAxIGluXG4gICAgbGV0IGRpdl9yb3VuZF91cCBtIG4gPSAobSArIG4gLSAxKSAvIG4gaW5cbiAgICBsZXQgZmxvYXQgPSBmbG9hdF9vZl9pbnQgaW5cbiAgICBpZiBzIDwgayB0aGVuIHBmIHBwZiBcIiVkQlwiIHMgZWxzZVxuICAgIGxldCBtID0gayAqIGsgaW5cbiAgICBpZiBzIDwgbSB0aGVuIGJlZ2luXG4gICAgICBsZXQga3N0ciA9IGlmIGkgPSBcIlwiIHRoZW4gXCJrXCIgKCogU0kgKikgZWxzZSBcIktcIiAoKiBJRUMgKikgaW5cbiAgICAgIGxldCBzayA9IHMgLyBrIGluXG4gICAgICBpZiBzayA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhJXMlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IGspIGtzdHIgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZCVzJXNCXCIgKGRpdl9yb3VuZF91cCBzIGspIGtzdHIgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IGcgPSBrICogbSBpblxuICAgIGlmIHMgPCBnIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzbSA9IHMgLyBtIGluXG4gICAgICBpZiBzbSA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhTSVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgbSkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZE0lc0JcIiAoZGl2X3JvdW5kX3VwIHMgbSkgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHQgPSBrICogZyBpblxuICAgIGlmIHMgPCB0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBzZyA9IHMgLyBnIGluXG4gICAgICBpZiBzZyA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhRyVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgZykgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZEclc0JcIiAoZGl2X3JvdW5kX3VwIHMgZykgaVxuICAgIGVuZCBlbHNlXG4gICAgbGV0IHAgPSBrICogdCBpblxuICAgIGlmIHMgPCBwIHRoZW4gYmVnaW5cbiAgICAgIGxldCBzdCA9IHMgLyB0IGluXG4gICAgICBpZiBzdCA8IDEwXG4gICAgICB0aGVuIHBmIHBwZiBcIiVhVCVzQlwiIHBwX2ZyYWMgKGZsb2F0IHMgLy4gZmxvYXQgdCkgaVxuICAgICAgZWxzZSBwZiBwcGYgXCIlZFQlc0JcIiAoZGl2X3JvdW5kX3VwIHMgdCkgaVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3AgPSBzIC8gcCBpblxuICAgICAgaWYgc3AgPCAxMFxuICAgICAgdGhlbiBwZiBwcGYgXCIlYVAlc0JcIiBwcF9mcmFjIChmbG9hdCBzIC8uIGZsb2F0IHApIGlcbiAgICAgIGVsc2UgcGYgcHBmIFwiJWRQJXNCXCIgKGRpdl9yb3VuZF91cCBzIHApIGlcbiAgICBlbmRcbiAgaW5cbiAgX3BwX2J5dGVfc2l6ZSAxMDI0IFwiaVwiIHBwZiBzXG5cbigqIFhYWCBGcm9tIDQuMDggb24gdXNlIEludDY0LnVuc2lnbmVkXypcblxuICAgU2VlIEhhY2tlcidzIERlbGlnaHQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZSB1bnNpZ25lZF8qIGZ1bnMgKilcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgeDAgeDEgPSBJbnQ2NC4oY29tcGFyZSAoc3ViIHgwIG1pbl9pbnQpIChzdWIgeDEgbWluX2ludCkpXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9IG1hdGNoIGQgPCBJbnQ2NC56ZXJvIHdpdGhcbnwgdHJ1ZSAtPiBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiBJbnQ2NC56ZXJvIGVsc2UgSW50NjQub25lXG58IGZhbHNlIC0+XG4gICAgbGV0IHEgPSBJbnQ2NC4oc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSkgaW5cbiAgICBsZXQgciA9IEludDY0LihzdWIgbiAobXVsIHEgZCkpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIEludDY0LnN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPSBJbnQ2NC4oc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZCkpXG5cbmxldCB1c19zcGFuICAgPSAgICAgICAgICAgICAgICAgIDFfMDAwTFxubGV0IG1zX3NwYW4gICA9ICAgICAgICAgICAgICAxXzAwMF8wMDBMXG5sZXQgc2VjX3NwYW4gID0gICAgICAgICAgMV8wMDBfMDAwXzAwMExcbmxldCBtaW5fc3BhbiAgPSAgICAgICAgIDYwXzAwMF8wMDBfMDAwTFxubGV0IGhvdXJfc3BhbiA9ICAgICAgIDM2MDBfMDAwXzAwMF8wMDBMXG5sZXQgZGF5X3NwYW4gID0gICAgIDg2XzQwMF8wMDBfMDAwXzAwMExcbmxldCB5ZWFyX3NwYW4gPSAzMV81NTdfNjAwXzAwMF8wMDBfMDAwTFxuXG5sZXQgcmVjIHBwX3NpX3NwYW4gdW5pdF9zdHIgc2lfdW5pdCBzaV9oaWdoZXJfdW5pdCBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbSA9IHVuc2lnbmVkX2RpdiBzcGFuIHNpX3VuaXQgaW5cbiAgbGV0IG4gPSB1bnNpZ25lZF9yZW0gc3BhbiBzaV91bml0IGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IG0gd2hlbiBnZXEgbSAxMDBMIC0+ICgqIE5vIGZyYWN0aW9uYWwgZGlnaXQgKilcbiAgICAgIGxldCBtX3VwID0gaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIG0gZWxzZSBJbnQ2NC5zdWNjIG0gaW5cbiAgICAgIGxldCBzcGFuJyA9IEludDY0Lm11bCBtX3VwIHNpX3VuaXQgaW5cbiAgICAgIGlmIGdlcSBzcGFuJyBzaV9oaWdoZXJfdW5pdCB0aGVuIHVpbnQ2NF9uc19zcGFuIHBwZiBzcGFuJyBlbHNlXG4gICAgICBwZiBwcGYgXCIlTGQlc1wiIG1fdXAgdW5pdF9zdHJcbiAgfCBtIHdoZW4gZ2VxIG0gMTBMIC0+ICgqIE9uZSBmcmFjdGlvbmFsIGRpZ2l0IHcuby4gdHJhaWxpbmcgemVybyAqKVxuICAgICAgbGV0IGZfZmFjdG9yID0gdW5zaWduZWRfZGl2IHNpX3VuaXQgMTBMIGluXG4gICAgICBsZXQgZl9tID0gdW5zaWduZWRfZGl2IG4gZl9mYWN0b3IgaW5cbiAgICAgIGxldCBmX24gPSB1bnNpZ25lZF9yZW0gbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gICAgICBiZWdpbiBtYXRjaCBmX21fdXAgd2l0aFxuICAgICAgfCAwTCAtPiBwZiBwcGYgXCIlTGQlc1wiIG0gdW5pdF9zdHJcbiAgICAgIHwgZiB3aGVuIGdlcSBmIDEwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZC4lTGQlc1wiIG0gZiB1bml0X3N0clxuICAgICAgZW5kXG4gIHwgbSAtPiAoKiBUd28gb3IgemVybyBmcmFjdGlvbmFsIGRpZ2l0cyB3Lm8uIHRyYWlsaW5nIHplcm8gKilcbiAgICAgIGxldCBmX2ZhY3RvciA9IHVuc2lnbmVkX2RpdiBzaV91bml0IDEwMEwgaW5cbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBmX2ZhY3RvciBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGZfZmFjdG9yIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IDBMIC0+IHBmIHBwZiBcIiVMZCVzXCIgbSB1bml0X3N0clxuICAgICAgfCBmIHdoZW4gZ2VxIGYgMTAwTCAtPlxuICAgICAgICAgIHVpbnQ2NF9uc19zcGFuIHBwZiBJbnQ2NC4oYWRkIChtdWwgbSBzaV91bml0KSAobXVsIGYgZl9mYWN0b3IpKVxuICAgICAgfCBmIHdoZW4gSW50NjQuZXF1YWwgKEludDY0LnJlbSBmIDEwTCkgMEwgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJUxkJXNcIiBtIChJbnQ2NC5kaXYgZiAxMEwpIHVuaXRfc3RyXG4gICAgICB8IGYgLT5cbiAgICAgICAgICBwZiBwcGYgXCIlTGQuJTAyTGQlc1wiIG0gZiB1bml0X3N0clxuXG5hbmQgcHBfbm9uX3NpIHVuaXRfc3RyIHVuaXQgdW5pdF9sb19zdHIgdW5pdF9sbyB1bml0X2xvX3NpemUgcHBmIHNwYW4gPVxuICBsZXQgZ2VxIHggeSA9IHVuc2lnbmVkX2NvbXBhcmUgeCB5ID49IDAgaW5cbiAgbGV0IG0gPSB1bnNpZ25lZF9kaXYgc3BhbiB1bml0IGluXG4gIGxldCBuID0gdW5zaWduZWRfcmVtIHNwYW4gdW5pdCBpblxuICBpZiBJbnQ2NC5lcXVhbCBuIDBMIHRoZW4gcGYgcHBmIFwiJUxkJXNcIiBtIHVuaXRfc3RyIGVsc2VcbiAgbGV0IGZfbSA9IHVuc2lnbmVkX2RpdiBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIHVuaXRfbG8gaW5cbiAgbGV0IGZfbV91cCA9IGlmIEludDY0LmVxdWFsIGZfbiAwTCB0aGVuIGZfbSBlbHNlIEludDY0LnN1Y2MgZl9tIGluXG4gIG1hdGNoIGZfbV91cCB3aXRoXG4gIHwgZiB3aGVuIGdlcSBmIHVuaXRfbG9fc2l6ZSAtPlxuICAgICAgdWludDY0X25zX3NwYW4gcHBmIEludDY0LihhZGQgKG11bCBtIHVuaXQpIChtdWwgZiB1bml0X2xvKSlcbiAgfCBmIC0+XG4gICAgICBwZiBwcGYgXCIlTGQlcyVMZCVzXCIgbSB1bml0X3N0ciBmIHVuaXRfbG9fc3RyXG5cbmFuZCB1aW50NjRfbnNfc3BhbiBwcGYgc3BhbiA9XG4gIGxldCBnZXEgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPj0gMCBpblxuICBsZXQgbHQgeCB5ID0gdW5zaWduZWRfY29tcGFyZSB4IHkgPSAtMSBpblxuICBtYXRjaCBzcGFuIHdpdGhcbiAgfCBzIHdoZW4gbHQgcyB1c19zcGFuIC0+IHBmIHBwZiBcIiVMZG5zXCIgc1xuICB8IHMgd2hlbiBsdCBzIG1zX3NwYW4gLT4gcHBfc2lfc3BhbiBcInVzXCIgdXNfc3BhbiBtc19zcGFuIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgc2VjX3NwYW4gLT4gcHBfc2lfc3BhbiBcIm1zXCIgbXNfc3BhbiBzZWNfc3BhbiBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIG1pbl9zcGFuIC0+IHBwX3NpX3NwYW4gXCJzXCIgc2VjX3NwYW4gbWluX3NwYW4gcHBmIHNcbiAgfCBzIHdoZW4gbHQgcyBob3VyX3NwYW4gLT4gcHBfbm9uX3NpIFwibWluXCIgbWluX3NwYW4gXCJzXCIgc2VjX3NwYW4gNjBMIHBwZiBzXG4gIHwgcyB3aGVuIGx0IHMgZGF5X3NwYW4gLT4gcHBfbm9uX3NpIFwiaFwiIGhvdXJfc3BhbiBcIm1pblwiIG1pbl9zcGFuIDYwTCBwcGYgc1xuICB8IHMgd2hlbiBsdCBzIHllYXJfc3BhbiAtPiBwcF9ub25fc2kgXCJkXCIgZGF5X3NwYW4gXCJoXCIgaG91cl9zcGFuIDI0TCBwcGYgc1xuICB8IHMgLT5cbiAgICAgIGxldCBtID0gdW5zaWduZWRfZGl2IHMgeWVhcl9zcGFuIGluXG4gICAgICBsZXQgbiA9IHVuc2lnbmVkX3JlbSBzIHllYXJfc3BhbiBpblxuICAgICAgaWYgSW50NjQuZXF1YWwgbiAwTCB0aGVuIHBmIHBwZiBcIiVMZGFcIiBtIGVsc2VcbiAgICAgIGxldCBmX20gPSB1bnNpZ25lZF9kaXYgbiBkYXlfc3BhbiBpblxuICAgICAgbGV0IGZfbiA9IHVuc2lnbmVkX3JlbSBuIGRheV9zcGFuIGluXG4gICAgICBsZXQgZl9tX3VwID0gaWYgSW50NjQuZXF1YWwgZl9uIDBMIHRoZW4gZl9tIGVsc2UgSW50NjQuc3VjYyBmX20gaW5cbiAgICAgIG1hdGNoIGZfbV91cCB3aXRoXG4gICAgICB8IGYgd2hlbiBnZXEgZiAzNjZMIC0+IHBmIHBwZiBcIiVMZGFcIiAoSW50NjQuc3VjYyBtKVxuICAgICAgfCBmIC0+IHBmIHBwZiBcIiVMZGElTGRkXCIgbSBmXG5cbigqIEJpbmFyeSBmb3JtYXR0aW5nICopXG5cbnR5cGUgJ2EgdmVjID0gaW50ICogKGludCAtPiAnYSlcblxubGV0IGl0ZXJfdmVjIGYgKG4sIGdldCkgPSBmb3IgaSA9IDAgdG8gbiAtIDEgZG8gZiBpIChnZXQgaSkgZG9uZVxubGV0IHZlYyA/c2VwID0gaXRlcl9iaW5kaW5ncyA/c2VwIGl0ZXJfdmVjXG5cbmxldCBvbl9zdHJpbmcgPSB1c2luZyBTdHJpbmcuKGZ1biBzIC0+IGxlbmd0aCBzLCBnZXQgcylcbmxldCBvbl9ieXRlcyA9IHVzaW5nIEJ5dGVzLihmdW4gYiAtPiBsZW5ndGggYiwgZ2V0IGIpXG5cbmxldCBzdWJfdmVjcyB3IChuLCBnZXQpID1cbiAgKG4gLSAxKSAvIHcgKyAxLFxuICBmdW4gaiAtPlxuICAgIGxldCBvZmYgPSB3ICogaiBpblxuICAgIG1pbiB3IChuIC0gb2ZmKSwgZnVuIGkgLT4gZ2V0IChpICsgb2ZmKVxuXG5sZXQgcHJlZml4MHggPSBbXG4gIDB4ZiAgICAgICAsIGZtdCBcIiUwMXhcIjtcbiAgMHhmZiAgICAgICwgZm10IFwiJTAyeFwiO1xuICAweGZmZiAgICAgLCBmbXQgXCIlMDN4XCI7XG4gIDB4ZmZmZiAgICAsIGZtdCBcIiUwNHhcIjtcbiAgMHhmZmZmZiAgICwgZm10IFwiJTA1eFwiO1xuICAweGZmZmZmZiAgLCBmbXQgXCIlMDZ4XCI7XG4gIDB4ZmZmZmZmZiAsIGZtdCBcIiUwN3hcIjsgXVxuXG5sZXQgcGFkZGVkMHggfm1heCA9IG1hdGNoIExpc3QuZmluZF9vcHQgKGZ1biAoeCwgXykgLT4gbWF4IDw9IHgpIHByZWZpeDB4IHdpdGhcbnwgU29tZSAoXywgcHApIC0+IHBwXG58IE5vbmUgLT4gZm10IFwiJTA4eFwiXG5cbmxldCBhc2NpaSA/KHcgPSAwKSA/KHN1YnN0ID0gY29uc3QgY2hhciAnLicpICgpIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBwcF9jaGFyIHBwZiAoXywgYykgPVxuICAgIGlmICdcXHgyMCcgPD0gYyAmJiBjIDwgJ1xceDdmJyB0aGVuIGNoYXIgcHBmIGMgZWxzZSBzdWJzdCBwcGYgKClcbiAgaW5cbiAgdmVjIHBwX2NoYXIgcHBmIHY7XG4gIGlmIG4gPCB3IHRoZW4gc3BzICh3IC0gbikgcHBmICgpXG5cbmxldCBvY3RldHMgPyh3ID0gMCkgPyhzZXAgPSBzcCkgKCkgcHBmIChuLCBfIGFzIHYpID1cbiAgbGV0IHBwX3NlcCBwcGYgaSA9IGlmIGkgPiAwICYmIGkgbW9kIDIgPSAwIHRoZW4gc2VwIHBwZiAoKSBpblxuICBsZXQgcHBfY2hhciBwcGYgKGksIGMpID0gcHBfc2VwIHBwZiBpOyBwZiBwcGYgXCIlMDJ4XCIgKENoYXIuY29kZSBjKSBpblxuICB2ZWMgfnNlcDpub3AgcHBfY2hhciBwcGYgdjtcbiAgZm9yIGkgPSBuIHRvIHcgLSAxIGRvIHBwX3NlcCBwcGYgaTsgc3BzIDIgcHBmICgpIGRvbmVcblxubGV0IGFkZHJlc3NlcyA/YWRkciA/KHcgPSAxNikgcHBfdmVjIHBwZiAobiwgXyBhcyB2KSA9XG4gIGxldCBhZGRyID0gbWF0Y2ggYWRkciB3aXRoXG4gIHwgU29tZSBwcCAtPiBwcFxuICB8IF8gLT4gcGFkZGVkMHggfm1heDooKChuIC0gMSkgLyB3KSAqIHcpICsrIGNvbnN0IHN0cmluZyBcIjogXCJcbiAgaW5cbiAgbGV0IHBwX3N1YiBwcGYgKGksIHN1YikgPSBhZGRyIHBwZiAoaSAqIHcpOyBib3ggcHBfdmVjIHBwZiBzdWIgaW5cbiAgdmJveCAodmVjIHBwX3N1YikgcHBmIChzdWJfdmVjcyB3IHYpXG5cbmxldCBoZXggPyh3ID0gMTYpICgpID1cbiAgYWRkcmVzc2VzIH53ICgob2N0ZXRzIH53ICgpIHw+IGJveCkgKysgc3BzIDIgKysgKGFzY2lpIH53ICgpIHw+IGJveCkpXG5cbigqIFRleHQgYW5kIGxpbmVzICopXG5cbmxldCBpc19ubCBjID0gYyA9ICdcXG4nXG5sZXQgaXNfbmxfb3Jfc3AgYyA9IGlzX25sIGMgfHwgYyA9ICcgJ1xubGV0IGlzX3doaXRlID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgLi4gJ1xccicgIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgbm90X3doaXRlIGMgPSBub3QgKGlzX3doaXRlIGMpXG5sZXQgbm90X3doaXRlX29yX25sIGMgPSBpc19ubCBjIHx8IG5vdF93aGl0ZSBjXG5cbmxldCByZWMgc3RvcF9hdCBzYXQgfnN0YXJ0IH5tYXggcyA9XG4gIGlmIHN0YXJ0ID4gbWF4IHRoZW4gc3RhcnQgZWxzZVxuICBpZiBzYXQgcy5bc3RhcnRdIHRoZW4gc3RhcnQgZWxzZVxuICBzdG9wX2F0IHNhdCB+c3RhcnQ6KHN0YXJ0ICsgMSkgfm1heCBzXG5cbmxldCBzdWIgcyBzdGFydCBzdG9wIH5tYXggPVxuICBpZiBzdGFydCA9IHN0b3AgdGhlbiBcIlwiIGVsc2VcbiAgaWYgc3RhcnQgPSAwICYmIHN0b3AgPiBtYXggdGhlbiBzIGVsc2VcbiAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpXG5cbmxldCB3b3JkcyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpOyBsb29wIHN0b3Agc1xuICBpblxuICBsZXQgc3RhcnQgPSBzdG9wX2F0IG5vdF93aGl0ZSB+c3RhcnQ6MCB+bWF4IHMgaW5cbiAgaWYgc3RhcnQgPiBtYXggdGhlbiAoKSBlbHNlIGxvb3Agc3RhcnQgc1xuXG5sZXQgcGFyYWdyYXBocyBwcGYgcyA9XG4gIGxldCBtYXggPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGluXG4gIGxldCByZWMgbG9vcCBzdGFydCBzID0gbWF0Y2ggc3RvcF9hdCBpc193aGl0ZSB+c3RhcnQgfm1heCBzIHdpdGhcbiAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoc3ViIHMgc3RhcnQgc3RvcCB+bWF4KVxuICB8IHN0b3AgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpO1xuICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGVfb3JfbmwgfnN0YXJ0OnN0b3Agfm1heCBzIHdpdGhcbiAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgIHwgc3RvcCAtPlxuICAgICAgICAgIGlmIHMuW3N0b3BdIDw+ICdcXG4nXG4gICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICBtYXRjaCBzdG9wX2F0IG5vdF93aGl0ZV9vcl9ubCB+c3RhcnQ6KHN0b3AgKyAxKSB+bWF4IHMgd2l0aFxuICAgICAgICAgIHwgc3RvcCB3aGVuIHN0b3AgPiBtYXggLT4gKClcbiAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgaWYgcy5bc3RvcF0gPD4gJ1xcbidcbiAgICAgICAgICAgICAgdGhlbiAoRm9ybWF0LnBwX3ByaW50X3NwYWNlIHBwZiAoKTsgbG9vcCBzdG9wIHMpIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggc3RvcF9hdCBub3Rfd2hpdGUgfnN0YXJ0OihzdG9wICsgMSkgfm1heCBzIHdpdGhcbiAgICAgICAgICAgICAgfCBzdG9wIHdoZW4gc3RvcCA+IG1heCAtPiAoKVxuICAgICAgICAgICAgICB8IHN0b3AgLT5cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICAgICAgICAgIGxvb3Agc3RvcCBzXG4gIGluXG4gIGxldCBzdGFydCA9IHN0b3BfYXQgbm90X3doaXRlIH5zdGFydDowIH5tYXggcyBpblxuICBpZiBzdGFydCA+IG1heCB0aGVuICgpIGVsc2UgbG9vcCBzdGFydCBzXG5cbmxldCB0ZXh0IHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sX29yX3NwIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBiZWdpbiBtYXRjaCBzLltzdG9wXSB3aXRoXG4gICAgICB8ICcgJyAtPiBGb3JtYXQucHBfcHJpbnRfc3BhY2UgcHBmICgpXG4gICAgICB8ICdcXG4nIC0+IEZvcm1hdC5wcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgZW5kO1xuICAgICAgbG9vcCAoc3RvcCArIDEpIHNcbiAgaW5cbiAgbG9vcCAwIHNcblxubGV0IGxpbmVzIHBwZiBzID1cbiAgbGV0IG1heCA9IFN0cmluZy5sZW5ndGggcyAtIDEgaW5cbiAgbGV0IHJlYyBsb29wIHN0YXJ0IHMgPSBtYXRjaCBzdG9wX2F0IGlzX25sIH5zdGFydCB+bWF4IHMgd2l0aFxuICB8IHN0b3Agd2hlbiBzdG9wID4gbWF4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChzdWIgcyBzdGFydCBzdG9wIH5tYXgpXG4gIHwgc3RvcCAtPlxuICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHN1YiBzIHN0YXJ0IHN0b3Agfm1heCk7XG4gICAgICBGb3JtYXQucHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICBsb29wIChzdG9wICsgMSkgc1xuICBpblxuICBsb29wIDAgc1xuXG5sZXQgdHJ1bmNhdGVkIH5tYXggcHBmIHMgPSBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgPD0gbWF4IHdpdGhcbnwgdHJ1ZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBzXG58IGZhbHNlIC0+XG4gICAgZm9yIGkgPSAwIHRvIG1heCAtIDQgZG8gRm9ybWF0LnBwX3ByaW50X2NoYXIgcHBmIHMuW2ldIGRvbmU7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgXCIuLi5cIlxuXG5sZXQgdGV4dF9sb2MgcHBmICgobDAsIGMwKSwgKGwxLCBjMSkpID1cbiAgaWYgKGwwIDogaW50KSA9PSAobDEgOiBpbnQpICYmIChjMCA6IGludCkgPT0gKGMxIDogaW50KVxuICB0aGVuIHBmIHBwZiBcIiVkLiVkXCIgbDAgYzBcbiAgZWxzZSBwZiBwcGYgXCIlZC4lZC0lZC4lZFwiIGwwIGMwIGwxIGMxXG5cbigqIEhDSSBmcmFnbWVudHMgKilcblxubGV0IG9uZV9vZiA/KGVtcHR5ID0gbm9wKSBwcF92IHBwZiA9IGZ1bmN0aW9uXG58IFtdIC0+IGVtcHR5IHBwZiAoKVxufCBbdl0gLT4gcHBfdiBwcGYgdlxufCBbdjA7IHYxXSAtPiBwZiBwcGYgXCJAW2VpdGhlciAlYSBvckAgJWFAXVwiIHBwX3YgdjAgcHBfdiB2MVxufCBfIDo6IF8gYXMgdnMgLT5cbiAgICBsZXQgcmVjIGxvb3AgcHBmID0gZnVuY3Rpb25cbiAgICB8IFt2XSAtPiBwZiBwcGYgXCJvckAgJWFcIiBwcF92IHZcbiAgICB8IHYgOjogdnMgLT4gcGYgcHBmIFwiJWEsQCBcIiBwcF92IHY7IGxvb3AgcHBmIHZzXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIHBmIHBwZiBcIkBbb25lQCBvZkAgJWFAXVwiIGxvb3AgdnNcblxubGV0IGRpZF95b3VfbWVhblxuICAgID8ocHJlID0gYW55IFwiVW5rbm93blwiKSA/KHBvc3QgPSBub3ApIH5raW5kIHBwX3YgcHBmICh2LCBoaW50cylcbiAgPVxuICBtYXRjaCBoaW50cyB3aXRoXG4gIHwgW10gLT4gcGYgcHBmIFwiQFslYSAlcyAlYSVhLkBdXCIgcHJlICgpIGtpbmQgcHBfdiB2IHBvc3QgKClcbiAgfCBoaW50cyAtPlxuICAgICAgcGYgcHBmIFwiQFslYSAlcyAlYSVhLkAgRGlkIHlvdSBtZWFuICVhID9AXVwiXG4gICAgICAgIHByZSAoKSBraW5kIHBwX3YgdiBwb3N0ICgpIChvbmVfb2YgcHBfdikgaGludHNcblxubGV0IGNhcmRpbmFsID96ZXJvIH5vbmUgP290aGVyICgpID1cbiAgbGV0IG90aGVyID0gbWF0Y2ggb3RoZXIgd2l0aFxuICB8IFNvbWUgb3RoZXIgLT4gb3RoZXJcbiAgfCBOb25lIC0+IGZ1biBwcGYgaSAtPiBvbmUgcHBmIGk7IGNoYXIgcHBmICdzJ1xuICBpblxuICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gIGZ1biBwcGYgaSAtPiBtYXRjaCBJbnQuYWJzIGkgd2l0aFxuICB8IDAgLT4gemVybyBwcGYgMCB8IDEgLT4gb25lIHBwZiAxIHwgbiAtPiBvdGhlciBwcGYgaVxuXG5sZXQgb3JkaW5hbCA9XG4gIGxldCBvbmUgcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJzdFwiIGluXG4gIGxldCB0d28gcHBmIGkgPSBpbnQgcHBmIGk7IHN0cmluZyBwcGYgXCJuZFwiIGluXG4gIGxldCB0aHJlZSBwcGYgaSA9IGludCBwcGYgaTsgc3RyaW5nIHBwZiBcInJkXCIgaW5cbiAgbGV0IG90aGVyIHBwZiBpID0gaW50IHBwZiBpOyBzdHJpbmcgcHBmIFwidGhcIiBpblxuICBmdW4gP3plcm8gPyhvbmUgPSBvbmUpID8odHdvID0gdHdvKSA/KHRocmVlID0gdGhyZWUpID8ob3RoZXIgPSBvdGhlcikgKCkgLT5cbiAgICBsZXQgemVybyA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpvdGhlciB6ZXJvIGluXG4gICAgZnVuIHBwZiBpIC0+XG4gICAgICBpZiBpID0gMCB0aGVuIHplcm8gcHBmIGkgZWxzZVxuICAgICAgbGV0IG4gPSBJbnQuYWJzIGkgaW5cbiAgICAgIGxldCBtb2QxMCA9IG4gbW9kIDEwIGluXG4gICAgICBsZXQgbW9kMTAwID0gbiBtb2QgMTAwIGluXG4gICAgICBpZiBtb2QxMCA9IDEgJiYgbW9kMTAwIDw+IDExIHRoZW4gb25lIHBwZiBpIGVsc2VcbiAgICAgIGlmIG1vZDEwID0gMiAmJiBtb2QxMDAgPD4gMTIgdGhlbiB0d28gcHBmIGkgZWxzZVxuICAgICAgaWYgbW9kMTAgPSAzICYmIG1vZDEwMCA8PiAxMyB0aGVuIHRocmVlIHBwZiBpIGVsc2VcbiAgICAgIG90aGVyIHBwZiBpXG5cbigqIENvbmRpdGlvbmFsIFVURi04IGFuZCBzdHlsZWQgZm9ybWF0dGluZy4gKilcblxubW9kdWxlIEltYXAgPSBNYXAuTWFrZSAoSW50KVxuXG50eXBlICdhIGF0dHIgPSBpbnQgKiAoJ2EgLT4gc3RyaW5nKSAqIChzdHJpbmcgLT4gJ2EpXG5sZXQgaWQgPSByZWYgMFxubGV0IGF0dHIgKHR5cGUgYSkgZW5jIGRlYyA9IGluY3IgaWQ7ICghaWQsIGVuYywgZGVjKVxuXG50eXBlIEZvcm1hdC5zdGFnICs9XG58IEZtdF9zdG9yZV9nZXQgOiAnYSBhdHRyIC0+IEZvcm1hdC5zdGFnXG58IEZtdF9zdG9yZV9zZXQgOiAnYSBhdHRyICogJ2EgLT4gRm9ybWF0LnN0YWdcblxubGV0IHN0b3JlICgpID1cbiAgbGV0IHMgPSByZWYgSW1hcC5lbXB0eSBpblxuICBmdW4gfm90aGVyIC0+IGZ1bmN0aW9uXG4gIHwgRm10X3N0b3JlX2dldCAoaWQsIF8sIF8pIC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpcIlwiIChJbWFwLmZpbmRfb3B0IGlkICFzKVxuICB8IEZtdF9zdG9yZV9zZXQgKChpZCwgZW5jLCBfKSwgdikgLT4gcyA6PSBJbWFwLmFkZCBpZCAoZW5jIHYpICFzOyBcIm9rXCJcbiAgfCBzdGFnIC0+IG90aGVyIHN0YWdcblxubGV0IHNldHVwX3N0b3JlIHBwZiA9XG4gIGxldCBmdW5zID0gRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgcHBmICgpIGluXG4gIGxldCBtYXJrX29wZW5fc3RhZyA9IHN0b3JlICgpIH5vdGhlcjpmdW5zLm1hcmtfb3Blbl9zdGFnIGluXG4gIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiB7IGZ1bnMgd2l0aCBtYXJrX29wZW5fc3RhZyB9XG5cbmxldCBzdG9yZV9vcCBvcCBwcGYgPVxuICBsZXQgZnVucyA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHBwZiAoKSBpblxuICBmdW5zLm1hcmtfb3Blbl9zdGFnIG9wXG5cbmxldCBnZXQgKF8sIF8sIGRlYyBhcyBhdHRyKSBwcGYgPSBtYXRjaCBzdG9yZV9vcCAoRm10X3N0b3JlX2dldCBhdHRyKSBwcGYgd2l0aFxufCBcIlwiIC0+IE5vbmUgfCBzIC0+IFNvbWUgKGRlYyBzKVxuXG5sZXQgcmVjIHNldCBhdHRyIHYgcHBmID0gbWF0Y2ggc3RvcmVfb3AgKEZtdF9zdG9yZV9zZXQgKGF0dHIsIHYpKSBwcGYgd2l0aFxufCBcIm9rXCIgLT4gKCkgfCBfIC0+IHNldHVwX3N0b3JlIHBwZjsgc2V0IGF0dHIgdiBwcGZcblxubGV0IGRlZiB4ID0gZnVuY3Rpb24gU29tZSB5IC0+IHkgfCBfIC0+IHhcblxubGV0IHV0Zl84X2F0dHIgPVxuICBsZXQgZW5jID0gZnVuY3Rpb24gdHJ1ZSAtPiBcInRcIiB8IGZhbHNlIC0+IFwiZlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcInRcIiAtPiB0cnVlIHwgXCJmXCIgLT4gZmFsc2UgfCBfIC0+IGFzc2VydCBmYWxzZSBpblxuICBhdHRyIGVuYyBkZWNcblxubGV0IHV0Zl84IHBwZiA9IGdldCB1dGZfOF9hdHRyIHBwZiB8PiBkZWYgdHJ1ZVxubGV0IHNldF91dGZfOCBwcGYgeCA9IHNldCB1dGZfOF9hdHRyIHggcHBmXG5cbnR5cGUgc3R5bGVfcmVuZGVyZXIgPSBbIGBBbnNpX3R0eSB8IGBOb25lIF1cbmxldCBzdHlsZV9yZW5kZXJlcl9hdHRyID1cbiAgbGV0IGVuYyA9IGZ1bmN0aW9uIGBBbnNpX3R0eSAtPiBcIkFcIiB8IGBOb25lIC0+IFwiTlwiIGluXG4gIGxldCBkZWMgPSBmdW5jdGlvbiBcIkFcIiAtPiBgQW5zaV90dHkgfCBcIk5cIiAtPiBgTm9uZSB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gIGF0dHIgZW5jIGRlY1xuXG5sZXQgc3R5bGVfcmVuZGVyZXIgcHBmID0gZ2V0IHN0eWxlX3JlbmRlcmVyX2F0dHIgcHBmIHw+IGRlZiBgTm9uZVxubGV0IHNldF9zdHlsZV9yZW5kZXJlciBwcGYgeCA9IHNldCBzdHlsZV9yZW5kZXJlcl9hdHRyIHggcHBmXG5cbmxldCB3aXRoX2J1ZmZlciA/bGlrZSBidWYgPVxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICgqIE4uQi4gdGhpcyBkb2VzIHNsaWdodHkgbW9yZSBpdCBhbHNvIG1ha2VzIGJ1ZiB1c2Ugb3RoZXIgaW5zdGFsbGVkXG4gICAgIHNlbWFudGljIHRhZyBhY3Rpb25zLiAqKVxuICBtYXRjaCBsaWtlIHdpdGhcbiAgfCBOb25lIC0+IHBwZlxuICB8IFNvbWUgbGlrZSAtPlxuICAgICAgbGV0IGZ1bnMgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBsaWtlICgpIGluXG4gICAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBwcGYgZnVucztcbiAgICAgIHBwZlxuXG5sZXQgc3RyX2xpa2UgcHBmIGZtdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBicHBmID0gd2l0aF9idWZmZXIgfmxpa2U6cHBmIGJ1ZiBpblxuICBsZXQgZmx1c2ggcHBmID1cbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5yZXNldCBidWY7IHNcbiAgaW5cbiAgRm9ybWF0LmtmcHJpbnRmIGZsdXNoIGJwcGYgZm10XG5cbigqIENvbmRpdGlvbmFsIFVURi04IGZvcm1hdHRpbmcgKilcblxubGV0IGlmX3V0Zl84IHBwX3UgcHAgPSBmdW4gcHBmIHYgLT4gKGlmIHV0Zl84IHBwZiB0aGVuIHBwX3UgZWxzZSBwcCkgcHBmIHZcblxuKCogU3R5bGVkIGZvcm1hdHRpbmcgKilcblxudHlwZSBjb2xvciA9XG4gIFsgYEJsYWNrIHwgYEJsdWUgfCBgQ3lhbiB8IGBHcmVlbiB8IGBNYWdlbnRhIHwgYFJlZCB8IGBXaGl0ZSB8IGBZZWxsb3cgXVxuXG50eXBlIHN0eWxlID1cbiAgWyBgTm9uZSB8ICBgQm9sZCB8IGBGYWludCB8IGBJdGFsaWMgfCBgVW5kZXJsaW5lIHwgYFJldmVyc2VcbiAgfCBgRmcgb2YgWyBjb2xvciB8IGBIaSBvZiBjb2xvciBdXG4gIHwgYEJnIG9mIFsgY29sb3IgfCBgSGkgb2YgY29sb3IgXVxuICB8IGNvbG9yICgqKiBkZXByZWNhdGVkICopIF1cblxubGV0IGFuc2lfc3R5bGVfY29kZSA9IGZ1bmN0aW9uXG58IGBCb2xkIC0+IFwiMVwiXG58IGBGYWludCAtPiBcIjJcIlxufCBgSXRhbGljIC0+IFwiM1wiXG58IGBVbmRlcmxpbmUgLT4gXCI0XCJcbnwgYFJldmVyc2UgLT4gXCI3XCJcbnwgYEZnIGBCbGFjayAtPiBcIjMwXCJcbnwgYEZnIGBSZWQgLT4gXCIzMVwiXG58IGBGZyBgR3JlZW4gLT4gXCIzMlwiXG58IGBGZyBgWWVsbG93IC0+IFwiMzNcIlxufCBgRmcgYEJsdWUgLT4gXCIzNFwiXG58IGBGZyBgTWFnZW50YSAtPiBcIjM1XCJcbnwgYEZnIGBDeWFuIC0+IFwiMzZcIlxufCBgRmcgYFdoaXRlIC0+IFwiMzdcIlxufCBgQmcgYEJsYWNrIC0+IFwiNDBcIlxufCBgQmcgYFJlZCAtPiBcIjQxXCJcbnwgYEJnIGBHcmVlbiAtPiBcIjQyXCJcbnwgYEJnIGBZZWxsb3cgLT4gXCI0M1wiXG58IGBCZyBgQmx1ZSAtPiBcIjQ0XCJcbnwgYEJnIGBNYWdlbnRhIC0+IFwiNDVcIlxufCBgQmcgYEN5YW4gLT4gXCI0NlwiXG58IGBCZyBgV2hpdGUgLT4gXCI0N1wiXG58IGBGZyAoYEhpIGBCbGFjaykgLT4gXCI5MFwiXG58IGBGZyAoYEhpIGBSZWQpIC0+IFwiOTFcIlxufCBgRmcgKGBIaSBgR3JlZW4pIC0+IFwiOTJcIlxufCBgRmcgKGBIaSBgWWVsbG93KSAtPiBcIjkzXCJcbnwgYEZnIChgSGkgYEJsdWUpIC0+IFwiOTRcIlxufCBgRmcgKGBIaSBgTWFnZW50YSkgLT4gXCI5NVwiXG58IGBGZyAoYEhpIGBDeWFuKSAtPiBcIjk2XCJcbnwgYEZnIChgSGkgYFdoaXRlKSAtPiBcIjk3XCJcbnwgYEJnIChgSGkgYEJsYWNrKSAtPiBcIjEwMFwiXG58IGBCZyAoYEhpIGBSZWQpIC0+IFwiMTAxXCJcbnwgYEJnIChgSGkgYEdyZWVuKSAtPiBcIjEwMlwiXG58IGBCZyAoYEhpIGBZZWxsb3cpIC0+IFwiMTAzXCJcbnwgYEJnIChgSGkgYEJsdWUpIC0+IFwiMTA0XCJcbnwgYEJnIChgSGkgYE1hZ2VudGEpIC0+IFwiMTA1XCJcbnwgYEJnIChgSGkgYEN5YW4pIC0+IFwiMTA2XCJcbnwgYEJnIChgSGkgYFdoaXRlKSAtPiBcIjEwN1wiXG58IGBOb25lIC0+IFwiMFwiXG4oKiBkZXByZWNhdGVkICopXG58IGBCbGFjayAtPiBcIjMwXCJcbnwgYFJlZCAtPiBcIjMxXCJcbnwgYEdyZWVuIC0+IFwiMzJcIlxufCBgWWVsbG93IC0+IFwiMzNcIlxufCBgQmx1ZSAtPiBcIjM0XCJcbnwgYE1hZ2VudGEgLT4gXCIzNVwiXG58IGBDeWFuIC0+IFwiMzZcIlxufCBgV2hpdGUgLT4gXCIzN1wiXG5cbmxldCBwcF9zZ3IgcHBmIHN0eWxlID1cbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwiXFwwMjdbXCI7XG4gIEZvcm1hdC5wcF9wcmludF9hcyBwcGYgMCBzdHlsZTtcbiAgRm9ybWF0LnBwX3ByaW50X2FzIHBwZiAwIFwibVwiXG5cbmxldCBjdXJyX3N0eWxlID0gYXR0ciBGdW4uaWQgRnVuLmlkXG5cbmxldCBzdHlsZWQgc3R5bGUgcHBfdiBwcGYgdiA9IG1hdGNoIHN0eWxlX3JlbmRlcmVyIHBwZiB3aXRoXG58IGBOb25lIC0+IHBwX3YgcHBmIHZcbnwgYEFuc2lfdHR5IC0+XG4gICAgbGV0IHByZXYgPSBtYXRjaCBnZXQgY3Vycl9zdHlsZSBwcGYgd2l0aFxuICAgIHwgTm9uZSAtPiBsZXQgemVybyA9IFwiMFwiIGluIHNldCBjdXJyX3N0eWxlIHplcm8gcHBmOyB6ZXJvXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGhlcmUgPSBhbnNpX3N0eWxlX2NvZGUgc3R5bGUgaW5cbiAgICBsZXQgY3VyciA9IG1hdGNoIHN0eWxlIHdpdGhcbiAgICB8IGBOb25lIC0+IGhlcmVcbiAgICB8IF8gLT4gU3RyaW5nLmNvbmNhdCBcIjtcIiBbcHJldjsgaGVyZV1cbiAgICBpblxuICAgIGxldCBmaW5hbGx5ICgpID0gc2V0IGN1cnJfc3R5bGUgcHJldiBwcGYgaW5cbiAgICBzZXQgY3Vycl9zdHlsZSBjdXJyIHBwZjtcbiAgICBGdW4ucHJvdGVjdCB+ZmluYWxseSBAQCBmdW4gKCkgLT5cbiAgICBwcF9zZ3IgcHBmIGhlcmU7IHBwX3YgcHBmIHY7IHBwX3NnciBwcGYgcHJldlxuXG4oKiBSZWNvcmRzICopXG5cbmxldCBpZCA9IEZ1bi5pZFxubGV0IGxhYmVsID0gc3R5bGVkIChgRmcgYFllbGxvdykgc3RyaW5nXG5sZXQgZmllbGQgPyhsYWJlbCA9IGxhYmVsKSA/KHNlcCA9IGFueSBcIjpAIFwiKSBsIHByaiBwcF92IHBwZiB2ID1cbiAgcGYgcHBmIFwiQFs8MT4lYSVhJWFAXVwiIGxhYmVsIGwgc2VwICgpIHBwX3YgKHByaiB2KVxuXG5sZXQgcmVjb3JkID8oc2VwID0gY3V0KSBwcHMgPSB2Ym94IChjb25jYXQgfnNlcCBwcHMpXG5cbigqIENvbnZlcnRpbmcgd2l0aCBzdHJpbmcgY29udmVydGVycy4gKilcblxubGV0IG9mX3RvX3N0cmluZyBmIHBwZiB2ID0gc3RyaW5nIHBwZiAoZiB2KVxubGV0IHRvX3RvX3N0cmluZyBwcF92IHYgPSBzdHIgXCIlYVwiIHBwX3YgdlxuXG4oKiBEZXByZWNhdGVkICopXG5cbmxldCBzdHJmID0gc3RyXG5sZXQga3N0cmYgPSBrc3RyXG5sZXQgc3RyZl9saWtlID0gc3RyX2xpa2VcbmxldCBhbHdheXMgPSBhbnlcbmxldCB1bml0ID0gYW55XG5sZXQgcHJlZml4IHBwX3AgcHBfdiBwcGYgdiA9IHBwX3AgcHBmICgpOyBwcF92IHBwZiB2XG5sZXQgc3VmZml4IHBwX3MgcHBfdiBwcGYgdiA9IHBwX3YgcHBmIHY7IHBwX3MgcHBmICgpXG5sZXQgc3R5bGVkX3VuaXQgc3R5bGUgZm10ID0gc3R5bGVkIHN0eWxlIChhbnkgZm10KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9kaXYiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9pbnQ2NF9hZGQiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfbW9kIiwiY2FtbF9tdWwiLCJjYW1sX25vdGVxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImNhbWxfY2FsbDciLCJhNiIsImNhbWxfY2FsbDkiLCJhNyIsImE4IiwiZ2xvYmFsX2RhdGEiLCJ5IiwidXNfc3BhbiIsIm1zX3NwYW4iLCJzZWNfc3BhbiIsIm1pbl9zcGFuIiwiaG91cl9zcGFuIiwiZGF5X3NwYW4iLCJ5ZWFyX3NwYW4iLCJTdGRsaWJfSW50NjQiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliX0Z1biIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWJfQnVmZmVyIiwiQXNzZXJ0X2ZhaWx1cmUiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0ludCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiU3RkbGliX1F1ZXVlIiwiU3RkbGliX1N0YWNrIiwiU3RkbGliX0hhc2h0YmwiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWJfU2VxIiwiU3RkbGliX0FycmF5IiwiU3RkbGliX1ByaW50ZXhjIiwiU3RkbGliX1N5cyIsIlN0ZGxpYl9NYXAiLCJzdGRvdXQiLCJzdGRlcnIiLCJwZiIsInByIiwiZXByIiwic3RyIiwia3BmIiwia3N0ciIsImZhaWx3aXRoIiwiZm10IiwiZmFpbHdpdGhfbm90cmFjZSIsInMiLCJpbnZhbGlkX2FyZyIsImVycm9yIiwiZXJyb3JfbXNnIiwiZmx1c2giLCJwcGYiLCJwYXJhbSIsIm5vcCIsImFueSIsInVzaW5nIiwicHAiLCJ2IiwiY29uc3QkIiwicHBfdiIsImlmJCIsImJvb2wiLCJjdXQiLCJzcCIsInNwcyIsIm4iLCJjb21tYSIsImNzdCIsInNlbWkiLCJpdGVyIiwib3B0IiwicHBfZWx0IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJpdGVyX2JpbmRpbmdzIiwicHBfYmluZGluZyIsImsiLCJhcHBlbmQiLCJwcF92MCIsInBwX3YxIiwiY29uY2F0Iiwic2VwIiwicHBzIiwiYm94IiwiaW5kZW50IiwiaGJveCIsInZib3giLCJodmJveCIsImhvdmJveCIsInN1cnJvdW5kIiwiczEiLCJzMiIsInBhcmVucyIsImJyYWNrZXRzIiwiYnJhY2VzIiwicXVvdGUiLCJtYXJrIiwicHBfbWFyayIsImludCIsIm5hdGl2ZWludCIsImludDMyIiwiaW50NjQiLCJ1aW50IiwidWludDMyIiwidWludDY0IiwidW5hdGl2ZWludCIsImNoYXIiLCJzdHJpbmciLCJidWZmZXIiLCJiIiwiZXhuIiwiZSIsImNzdF92IiwiZXhuX2JhY2t0cmFjZSIsImJ0IiwicHBfYmFja3RyYWNlX3N0ciIsInN0b3AiLCJsZWZ0IiwicmlnaHQiLCJjc3RfZyIsImZsb2F0Iiwicm91bmRfZGZyYWMiLCJkIiwieCIsIm0iLCJmbG9hdF9kZnJhYyIsImZsb2F0X2RzaWciLCJwYWlyIiwicHBfZnN0IiwicHBfc25kIiwic25kIiwiZnN0Iiwib3B0aW9uIiwicHBfbm9uZSIsInJlc3VsdCIsIm9rIiwibGlzdCIsImFycmF5Iiwic2VxIiwiaGFzaHRibCIsInF1ZXVlIiwic3RhY2siLCJzaWdfbmFtZXMiLCJzaWduYWwiLCJtYXRjaCIsIm5hbWUiLCJ1Y2hhciIsInUiLCJjc3RfMiIsImNzdF9Ob25lIiwiaXRlcl9mIiwicHBfbmFtZSIsInBwX2siLCJjc3RfaGFzaHRibCIsImNzdF9zdGFjayIsImNzdF9xdWV1ZSIsImNzdF8xIiwiZmllbGQiLCJsIiwicHJqIiwibGFiZWwiLCJyZWNvcmQiLCJpcG93MTAiLCJhY2MiLCJjc3RfZiIsImNzdF9tIiwic2lfc3ltYiIsImNzdF9kX3NfcyIsImNzdF9kX2Rfc19zIiwic2lfc2l6ZSIsInNjYWxlIiwicG93X2Rpdl8zIiwicCIsInN5bWIiLCJmYWN0b3IiLCJtX3VwIiwiZl9mYWN0b3IiLCJmX20iLCJmX24iLCJmX21fdXAiLCJieXRlX3NpemUiLCJiaV9ieXRlX3NpemUiLCJwcF9mcmFjIiwiZGl2X3JvdW5kX3VwIiwiaSIsInNrIiwic20iLCJzZyIsInN0IiwidW5zaWduZWRfY29tcGFyZSIsIngwIiwieDEiLCJ1bnNpZ25lZF9kaXYiLCJxIiwiciIsInVuc2lnbmVkX3JlbSIsImNzdF9MZF9zIiwiY3N0X0xkX0xkX3MiLCJwcF9zaV9zcGFuIiwiY291bnRlciIsInVuaXRfc3RyIiwic2lfdW5pdCIsInNpX2hpZ2hlcl91bml0Iiwic3BhbiIsImdlcSIsInBwX25vbl9zaSIsInVuaXQiLCJ1bml0X2xvX3N0ciIsInVuaXRfbG8iLCJ1bml0X2xvX3NpemUiLCJjc3RfTGRhIiwidWludDY0X25zX3NwYW4iLCJsdCIsImNzdF91cyIsImNzdF9tcyIsImNzdF9zIiwiY3N0X21pbiIsImNzdF9oIiwiY3N0X2QiLCJpdGVyX3ZlYyIsImdldCIsInZlYyIsIm9uX3N0cmluZyIsIm9uX2J5dGVzIiwiY3N0XzAyeCIsInByZWZpeDB4IiwiYXNjaWkiLCJ3Iiwic3Vic3QiLCJwcF9jaGFyIiwiYyIsIm9jdGV0cyIsImFkZHJlc3NlcyIsImFkZHIiLCJwcF92ZWMiLCJtYXgiLCJwcF9zdWIiLCJzdWIiLCJqIiwib2ZmIiwiaGV4IiwiaXNfd2hpdGUiLCJub3Rfd2hpdGUiLCJub3Rfd2hpdGVfb3JfbmwiLCJzdG9wX2F0Iiwic2F0Iiwic3RhcnQiLCJ3b3JkcyIsInBhcmFncmFwaHMiLCJjc3Rfc3JjX2ZtdF9tbCIsInRleHQiLCJsaW5lcyIsInRydW5jYXRlZCIsInRleHRfbG9jIiwiYzEiLCJsMSIsImMwIiwibDAiLCJvbmVfb2YiLCJ2cyIsImVtcHR5IiwibG9vcCIsInYxIiwiY3N0X1Vua25vd24iLCJkaWRfeW91X21lYW4iLCJraW5kIiwicHJlIiwicG9zdCIsImhpbnRzIiwiY2FyZGluYWwiLCJ6ZXJvIiwib25lIiwib3RoZXIiLCJ0d28iLCJ0aHJlZSIsIm9yZGluYWwiLCJtb2QxMCIsIm1vZDEwMCIsIkltYXAiLCJpZCIsImF0dHIiLCJlbmMiLCJkZWMiLCJGbXRfc3RvcmVfZ2V0IiwiRm10X3N0b3JlX3NldCIsInN0b3JlX29wIiwib3AiLCJmdW5zIiwic2V0IiwiY3N0X29rIiwibWFya19vcGVuX3N0YWciLCJzdGFnIiwiZGVmIiwiY3N0X3QiLCJ1dGZfOF9hdHRyIiwidXRmXzgiLCJzZXRfdXRmXzgiLCJjc3RfQSIsImNzdF9OIiwic3R5bGVfcmVuZGVyZXJfYXR0ciIsInN0eWxlX3JlbmRlcmVyIiwic2V0X3N0eWxlX3JlbmRlcmVyIiwid2l0aF9idWZmZXIiLCJsaWtlIiwiYnVmIiwic3RyX2xpa2UiLCJicHBmIiwiaWZfdXRmXzgiLCJwcF91IiwicHBfc2dyIiwic3R5bGUiLCJjdXJyX3N0eWxlIiwic3R5bGVkIiwiY3N0XzAiLCJwcmV2IiwiY3N0XzMwIiwiY3N0XzMxIiwiY3N0XzMyIiwiY3N0XzMzIiwiY3N0XzM0IiwiY3N0XzM1IiwiY3N0XzM2IiwiY3N0XzM3IiwiaGVyZSIsInZhcmlhbnQiLCJjdXJyIiwiZmluYWxseSQiLCJvZl90b19zdHJpbmciLCJ0b190b19zdHJpbmciLCJwcmVmaXgiLCJwcF9wIiwic3VmZml4IiwicHBfcyIsInN0eWxlZF91bml0Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyw2QkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsV0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHlCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQWIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFdBQUE7QUFBQSxJQUFBQyxZQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFB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dW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIua2VwbGVyLm9ianMvanNvby9kZWZhdWx0L2tlcGxlci5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWtlcGxlci9saWIvdmVjMy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiAzRCB2ZWN0b3Igb3BlcmF0aW9ucy4gKilcblxudHlwZSB0ID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cblxubGV0IHYgeCB5IHogPSB7IHg7IHk7IHogfVxubGV0IHplcm8gPSB7IHggPSAwLjsgeSA9IDAuOyB6ID0gMC4gfVxubGV0IGFkZCBhIGIgPSB7IHggPSBhLnggKy4gYi54OyB5ID0gYS55ICsuIGIueTsgeiA9IGEueiArLiBiLnogfVxubGV0IHNjYWxlIHMgdiA9IHsgeCA9IHMgKi4gdi54OyB5ID0gcyAqLiB2Lnk7IHogPSBzICouIHYueiB9XG5sZXQgc3ViIGEgYiA9IHsgeCA9IGEueCAtLiBiLng7IHkgPSBhLnkgLS4gYi55OyB6ID0gYS56IC0uIGIueiB9XG5sZXQgZG90IGEgYiA9IChhLnggKi4gYi54KSArLiAoYS55ICouIGIueSkgKy4gKGEueiAqLiBiLnopXG5cbmxldCBjcm9zcyBhIGIgPVxuICB7XG4gICAgeCA9IChhLnkgKi4gYi56KSAtLiAoYS56ICouIGIueSk7XG4gICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgeiA9IChhLnggKi4gYi55KSAtLiAoYS55ICouIGIueCk7XG4gIH1cblxubGV0IGxlbmd0aCB2ID0gc3FydCAoKHYueCAqLiB2LngpICsuICh2LnkgKi4gdi55KSArLiAodi56ICouIHYueikpXG5sZXQgcHAgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCVnLCAlZywgJWcpXCIgdi54IHYueSB2LnpcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMyIsImYiLCJhMCIsImExIiwiYTIiLCJGbXQiLCJ2IiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzY2FsZSIsInMiLCJzdWIiLCJkb3QiLCJjcm9zcyIsImxlbmd0aCIsImNzdCIsInBwIiwicHBmIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxNQUFBO0FBQUEsWUFBQUMsRUFBQUMsR0FBQUMsR0FBQUMsR0NTYyxzQkFBVztBQUFBLFlBQUFDLElBQUFDLEdBQUFDLEdBRUssb0RBQWtDO0FBQUEsWUFBQUMsTUFBQUMsR0FBQVIsR0FDbEMsMkNBQThCO0FBQUEsWUFBQVMsSUFBQUosR0FBQUMsR0FDOUIsb0RBQWtDO0FBQUEsWUFBQUksSUFBQUwsR0FBQUMsR0FDTjtBQUFBLFlBQUFLLE1BQUFOLEdBQUFDO0FBQUFBLElBSXRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FHakM7QUFBQSxZQUFBTSxPQUFBWjtBQUFBQSxJQUUrRCxPQUFuRCxrREFBbUQ7QUFBQTtBQUFBO0FBQUEsSUFBQWEsTUR2QmxFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsR0FBQUMsS0FBQWY7QUFBQUEsUUFBQSxJQ3dCZTtBQUFBLHlEQUFxQztBQUFBO0FBQUEsR0R4QnBEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzA0MjksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmtlcGxlci5vYmpzL2pzb28vZGVmYXVsdC9rZXBsZXIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1rZXBsZXIvbGliL3Byb3BhZ2F0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBUd28tYm9keSAoS2VwbGVyaWFuKSBvcmJpdCBwcm9wYWdhdGlvbiB2aWEgUks0IGludGVncmF0aW9uLlxuXG4gICAgR2l2ZW4gcG9zaXRpb24gYW5kIHZlbG9jaXR5IGF0IGVwb2NoLCBwcm9wYWdhdGVzIGZvcndhcmQvYmFja3dhcmQgdXNpbmdcbiAgICBudW1lcmljYWwgaW50ZWdyYXRpb24uIFN1aXRhYmxlIGZvciBzaG9ydCBhcmNzICh+MSBvcmJpdCkuICopXG5cbmxldCBtdSA9IDM5ODYwMC40NDE4XG5cbmxldCBncmF2aXR5IChyIDogVmVjMy50KSA9XG4gIGxldCByX21hZyA9IFZlYzMubGVuZ3RoIHIgaW5cbiAgbGV0IHIzID0gcl9tYWcgKi4gcl9tYWcgKi4gcl9tYWcgaW5cbiAgaWYgcjMgPCAxZS0xMCB0aGVuIFZlYzMuemVybyBlbHNlIFZlYzMuc2NhbGUgKC0ubXUgLy4gcjMpIHJcblxubGV0IHJrNF9zdGVwIChwb3MgOiBWZWMzLnQpICh2ZWwgOiBWZWMzLnQpIGR0ID1cbiAgbGV0IG9wZW4gVmVjMyBpblxuICBsZXQgYTEgPSBncmF2aXR5IHBvcyBpblxuICBsZXQgcDIgPSBhZGQgcG9zIChzY2FsZSAoZHQgLy4gMi4pIHZlbCkgaW5cbiAgbGV0IHYyID0gYWRkIHZlbCAoc2NhbGUgKGR0IC8uIDIuKSBhMSkgaW5cbiAgbGV0IGEyID0gZ3Jhdml0eSBwMiBpblxuICBsZXQgcDMgPSBhZGQgcG9zIChzY2FsZSAoZHQgLy4gMi4pIHYyKSBpblxuICBsZXQgdjMgPSBhZGQgdmVsIChzY2FsZSAoZHQgLy4gMi4pIGEyKSBpblxuICBsZXQgYTMgPSBncmF2aXR5IHAzIGluXG4gIGxldCBwNCA9IGFkZCBwb3MgKHNjYWxlIGR0IHYzKSBpblxuICBsZXQgdjQgPSBhZGQgdmVsIChzY2FsZSBkdCBhMykgaW5cbiAgbGV0IGE0ID0gZ3Jhdml0eSBwNCBpblxuICBsZXQgbmV3X3BvcyA9XG4gICAgYWRkIHBvc1xuICAgICAgKHNjYWxlIChkdCAvLiA2LikgKGFkZCB2ZWwgKGFkZCAoc2NhbGUgMi4gdjIpIChhZGQgKHNjYWxlIDIuIHYzKSB2NCkpKSlcbiAgaW5cbiAgbGV0IG5ld192ZWwgPVxuICAgIGFkZCB2ZWxcbiAgICAgIChzY2FsZSAoZHQgLy4gNi4pIChhZGQgYTEgKGFkZCAoc2NhbGUgMi4gYTIpIChhZGQgKHNjYWxlIDIuIGEzKSBhNCkpKSlcbiAgaW5cbiAgKG5ld19wb3MsIG5ld192ZWwpXG5cbmxldCBhdCB+cG9zIH52ZWwgfmR0ID1cbiAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZHQpIHRoZW4gcG9zXG4gIGVsc2VcbiAgICAoKiBDbGFtcCB0byBtYXggMTAwMDAgc3RlcHMgdG8gcHJldmVudCBydW5hd2F5ICopXG4gICAgbGV0IG5fc3RlcHMgPSBtaW4gMTAwMDAgKEZsb2F0LnRvX2ludCAoYWJzX2Zsb2F0IGR0IC8uIDMwLikgKyAxKSBpblxuICAgIGxldCBzdGVwID0gZHQgLy4gRmxvYXQub2ZfaW50IG5fc3RlcHMgaW5cbiAgICBsZXQgcCA9IHJlZiBwb3MgYW5kIHYgPSByZWYgdmVsIGluXG4gICAgZm9yIF8gPSAxIHRvIG5fc3RlcHMgZG9cbiAgICAgIGxldCBwJywgdicgPSByazRfc3RlcCAhcCAhdiBzdGVwIGluXG4gICAgICAoKiBHdWFyZCBhZ2FpbnN0IE5hTiBwcm9wYWdhdGlvbiAqKVxuICAgICAgaWYgRmxvYXQuaXNfZmluaXRlIHAnLnggdGhlbiBiZWdpblxuICAgICAgICBwIDo9IHAnO1xuICAgICAgICB2IDo9IHYnXG4gICAgICBlbmRcbiAgICBkb25lO1xuICAgICFwXG5cbmxldCBhcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzID1cbiAgbGV0IGR0ID0gZHVyYXRpb25fcyAvLiBGbG9hdC5vZl9pbnQgbnVtX3BvaW50cyBpblxuICBsZXQgaGFsZiA9IG51bV9wb2ludHMgLyAyIGluXG4gIGxldCBwb3NpdGlvbnMgPSBBcnJheS5tYWtlIG51bV9wb2ludHMgVmVjMy56ZXJvIGluXG4gICgqIEZvcndhcmQgZnJvbSBlcG9jaCAqKVxuICBsZXQgcCA9IHJlZiBwb3MgYW5kIHYgPSByZWYgdmVsIGluXG4gIGZvciBpID0gaGFsZiB0byBudW1fcG9pbnRzIC0gMSBkb1xuICAgIHBvc2l0aW9ucy4oaSkgPC0gIXA7XG4gICAgbGV0IHAnLCB2JyA9IHJrNF9zdGVwICFwICF2IGR0IGluXG4gICAgcCA6PSBwJztcbiAgICB2IDo9IHYnXG4gIGRvbmU7XG4gICgqIEJhY2t3YXJkIGZyb20gZXBvY2ggKilcbiAgcCA6PSBwb3M7XG4gIHYgOj0gdmVsO1xuICBmb3IgaSA9IGhhbGYgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IHAnLCB2JyA9IHJrNF9zdGVwICFwICF2ICgtLmR0KSBpblxuICAgIHAgOj0gcCc7XG4gICAgdiA6PSB2JztcbiAgICBwb3NpdGlvbnMuKGkpIDwtICFwXG4gIGRvbmU7XG4gIHBvc2l0aW9uc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiZ2xvYmFsX2RhdGEiLCJLZXBsZXJfVmVjMyIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYiIsImdyYXZpdHkiLCJyIiwicl9tYWciLCJyMyIsInJrNF9zdGVwIiwicG9zIiwidmVsIiwiZHQiLCJhMSIsInAyIiwidjIiLCJhMiIsInAzIiwidjMiLCJhMyIsInA0IiwidjQiLCJhNCIsIm5ld19wb3MiLCJuZXdfdmVsIiwiYXQiLCJuX3N0ZXBzIiwic3RlcCIsInAiLCJ2IiwiZm9yJCIsIm1hdGNoIiwiYXJjIiwiZHVyYXRpb25fcyIsIm51bV9wb2ludHMiLCJoYWxmIiwicG9zaXRpb25zIiwiaSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxRQUFBQyxRQ2FjLDhCQUFBQyxLQUNIO0FBQUEsSUFDVDtBQUFBO0FBQUEsY0FBeUQsK0NBQUU7QUFBQTtBQUFBLFlBQUFDLFNBQUFDLEtBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBSWxEO0FBQUEsU0FDUTtBQUFBLEtBQUFDLEtBQVI7QUFBQSxTQUNRO0FBQUEsS0FBQUMsS0FBUjtBQUFBLEtBQUFDLEtBQ0E7QUFBQSxTQUNRO0FBQUEsS0FBQUMsS0FBUjtBQUFBLFNBQ1E7QUFBQSxLQUFBQyxLQUFSO0FBQUEsS0FBQUMsS0FDQTtBQUFBLFNBQ1E7QUFBQSxLQUFBQyxLQUFSO0FBQUEsU0FDUTtBQUFBLEtBQUFDLEtBQVI7QUFBQSxLQUFBQyxLQUNBO0FBQUEsU0FHOEM7QUFBQSxTQUFMO0FBQUEsU0FBZDtBQUFBLFNBQUw7QUFBQSxTQUFUO0FBQUEsU0FBbEI7QUFBQSxLQUFBQyxVQURGO0FBQUEsU0FLb0Q7QUFBQSxTQUFMO0FBQUEsU0FBZDtBQUFBLFNBQUw7QUFBQSxTQUFSO0FBQUEsU0FBbEI7QUFBQSxLQUFBQyxVQURGO0FBQUEsSUFHRjtBQUFBLEdBQWtCO0FBQUEsWUFBQUMsR0FBQWYsS0FBQUMsS0FBQUM7QUFBQUEsSUFHWCxzQ0FBMEI7QUFBQTtBQUFBLEtBQUFjLFVBR2pCLDhCQUF5QjtBQUFBLEtBQUFDLE9BQzVCO0FBQUEsSUFFWDtBQUFBLFNBQUFDLE1BQUE7QUFBQTtBQUFBLFNBQUFDLE1BQUEsS0FBQUQsTUFBQSxLQUFBRSxPQUFBO0FBQUE7QUFBQSxVQUFBQyxRQUNlLDBCQUFBRixJQUFtQixVQUFBRCxJQUFBO0FBQUEsTUFFN0I7QUFBQSxXQUFBQyxNQUFvQixHQUFBRCxNQUFBO0FBQUE7QUFBQSxXQUFBQyxNQUFBLEtBQUFELE1BQUE7QUFBQTtBQUFBLCtCQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBS3pCO0FBQUEsR0FBRTtBQUFBLFlBQUFJLElBQUF0QixLQUFBQyxLQUFBc0IsWUFBQUM7QUFBQUE7QUFBQUEsS0FBQXRCLEtBR0s7QUFBQSxLQUFBdUIsT0FDVDtBQUFBLEtBQUFDLFlBQ2dCO0FBQUEsU0FHaEI7QUFBQTtBQUFBLFNBQUFQLE1BQUEsS0FBQUQsTUFBQSxLQUFBUyxNQUFBO0FBQUE7QUFBQSxNQUNFO0FBQUE7QUFBQSxPQUFBTixVQUNhO0FBQUEsT0FBQUYsTUFBaUI7QUFBQSxPQUFBRCxNQUFBO0FBQUEsV0FFOUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUtGO0FBQUE7QUFBQSxTQUFBQyxNQUFBLEtBQUFELE1BQUEsS0FBQVMsSUFBQTtBQUFBO0FBQUEsVUFBQU4sUUFDZSwwQkFBQUYsSUFBcUIsVUFBQUQsSUFBQTtBQUFBLE1BR2xDO0FBQUEsY0FBbUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVyQjtBQUFBLEdBQVM7QUFBQSxHRDdFWCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMwNTQ3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5rZXBsZXIub2Jqcy9qc29vL2RlZmF1bHQva2VwbGVyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwta2VwbGVyL2xpYi9hbmFseXRpYy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBbmFseXRpYyB0d28tYm9keSBLZXBsZXIgcHJvcGFnYXRpb24uXG5cbiAgICBDb252ZXJ0cyBzdGF0ZSB2ZWN0b3IgdG8gb3JiaXRhbCBlbGVtZW50cywgYWR2YW5jZXMgbWVhbiBhbm9tYWx5LCBzb2x2ZXNcbiAgICBLZXBsZXIncyBlcXVhdGlvbiwgYW5kIGNvbnZlcnRzIGJhY2suIDEwLTE1eCBmYXN0ZXIgdGhhbiBSSzQgZm9yIGVsbGlwdGljYWxcbiAgICBvcmJpdHMuXG5cbiAgICBSZWZlcmVuY2VzOlxuICAgIC0gVmFsbGFkbywgXCJGdW5kYW1lbnRhbHMgb2YgQXN0cm9keW5hbWljc1wiLCA0dGggZWQuLCBBbGcuIDQtNVxuICAgIC0gQmF0ZSwgTXVlbGxlciwgV2hpdGUsIFwiRnVuZGFtZW50YWxzIG9mIEFzdHJvZHluYW1pY3NcIiwgQ2guIDRcbiAgICAtIEN1cnRpcywgXCJPcmJpdGFsIE1lY2hhbmljcyBmb3IgRW5naW5lZXJpbmcgU3R1ZGVudHNcIiwgQ2guIDQgKilcblxubGV0IG11ID0gUHJvcGFnYXRlLm11XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiogezEgT3JiaXRhbCBlbGVtZW50c30gKilcblxudHlwZSBlbGVtZW50cyA9IHtcbiAgYSA6IGZsb2F0OyAgKCoqIFNlbWktbWFqb3IgYXhpcyAoa20pLiAqKVxuICBlIDogZmxvYXQ7ICAoKiogRWNjZW50cmljaXR5LiAqKVxuICBpIDogZmxvYXQ7ICAoKiogSW5jbGluYXRpb24gKHJhZCkuICopXG4gIHJhYW4gOiBmbG9hdDsgICgqKiBSaWdodCBhc2NlbnNpb24gb2YgYXNjZW5kaW5nIG5vZGUgKHJhZCkuICopXG4gIGFyZ3AgOiBmbG9hdDsgICgqKiBBcmd1bWVudCBvZiBwZXJpYXBzaXMgKHJhZCkuICopXG4gIG51IDogZmxvYXQ7ICAoKiogVHJ1ZSBhbm9tYWx5IChyYWQpLiAqKVxuICBuIDogZmxvYXQ7ICAoKiogTWVhbiBtb3Rpb24gKHJhZC9zKS4gKilcbiAgcG9zIDogVmVjMy50OyAgKCoqIE9yaWdpbmFsIHBvc2l0aW9uIChmb3IgUks0IGZhbGxiYWNrKS4gKilcbiAgdmVsIDogVmVjMy50OyAgKCoqIE9yaWdpbmFsIHZlbG9jaXR5IChmb3IgUks0IGZhbGxiYWNrKS4gKilcbn1cblxuKCoqIHsxIFN0YXRlIHZlY3RvciDihpQgb3JiaXRhbCBlbGVtZW50c30gKilcblxuKCoqIENvbnZlcnQgc3RhdGUgdmVjdG9yIHRvIGNsYXNzaWNhbCBvcmJpdGFsIGVsZW1lbnRzLiBWYWxsYWRvIEFsZ29yaXRobSA5LiAqKVxubGV0IGVsZW1lbnRzX29mX3N0YXRlIChwb3MgOiBWZWMzLnQpICh2ZWwgOiBWZWMzLnQpID1cbiAgbGV0IG9wZW4gVmVjMyBpblxuICBsZXQgcl9tYWcgPSBsZW5ndGggcG9zIGluXG4gIGxldCB2X21hZyA9IGxlbmd0aCB2ZWwgaW5cbiAgKCogR3VhcmQgZGVnZW5lcmF0ZSBpbnB1dHMgKilcbiAgaWYgcl9tYWcgPCAxZS0xMCB8fCB2X21hZyA8IDFlLTEwIHRoZW5cbiAgICB7XG4gICAgICBhID0gcl9tYWc7XG4gICAgICBlID0gMi47XG4gICAgICBpID0gMC47XG4gICAgICByYWFuID0gMC47XG4gICAgICBhcmdwID0gMC47XG4gICAgICBudSA9IDAuO1xuICAgICAgbiA9IDAuO1xuICAgICAgcG9zO1xuICAgICAgdmVsO1xuICAgIH1cbiAgZWxzZVxuICAgICgqIEFuZ3VsYXIgbW9tZW50dW0gdmVjdG9yIGggPSByIMOXIHYgKilcbiAgICBsZXQgaCA9IGNyb3NzIHBvcyB2ZWwgaW5cbiAgICBsZXQgaF9tYWcgPSBsZW5ndGggaCBpblxuICAgICgqIE5vZGUgdmVjdG9yIG4gPSBrIMOXIGggKGsgPSBbMCwwLDFdKSAqKVxuICAgIGxldCBuX3ZlYyA9IHsgeCA9IC0uaC55OyB5ID0gaC54OyB6ID0gMC4gfSBpblxuICAgIGxldCBuX21hZyA9IGxlbmd0aCBuX3ZlYyBpblxuICAgICgqIEVjY2VudHJpY2l0eSB2ZWN0b3I6IGUgPSAoMS/OvClbKHbCsi3OvC9yKXIgLSAocsK3dil2XSAqKVxuICAgIGxldCByZG90diA9IGRvdCBwb3MgdmVsIGluXG4gICAgbGV0IGVfdmVjID1cbiAgICAgIGxldCB0ZXJtMSA9IHNjYWxlICgodl9tYWcgKi4gdl9tYWcpIC0uIChtdSAvLiByX21hZykpIHBvcyBpblxuICAgICAgbGV0IHRlcm0yID0gc2NhbGUgcmRvdHYgdmVsIGluXG4gICAgICBzY2FsZSAoMS4gLy4gbXUpIChhZGQgdGVybTEgKHNjYWxlICgtMS4pIHRlcm0yKSlcbiAgICBpblxuICAgIGxldCBlID0gbGVuZ3RoIGVfdmVjIGluXG4gICAgKCogU2VtaS1tYWpvciBheGlzOiBhID0gLc68IC8gKDLOtSkgd2hlcmUgzrUgPSB2wrIvMiAtIM68L3IgKilcbiAgICBsZXQgZW5lcmd5ID0gKHZfbWFnICouIHZfbWFnIC8uIDIuKSAtLiAobXUgLy4gcl9tYWcpIGluXG4gICAgbGV0IGEgPVxuICAgICAgaWYgYWJzX2Zsb2F0IGVuZXJneSA8IDFlLTEwIHRoZW4gcl9tYWcgKCogcGFyYWJvbGljIGZhbGxiYWNrICopXG4gICAgICBlbHNlIC0ubXUgLy4gKDIuICouIGVuZXJneSlcbiAgICBpblxuICAgICgqIEluY2xpbmF0aW9uOiBjb3MoaSkgPSBoeiAvIHxofCAqKVxuICAgIGxldCBpID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gKGgueiAvLiBoX21hZykpKSBpblxuICAgICgqIFJBQU46IGNvcyjOqSkgPSBueCAvIHxufCAqKVxuICAgIGxldCByYWFuID1cbiAgICAgIGlmIG5fbWFnIDwgMWUtMTAgdGhlbiAwLlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29zX3JhYW4gPSBuX3ZlYy54IC8uIG5fbWFnIGluXG4gICAgICAgIGxldCByYWFuID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX3JhYW4pKSBpblxuICAgICAgICBpZiBuX3ZlYy55IDwgMC4gdGhlbiB0d29waSAtLiByYWFuIGVsc2UgcmFhblxuICAgIGluXG4gICAgKCogQXJndW1lbnQgb2YgcGVyaWFwc2lzOiBjb3Moz4kpID0gbsK3ZSAvICh8bnx8ZXwpICopXG4gICAgbGV0IGFyZ3AgPVxuICAgICAgaWYgbl9tYWcgPCAxZS0xMCB8fCBlIDwgMWUtMTAgdGhlbiAwLlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29zX2FyZ3AgPSBkb3Qgbl92ZWMgZV92ZWMgLy4gKG5fbWFnICouIGUpIGluXG4gICAgICAgIGxldCBhcmdwID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX2FyZ3ApKSBpblxuICAgICAgICBpZiBlX3ZlYy56IDwgMC4gdGhlbiB0d29waSAtLiBhcmdwIGVsc2UgYXJncFxuICAgIGluXG4gICAgKCogVHJ1ZSBhbm9tYWx5OiBjb3Mozr0pID0gZcK3ciAvICh8ZXx8cnwpICopXG4gICAgbGV0IG51ID1cbiAgICAgIGlmIGUgPCAxZS0xMCB0aGVuXG4gICAgICAgICgqIENpcmN1bGFyOiB1c2UgYXJndW1lbnQgb2YgbGF0aXR1ZGUgKilcbiAgICAgICAgbGV0IGNvc191ID0gZG90IG5fdmVjIHBvcyAvLiAobl9tYWcgKi4gcl9tYWcpIGluXG4gICAgICAgIGxldCB1ID0gYWNvcyAoRmxvYXQubWF4ICgtMS4pIChGbG9hdC5taW4gMS4gY29zX3UpKSBpblxuICAgICAgICBpZiBwb3MueiA8IDAuIHRoZW4gdHdvcGkgLS4gdSBlbHNlIHVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNvc19udSA9IGRvdCBlX3ZlYyBwb3MgLy4gKGUgKi4gcl9tYWcpIGluXG4gICAgICAgIGxldCBudSA9IGFjb3MgKEZsb2F0Lm1heCAoLTEuKSAoRmxvYXQubWluIDEuIGNvc19udSkpIGluXG4gICAgICAgIGlmIHJkb3R2IDwgMC4gdGhlbiB0d29waSAtLiBudSBlbHNlIG51XG4gICAgaW5cbiAgICAoKiBNZWFuIG1vdGlvbiAqKVxuICAgIGxldCBuID1cbiAgICAgIGlmIGEgPiAwLiB0aGVuIHNxcnQgKG11IC8uIChhICouIGEgKi4gYSkpXG4gICAgICBlbHNlIHNxcnQgKG11IC8uICgtLmEgKi4gLS5hICouIC0uYSkpXG4gICAgICAoKiBoeXBlcmJvbGljICopXG4gICAgaW5cbiAgICB7IGE7IGU7IGk7IHJhYW47IGFyZ3A7IG51OyBuOyBwb3M7IHZlbCB9XG5cbigqKiB7MSBLZXBsZXIncyBlcXVhdGlvbiBzb2x2ZXJ9ICopXG5cbigqKiBTb2x2ZSBNID0gRSAtIGXCt3NpbihFKSBmb3IgRSBnaXZlbiBNIGFuZCBlLiBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24sXG4gICAgY29udmVyZ2VzIGluIDMtNSBzdGVwcyBmb3IgZSA8IDAuOTcuIFZhbGxhZG8gQWxnb3JpdGhtIDIuICopXG5sZXQgc29sdmVfa2VwbGVyIH5tZWFuX2Fub21hbHkgfmVjY2VudHJpY2l0eSA9XG4gIGxldCBtID0gRmxvYXQucmVtIG1lYW5fYW5vbWFseSB0d29waSBpblxuICBsZXQgbSA9IGlmIG0gPCAwLiB0aGVuIG0gKy4gdHdvcGkgZWxzZSBtIGluXG4gIGxldCBlID0gZWNjZW50cmljaXR5IGluXG4gICgqIEluaXRpYWwgZ3Vlc3M6IEXigoAgPSBNICsgZcK3c2luKE0pIGZvciBsb3cgZWNjZW50cmljaXR5ICopXG4gIGxldCBlYSA9IHJlZiAobSArLiAoZSAqLiBzaW4gbSkpIGluXG4gIGZvciBfID0gMSB0byA4IGRvXG4gICAgbGV0IHNpbl9lID0gc2luICFlYSBpblxuICAgIGxldCBjb3NfZSA9IGNvcyAhZWEgaW5cbiAgICBsZXQgZiA9ICFlYSAtLiAoZSAqLiBzaW5fZSkgLS4gbSBpblxuICAgIGxldCBmcCA9IDEuIC0uIChlICouIGNvc19lKSBpblxuICAgIGlmIGFic19mbG9hdCBmcCA+IDFlLTEyIHRoZW4gZWEgOj0gIWVhIC0uIChmIC8uIGZwKVxuICBkb25lO1xuICAhZWFcblxuKCoqIHsxIFBvc2l0aW9uIGZyb20gZWxlbWVudHMgKyB0aW1lfSAqKVxuXG4oKiogQ29tcHV0ZSBwb3NpdGlvbiBhdCB0aW1lIGR0IChzZWNvbmRzKSBmcm9tIGVwb2NoLiBUaGUgb3JiaXRhbCBlbGVtZW50c1xuICAgIGRlc2NyaWJlIHRoZSBvcmJpdCBhdCBlcG9jaCAod2hlbiDOvSB3YXMgbWVhc3VyZWQpLiAqKVxubGV0IHBvc2l0aW9uX2F0X2R0IGVsZW1lbnRzIGR0ID1cbiAgbGV0IGVsID0gZWxlbWVudHMgaW5cbiAgKCogVHJ1ZSBhbm9tYWx5IOKGkiBlY2NlbnRyaWMgYW5vbWFseSBhdCBlcG9jaCAqKVxuICBsZXQgZSA9IGVsLmUgaW5cbiAgbGV0IGNvc19udSA9IGNvcyBlbC5udSBpblxuICBsZXQgZWEwID0gYXRhbjIgKHNxcnQgKDEuIC0uIChlICouIGUpKSAqLiBzaW4gZWwubnUpIChlICsuIGNvc19udSkgaW5cbiAgKCogTWVhbiBhbm9tYWx5IGF0IGVwb2NoICopXG4gIGxldCBtMCA9IGVhMCAtLiAoZSAqLiBzaW4gZWEwKSBpblxuICAoKiBNZWFuIGFub21hbHkgYXQgdCArIGR0ICopXG4gIGxldCBtID0gbTAgKy4gKGVsLm4gKi4gZHQpIGluXG4gICgqIFNvbHZlIEtlcGxlcidzIGVxdWF0aW9uICopXG4gIGxldCBlYSA9IHNvbHZlX2tlcGxlciB+bWVhbl9hbm9tYWx5Om0gfmVjY2VudHJpY2l0eTplIGluXG4gICgqIEVjY2VudHJpYyBhbm9tYWx5IOKGkiB0cnVlIGFub21hbHkgKilcbiAgbGV0IHNpbl9lYSA9IHNpbiBlYSBhbmQgY29zX2VhID0gY29zIGVhIGluXG4gIGxldCBudSA9IGF0YW4yIChzcXJ0ICgxLiAtLiAoZSAqLiBlKSkgKi4gc2luX2VhKSAoY29zX2VhIC0uIGUpIGluXG4gICgqIFJhZGl1cyAqKVxuICBsZXQgciA9IGVsLmEgKi4gKDEuIC0uIChlICouIGNvc19lYSkpIGluXG4gICgqIFBvc2l0aW9uIGluIG9yYml0YWwgcGxhbmUgKFBRVyBmcmFtZSkgKilcbiAgbGV0IGNvc19udSA9IGNvcyBudSBhbmQgc2luX251ID0gc2luIG51IGluXG4gIGxldCBweCA9IHIgKi4gY29zX251IGFuZCBweSA9IHIgKi4gc2luX251IGluXG4gICgqIFJvdGF0ZSBQUVcg4oaSIGluZXJ0aWFsIChJSkspIGZyYW1lICopXG4gIGxldCBjb3NfYXJncCA9IGNvcyBlbC5hcmdwIGFuZCBzaW5fYXJncCA9IHNpbiBlbC5hcmdwIGluXG4gIGxldCBjb3NfcmFhbiA9IGNvcyBlbC5yYWFuIGFuZCBzaW5fcmFhbiA9IHNpbiBlbC5yYWFuIGluXG4gIGxldCBjb3NfaSA9IGNvcyBlbC5pIGFuZCBzaW5faSA9IHNpbiBlbC5pIGluXG4gIGxldCB4ID1cbiAgICAocHggKi4gKChjb3NfcmFhbiAqLiBjb3NfYXJncCkgLS4gKHNpbl9yYWFuICouIHNpbl9hcmdwICouIGNvc19pKSkpXG4gICAgKy4gKHB5ICouICgtLihjb3NfcmFhbiAqLiBzaW5fYXJncCkgLS4gKHNpbl9yYWFuICouIGNvc19hcmdwICouIGNvc19pKSkpXG4gIGluXG4gIGxldCB5ID1cbiAgICAocHggKi4gKChzaW5fcmFhbiAqLiBjb3NfYXJncCkgKy4gKGNvc19yYWFuICouIHNpbl9hcmdwICouIGNvc19pKSkpXG4gICAgKy4gKHB5ICouICgtLihzaW5fcmFhbiAqLiBzaW5fYXJncCkgKy4gKGNvc19yYWFuICouIGNvc19hcmdwICouIGNvc19pKSkpXG4gIGluXG4gIGxldCB6ID0gKHB4ICouIChzaW5fYXJncCAqLiBzaW5faSkpICsuIChweSAqLiAoY29zX2FyZ3AgKi4gc2luX2kpKSBpblxuICBWZWMzLnYgeCB5IHpcblxuKCoqIHsxIEVsZW1lbnQgcXVlcmllc30gKilcblxubGV0IHBlcmlvZCBlbCA9IGlmIGVsLmEgPD0gMC4gdGhlbiBpbmZpbml0eSAoKiBoeXBlcmJvbGljICopIGVsc2UgdHdvcGkgLy4gZWwublxubGV0IGVjY2VudHJpY2l0eSBlbCA9IGVsLmVcblxuKCoqIHsxIFB1YmxpYyBBUEl9ICopXG5cbigqKiBQcm9wYWdhdGUgYSBzdGF0ZSB2ZWN0b3IgYnkgW2R0XSBzZWNvbmRzIHVzaW5nIGFuYWx5dGljIEtlcGxlci4gfjUwIEZMT1BzIHZzXG4gICAgfjcyMCBmb3IgUks0LiBFeGFjdCBmb3IgdHdvLWJvZHksIGFueSBlY2NlbnRyaWNpdHkgPCAxLiAqKVxubGV0IGF0IH5wb3MgfnZlbCB+ZHQgPVxuICBsZXQgZWwgPSBlbGVtZW50c19vZl9zdGF0ZSBwb3MgdmVsIGluXG4gIGlmIGVsLmUgPj0gMS4wIHRoZW5cbiAgICAoKiBIeXBlcmJvbGljL3BhcmFib2xpYzogZmFsbCBiYWNrIHRvIFJLNCAqKVxuICAgIFByb3BhZ2F0ZS5hdCB+cG9zIH52ZWwgfmR0XG4gIGVsc2UgcG9zaXRpb25fYXRfZHQgZWwgZHRcblxuKCoqIFByZWNvbXB1dGUgb3JiaXRhbCBlbGVtZW50cyBmb3IgcmVwZWF0ZWQgcHJvcGFnYXRpb24uIENhbGwgdGhpcyBvbmNlLCB0aGVuXG4gICAgdXNlIHshYXRfcHJlY29tcHV0ZWR9IGZvciBlYWNoIHRpbWUgc3RlcC4gKilcbmxldCBwcmVjb21wdXRlIH5wb3MgfnZlbCA9IGVsZW1lbnRzX29mX3N0YXRlIHBvcyB2ZWxcblxuKCoqIFByb3BhZ2F0ZSBmcm9tIHByZWNvbXB1dGVkIGVsZW1lbnRzLiBWZXJ5IGZhc3QgKH4yMCBGTE9QcykuIEZhbGxzIGJhY2sgdG9cbiAgICBSSzQgZm9yIGh5cGVyYm9saWMvcGFyYWJvbGljIG9yYml0cy4gKilcbmxldCBhdF9wcmVjb21wdXRlZCBlbGVtZW50cyB+ZHQgPVxuICBpZiBlbGVtZW50cy5lID49IDEuMCB0aGVuIFByb3BhZ2F0ZS5hdCB+cG9zOmVsZW1lbnRzLnBvcyB+dmVsOmVsZW1lbnRzLnZlbCB+ZHRcbiAgZWxzZVxuICAgIGxldCBwID0gcG9zaXRpb25fYXRfZHQgZWxlbWVudHMgZHQgaW5cbiAgICAoKiBHdWFyZCBhZ2FpbnN0IG51bWVyaWNhbCBpc3N1ZXMgbmVhciBzaW5ndWxhcml0aWVzICopXG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHAueCAmJiBGbG9hdC5pc19maW5pdGUgcC55ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnogdGhlbiBwXG4gICAgZWxzZSBQcm9wYWdhdGUuYXQgfnBvczplbGVtZW50cy5wb3MgfnZlbDplbGVtZW50cy52ZWwgfmR0XG5cbigqKiBHZW5lcmF0ZSBhbiBhcmMgb2YgW251bV9wb2ludHNdIHBvc2l0aW9ucyBjZW50ZXJlZCBvbiBlcG9jaC4gKilcbmxldCBhcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzID1cbiAgbGV0IGVsID0gZWxlbWVudHNfb2Zfc3RhdGUgcG9zIHZlbCBpblxuICBpZiBlbC5lID49IDEuMCB0aGVuIFByb3BhZ2F0ZS5hcmMgfnBvcyB+dmVsIH5kdXJhdGlvbl9zIH5udW1fcG9pbnRzXG4gIGVsc2VcbiAgICBsZXQgZHQgPSBkdXJhdGlvbl9zIC8uIEZsb2F0Lm9mX2ludCBudW1fcG9pbnRzIGluXG4gICAgbGV0IGhhbGYgPSBudW1fcG9pbnRzIC8gMiBpblxuICAgIEFycmF5LmluaXQgbnVtX3BvaW50cyAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHQgPSBGbG9hdC5vZl9pbnQgKGkgLSBoYWxmKSAqLiBkdCBpblxuICAgICAgICBwb3NpdGlvbl9hdF9kdCBlbCB0KVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJnbG9iYWxfZGF0YSIsIktlcGxlcl9Qcm9wYWdhdGUiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfRmxvYXQiLCJTdGRsaWIiLCJLZXBsZXJfVmVjMyIsIm11IiwidHdvcGkiLCJlbGVtZW50c19vZl9zdGF0ZSIsInBvcyIsInZlbCIsInJfbWFnIiwidl9tYWciLCJoIiwiaF9tYWciLCJuX3ZlYyIsIm5fbWFnIiwicmRvdHYiLCJ0ZXJtMSIsInRlcm0yIiwiZV92ZWMiLCJlIiwiZW5lcmd5IiwiYSIsImkiLCJyYWFuIiwiY29zX3JhYW4iLCJjb3NfYXJncCIsImFyZ3AiLCJjb3NfdSIsInUiLCJudSIsImNvc19udSIsIm4iLCJzb2x2ZV9rZXBsZXIiLCJtZWFuX2Fub21hbHkiLCJlY2NlbnRyaWNpdHkiLCJtIiwiZWEiLCJmb3IkIiwic2luX2UiLCJjb3NfZSIsImYiLCJmcCIsInBvc2l0aW9uX2F0X2R0IiwiZWxlbWVudHMiLCJkdCIsImVhMCIsIm0wIiwic2luX2VhIiwiY29zX2VhIiwiciIsInNpbl9udSIsInB4IiwicHkiLCJzaW5fYXJncCIsInNpbl9yYWFuIiwiY29zX2kiLCJzaW5faSIsIngiLCJ5IiwieiIsInBlcmlvZCIsImVsIiwiYXQiLCJwcmVjb21wdXRlIiwiYXRfcHJlY29tcHV0ZWQiLCJwIiwiYXJjIiwiZHVyYXRpb25fcyIsIm51bV9wb2ludHMiLCJoYWxmIiwidCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFFDaUJZO0FBQUEsWUFBQUMsa0JBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFFBcUJFO0FBQUEsS0FBQUMsUUFDQTtBQUFBLElBRVo7QUFBQTtBQUFBLE1BQUFDLElB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QyxLQUFBMkQsWUFBQUM7QUFBQUEsUUFBQVAsS0FJbEQ7QUFBQSxJQUNUO0FBQUEsS0FBb0IsdUVBTU07QUFBQSxRQUFBakIsS0FKZix5QkFBQXlCLE9BQ1Q7QUFBQSxJQUNBO0FBQUE7QUFBQTtBQUFBLHNCQUFBL0M7QUFBQUEsa0JBQUFnRCxJQUNZO0FBQUEsY0FDUiw0QkFBbUI7QUFBQSxlQUFDO0FBQUE7QUFBQSxHQWhNRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGpCMUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMDcyNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJwdGltZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvcHRpbWUvcHRpbWUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBwdGltZSBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogSnVsaWFuIGRheSBhbmQgcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhciBkYXRlIGNvbnZlcnNpb24uXG5cbiAgIEZvcm11bGFlIGFyZSBmcm9tIHRoZSBjYWxlbmRhciBGQVE6XG4gICBodHRwOi8vd3d3LnRvbmRlcmluZy5kay9jbGF1cy9jYWwvanVscGVyaW9kLnBocCNmb3JtdWxhXG5cbiAgIFRoZXNlIGZvcm11bGFlIHdvcmsgZm9yIHBvc2l0aXZlIEp1bGlhbiBkYXlzLiBUaGV5IHJlcHJlc2VudFxuICAgR2Vnb3JpYW4gY2FsZW5kYXIgQkNFIHllYXIgYHlgIGJ5IGAtKHktMSlgLCBlLmcuIDIgQkNFIGlzIC0xLCB0aGlzXG4gICBmb2xsb3dzIHRoZSBjb252ZW50aW9uIG9mIElTTyA4NjAxLlxuXG4gICBBbGwgdGltZXN0YW1wcyBpbiBQdGltZSdzIFttaW47bWF4XSByYW5nZSBhcmUgcmVwcmVzZW50ZWQgYnlcbiAgIHBvc2l0aXZlIEp1bGlhbiBkYXlzIGFuZCB0aGUgZm9ybXVsYWUgZG8gbm90IG92ZXJmbG93IG9uIDMyLWJpdFxuICAgcGxhdGZvcm1zIGluIHRoaXMgcmVzdHJpY3RlZCByYW5nZS4gKilcblxubGV0IGpkX3RvX2RhdGUgamQgPVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIGxldCBkYXkgPSBlIC0gKCgxNTMgKiBtICsgMikgLyA1KSArIDEgaW5cbiAgbGV0IG1vbnRoID0gbSArIDMgLSAoMTIgKiAobSAvIDEwKSkgaW5cbiAgbGV0IHllYXIgPSAxMDAgKiBiICsgZCAtIDQ4MDAgKyAobSAvIDEwKSBpblxuICAoeWVhciwgbW9udGgsIGRheSlcblxubGV0IGpkX3RvX3llYXIgamQgPSAoKiBTYW1lIGFzIGFib3ZlIGJ1dCBvbmx5IGZvciB0aGUgeWVhciAqKVxuICBsZXQgYSA9IGpkICsgMzIwNDQgaW5cbiAgbGV0IGIgPSAoNCAqIGEgKyAzKSAvIDE0NjA5NyBpblxuICBsZXQgYyA9IGEgLSAoKDE0NjA5NyAqIGIpIC8gNCkgaW5cbiAgbGV0IGQgPSAoNCAqIGMgKyAzKSAvIDE0NjEgaW5cbiAgbGV0IGUgPSBjIC0gKCgxNDYxICogZCkgLyA0KSBpblxuICBsZXQgbSA9ICg1ICogZSArIDIpIC8gMTUzIGluXG4gIDEwMCAqIGIgKyBkIC0gNDgwMCArIChtIC8gMTApXG5cbmxldCBqZF9vZl9kYXRlICh5ZWFyLCBtb250aCwgZGF5KSA9XG4gIGxldCBhID0gKDE0IC0gbW9udGgpIC8gMTIgaW5cbiAgbGV0IHkgPSB5ZWFyICsgNDgwMCAtIGEgaW5cbiAgbGV0IG0gPSBtb250aCArIDEyICogYSAtIDMgaW5cbiAgZGF5ICsgKCgxNTMgKiBtKSArIDIpLyA1ICsgMzY1ICogeSArXG4gICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgLSAzMjA0NVxuXG5sZXQgamRfcG9zaXhfZXBvY2ggPSAyXzQ0MF81ODggICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgdGhlIFBPU0lYIGVwb2NoICopXG5sZXQgamRfcHRpbWVfbWluID0gMV83MjFfMDYwICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWluICopXG5sZXQgamRfcHRpbWVfbWF4ID0gNV8zNzNfNDg0ICAgICAgICAgICAgICAgICAgKCogdGhlIEp1bGlhbiBkYXkgb2YgUHRpbWUubWF4ICopXG5cbigqIFBpY29zZWNvbmQgcHJlY2lzaW9uIFBPU0lYIHRpbWVzdGFtcHMgYW5kIHRpbWUgc3BhbiByZXByZXNlbnRhdGlvbi5cblxuICAgUE9TSVggdGltZXN0YW1wcyBhbmQgc3BhbnMgYXJlIHJlcHJlc2VudGVkIGJ5IGludCAqIGludDY0IHBhaXJzXG4gICB3aXRoIHRoZSBpbnQ2NCBpbiB0aGUgcmFuZ2UgWzBMOzg2XzM5OV85OTlfOTk5Xzk5OV85OTlMXS4gQSBwYWlyXG4gICBbKGQsIHBzKV0gZGVub3RlcyB0aGUgUE9TSVggcGljb3NlY29uZCBkdXJhdGlvbiBbZF0gKiA4Nl80MDBlMTIgK1xuICAgW3BzXS5cblxuICAgRm9yIGEgdGltZXN0YW1wIHRoaXMgY2FuIGJlIHNlZW4gYXMgYSBQT1NJWCBkYXkgY291bnQgZnJvbSB0aGVcbiAgIGVwb2NoIHBhaXJlZCB3aXRoIGEgcGljb3NlY29uZCBwcmVjaXNpb24gUE9TSVggdGltZSBwb2ludCBpbiB0aGF0XG4gICBkYXkgc3RhcnRpbmcgZnJvbSAwMDowMDowMC5cblxuICAgQnkgZGVmaW5pdGlvbiB3aXRoIGEgbmVnYXRpdmUgW2RdIHRoZSBbcHNdIGR1cmF0aW9uIGJyaW5ncyB1c1xuICAgdG93YXJkcyB6ZXJvLCAqbm90KiB0b3dhcmRzIGluZmluaXR5OlxuXG5cbiAgICAgICAgIChkICogODZfNDAwZTEyKSAoZCAqIDg2XzQwMGUxMiArIHBzKSAgICAgICAwXG4gICAgIC4uLiAtLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSAuLi5cbiAgICAgICAgICAgICAgWy0tLS0tLS0tLS0tLS0tLS0+fFxuICAgICAgICAgICAgICAgICAgIHBzXG5cbiAgIFtkXSBpcyBsYXJnZWx5IHN1ZmZpY2VudCB0byByZXByZXNlbnQgYWxsIHRoZSBkYXlzIGluIFB0aW1lJ3NcbiAgIFttaW47bWF4XSByYW5nZSBvbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IHBsYXRmb3Jtcy4gKilcblxudHlwZSB0ID0gaW50ICogaW50NjRcblxubGV0IHBzX2NvdW50X2luX3BzICAgID0gICAgICAgICAgICAgICAgICAgICAgMUxcbmxldCBwc19jb3VudF9pbl9ucyAgICA9ICAgICAgICAgICAgICAgICAgMV8wMDBMXG5sZXQgcHNfY291bnRfaW5fMTAwbnMgPSAgICAgICAgICAgICAgICAxMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX3VzICAgID0gICAgICAgICAgICAgIDFfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl8xMDB1cyA9ICAgICAgICAgICAgMTAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbXMgICAgPSAgICAgICAgICAxXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luXzEwMG1zID0gICAgICAgIDEwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9zICAgICA9ICAgICAgMV8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfY291bnRfaW5fbWluICAgPSAgICAgNjBfMDAwXzAwMF8wMDBfMDAwTFxubGV0IHBzX2NvdW50X2luX2hvdXIgID0gICAzNjAwXzAwMF8wMDBfMDAwXzAwMExcbmxldCBwc19jb3VudF9pbl9kYXkgICA9IDg2XzQwMF8wMDBfMDAwXzAwMF8wMDBMXG5sZXQgcHNfZGF5X21heCAgICAgICAgPSA4Nl8zOTlfOTk5Xzk5OV85OTlfOTk5TFxuXG5sZXQgZGF5X21pbiA9IGpkX3B0aW1lX21pbiAtIGpkX3Bvc2l4X2Vwb2NoXG5sZXQgZGF5X21heCA9IGpkX3B0aW1lX21heCAtIGpkX3Bvc2l4X2Vwb2NoXG5cbmxldCBlcG9jaCA9ICgwLCAwTCkgICAgICAgICAgICAgKCogMTk3MC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtaW4gPSAoZGF5X21pbiwgMEwpICAgICAgICAgKCogMDAwMC0wMS0wMSAwMDowMDowMCBVVEMgKilcbmxldCBtYXggPSAoZGF5X21heCwgcHNfZGF5X21heCkgKCogOTk5OS0xMi0zMSAyMzo1OTo1OSBVVEMgKilcblxuKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG50eXBlIHNwYW4gPSB0XG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG5cbiAgbGV0IHN0ZGxpYl9hYnMgPSBhYnNcblxuICAoKiBBcml0aG1ldGljICopXG5cbiAgbGV0IG5lZyA9IGZ1bmN0aW9uXG4gIHwgKGQsIDBMKSAgLT4gKC1kLCAwTClcbiAgfCAoZCwgcHMpIC0+ICgtKGQgKyAxKSwgSW50NjQuc3ViIHBzX2NvdW50X2luX2RheSBwcylcblxuICBsZXQgYWRkIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIGxldCBkID0gZDAgKyBkMSBpblxuICAgIGxldCBwcyA9IEludDY0LmFkZCBwczAgcHMxIGluXG4gICAgbGV0IHBzX2NsYW1wID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2RheSBpblxuICAgIGxldCBkID0gZCArIEludDY0LmNvbXBhcmUgcHMgcHNfY2xhbXAgaW5cbiAgICBkLCBwc19jbGFtcFxuXG4gIGxldCBzdWIgczAgczEgPSBhZGQgczAgKG5lZyBzMSlcbiAgbGV0IGFicyAoZCwgXyBhcyBzKSA9IGlmIGQgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgKCogUE9TSVggdGltZSBzcGFucyAqKVxuXG4gIHR5cGUgdCA9IHNwYW5cblxuICBsZXQgemVybyA9ICgwLCAwTClcbiAgbGV0IHYgKGQsIHBzIGFzIHMpID1cbiAgICBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heFxuICAgIHRoZW4gaW52YWxpZF9hcmcgKEZvcm1hdC5zcHJpbnRmIFwiaWxsZWdhbCBwdGltZSB0aW1lIHNwYW46ICglZCwlTGQpXCIgZCBwcylcbiAgICBlbHNlIHNcblxuICBsZXQgb2ZfZF9wcyAoZCwgcHMgYXMgcykgPSBpZiBwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB0aGVuIE5vbmUgZWxzZSBTb21lIHNcbiAgbGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG4gIGxldCB1bnNhZmVfb2ZfZF9wc19vcHRpb24gcyA9IHNcbiAgbGV0IHRvX2RfcHMgcyA9IHNcblxuICBsZXQgb2ZfaW50X3Mgc2VjcyA9XG4gICAgbGV0IGQgPSBzdGRsaWJfYWJzIHNlY3MgaW5cbiAgICBsZXQgcyA9IChkIC8gODZfNDAwLCBJbnQ2NC4obXVsIChvZl9pbnQgKGQgbW9kIDg2XzQwMCkpIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGlmIHNlY3MgPCAwIHRoZW4gbmVnIHMgZWxzZSBzXG5cbiAgbGV0IGRheV9pbnRfbWluID0gbWluX2ludCAvIDg2XzQwMFxuICBsZXQgZGF5X2ludF9tYXggPSBtYXhfaW50IC8gODZfNDAwXG4gIGxldCB0b19pbnRfcyAoZCwgcHMpID1cbiAgICBpZiBkIDwgZGF5X2ludF9taW4gfHwgZCA+IGRheV9pbnRfbWF4IHRoZW4gTm9uZSBlbHNlXG4gICAgbGV0IGRheXNfcyA9IGQgKiA4Nl80MDAgaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9faW50IChkaXYgcHMgcHNfY291bnRfaW5fcykpICgqIGFsd2F5cyBwb3NpdGl2ZSAqKSBpblxuICAgIGxldCBzZWNzID0gZGF5c19zICsgZGF5X3MgaW5cbiAgICBpZiBzZWNzIDwgZGF5c19zICgqIHBvc2l0aXZlIG92ZXJmbG93ICopIHRoZW4gTm9uZSBlbHNlIFNvbWUgc2Vjc1xuXG4gIGxldCBtaW5faW50X2Zsb2F0ID0gZmxvYXQgbWluX2ludFxuICBsZXQgbWF4X2ludF9mbG9hdCA9IGZsb2F0IG1heF9pbnRcbiAgbGV0IG9mX2Zsb2F0X3Mgc2VjcyA9XG4gICAgaWYgc2VjcyA8PiBzZWNzICgqIG5hbiAqKSB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCBkYXlzID0gZmxvb3IgKHNlY3MgLy4gODZfNDAwLikgaW5cbiAgICBpZiBkYXlzIDwgbWluX2ludF9mbG9hdCB8fCBkYXlzID4gbWF4X2ludF9mbG9hdCB0aGVuIE5vbmUgZWxzZVxuICAgIGxldCByZW1fcyA9IG1vZF9mbG9hdCBzZWNzIDg2XzQwMC4gaW5cbiAgICBsZXQgcmVtX3MgPSBpZiByZW1fcyA8IDAuIHRoZW4gODZfNDAwLiArLiByZW1fcyBlbHNlIHJlbV9zIGluXG4gICAgaWYgcmVtX3MgPj0gODZfNDAwLiB0aGVuXG4gICAgICAoKiBHdWFyZCBhZ2FpbnN0IGEgcG90ZW50aWFsIG92ZXJmbG93IGluIHRoZSBjb21wdXRhdGlvbiBvZiBbcmVtX3NdICopXG4gICAgICBsZXQgZGF5cyA9IGRheXMgKy4gMS4gaW5cbiAgICAgIGlmIGRheXMgPiBtYXhfaW50X2Zsb2F0IHRoZW4gTm9uZSBlbHNlXG4gICAgICBTb21lIChpbnRfb2ZfZmxvYXQgZGF5cywgMEwpXG4gICAgZWxzZVxuICAgIGxldCBmcmFjX3MsIHJlbV9zID0gbW9kZiByZW1fcyBpblxuICAgIGxldCByZW1fcHMgPSBJbnQ2NC4obXVsIChvZl9mbG9hdCByZW1fcykgcHNfY291bnRfaW5fcykgaW5cbiAgICBsZXQgZnJhY19wcyA9IEludDY0LihvZl9mbG9hdCAoZnJhY19zICouIDFlMTIpKSBpblxuICAgIFNvbWUgKGludF9vZl9mbG9hdCBkYXlzLCAoSW50NjQuYWRkIHJlbV9wcyBmcmFjX3BzKSlcblxuICBsZXQgdG9fZmxvYXRfcyAoZCwgcHMpID1cbiAgICBsZXQgZGF5c19zID0gKGZsb2F0IGQpICouIDg2XzQwMC4gaW5cbiAgICBsZXQgZGF5X3MgPSBJbnQ2NC4odG9fZmxvYXQgKGRpdiBwcyBwc19jb3VudF9pbl9zKSkgaW5cbiAgICBsZXQgZGF5X3JlbV9wcyA9IEludDY0Lih0b19mbG9hdCAocmVtIHBzIHBzX2NvdW50X2luX3MpKSBpblxuICAgIGRheXNfcyArLiBkYXlfcyArLiAoZGF5X3JlbV9wcyAqLiAxZS0xMilcblxuICAoKiBQcmVkaWNhdGVzICopXG5cbiAgbGV0IGVxdWFsIChkMCwgcHMwKSAoZDEsIHBzMSkgPVxuICAgIChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxID0gMCAmJlxuICAgIEludDY0LmNvbXBhcmUgcHMwIHBzMSA9IDBcblxuICBsZXQgY29tcGFyZSAoZDAsIHBzMCkgKGQxLCBwczEpID1cbiAgICBsZXQgYyA9IChjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpIGQwIGQxIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIChjb21wYXJlIDogaW50NjQgLT4gaW50NjQgLT4gaW50KSBwczAgcHMxXG5cbiAgKCogUm91bmRpbmcgKilcblxuICBsZXQgcm91bmRfZGl2IGEgYiA9ICgqIGEgPj0gMCBhbmQgYiA+IDAgKilcbiAgICBpZiBhID0gMEwgdGhlbiAwTCBlbHNlXG4gICAgSW50NjQuKGRpdiAoYWRkIGEgKGRpdiBiIDJMKSkgYilcblxuICBsZXQgZnJhY19kaXYgPSBbfCAxXzAwMF8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgMTAwXzAwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgMTBfMDAwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgMV8wMDBfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDEwMF8wMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwXzAwMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFfMDAwXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDBfMDAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMF8wMDBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXzAwMEw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwTDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBMO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMUw7IHxdXG5cbiAgbGV0IHJvdW5kIH5mcmFjX3M6ZnJhYyAoc2lnbiwgXyBhcyB0KSA9XG4gICAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICAgIGxldCAoZCwgcHMpID0gaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHQgaW5cbiAgICBsZXQgcnBzID0gSW50NjQubXVsIChyb3VuZF9kaXYgcHMgZnJhY19kaXYuKGZyYWMpKSBmcmFjX2Rpdi4oZnJhYykgaW5cbiAgICBsZXQgdCA9IGlmIHJwcyA+IHBzX2RheV9tYXggdGhlbiAoZCArIDEsIDBMKSBlbHNlIChkLCBycHMpIGluXG4gICAgaWYgc2lnbiA8IDAgdGhlbiBuZWcgdCBlbHNlIHRcblxuICBsZXQgdHJ1bmNhdGUgfmZyYWNfczpmcmFjIChzaWduLCBfIGFzIHQpID1cbiAgICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gICAgbGV0IChkLCBwcykgPSBpZiBzaWduIDwgMCB0aGVuIG5lZyB0IGVsc2UgdCBpblxuICAgIGxldCB0cHMgPSBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMpKSkgaW5cbiAgICBpZiBzaWduIDwgMCB0aGVuIG5lZyAoZCwgdHBzKSBlbHNlIChkLCB0cHMpXG5cbiAgbGV0IHRydW5jYXRlX2Rvd24gfmZyYWNfczpmcmFjIChkLCBwcykgPVxuICAgIChkLCBJbnQ2NC4oc3ViIHBzIChyZW0gcHMgZnJhY19kaXYuKGZyYWMgKSkpKVxuXG4gICgqIFByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBkdW1wIHBwZiAoZCwgcHMpID0gRm9ybWF0LmZwcmludGYgcHBmIFwiQFs8MT4oJWQsQCwlTGQpQF1cIiBkIHBzXG5cbiAgKCogV2FybmluZyBsYWJvcmlvdXMgY29kZSBmb2xsb3dzLiBJcyB0aGVyZSBhIGJldHRlciB3YXkgPyAqKVxuXG4gIGxldCBkaXZpZGVfcHMgfmNhcnJ5IHBzIGhpIGxvID1cbiAgICBsZXQgaGlfZCA9IEludDY0Lih0b19pbnQgKGRpdiBwcyBoaSkpIGluXG4gICAgbGV0IHJlbV9wcyA9IEludDY0LnJlbSBwcyBoaSBpblxuICAgIGxldCBsb19kID0gSW50NjQudG9faW50IChyb3VuZF9kaXYgcmVtX3BzIGxvKSBpblxuICAgIGlmIGxvX2QgPSBjYXJyeSB0aGVuIGhpX2QgKyAxLCAwIGVsc2UgaGlfZCwgbG9fZFxuXG4gIGxldCBwcF95X2QgcHBmIH5uZWcgZCBwcyA9ICgqIGFzc2VydCBkID49IDAgKilcbiAgICBsZXQgeSwgcmVtX2QgPVxuICAgICAgbGV0IG1heF9kID0gbWF4X2ludCAvIDQgaW5cbiAgICAgIGlmIGQgPiBtYXhfZCB0aGVuICgqIGQgKiA0IG92ZXJmbG93cyAqKSBkIC8gMzY1LCBkIG1vZCAzNjUgZWxzZVxuICAgICAgbGV0IHkgPSAoZCAqIDQpIC8gMTQ2MSAoKiAvIDM2NS4yNSAqKSBpblxuICAgICAgeSwgZCAtICh5ICogMTQ2MSkgLyA0XG4gICAgaW5cbiAgICBsZXQgZGF5cyA9IHJlbV9kICsgSW50NjQudG9faW50IChyb3VuZF9kaXYgcHMgcHNfY291bnRfaW5fZGF5KSBpblxuICAgIGxldCB5LCBkYXlzID0gaWYgZGF5cyA9IDM2NiB0aGVuIHkgKyAxLCAxIGVsc2UgeSwgZGF5cyBpblxuICAgIGxldCB5ID0gaWYgbmVnIHRoZW4gLXkgZWxzZSB5IGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgeTtcbiAgICBpZiBkYXlzIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGRcIiBkYXlzO1xuICAgICgpXG5cbiAgbGV0IHBwX2RfaCBwcGYgfm5lZyBkIHBzID1cbiAgICBsZXQgaCwgXyA9IGRpdmlkZV9wcyB+Y2Fycnk6MSBwcyBwc19jb3VudF9pbl9ob3VyIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgICBsZXQgZCwgaCA9IGlmIGggPSAyNCB0aGVuIGQgKyAxLCAwIGVsc2UgZCwgaCBpblxuICAgIGlmIGQgPSAzNjYgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZHkxZFwiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGVsc2VcbiAgICBpZiBkID0gMzY1ICYmIGggPj0gNlxuICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWR5XCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBkID0gaWYgbmVnIHRoZW4gLWQgZWxzZSBkIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgZDtcbiAgICBpZiBoIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiBoO1xuICAgICgpXG5cbiAgbGV0IHBwX2hfbSBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IGgsIG0gPSBkaXZpZGVfcHMgfmNhcnJ5OjYwIHBzIHBzX2NvdW50X2luX2hvdXIgcHNfY291bnRfaW5fbWluIGluXG4gICAgaWYgaCA9IDI0IHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRkXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBoID0gaWYgbmVnIHRoZW4gLWggZWxzZSBoIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRoXCIgaDtcbiAgICBpZiBtIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgKClcblxuICBsZXQgcHBfbV9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgbSwgcyA9IGRpdmlkZV9wcyB+Y2Fycnk6NjAgcHMgcHNfY291bnRfaW5fbWluIHBzX2NvdW50X2luX3MgaW5cbiAgICBpZiBtID0gNjAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZGhcIiAoaWYgbmVnIHRoZW4gLTEgZWxzZSAxKSBlbHNlXG4gICAgbGV0IG0gPSBpZiBuZWcgdGhlbiAtbSBlbHNlIG0gaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlZG1pblwiIG07XG4gICAgaWYgcyA8PiAwIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgcztcbiAgICAoKVxuXG4gIGxldCBwcF9zIHBwZiB+bmVnIHBzID1cbiAgICBsZXQgcywgbXMgPSBkaXZpZGVfcHMgfmNhcnJ5OjEwMDAgcHMgcHNfY291bnRfaW5fcyBwc19jb3VudF9pbl9tcyBpblxuICAgIGlmIHMgPSA2MCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkbWluXCIgKGlmIG5lZyB0aGVuIC0xIGVsc2UgMSkgZWxzZVxuICAgIGxldCBzID0gaWYgbmVnIHRoZW4gLXMgZWxzZSBzIGluXG4gICAgaWYgbXMgPD4gMCB0aGVuIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVkLiUwM2RzXCIgcyBtcyBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRzXCIgc1xuXG4gIGxldCBwcF91bml0IGhpZ2hlcl9zdHIgaGkgaGlfc3RyIGZyYWNfbGltaXQgbG8gcHBmIH5uZWcgcHMgPVxuICAgIGxldCBwcF91bml0X2ludGVncmFsIHBwZiB+bmVnIGggPVxuICAgICAgaWYgaCA9IDEwMDBcbiAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtMSBlbHNlIDEpIGhpZ2hlcl9zdHJcbiAgICAgIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQlc1wiIChpZiBuZWcgdGhlbiAtaCBlbHNlIGgpIGhpX3N0clxuICAgIGluXG4gICAgaWYgcHMgPCBmcmFjX2xpbWl0IHRoZW4gYmVnaW5cbiAgICAgIGxldCBoLCBsID0gZGl2aWRlX3BzIH5jYXJyeToxMDAwIHBzIGhpIGxvIGluXG4gICAgICBpZiBoID49IDEwMCB8fCBsID0gMCB0aGVuIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgaCBlbHNlXG4gICAgICBsZXQgaCA9IGlmIG5lZyB0aGVuIC1oIGVsc2UgaCBpblxuICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQuJTAzZCVzXCIgaCBsIGhpX3N0clxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbXMsIF8gPSBkaXZpZGVfcHMgfmNhcnJ5OjEgcHMgaGkgaGkgaW5cbiAgICAgIHBwX3VuaXRfaW50ZWdyYWwgcHBmIH5uZWcgbXNcbiAgICBlbmRcblxuICBsZXQgcHBfbXMgPVxuICAgIHBwX3VuaXQgXCJzXCIgcHNfY291bnRfaW5fbXMgXCJtc1wiIHBzX2NvdW50X2luXzEwMG1zIHBzX2NvdW50X2luX3VzXG5cbiAgbGV0IHBwX3VzID1cbiAgICBwcF91bml0IFwibXNcIiBwc19jb3VudF9pbl91cyBcInVzXCIgcHNfY291bnRfaW5fMTAwdXMgcHNfY291bnRfaW5fbnNcblxuICBsZXQgcHBfbnMgPVxuICAgIHBwX3VuaXQgXCJ1c1wiIHBzX2NvdW50X2luX25zIFwibnNcIiBwc19jb3VudF9pbl8xMDBucyBwc19jb3VudF9pbl9wc1xuXG4gIGxldCBwcF9wcyBwcGYgfm5lZyBwcyA9XG4gICAgbGV0IHBzID0gSW50NjQudG9faW50IHBzIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWRwc1wiIChpZiBuZWcgdGhlbiAtcHMgZWxzZSBwcylcblxuICBsZXQgcHAgcHBmIChzaWduLCBfIGFzIHMpID1cbiAgICBsZXQgbmVnID0gc2lnbiA8IDAgaW5cbiAgICBtYXRjaCAoYWJzIHMpIHdpdGhcbiAgICB8ICgwLCBwcykgLT5cbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5faG91ciB0aGVuIHBwX2hfbSBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX21pbiB0aGVuIHBwX21fcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3MgdGhlbiBwcF9zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgaWYgcHMgPj0gcHNfY291bnRfaW5fbXMgdGhlbiBwcF9tcyBwcGYgfm5lZyBwcyBlbHNlXG4gICAgICAgIGlmIHBzID49IHBzX2NvdW50X2luX3VzIHRoZW4gcHBfdXMgcHBmIH5uZWcgcHMgZWxzZVxuICAgICAgICBpZiBwcyA+PSBwc19jb3VudF9pbl9ucyB0aGVuIHBwX25zIHBwZiB+bmVnIHBzIGVsc2VcbiAgICAgICAgcHBfcHMgcHBmIH5uZWcgcHNcbiAgICB8IChkLCBwcykgLT5cbiAgICAgICAgaWYgZCA+IDM2NSB0aGVuIHBwX3lfZCBwcGYgfm5lZyBkIHBzIGVsc2VcbiAgICAgICAgcHBfZF9oIHBwZiB+bmVnIGQgcHNcbmVuZFxuXG4oKiBQT1NJWCB0aW1lc3RhbXBzICopXG5cbmxldCB2IChkLCBwcyBhcyBzKSA9XG4gIGlmIChwcyA8IDBMIHx8IHBzID4gcHNfZGF5X21heCB8fCBkIDwgZGF5X21pbiB8fCBkID4gZGF5X21heClcbiAgdGhlbiBpbnZhbGlkX2FyZyAoRm9ybWF0LnNwcmludGYgXCJpbGxlZ2FsIHB0aW1lIHRpbWVzdGFtcDogKCVkLCVMZClcIiBkIHBzKVxuICBlbHNlIHNcblxubGV0IHVuc2FmZV9vZl9kX3BzIHMgPSBzXG5cbmxldCBvZl9zcGFuIChkLCBfIGFzIHNwYW4pID1cbiAgaWYgZCA8IGRheV9taW4gfHwgZCA+IGRheV9tYXggdGhlbiBOb25lIGVsc2UgU29tZSBzcGFuXG5cbmxldCB0b19zcGFuIHQgPSB0XG5cbmxldCBvZl9mbG9hdF9zIHNlY3MgPSBtYXRjaCBTcGFuLm9mX2Zsb2F0X3Mgc2VjcyB3aXRoXG58IE5vbmUgLT4gTm9uZVxufCBTb21lIGQgLT4gb2Zfc3BhbiBkXG5cbmxldCB0b19mbG9hdF9zID0gU3Bhbi50b19mbG9hdF9zXG5cbmxldCB0cnVuY2F0ZSA9IFNwYW4udHJ1bmNhdGVfZG93blxuXG5sZXQgZnJhY19zIChfLCBwcykgPSAoMCwgSW50NjQuKHJlbSBwcyBwc19jb3VudF9pbl9zKSlcblxuKCogUHJlZGljYXRlcyAqKVxuXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgY29tcGFyZSA9IFNwYW4uY29tcGFyZVxubGV0IGlzX2VhcmxpZXIgdCB+dGhhbiA9IGNvbXBhcmUgdCB0aGFuID0gLTFcbmxldCBpc19sYXRlciB0IH50aGFuID0gY29tcGFyZSB0IHRoYW4gPSAxXG5cbigqIFBPU0lYIGFyaXRobWV0aWMgKilcblxubGV0IGFkZF9zcGFuIHQgZCA9IG9mX3NwYW4gKFNwYW4uYWRkIHQgZClcbmxldCBzdWJfc3BhbiB0IGQgPSBvZl9zcGFuIChTcGFuLnN1YiB0IGQpXG5sZXQgZGlmZiB0MSB0MCA9IFNwYW4uc3ViIHQxIHQwXG5cbigqIFRpbWUgem9uZSBvZmZzZXRzIGJldHdlZW4gbG9jYWwgYW5kIFVUQyB0aW1lbGluZXMgKilcblxudHlwZSB0el9vZmZzZXRfcyA9IGludFxuXG4oKiBEYXRlLXRpbWUgY29udmVyc2lvblxuXG4gICBQT1NJWCB0aW1lIGNvdW50cyBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDIHdpdGhvdXRcbiAgIGNvdW50aW5nIGxlYXAgc2Vjb25kcyAtLSB3aGVuIGEgbGVhcCBzZWNvbmQgb2NjdXJzIGEgUE9TSVggc2Vjb25kXG4gICBjYW4gYmUgdHdvIFNJIHNlY29uZHMgb3IgemVybyBTSSBzZWNvbmQuIEhlbmNlIDg2NDAwIFBPU0lYIHNlY29uZHNcbiAgIGFsd2F5cyByZXByZXNlbnQgYW4gVVRDIGRheSBhbmQgdGhlIHRyYW5zbGF0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGVcbiAgIHdpdGhvdXQgaGF2aW5nIHRvIHJlZmVyIHRvIGEgbGVhcCBzZWNvbmRzIHRhYmxlLiAqKVxuXG50eXBlIGRhdGUgPSAoaW50ICogaW50ICogaW50KVxudHlwZSB0aW1lID0gKGludCAqIGludCAqIGludCkgKiB0el9vZmZzZXRfc1xuXG5sZXQgbWF4X21vbnRoX2RheSA9ICAgICAgICAgICAgICAgKCogbWF4IGRheSBudW1iZXIgaW4gYSBnaXZlbiB5ZWFyJ3MgbW9udGguICopXG4gIGxldCBpc19sZWFwX3llYXIgeSA9ICh5IG1vZCA0ID0gMCkgJiYgKHkgbW9kIDEwMCA8PiAwIHx8IHkgbW9kIDQwMCA9IDApIGluXG4gIGxldCBtbGVuID0gW3wzMTsgMjggKCogb3Igbm90ICopOyAzMTsgMzA7IDMxOyAzMDsgMzE7IDMxOyAzMDsgMzE7IDMwOyAzMXxdIGluXG4gIGZ1biB5IG0gLT4gaWYgKG0gPSAyICYmIGlzX2xlYXBfeWVhciB5KSB0aGVuIDI5IGVsc2UgbWxlbi4obSAtIDEpXG5cbmxldCBpc19kYXRlX3ZhbGlkICh5LCBtLCBkKSA9XG4gIDAgPD0geSAmJiB5IDw9IDk5OTkgJiZcbiAgMSA8PSBtICYmIG0gPD0gMTIgJiZcbiAgMSA8PSBkICYmIGQgPD0gbWF4X21vbnRoX2RheSB5IG1cblxubGV0IGlzX3RpbWVfdmFsaWQgKChoaCwgbW0sIHNzKSwgXykgPVxuICAwIDw9IGhoICYmIGhoIDw9IDIzICYmXG4gIDAgPD0gbW0gJiYgbW0gPD0gNTkgJiZcbiAgMCA8PSBzcyAmJiBzcyA8PSA2MFxuXG5sZXQgb2ZfZGF0ZV90aW1lIChkYXRlLCAoKGhoLCBtbSwgc3MpLCB0el9vZmZzZXRfcyBhcyB0KSkgPVxuICAoKiBXZSBmaXJzdCB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBhcmUgUHRpbWUtdmFsaWQuXG4gICAgIE9uY2UgdGhpcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCB3ZSBmaW5kIGZpbmQgdGhlIG51bWJlciBvZiBKdWxpYW5cbiAgICAgZGF5cyBzaW5jZSB0aGUgZXBvY2ggZm9yIHRoZSBnaXZlbiBwcm9sZXB0aWMgR2VvcmdpYW4gY2FsZW5kYXJcbiAgICAgZGF0ZS4gVGhpcyBnaXZlcyB1cyB0aGUgUE9TSVggZGF5IGNvbXBvbmVudCBvZiB0aGUgdGltZXN0YW1wLiBUaGVcbiAgICAgcmVtYWluaW5nIHRpbWUgZmllbGRzIGFyZSB1c2VkIHRvIGRlcml2ZSB0aGUgcGljb3NlY29uZCBwcmVjaXNpb25cbiAgICAgdGltZSBpbiB0aGF0IGRheSBjb21wZW5zYXRlZCBieSB0aGUgdGltZSB6b25lIG9mZnNldC4gVGhlIGZpbmFsXG4gICAgIHJlc3VsdCBpcyBjaGVja2VkIHRvIGJlIGluIFB0aW1lJ3MgW21pbjttYXhdIHJhbmdlLlxuXG4gICAgIEJ5IGRlZmluaXRpb24gUE9TSVggdGltZXN0YW1wcyBjYW5ub3QgcmVwcmVzZW50IGxlYXAgc2Vjb25kcy5cbiAgICAgV2l0aCB0aGUgY29kZSBiZWxvdyBhbnkgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzIHZhbHVlIG9mIDYwXG4gICAgIChsZWFwIHNlY29uZCBhZGRpdGlvbikgaXMgbWFwcGVkIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAgdGhhdFxuICAgICBoYXBwZW5zIDEgc2Vjb25kIGxhdGVyIHdoaWNoIGlzIHdoYXQgUE9TSVggbWt0aW1lIHdvdWxkIHRvLiBBbnlcbiAgICAgZm9ybWFsbHkgbm9uLWV4aXN0aW5nIFVUQyBkYXRlLXRpbWUgd2l0aCBhIHNlY29uZHMgdmFsdWUgb2YgNTlcbiAgICAgKGxlYXAgc2Vjb25kIHN1YnRyYWN0aW9uKSBpcyBtYXBwZWQgb24gdGhlIFBPU0lYIHRpbWVzdGFtcCB0aGF0XG4gICAgIHJlcHJlc2VudHMgdGhpcyBub24gZXhpc3RpbmcgaW5zdGFudC4gKilcbiAgaWYgbm90IChpc19kYXRlX3ZhbGlkIGRhdGUgJiYgaXNfdGltZV92YWxpZCB0KSB0aGVuIE5vbmUgZWxzZVxuICBsZXQgZCA9IGpkX29mX2RhdGUgZGF0ZSAtIGpkX3Bvc2l4X2Vwb2NoIGluXG4gIGxldCBoaF9wcyA9IEludDY0LihtdWwgKG9mX2ludCBoaCkgcHNfY291bnRfaW5faG91cikgaW5cbiAgbGV0IG1tX3BzID0gSW50NjQuKG11bCAob2ZfaW50IG1tKSBwc19jb3VudF9pbl9taW4pIGluXG4gIGxldCBzc19wcyA9IEludDY0LihtdWwgKG9mX2ludCBzcykgcHNfY291bnRfaW5fcykgaW5cbiAgbGV0IHBzID0gSW50NjQuKGFkZCBoaF9wcyAoYWRkIG1tX3BzIHNzX3BzKSkgaW5cbiAgc3ViX3NwYW4gKGQsIHBzKSAoU3Bhbi5vZl9pbnRfcyB0el9vZmZzZXRfcylcblxubGV0IHRvX2RhdGVfdGltZSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gICgqIFRvIHJlbmRlciB0aGUgdGltZXN0YW1wIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgb2Zmc2V0IHdlIGZpcnN0XG4gICAgIGV4cHJlc3MgdGhlIHRpbWVzdGFtcCBpbiBsb2NhbCB0aW1lIGFuZCB0aGVuIGNvbXB1dGUgdGhlIGRhdGVcbiAgICAgZmllbGRzIG9uIHRoYXQgc3RhbXAgYXMgaWYgaXQgd2VyZSBVVEMuIElmIHRoZSBsb2NhbCB0aW1lc3RhbXAgaXNcbiAgICAgbm90IGluIFttaW47bWF4XSB0aGVuIGl0cyBkYXRlIGZpZWxkcyBjYW5ub3QgYmUgdmFsaWQgYWNjb3JkaW5nXG4gICAgIHRvIHRoZSBjb25zdHJhaW50cyBndWFyYW50ZWVkIGJ5IFB0aW1lIGFuZCB3ZSBmYWxsYmFjayB0byBVVEMsXG4gICAgIGkuZS4gYSB0aW1lIHpvbmUgb2Zmc2V0IG9mIDAuXG5cbiAgICAgV2UgdGhlbiBhcHBseSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSB3aG9zZSBkZXNjcmlwdGlvbiBtYWtlc1xuICAgICBzZW5zZSBvbiBhIFBPU0lYIHRpbWVzdGFtcCAoaS5lLiBVVEMpIGJ1dCB3b3JrcyBlcXVhbGx5IHdlbGwgdG9cbiAgICAgcmVuZGVyIHRoZSBkYXRlLXRpbWUgZmllbGRzIG9mIGEgbG9jYWwgdGltZXN0YW1wLlxuXG4gICAgIFdlIGZpcnN0IHRha2UgdGFrZSB0aGUgUE9TSVggZGF5IGNvdW50IFtkXSAoZXF1aXZhbGVudCBieVxuICAgICBkZWZpbml0aW9uIHRvIGFuIFVUQyBkYXkgY291bnQpIGZyb20gdGhlIGVwb2NoLCBjb252ZXJ0IGl0IHRvIGFcbiAgICAgSnVsaWFuIGRheSBhbmQgdXNlIHRoaXMgdG8gZ2V0IHRoZSBwcm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyXG4gICAgIGRhdGUuIFRoZSBQT1NJWCBwaWNvc2Vjb25kcyBbcHNdIGluIHRoZSBkYXkgYXJlIGFyZSBjb252ZXJ0ZWQgdG9cbiAgICAgYSBkYXl0aW1lIGFjY29yZGluZyB0byB0byBpdHMgdmFyaW91cyB1bml0cy5cblxuICAgICBCeSBkZWZpbml0aW9uIG5vIFBPU0lYIHRpbWVzdGFtcCBjYW4gcmVwcmVzZW50IGEgZGF0ZS10aW1lIHdpdGggYVxuICAgICBzZWNvbmRzIHZhbHVlIG9mIDYwIChsZWFwIHNlY29uZCBhZGRpdGlvbikgYW5kIHRodXMgdGhlIGZ1bmN0aW9uXG4gICAgIHdpbGwgbmV2ZXIgcmV0dXJuIGEgZGF0ZS10aW1lIHdpdGggc3VjaCBhIHZhbHVlLiAgT24gdGhlIG90aGVyXG4gICAgIGhhbmQgaXQgd2lsbCByZXR1cm4gYW4gaW5leGlzdGluZyBVVEMgZGF0ZS10aW1lIHdpdGggYSBzZWNvbmRzXG4gICAgIHZhbHVlIG9mIDU5IHdoZW5ldmVyIGEgbGVhcCBzZWNvbmQgaXMgc3VidHJhY3RlZCBzaW5jZSB0aGVyZSBpcyBhXG4gICAgIFBPU0lYIHRpbWVzdGFtcCB0aGF0IHJlcHJlc2VudHMgdGhpcyBpbnN0YW50LiAqKVxuICBsZXQgKGQsIHBzKSwgdHpfb2Zmc2V0X3MgPSBtYXRjaCBhZGRfc3BhbiB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSB3aXRoXG4gIHwgTm9uZSAtPiB0LCAwICgqIGZhbGxiYWNrIHRvIFVUQyAqKVxuICB8IFNvbWUgbG9jYWwgLT4gbG9jYWwsIHR6X29mZnNldF9zXG4gIGluXG4gIGxldCBqZCA9IGQgKyBqZF9wb3NpeF9lcG9jaCBpblxuICBsZXQgZGF0ZSA9IGpkX3RvX2RhdGUgamQgaW5cbiAgbGV0IGhoID0gSW50NjQuKHRvX2ludCAoZGl2IHBzIHBzX2NvdW50X2luX2hvdXIpKSBpblxuICBsZXQgaGhfcmVtID0gSW50NjQucmVtIHBzIHBzX2NvdW50X2luX2hvdXIgaW5cbiAgbGV0IG1tID0gSW50NjQuKHRvX2ludCAoZGl2IGhoX3JlbSBwc19jb3VudF9pbl9taW4pKSBpblxuICBsZXQgbW1fcmVtID0gSW50NjQucmVtIGhoX3JlbSBwc19jb3VudF9pbl9taW4gaW5cbiAgbGV0IHNzID0gSW50NjQuKHRvX2ludCAoZGl2IG1tX3JlbSBwc19jb3VudF9pbl9zKSkgaW5cbiAgZGF0ZSwgKChoaCwgbW0sIHNzKSwgdHpfb2Zmc2V0X3MpXG5cbmxldCBvZl9kYXRlID90el9vZmZzZXRfczoodHogPSAwKSBkYXRlID0gb2ZfZGF0ZV90aW1lIChkYXRlLCAoKDAwLCAwMCwgMDApLCB0eikpXG5sZXQgdG9fZGF0ZSA/dHpfb2Zmc2V0X3MgdCA9IGZzdCAodG9fZGF0ZV90aW1lID90el9vZmZzZXRfcyB0KVxubGV0IG9mX3llYXIgP3R6X29mZnNldF9zIHkgPSBvZl9kYXRlID90el9vZmZzZXRfcyAoeSwgMDEsIDAxKVxubGV0IHRvX3llYXIgPyh0el9vZmZzZXRfcyA9IDApIHQgPVxuICBsZXQgZCA9IG1hdGNoIGFkZF9zcGFuIHQgKFNwYW4ub2ZfaW50X3MgdHpfb2Zmc2V0X3MpIHdpdGhcbiAgfCBOb25lIC0+IGZzdCB0ICgqIGZhbGxiYWNrIHRvIFVUQyAqKSB8IFNvbWUgKGxvY2FsX2QsIF8pIC0+IGxvY2FsX2RcbiAgaW5cbiAgamRfdG9feWVhciAoZCArIGpkX3Bvc2l4X2Vwb2NoKVxuXG5cbnR5cGUgd2Vla2RheSA9IFsgYFN1biB8IGBNb24gfCBgVHVlIHwgYFdlZCB8IGBUaHUgfCBgRnJpIHwgYFNhdCBdXG5cbmxldCB3ZWVrZGF5X251bSA/KHR6X29mZnNldF9zID0gMCkgdCA9XG4gIGxldCAoZCwgXykgPSBTcGFuLmFkZCB0IChTcGFuLm9mX2ludF9zIHR6X29mZnNldF9zKSBpblxuICAoKiBOLkIuIGluIGNvbnRyYXN0IHRvIFt0b19kYXRlX3RpbWVdIHdlIGRvbid0IGNhcmUgaWYgd2UgZmFsbCBvdXRzaWRlXG4gICAgW21pbjttYXhdLiBFdmVuIGlmIGl0IGhhcHBlbnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tcHV0YXRpb24gaXMgc3RpbGxcbiAgICAgY29ycmVjdCAqKVxuICBsZXQgaSA9IChkICsgNCAoKiBFcG9jaCwgZCA9IDAsIHdhcyBhIHRodSwgd2Ugd2FudCA0IGZvciB0aGF0IGRheSAqKSkgbW9kIDcgaW5cbiAgaWYgaSA8IDAgdGhlbiA3ICsgaSBlbHNlIGlcblxubGV0IHdlZWtkYXkgPVxuICBsZXQgd2RheSA9IFt8IGBTdW47IGBNb247IGBUdWU7IGBXZWQ7IGBUaHU7IGBGcmk7IGBTYXQ7IHxdIGluXG4gIGZ1biA/dHpfb2Zmc2V0X3MgdCAtPiB3ZGF5Lih3ZWVrZGF5X251bSA/dHpfb2Zmc2V0X3MgdClcblxuKCogUkZDIDMzMzkgdGltZXN0YW1wIGNvbnZlcnNpb25zICopXG5cbigqIFJGQyAzMzM5IHRpbWVzdGFtcCBwYXJzZXIgKilcblxudHlwZSBlcnJvcl9yYW5nZSA9IGludCAqIGludFxudHlwZSByZmMzMzM5X2Vycm9yID1cbiAgWyBgSW52YWxpZF9zdGFtcCB8IGBFb2kgfCBgRXhwX2NoYXJzIG9mIGNoYXIgbGlzdCB8IGBUcmFpbGluZ19pbnB1dCBdXG5cbmxldCBwcF9yZmMzMzM5X2Vycm9yIHBwZiA9IGZ1bmN0aW9uXG58IGBJbnZhbGlkX3N0YW1wIC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbaW52YWxpZEAgdGltZUAgc3RhbXBAXVwiXG58IGBFb2kgLT4gRm9ybWF0LmZwcmludGYgcHBmIFwiQFt1bmV4cGVjdGVkQCBlbmRAIG9mQCBpbnB1dEBdXCJcbnwgYFRyYWlsaW5nX2lucHV0IC0+IEZvcm1hdC5mcHJpbnRmIHBwZiBcIkBbdHJhaWxpbmdAIGlucHV0QF1cIlxufCBgRXhwX2NoYXJzIGNzIC0+XG4gICAgbGV0IHJlYyBwcF9jaGFycyBwcGYgPSBmdW5jdGlvblxuICAgIHwgYyA6OiBjcyAtPiBGb3JtYXQuZnByaW50ZiBwcGYgXCJAICVDXCIgYzsgcHBfY2hhcnMgcHBmIGNzXG4gICAgfCBbXSAtPiAoKVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiQFtleHBlY3RlZEAgYUAgY2hhcmFjdGVyQCBpbjolYUBdXCIgcHBfY2hhcnMgY3NcblxubGV0IHBwX3JhbmdlIHBwZiAocywgZSkgPVxuICBpZiBzID0gZSAgdGhlbiBGb3JtYXQucHBfcHJpbnRfaW50IHBwZiBzIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJWQtJWRcIiBzIGVcblxubGV0IF9yZmMzMzM5X2Vycm9yX3RvX3N0cmluZyAociwgZXJyKSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWE6ICVhQF1cIiBwcF9yYW5nZSByIHBwX3JmYzMzMzlfZXJyb3IgZXJyXG5cbmxldCByZmMzMzM5X3N0cmluZ19lcnJvciA9IGZ1bmN0aW9uXG58IE9rIF8gYXMgdiAtPiB2IHwgRXJyb3IgKGBSRkMzMzM5IGUpIC0+IEVycm9yIChfcmZjMzMzOV9lcnJvcl90b19zdHJpbmcgZSlcblxubGV0IHJmYzMzMzlfZXJyb3JfdG9fbXNnID0gZnVuY3Rpb25cbnwgT2sgXyBhcyB2IC0+IHYgfCBFcnJvciAoYFJGQzMzMzkgZSkgLT5cbiAgICBFcnJvciAoYE1zZyAoX3JmYzMzMzlfZXJyb3JfdG9fc3RyaW5nIGUpKVxuXG5leGNlcHRpb24gUkZDMzMzOSBvZiAoaW50ICogaW50KSAqIHJmYzMzMzlfZXJyb3IgICAgICAgICAgICAgICAgICAoKiBJbnRlcm5hbCAqKVxuXG5sZXQgZXJyb3IgciBlID0gcmFpc2UgKFJGQzMzMzkgKHIsIGUpKVxubGV0IGVycm9yX3BvcyBwIGUgPSBlcnJvciAocCwgcCkgZVxubGV0IGVycm9yX2V4cF9kaWdpdCBwID1cbiAgZXJyb3JfcG9zIHAgKGBFeHBfY2hhcnMgWycwJzsgJzEnOyAnMic7ICczJzsgJzQnOyAnNSc7ICc2JzsgJzcnOyAnOCc7ICc5J10pXG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxubGV0IHBhcnNlX2RpZ2l0cyB+Y291bnQgcG9zIG1heCBzID1cbiAgbGV0IHN0b3AgPSBwb3MgKyBjb3VudCAtIDEgaW5cbiAgaWYgc3RvcCA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyA9XG4gICAgaWYgayA+IHN0b3AgdGhlbiBhY2MgZWxzZVxuICAgIGlmIGlzX2RpZ2l0IHMuW2tdIHRoZW4gbG9vcCAoaysxKSAoYWNjICogMTAgKyBDaGFyLmNvZGUgcy5ba10gLSAweDMwKSBlbHNlXG4gICAgZXJyb3JfZXhwX2RpZ2l0IGtcbiAgaW5cbiAgbG9vcCBwb3MgMFxuXG5sZXQgcGFyc2VfY2hhciBjIHBvcyBtYXggcyA9XG4gIGlmIHBvcyA+IG1heCB0aGVuIGVycm9yX3BvcyBtYXggYEVvaSBlbHNlXG4gIGlmIHMuW3Bvc10gPSBjIHRoZW4gKCkgZWxzZSBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIFtjXSlcblxubGV0IHBhcnNlX2R0X3NlcCB+c3RyaWN0IHBvcyBtYXggcyA9XG4gIGxldCBpc19kdF9zZXAgPSBmdW5jdGlvblxuICB8ICdUJyAtPiB0cnVlXG4gIHwgJ3QnIHwgJyAnIHdoZW4gbm90IHN0cmljdCAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBpc19kdF9zZXAgcy5bcG9zXSB0aGVuICgpIGVsc2VcbiAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyAoWydUJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsndCc7ICcgJ10pKVxuXG5sZXQgZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBtYXRjaCBzLltwb3NdIHdpdGhcbiAgfCAnLicgLT4gYEZyYWNcbiAgfCAnKycgfCAnLScgfCAnWicgLT4gYFR6XG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAgLT4gYFR6XG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycuJzsgJysnOyAnLSc7ICdaJ10gQCBpZiBzdHJpY3QgdGhlbiBbXSBlbHNlIFsneiddIGluXG4gICAgICBlcnJvcl9wb3MgcG9zIChgRXhwX2NoYXJzIGNoYXJzKVxuXG5sZXQgcGFyc2VfZnJhY19wcyBwb3MgbWF4IHMgPVxuICBpZiBwb3MgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICBpZiBub3QgKGlzX2RpZ2l0IHMuW3Bvc10pIHRoZW4gZXJyb3JfZXhwX2RpZ2l0IHBvcyBlbHNlXG4gIGxldCByZWMgbG9vcCBrIGFjYyBwb3cgPVxuICAgIGlmIGsgPiBtYXggdGhlbiBlcnJvcl9wb3MgbWF4IGBFb2kgZWxzZVxuICAgIGlmIG5vdCAoaXNfZGlnaXQgcy5ba10pIHRoZW4gKFNvbWUgYWNjKSwgayBlbHNlXG4gICAgbGV0IGNvdW50ID0gayAtIHBvcyArIDEgaW5cbiAgICBpZiBjb3VudCA+IDEyIHRoZW4gKCogdHJ1bmNhdGUgKikgbG9vcCAoayArIDEpIGFjYyBwb3cgZWxzZVxuICAgIGxldCBwb3cgPSBJbnQ2NC5kaXYgcG93IDEwTCBpblxuICAgIGxldCBhY2MgPSBJbnQ2NC4oYWRkIGFjYyAobXVsIChvZl9pbnQgKENoYXIuY29kZSBzLltrXSAtIDB4MzApKSBwb3cpKSBpblxuICAgIGxvb3AgKGsgKyAxKSBhY2MgcG93XG4gIGluXG4gIGxvb3AgcG9zIDBMIHBzX2NvdW50X2luX3NcblxubGV0IHBhcnNlX3R6X3MgfnN0cmljdCBwb3MgbWF4IHMgPVxuICBsZXQgcGFyc2VfdHpfbWFnIHNpZ24gcG9zID1cbiAgICBsZXQgaGhfcG9zID0gcG9zIGluXG4gICAgbGV0IGhoID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGhoX3BvcyBtYXggcyBpblxuICAgIGxldCBtbSwgbW1fcG9zID0gbWF0Y2ggc3RyaWN0IHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgICAgbGV0IG1tX3BvcyA9IGhoX3BvcyArIDMgaW5cbiAgICAgICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgICAgICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzLCBtbV9wb3NcbiAgICB8IGZhbHNlIC0+XG4gICAgICAgIGxldCBuZXh0ID0gaGhfcG9zICsgMiBpblxuICAgICAgICBpZiBuZXh0ID4gbWF4IHx8IG5vdCAocy5bbmV4dF0gPSAnOicgfHwgaXNfZGlnaXQgcy5bbmV4dF0pXG4gICAgICAgIHRoZW4gKDAsIGhoX3BvcyAoKiBlbmQgcG9zIG9mIHBhcnNlIC0gMSwgb25lIGlzIGFkZGVkIGF0IHRoZSBlbmQgKikpXG4gICAgICAgIGVsc2VcbiAgICAgICAgbGV0IG1tX3BvcyA9IGlmIHMuW25leHRdID0gJzonIHRoZW4gaGhfcG9zICsgMyBlbHNlIGhoX3BvcyArIDIgaW5cbiAgICAgICAgcGFyc2VfZGlnaXRzIH5jb3VudDoyIG1tX3BvcyBtYXggcywgbW1fcG9zXG4gICAgaW5cbiAgICBpZiBoaCA+IDIzIHRoZW4gZXJyb3IgKGhoX3BvcywgaGhfcG9zICsgMSkgYEludmFsaWRfc3RhbXAgZWxzZVxuICAgIGlmIG1tID4gNTkgdGhlbiBlcnJvciAobW1fcG9zLCBtbV9wb3MgKyAxKSBgSW52YWxpZF9zdGFtcCBlbHNlXG4gICAgbGV0IHNlY3MgPSBoaCAqIDM2MDAgKyBtbSAqIDYwIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCBzZWNzID0gMCAmJiBzaWduID0gLTEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lICgqIC0wMDowMCBjb252ZW50aW9uICopXG4gICAgfCBmYWxzZSAtPiBTb21lIChzaWduICogc2VjcylcbiAgICBpblxuICAgIHR6X3MsIG1tX3BvcyArIDFcbiAgaW5cbiAgaWYgcG9zID4gbWF4IHRoZW4gZXJyb3JfcG9zIG1heCBgRW9pIGVsc2VcbiAgbWF0Y2ggcy5bcG9zXSB3aXRoXG4gIHwgJ1onIC0+IFNvbWUgMCwgcG9zXG4gIHwgJ3onIHdoZW4gbm90IHN0cmljdCAtPiBTb21lIDAsIHBvc1xuICB8ICcrJyAtPiBwYXJzZV90el9tYWcgKCAxKSAocG9zICsgMSlcbiAgfCAnLScgLT4gcGFyc2VfdHpfbWFnICgtMSkgKHBvcyArIDEpXG4gIHwgYyAtPlxuICAgICAgbGV0IGNoYXJzID0gWycrJzsgJy0nOyAnWiddIEAgaWYgc3RyaWN0IHRoZW4gW10gZWxzZSBbJ3onXSBpblxuICAgICAgZXJyb3JfcG9zIHBvcyAoYEV4cF9jaGFycyBjaGFycylcblxubGV0IG9mX3JmYzMzMzkgPyhzdHJpY3QgPSBmYWxzZSkgPyhzdWIgPSBmYWxzZSkgPyhzdGFydCA9IDApIHMgPVxuICB0cnlcbiAgICBsZXQgc19sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbWF4ID0gc19sZW4gLSAxIGluXG4gICAgaWYgc19sZW4gPSAwIHx8IHN0YXJ0IDwgMCB8fCBzdGFydCA+IG1heCB0aGVuIGVycm9yX3BvcyBzdGFydCBgRW9pIGVsc2VcbiAgICBsZXQgeV9wb3MgPSBzdGFydCBpblxuICAgIGxldCBtX3BvcyA9IHlfcG9zICsgNSBpblxuICAgIGxldCBkX3BvcyA9IG1fcG9zICsgMyBpblxuICAgIGxldCBoaF9wb3MgPSBkX3BvcyArIDMgaW5cbiAgICBsZXQgbW1fcG9zID0gaGhfcG9zICsgMyBpblxuICAgIGxldCBzc19wb3MgPSBtbV9wb3MgKyAzIGluXG4gICAgbGV0IGRlY2lkZV9wb3MgPSBzc19wb3MgKyAyIGluXG4gICAgbGV0IHkgPSBwYXJzZV9kaWdpdHMgfmNvdW50OjQgeV9wb3MgbWF4IHMgaW5cbiAgICBwYXJzZV9jaGFyICctJyAobV9wb3MgLSAxKSBtYXggcztcbiAgICBsZXQgbSA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBtX3BvcyBtYXggcyBpblxuICAgIHBhcnNlX2NoYXIgJy0nIChkX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBkID0gcGFyc2VfZGlnaXRzIH5jb3VudDoyIGRfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfZHRfc2VwIH5zdHJpY3QgKGhoX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBoaCA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgaGhfcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKG1tX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBtbSA9ICBwYXJzZV9kaWdpdHMgfmNvdW50OjIgbW1fcG9zIG1heCBzIGluXG4gICAgcGFyc2VfY2hhciAnOicgKHNzX3BvcyAtIDEpIG1heCBzO1xuICAgIGxldCBzcyA9IHBhcnNlX2RpZ2l0cyB+Y291bnQ6MiBzc19wb3MgbWF4IHMgaW5cbiAgICBsZXQgZnJhYywgdHpfcG9zID0gbWF0Y2ggZGVjaWRlX2ZyYWNfb3JfdHogfnN0cmljdCBkZWNpZGVfcG9zIG1heCBzIHdpdGhcbiAgICB8IGBGcmFjIC0+IHBhcnNlX2ZyYWNfcHMgKGRlY2lkZV9wb3MgKyAxKSBtYXggc1xuICAgIHwgYFR6IC0+IE5vbmUsIGRlY2lkZV9wb3NcbiAgICBpblxuICAgIGxldCB0el9zX29wdCwgbGFzdF9wb3MgPSBwYXJzZV90el9zIH5zdHJpY3QgdHpfcG9zIG1heCBzIGluXG4gICAgbGV0IHR6X3MgPSBtYXRjaCB0el9zX29wdCB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcyAtPiBzIGluXG4gICAgbWF0Y2ggb2ZfZGF0ZV90aW1lICgoeSwgbSwgZCksICgoaGgsIG1tLCBzcyksIHR6X3MpKSB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yIChzdGFydCwgbGFzdF9wb3MpIGBJbnZhbGlkX3N0YW1wXG4gICAgfCBTb21lIHQgLT5cbiAgICAgICAgbGV0IHQsIHR6X3MgPSBtYXRjaCBmcmFjIHdpdGhcbiAgICAgICAgfCBOb25lIHwgU29tZSAwTCAtPiB0LCB0el9zXG4gICAgICAgIHwgU29tZSBmcmFjIC0+XG4gICAgICAgICAgICBtYXRjaCBhZGRfc3BhbiB0ICgwLCBmcmFjKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IgKHN0YXJ0LCBsYXN0X3BvcykgYEludmFsaWRfc3RhbXBcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IHQsIHR6X3NcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IHN1YiAmJiBsYXN0X3BvcyA8PiBtYXhcbiAgICAgICAgdGhlbiBlcnJvcl9wb3MgKGxhc3RfcG9zICsgMSkgYFRyYWlsaW5nX2lucHV0XG4gICAgICAgIGVsc2UgT2sgKHQsIHR6X3Nfb3B0LCBsYXN0X3BvcyAtIHN0YXJ0ICsgMSlcbiAgd2l0aCBSRkMzMzM5IChyLCBlKSAtPiBFcnJvciAoYFJGQzMzMzkgKHIsIGUpKVxuXG4oKiBSRkMgMzMzOSB0aW1lc3RhbXAgZm9ybWF0dGVyICopXG5cbmxldCByZmMzMzM5X2FkanVzdF90el9vZmZzZXQgdHpfb2Zmc2V0X3MgPVxuICAoKiBUaGUgUkZDIDMzMzkgdGltZSB6b25lIG9mZnNldCBmaWVsZCBpcyBsaW1pdGVkIGluIGV4cHJlc3Npb24gdG9cbiAgICAgdGhlIGJvdW5kcyBiZWxvdyB3aXRoIG1pbnV0ZSBwcmVjaXNpb24uIElmIHRoZSByZXF1ZXN0ZWQgdGltZVxuICAgICB6b25lIG9mZnNldCBleGNlZWRzIHRoZXNlIGJvdW5kcyBvciBpcyBub3QgYW4gKmludGVncmFsKiBudW1iZXJcbiAgICAgb2YgbWludXRlcyB3ZSBzaW1wbHkgdXNlIFVUQy4gQW4gYWx0ZXJuYXRpdmUgd291bGQgYmUgdG9cbiAgICAgY29tcGVuc2F0ZSB0aGUgb2Zmc2V0ICphbmQqIHRoZSB0aW1lc3RhbXAgYnV0IGl0J3MgbW9yZVxuICAgICBjb21wbGljYXRlZCB0byBleHBsYWluIGFuZCBtYXliZSBtb3JlIHN1cnByaXNpbmcgdG8gdGhlIHVzZXIuICopXG4gIGxldCBtaW4gPSAtODYzNDAgKCogLTIzaDU5IGluIHNlY3MgKikgaW5cbiAgbGV0IG1heCA9ICs4NjM0MCAoKiArMjNoNTkgaW4gc2VjcyAqKSBpblxuICBpZiBtaW4gPD0gdHpfb2Zmc2V0X3MgJiYgdHpfb2Zmc2V0X3MgPD0gbWF4ICYmIHR6X29mZnNldF9zIG1vZCA2MCA9IDBcbiAgdGhlbiB0el9vZmZzZXRfcywgZmFsc2VcbiAgZWxzZSAwICgqIFVUQyAqKSwgdHJ1ZVxuXG5sZXQgc19mcmFjX29mX3BzIGZyYWMgcHMgPVxuICBJbnQ2NC4oZGl2IChyZW0gcHMgcHNfY291bnRfaW5fcykgU3Bhbi5mcmFjX2Rpdi4oZnJhYykpXG5cbmxldCB0b19yZmMzMzM5ID8oc3BhY2UgPSBmYWxzZSkgP2ZyYWNfczooZnJhYyA9IDApID90el9vZmZzZXRfcyAoXywgcHMgYXMgdCkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTUgaW5cbiAgbGV0IHR6X29mZnNldF9zLCB0el91bmtub3duID0gbWF0Y2ggdHpfb2Zmc2V0X3Mgd2l0aFxuICB8IFNvbWUgdHogLT4gcmZjMzMzOV9hZGp1c3RfdHpfb2Zmc2V0IHR6XG4gIHwgTm9uZSAtPiAwLCB0cnVlXG4gIGluXG4gIGxldCAoeSwgbSwgZCksICgoaGgsIHNzLCBtbSksIHR6X29mZnNldF9zKSA9IHRvX2RhdGVfdGltZSB+dHpfb2Zmc2V0X3MgdCBpblxuICBsZXQgZHRfc2VwID0gaWYgc3BhY2UgdGhlbiAnICcgZWxzZSAnVCcgaW5cbiAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkXCIgeSBtIGQgZHRfc2VwIGhoIHNzIG1tO1xuICBsZXQgZnJhYyA9IGlmIGZyYWMgPCAwIHRoZW4gMCBlbHNlIChpZiBmcmFjID4gMTIgdGhlbiAxMiBlbHNlIGZyYWMpIGluXG4gIGlmIGZyYWMgPD4gMCB0aGVuIFByaW50Zi5icHJpbnRmIGJ1ZiBcIi4lMCpMZFwiIGZyYWMgKHNfZnJhY19vZl9wcyBmcmFjIHBzKTtcbiAgaWYgdHpfb2Zmc2V0X3MgPSAwICYmIG5vdCB0el91bmtub3duIHRoZW4gUHJpbnRmLmJwcmludGYgYnVmIFwiWlwiIGVsc2VcbiAgYmVnaW5cbiAgICBsZXQgdHpfc2lnbiA9IGlmIHR6X29mZnNldF9zIDwgMCB8fCB0el91bmtub3duIHRoZW4gJy0nIGVsc2UgJysnIGluXG4gICAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgICBsZXQgdHpfaGggPSB0el9taW4gLyA2MCBpblxuICAgIGxldCB0el9tbSA9IHR6X21pbiBtb2QgNjAgaW5cbiAgICBQcmludGYuYnByaW50ZiBidWYgXCIlYyUwMmQ6JTAyZFwiIHR6X3NpZ24gdHpfaGggdHpfbW07XG4gIGVuZDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcHBfcmZjMzMzOSA/c3BhY2UgP2ZyYWNfcyA/dHpfb2Zmc2V0X3MgKCkgcHBmIHQgPVxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlc1wiICh0b19yZmMzMzM5ID9zcGFjZSA/ZnJhY19zID90el9vZmZzZXRfcyB0KVxuXG4oKiBQcmV0dHkgcHJpbnRpbmcgKilcblxubGV0IHBwX2h1bWFuID9mcmFjX3M6KGZyYWMgPSAwKSA/dHpfb2Zmc2V0X3MgKCkgcHBmIChfLCBwcyBhcyB0KSA9XG4gIGxldCB0el9vZmZzZXRfcywgdHpfdW5rbm93biA9IG1hdGNoIHR6X29mZnNldF9zIHdpdGhcbiAgfCBTb21lIHR6IC0+IHJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCB0elxuICB8IE5vbmUgLT4gMCwgdHJ1ZVxuICBpblxuICBsZXQgKHksIG0sIGQpLCAoKGhoLCBzcywgbW0pLCB0el9vZmZzZXRfcykgPSB0b19kYXRlX3RpbWUgfnR6X29mZnNldF9zIHQgaW5cbiAgRm9ybWF0LmZwcmludGYgcHBmIFwiJTA0ZC0lMDJkLSUwMmQgJTAyZDolMDJkOiUwMmRcIiB5IG0gZCBoaCBzcyBtbTtcbiAgbGV0IGZyYWMgPSBpZiBmcmFjIDwgMCB0aGVuIDAgZWxzZSAoaWYgZnJhYyA+IDEyIHRoZW4gMTIgZWxzZSBmcmFjKSBpblxuICBpZiBmcmFjIDw+IDAgdGhlbiBGb3JtYXQuZnByaW50ZiBwcGYgXCIuJTAqTGRcIiBmcmFjIChzX2ZyYWNfb2ZfcHMgZnJhYyBwcyk7XG4gIGxldCB0el9zaWduID0gaWYgdHpfb2Zmc2V0X3MgPCAwIHx8IHR6X3Vua25vd24gdGhlbiAnLScgZWxzZSAnKycgaW5cbiAgbGV0IHR6X21pbiA9IGFicyAodHpfb2Zmc2V0X3MgLyA2MCkgaW5cbiAgbGV0IHR6X2hoID0gdHpfbWluIC8gNjAgaW5cbiAgbGV0IHR6X21tID0gdHpfbWluIG1vZCA2MCBpblxuICBGb3JtYXQuZnByaW50ZiBwcGYgXCIgJWMlMDJkOiUwMmRcIiB0el9zaWduIHR6X2hoIHR6X21tO1xuICAoKVxuXG5sZXQgcHAgPSBwcF9odW1hbiB+dHpfb2Zmc2V0X3M6MCAoKVxubGV0IGR1bXAgPSBTcGFuLmR1bXBcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfaW50NjRfbW9kIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludF9jb21wYXJlIiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX29ial9kdXAiLCJjYW1sX3N0cmluZ19nZXQiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiY2FtbF9jYWxsNyIsImE2IiwiZ2xvYmFsX2RhdGEiLCJhY2MiLCJwc19jb3VudF9pbl9wcyIsInBzX2NvdW50X2luX25zIiwicHNfY291bnRfaW5fMTAwbnMiLCJwc19jb3VudF9pbl91cyIsInBzX2NvdW50X2luXzEwMHVzIiwicHNfY291bnRfaW5fbXMiLCJwc19jb3VudF9pbl8xMDBtcyIsInBzX2NvdW50X2luX3MiLCJwc19jb3VudF9pbl9taW4iLCJwc19jb3VudF9pbl9ob3VyIiwicHNfY291bnRfaW5fZGF5IiwicHNfZGF5X21heCIsImVwb2NoIiwiemVybyIsIlN0ZGxpYl9Gb3JtYXQiLCJTdGRsaWIiLCJTdGRsaWJfQnVmZmVyIiwiU3RkbGliX1ByaW50ZiIsIlN0ZGxpYl9JbnQ2NCIsIm1pbiIsInN0ZGxpYl9hYnMiLCJuZWciLCJwYXJhbSIsImQiLCJwcyIsImFkZCIsInBzMSIsImQxIiwicHMwIiwiZDAiLCJwc19jbGFtcCIsInN1YiIsInMwIiwiczEiLCJhYnMiLCJzIiwidiIsIm9mX2RfcHMiLCJ1bnNhZmVfb2ZfZF9wcyIsInVuc2FmZV9vZl9kX3BzX29wdGlvbiIsInRvX2RfcHMiLCJvZl9pbnRfcyIsInNlY3MiLCJkYXlfaW50X21pbiIsImRheV9pbnRfbWF4IiwidG9faW50X3MiLCJkYXlzX3MiLCJkYXlfcyIsIm1pbl9pbnRfZmxvYXQiLCJtYXhfaW50X2Zsb2F0Iiwib2ZfZmxvYXRfcyIsImRheXMiLCJyZW1fcyIsIm1hdGNoIiwiZnJhY19zIiwicmVtX3BzIiwiZnJhY19wcyIsInRvX2Zsb2F0X3MiLCJkYXlfcmVtX3BzIiwiZXF1YWwiLCJjb21wYXJlIiwiYyIsInJvdW5kX2RpdiIsImEiLCJiIiwiZnJhY19kaXYiLCJyb3VuZCIsImZyYWMiLCJ0Iiwic2lnbiIsInJwcyIsInRydW5jYXRlIiwidHBzIiwidHJ1bmNhdGVfZG93biIsImNzdF8xIiwiZHVtcCIsInBwZiIsImRpdmlkZV9wcyIsImNhcnJ5IiwiaGkiLCJsbyIsImhpX2QiLCJsb19kIiwiY3N0X2RfcyIsInBwX3VuaXQiLCJoaWdoZXJfc3RyIiwiaGlfc3RyIiwiZnJhY19saW1pdCIsInBwX3VuaXRfaW50ZWdyYWwiLCJoIiwibXMiLCJsIiwiY3N0X2RkIiwiY3N0X2RoIiwiY3N0X2RtaW4iLCJjc3RfZHMiLCJjc3RfZHkiLCJjc3RfbWluIiwicHAiLCJtIiwiY3N0X21zIiwiY3N0X3VzIiwibWF4X2QiLCJyZW1fZCIsInkiLCJvZl9zcGFuIiwic3BhbiIsInRvX3NwYW4iLCJpc19lYXJsaWVyIiwidGhhbiIsImlzX2xhdGVyIiwiYWRkX3NwYW4iLCJzdWJfc3BhbiIsImRpZmYiLCJ0MSIsInQwIiwibWxlbiIsIm9mX2RhdGVfdGltZSIsInR6X29mZnNldF9zIiwic3MiLCJtbSIsImhoIiwiZGF0ZSIsImRheSIsIm1vbnRoIiwieWVhciIsImhoX3BzIiwibW1fcHMiLCJzc19wcyIsInRvX2RhdGVfdGltZSIsIm9wdCIsImxvY2FsIiwiamQiLCJlIiwiaGhfcmVtIiwibW1fcmVtIiwib2ZfZGF0ZSIsInR6IiwidG9fZGF0ZSIsIm9mX3llYXIiLCJ0b195ZWFyIiwibG9jYWxfZCIsIndlZWtkYXlfbnVtIiwiaSIsIndkYXkiLCJ3ZWVrZGF5IiwiY3N0IiwiY3N0X2lucHV0IiwicHBfcmZjMzMzOV9lcnJvciIsImNzIiwicHBfY2hhcnMiLCJwcF9yYW5nZSIsImNzdF9oIiwicmZjMzMzOV9lcnJvcl90b19zdHJpbmciLCJlcnIiLCJyIiwicmZjMzMzOV9zdHJpbmdfZXJyb3IiLCJyZmMzMzM5X2Vycm9yX3RvX21zZyIsIlJGQzMzMzkiLCJkdW1teSIsImVycm9yIiwiZXJyb3JfcG9zIiwicCIsImlzX2RpZ2l0IiwicGFyc2VfZGlnaXRzIiwiY291bnQiLCJwb3MiLCJtYXgiLCJzdG9wIiwiayIsInBhcnNlX2NoYXIiLCJvZl9yZmMzMzM5Iiwic3RyaWN0Iiwic3RhcnQiLCJzX2xlbiIsIm1fcG9zIiwiZF9wb3MiLCJoaF9wb3MiLCJtbV9wb3MiLCJzc19wb3MiLCJkZWNpZGVfcG9zIiwic3dpdGNoZXIiLCJjaGFycyIsInBvdyIsInR6X3BvcyIsInBhcnNlX3R6X21hZyIsIm5leHQiLCJ0el9zIiwibGFzdF9wb3MiLCJ0el9zX29wdCIsImV4biIsInJmYzMzMzlfYWRqdXN0X3R6X29mZnNldCIsInNfZnJhY19vZl9wcyIsImNzdF8wX0xkIiwidG9fcmZjMzMzOSIsInNwYWNlIiwiYnVmIiwidHpfdW5rbm93biIsImR0X3NlcCIsInR6X3NpZ24iLCJ0el9taW4iLCJ0el9oaCIsInR6X21tIiwicHBfcmZjMzMzOSIsInBwX2h1bWFuIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsNkJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxzQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWCxHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxJQUFBQztBQUFBQSxRQUFBQyxJQ3lHWTtBQUFBLHFDQUNJO0FBQUEsUUFBQUMsS0FESjtBQUFBLElBRWMsa0VBQTRCO0FBQUEsR0FBQztBQUFBLFlBQUFDLElBQUEsR0FBQUg7QUFBQUE7QUFBQUEsS0FBQUksTUFFN0M7QUFBQSxLQUFBQyxLQUFBO0FBQUEsS0FBQUMsTUFBQTtBQUFBLEtBQUFDLEtBQUE7QUFBQSxLQUFBTixJQUNOO0FBQUEsS0FBQUMsS0FDUztBQUFBLEtBQUFNLFdBQ007QUFBQSxLQUFBUCxNQUNIO0FBQUEsSUFDWjtBQUFBLEdBQVc7QUFBQSxZQUFBUSxJQUFBQyxJQUFBQyxJQUVVLE9BQVEsUUFBUixRQUFRO0FBQUEsWUFBQUMsSUFBQUMsT0FBQVosSUFDdkIsTUFBYyxvQkFBYyxNQUFZO0FBQUE7QUFBQTtBQUFBLE1EckhsRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQWEsRUFBQUQ7QUFBQUEsUUFBQVgsS0M0SFEsTUFBQUQsTUFBQTtBQUFBLElBQ0QsK0JBQVcsa0NBRVQ7QUFBQSxZQURZO0FBQUEsSUFBeUQsOEJBQ3BFO0FBQUE7QUFBQSxZQUFBYyxRQUFBRjtBQUFBQSxRQUFBWCxLQUVJO0FBQUEsSUFBa0IsK0JBQVc7QUFBQSxLQUErQjtBQUFBLElBQVY7QUFBQSxHQUFnQjtBQUFBLFlBQUFjLGVBQUFILEdBQ3ZELFNBQUM7QUFBQSxZQUFBSSxzQkFBQUosR0FDTSxTQUFDO0FBQUEsWUFBQUssUUFBQUwsR0FDZixTQUFDO0FBQUEsWUFBQU0sU0FBQUM7QUFBQUE7QUFBQUEsS0FBQW5CLElBR1A7QUFBQSxLQUFBWTtBQUFBQSxPQUN3QjtBQUFBO0FBQUEsUUFBSixlQUFJO0FBQUEsSUFDaEMsdUJBQWlCLE1BQVk7QUFBQTtBQUFBO0FBQUEsSUFBQVEsY0R6SWpDO0FBQUEsSUFBQUMsY0FBQTtBQUFBLFlBQUFDLFNBQUF2QjtBQUFBQSxRQUFBRSxLQzZJZSxVQUFBRCxJQUFBO0FBQUEsSUFDWDtBQUFBO0FBQUEsTUFBQXVCLFNBQ0E7QUFBQSxNQUFBQyxRQUNnRCxvQkFBdEI7QUFBQSxNQUFBTCxPQUMxQjtBQUFBLEtBQ0Esb0NBQWlFO0FBQUE7QUFBQSxJQUp0QjtBQUFBLEdBSXNCO0FBQUE7QUFBQSxJQUFBTSxnQkFFL0M7QUFBQSxJQUFBQyxnQkFDQTtBQUFBLFFBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUjtBQUFBQSxJQUUvQixrQkFBK0I7QUFBQSxRQUFBUyxPQUNwQjtBQUFBLElBQ1g7QUFBQSxTQUFBQyxRQUNZLGVBQUFBLFVBQ1o7QUFBQSxLQUNBO0FBQUEsVUFBQUQsU0FFYTtBQUFBLE1BQ1gsMkRBTWtEO0FBQUE7QUFBQTtBQUFBLE1BQUFFLFFBSGhDO0FBQUEsTUFBQUQsVUFBVTtBQUFBLE1BQUFFLFNBQUE7QUFBQSxNQUFBQyxTQUNWLGVBQUk7QUFBQSxNQUFBQyxVQUNIO0FBQUEsS0FDSSwwREFBMEI7QUFBQTtBQUFBLElBWkU7QUFBQSxHQVlEO0FBQUEsWUFBQUMsV0FBQW5DO0FBQUFBO0FBQUFBLEtBQUFFLEtBRXZDO0FBQUEsS0FBQUQsSUFBQTtBQUFBLEtBQUF1QixTQUNBO0FBQUEsS0FBQUMsUUFDTSxvQkFBUztBQUFBLEtBQUFXLGFBQ0osb0JBQVM7QUFBQSxJQUNPO0FBQUE7QUFBQSxZQUFBQyxNQUFBLEdBQUFyQztBQUFBQTtBQUFBQSxLQUFBSSxNQUloQztBQUFBLEtBQUFDLEtBQUE7QUFBQSxLQUFBQyxNQUFBO0FBQUEsS0FBQUMsS0FBQTtBQUFBLFNBQ1I7QUFBQSxtQkFDQTtBQUFBLElBREE7QUFBQSxHQUN5QjtBQUFBLFlBQUErQixRQUFBLEdBQUF0QztBQUFBQTtBQUFBQSxLQUFBSSxNQUVmO0FBQUEsS0FBQUMsS0FBQTtBQUFBLEtBQUFDLE1BQUE7QUFBQSxLQUFBQyxLQUFBO0FBQUEsS0FBQWdDLElBQ1Y7QUFBQSxJQUNBLGlCQUFzQix3Q0FBeUM7QUFBQTtBQUFBLFlBQUFDLFVBQUFDLEdBQUFDO0FBQUFBLElBSzVEO0FBQUE7QUFBQSxjQUNJLGVBQUksa0JBQU8seUJBQWM7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUF0Q0Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUF5SmtDO0FBQUE7QUFBQSxZQUFBQyxNQUFBQyxNQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxPQW5HekQ7QUFBQSxLQUFBRixTQUNSO0FBQUEsS0FBQWQsUUFDQSxnQkFBK0I7QUFBQSxLQUFBN0IsS0FBL0I7QUFBQSxLQUFBRCxJQUFBO0FBQUEsU0FDbUQ7QUFBQSxLQUFBK0MsTUFBekMsZUFBVTtBQUFBLEtBQUFGLE1BQ1Q7QUFBQSxJQUNYLHlCQUFpQixRQUFZO0FBQUE7QUFBQSxZQUFBRyxTQUFBSixNQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxPQUVsQjtBQUFBLEtBQUFGLFNBQ1g7QUFBQSxLQUFBZCxRQUNBLGdCQUErQjtBQUFBLEtBQUE3QixLQUEvQjtBQUFBLEtBQUFELElBQUE7QUFBQSxLQUFBaUQ7QUFBQUEsT0FDaUI7QUFBQTtBQUFBLFNBQU8sbUJBQVE7QUFBQSxJQUNoQyxpQ0FBaUIsZ0JBQTBCO0FBQUE7QUFBQSxZQUFBQyxjQUFBTixNQUFBN0M7QUFBQUEsUUFBQUUsS0FFM0IsVUFBQUQsSUFBQTtBQUFBLElBQ1U7QUFBQTtBQUFBLFlBQWY7QUFBQTtBQUFBLGNBQU8sbUJBQVEsNkNBQWlCO0FBQUEsR0FBRTtBQUFBO0FBQUEsSUFBQW1ELFFEek5qRDtBQUFBO0FBQUEsTUM4U3FFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxLQUFBQyxLQUFBdEQ7QUFBQUEsUUFBQUUsS0FqRjFELFVBQUFELElBQUE7QUFBQSxJQUFjLCtEQUEyQztBQUFBO0FBQUEsWUFBQXNELFVBQUFDLE9BQUF0RCxJQUFBdUQsSUFBQUM7QUFBQUE7QUFBQUEsS0FBQUMsT0FLNUIsb0JBQVg7QUFBQSxLQUFBMUIsU0FDWjtBQUFBLEtBQUEyQixPQUNnQyxvQkFBckI7QUFBQSxJQUN4Qiw4REFBZ0Q7QUFBQTtBQUFBO0FBQUEsSUFBQUMsVURyT3BEO0FBQUEsUUM4U3FFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFFBQUFDLFlBQUFOLElBQUFPLFFBQUFDLFlBQUFQLElBQUFKLEtBQUF2RCxLQUFBRztBQUFBQSxhQUFBZ0UsaUJBQUFaLEtBQUF2RCxLQUFBb0U7QUFBQUEsS0FyQi9EO0FBQUEsY0FDSztBQUFBLDZFQUN3RDtBQUFBO0FBQUEsYUFBeEQ7QUFBQSx3RUFBd0Q7QUFBQTtBQUFBLElBRTVEO0FBQUEsU0FBQUMsS0FNVztBQUFBLEtBQ1oscUNBQ0M7QUFBQTtBQUFBLFFBQUFyQyxRQVBVLDZCQUFBc0MsSUFBOEIsVUFBQUYsSUFBQTtBQUFBLElBQ3pDO0FBQUEsU0FBQUEsTUFDQTtBQUFBLEtBQ0Esd0VBSUM7QUFBQTtBQUFBLElBTnlCLG9DQU16QjtBQUFBO0FBQUE7QUFBQSxJQUFBRyxTRHJTUDtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsUUM4U3FFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsR0FBQXRCLEtBQUF6QztBQUFBQTtBQUFBQSxLQUFBa0MsT0FNNUQ7QUFBQSxLQUFBaEQsTUFDTDtBQUFBLEtBQUFnQyxVQUNNO0FBQUEsS0FBQTlCLE1BQU87QUFBQTtBQUFBLFNBQUFDLE9BQUE7QUFBQSxLQUVOO0FBQUE7QUFBQSxPQUFBNkIsUUF2REk7QUFBQSxPQUFBOEMsTUFBdUQ7QUFBQSxPQUFBVixNQUFBO0FBQUEsTUFDbEU7QUFBQSxlQUFlO0FBQUEsa0VBK0RTO0FBQUE7QUFBQSxVQUFBQSxNQTlEeEI7QUFBQSxNQUNBO0FBQUEsTUFBMEIsY0FDWDtBQUFBLE1BQ2Y7QUFBQTtBQUFBLEtBbURPO0FBQUE7QUFBQSxPQUFBcEMsVUFoREk7QUFBQSxPQUFBbEIsTUFBb0Q7QUFBQSxPQUFBZ0UsTUFBQTtBQUFBLE1BQy9EO0FBQUEsZUFBZTtBQUFBLGtFQXVEUztBQUFBO0FBQUEsVUFBQUEsTUF0RHhCO0FBQUEsTUFDQTtBQUFBLE1BQTRCLGNBQ2I7QUFBQSxNQUNmO0FBQUE7QUFBQSxLQTRDTztBQUFBLFVBQUFDLFNEMVRYO0FBQUEsTUMyVFc7QUFBQSxPQW5CUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEscUJBeUJ3QjtBQUFBLFVBQUFDLFNEalU1QjtBQUFBLE1DNFRXO0FBQUEsT0FqQlA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQXNCd0I7QUFBQSxNQUpqQjtBQUFBLE9BZlA7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQW1Cd0I7QUFBQSxVQUFBN0UsS0FoQnhCLCtCQUNBO0FBQUEsaUVBZXdCO0FBQUE7QUFBQTtBQUFBLE1BQUE2QixVQWhEWjtBQUFBLE1BQUFxQyxLQUFxRDtBQUFBLE1BQUF2RCxNQUFBO0FBQUEsS0FDakU7QUFBQSxjQUFlO0FBQUEsaUVBK0NTO0FBQUE7QUFBQSxTQUFBQSxNQTlDeEI7QUFBQSxLQUNBO0FBQUEsZUFDQTtBQUFBLGVBRGdCLDBEQTZDUTtBQUFBO0FBQUEsUUFBQVgsT0FYWDtBQUFBLElBVVQ7QUFBQSxTQUFBOEUsUUF4Rko7QUFBQSxLQUVFO0FBQUEsVUFBQUMsUUFBd0MsZUFBQUMsTUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQSxNQUN4QztBQUFBLE9BQUFELFVBQ0E7QUFBQSxPQUFBQSxRQUVGO0FBQUEsT0FBQUMsTUFBQTtBQUFBO0FBQUEsTUFBQXJELE9BQWdDLFFBQThCLG9CQUE5QjtBQUFBLEtBQ2hDO0FBQUEsVUFBQUEsU0FBaUMsR0FBQXFELE1BQUE7QUFBQTtBQUFBLFVBQUFyRCxTQUFqQyxNQUFBcUQsTUFBQTtBQUFBLFNBQUFBLE1BQ0E7QUFBQSxLQUNBO0FBQUEsS0FBMEI7QUFBQSxNQUNSO0FBQUEsS0FDbEI7QUFBQTtBQUFBLFFBQUFmLElBR1c7QUFBQSxJQUNYLGlCQUFBQSxNQUEwQixHQUFBbEUsSUFBQSxzQkFBQWtFLE1BQTFCLEdBQUFsRSxJQUFBO0FBQUEsSUFDQTtBQUFBLGFBQWdCO0FBQUEsZ0VBeUVRO0FBQUE7QUFBQSxJQXhFeEI7QUFBQSxhQUNLO0FBQUEsZ0VBdUVtQjtBQUFBO0FBQUEsUUFBQUEsTUF0RXhCO0FBQUEsSUFDQTtBQUFBLElBQTBCLGNBQ1g7QUFBQSxJQUNmO0FBQUEsR0FtRXdCO0FBQUE7QUFBQTtBQUFBLE1BbkJ5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQWEsSUFBQUQ7QUFBQUEsUUFBQVgsS0F3Qi9ELE1BQUFELElBQUE7QUFBQSxJQUNBO0FBQUE7QUFBQTtBQUFBLFdBQVc7QUFBQSxLQUVWO0FBQUEsWUFEWTtBQUFBLElBQXlELDhCQUNwRTtBQUFBO0FBQUEsWUFBQWUsaUJBQUFILEdBRWUsU0FBQztBQUFBLFlBQUFzRSxRQUFBQztBQUFBQSxRQUFBbkYsSUFFWjtBQUFBLElBQ1YsaUNBQTZDO0FBQUEsSUFBVjtBQUFBLEdBQW1CO0FBQUEsWUFBQW9GLFFBQUF2QyxHQUV4QyxTQUFDO0FBQUEsWUFBQWxCLGFBQUFSO0FBQUFBLFFBQUFXLFFBRVc7QUFBQSxJQUFvQixZQUN0QztBQUFBLFFBQUE5QixJQURzQztBQUFBLElBRXBDLGlCQUFTO0FBQUE7QUFBQSxZQUFBK0IsT0FBQWhDO0FBQUFBLFFBQUFFLEtBTVY7QUFBQSxJQUFxQixnREFBb0I7QUFBQSxHQUFFO0FBQUEsWUFBQW9GLFdBQUF4QyxHQUFBeUMsTUFNN0Isc0NBQWMsQ0FBSztBQUFBLFlBQUFDLFNBQUExQyxHQUFBeUMsTUFDckIscUNBQWMsQ0FBSTtBQUFBLFlBQUFFLFNBQUEzQyxHQUFBN0MsR0FJZCxPQUFjLFFBQWQsVUFBYztBQUFBLFlBQUF5RixTQUFBNUMsR0FBQTdDLEdBQ2QsT0FBYyxRQUFkLFVBQWM7QUFBQSxZQUFBMEYsS0FBQUMsSUFBQUMsSUFDeEIsa0JBQWM7QUFBQTtBQUFBLElBQUFDLE9BbUI3QjtBQUFBLFlBQUFDLGFBQUEvRjtBQUFBQTtBQUFBQSxLQUFBOEMsSUFhZTtBQUFBLEtBQUFrRCxjQUFBO0FBQUEsS0FBQWpFLFVBQUE7QUFBQSxLQUFBa0UsT0FBQTtBQUFBLEtBQUFDLE9BQUE7QUFBQSxLQUFBQyxPQUFBO0FBQUEsS0FBQUMsT0FBQTtBQUFBLEtBQUFuRyxJQVZDO0FBQUEsS0FBQTRFLE1BQUE7QUFBQSxLQUFBSyxNQUFBO0FBQUEsU0FDaEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsVUFIVztBQUFBLG1CQUZVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQUVpQixjQUFPO0FBQUE7QUFBQSxrQkFBUSxpQkFBQTtBQUFBO0FBQUEsaUJBS3JCO0FBQUE7QUFBQTtBQUFBLGlCQUZoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBeUIwQjtBQUFBO0FBQUEsTUFBQW5ELFFBckJWO0FBQUEsTUFBQWtFLEtBQUE7QUFBQSxNQUFBQyxLQUFBO0FBQUEsTUFBQUMsS0FBQTtBQUFBLFVBQ2hCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQW9CNkM7QUFBQTtBQUFBLE9BQUFFLE1BaFhoQztBQUFBLE9BQUFDLFFBQUE7QUFBQSxPQUFBQyxPQUFBO0FBQUEsT0FBQTlELElBQ2I7QUFBQSxPQUFBeUMsSUFDQTtBQUFBLE9BQUFMLElBQ0E7QUFBQSxPQUFBNUU7QUFBQUEsU0E4V3VCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUF1RyxRQUNKLGVBQUk7QUFBQSxPQUFBQyxRQUNKLGVBQUk7QUFBQSxPQUFBQyxRQUNKLGVBQUk7QUFBQSxPQUFBeEcsS0FDUCxzQkFBVTtBQUFBLE1BQ1QsT0FBMkIsdUJBQTNCLHNCQUEyQjtBQUFBO0FBQUE7QUFBQSxJQU5RO0FBQUEsR0FNUjtBQUFBLFlBQUF5RyxhQUFBQyxLQUFBOUQ7QUFBQUE7QUFBQUEsS0FBQWtELGNBRTdCO0FBQUEsS0FBQWpFLFFBd0JrQixZQUFXO0FBQUEsSUFBMkI7QUFBQTtBQUFBLE1BQUE4RSxRQUFBO0FBQUEsTUFBQWIsZ0JBRXZEO0FBQUEsTUFBQTlGLEtBQUE7QUFBQSxNQUFBRCxNQUFBO0FBQUE7QUFBQSxTQUFBQyxPQUROLE1BQUFELE1BQUEsTUFBQStGLGdCQUdWLEdBQUE5RixLQUFBLE1BQUFELE1BQUE7QUFBQTtBQUFBLEtBQUE2RyxLQUFBO0FBQUEsS0FBQXJFLElBeGFBO0FBQUEsS0FBQUMsSUFDQTtBQUFBLEtBQUFILElBQ0E7QUFBQSxLQUFBdEMsSUFDQTtBQUFBLEtBQUE4RyxJQUNBO0FBQUEsS0FBQWxDLElBQ0E7QUFBQSxLQUFBd0IsTUFDQTtBQUFBLEtBQUFDLFFBQ0E7QUFBQSxLQUFBQyxPQUNBO0FBQUEsS0FBQUosS0FrYWdELG9CQUF6QjtBQUFBLEtBQUFhLFNBQ1Y7QUFBQSxLQUFBZCxLQUNzQyxvQkFBNUI7QUFBQSxLQUFBZSxTQUNWO0FBQUEsS0FBQWhCLEtBQ29DLG9CQUExQjtBQUFBLElBQ3ZCO0FBQUEsR0FBaUM7QUFBQSxXQXZFakM7QUFBQSxZQUFBaUIsUUFBQU4sS0FBQVI7QUFBQUEsUUFBQWUsS0F5RVU7QUFBQSxJQUE2QiwwQ0FBdUM7QUFBQTtBQUFBLFlBQUFDLFFBQUFwQixhQUFBbEQsR0FDL0Msc0NBQTZCO0FBQUEsWUFBQXVFLFFBQUFyQixhQUFBZDtBQUFBQSxJQUNqQyx5Q0FBZ0M7QUFBQTtBQUFBLFlBQUFvQyxRQUFBVixLQUFBOUQ7QUFBQUE7QUFBQUEsS0FBQWtELGNBQ2pEO0FBQUEsS0FBQWpFLFFBQ0ksWUFBVztBQUFBLElBQTJCLGNBQUF3RixVQUFBLGFBQUF0SCxNQUNTLGtCQUFBQSxNQUFuRDtBQUFBO0FBQUEsS0FBQTZHLEtBRVY7QUFBQSxLQUFBckUsSUE1YUE7QUFBQSxLQUFBQyxJQUNBO0FBQUEsS0FBQUgsSUFDQTtBQUFBLEtBQUF0QyxJQUNBO0FBQUEsS0FBQThHLElBQ0E7QUFBQSxLQUFBbEMsSUFDQTtBQUFBLElBQ0E7QUFBQSxHQXNhK0I7QUFBQSxZQUFBMkMsWUFBQVosS0FBQTlEO0FBQUFBO0FBQUFBLEtBQUFrRCxjQUtqQjtBQUFBLEtBQUEvRixJQUNELE9BQVc7QUFBQSxLQUFBd0gsSUFJeEI7QUFBQSxJQUNBLDZCQUEwQjtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQTNGMUI7QUFBQTtBQUFBLFlBQUFDLFFBQUEzQixhQUFBbEQ7QUFBQUEsUUFBQSxJQStGNEI7QUFBQSxJQUFOLHVDQUFpQztBQUFBO0FBQUE7QUFBQSxJQUFBOEUsUUQxZHpEO0FBQUEsSUFBQUEsTUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQTtBQUFBLE1DMGRFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsaUJBQUF4RSxLQUFBdEQ7QUFBQUEsSUFVbUI7QUFBQTtBQUFBLGVBRVg7QUFBQTtBQUFBO0FBQUEsaUJBRFU7QUFBQSxpQkFFQyxxQ0FNaUQ7QUFBQSxRQUFBK0gsS0FUakQ7QUFBQSxhQUFBQyxTQUFBMUUsS0FBQXREO0FBQUFBLFNBQUFBLFFBS0E7QUFBQTtBQUFBLGtCQUVUO0FBQUEsVUFBQStILEtBRlMsVUFBQXhGLElBQUE7QUFBQSxNQUNKO0FBQUEsTUFBMkI7QUFBQTtBQUFBLElBQzlCO0FBQUEsSUFFVixzRUFBa0U7QUFBQTtBQUFBLFdBbkJwRTtBQUFBLFlBQUEwRixTQUFBM0UsS0FBQXREO0FBQUFBLFFBQUErRyxJQXFCVyxVQUFBbEcsSUFBQTtBQUFBLElBQ1g7QUFBQSxjQUFlO0FBQUEsY0FBK0IsdURBQThCO0FBQUE7QUFBQTtBQUFBLElBQUFxSCxRRGhmOUU7QUFBQTtBQUFBLE1DMGRFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyx3QkFBQW5JO0FBQUFBLFFBQUFvSSxNQXdCMkIsVUFBQUMsSUFBQTtBQUFBLElBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBK0Q7QUFBQTtBQUFBLFlBQUFDLHFCQUFBeEg7QUFBQUEsSUFFdEMsZUFDWjtBQUFBLFFBQUFpRyxJQURZO0FBQUEsSUFDb0Isc0NBQTRCO0FBQUE7QUFBQSxZQUFBd0IscUJBQUF6SDtBQUFBQSxJQUVoRCxlQUNaO0FBQUEsUUFBQWlHLElBRFk7QUFBQSxJQUVYLG9EQUE0QjtBQUFBLEdBQUM7QUFBQTtBQUFBLElBQUF5QixVQWhDM0M7QUFBQTtBQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLFlBQUFDLE1BQUFMLEdBQUF0QjtBQUFBQSxJQW9DYztBQUFBLEdBQXNCO0FBQUEsWUFBQTRCLFVBQUFDLEdBQUE3QixHQUNsQiwwQkFBYztBQUFBLFlBQUE4QixTQUFBN0ksT0FJbkIsbUNBQXdDO0FBQUEsWUFBQThJLGFBQUFDLE9BQUFDLEtBQUFDLEtBQUFwSTtBQUFBQSxRQUFBcUksT0FHckQ7QUFBQSxJQUNBLGVBQW1CLDhCQU1UO0FBQUEsUUFBQUMsSUFBVixLQUFBMUssTUFBQTtBQUFBO0FBQUEsS0FKRSxhQUFpQjtBQUFBLEtBQ0wsS0FBVCxTQUFTLHdCQVRkLHNCQVlVO0FBQUE7QUFBQSxNQUFBQSxRQUhnRDtBQUFBLE1BQUEwSyxNQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FHckQ7QUFBQSxZQUFBQyxXQUFBN0csR0FBQXlHLEtBQUFDLEtBQUFwSTtBQUFBQSxJQUdWLGNBQWtCLDhCQUN3QztBQUFBLElBQXZELGtDQUFpQjtBQUFBLElBQVEsZ0RBQThCO0FBQUE7QUFBQTtBQUFBLFFBdkQxRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXdJLFdBQUEsTUFBQXpDLEtBQUEvRjtBQUFBQSxRQUFBeUksU0ErSGEsY0FBQTdJLE1BQUEsY0FBQThJLFFBQUE7QUFBQSxJQUNiO0FBQUEsU0FBQUMsUUFBQSxrQ0FBQVAsTUFFRTtBQUFBO0FBQUE7QUFBQSxNQUNBO0FBQUE7QUFBQSxRQUFBUSxRQUVBO0FBQUEsUUFBQUMsUUFDQTtBQUFBLFFBQUFDLFNBQ0E7QUFBQSxRQUFBQyxTQUNBO0FBQUEsUUFBQUMsU0FDQTtBQUFBLFFBQUFDLGFBQ0E7QUFBQSxRQUFBNUUsSUFDUTtBQUFBLE9BQ1I7QUFBQSxXQUFBTCxJQUNRO0FBQUEsT0FDUjtBQUFBLFdBQUE1RSxJQUNRLGdDQUFBK0ksTUFDUjtBQUFBLE9BakZGO0FBQUEsUUFBa0I7QUFBQTtBQUFBLFlBQUFlLFdBQ0w7QUFBQTtBQUFBO0FBQUEsU0FORztBQUFBLDJEQUVlO0FBQUE7QUFBQSwwQ0FEdEI7QUFBQSxpQkFFRjtBQUFBO0FBQUEsUUFHYTtBQUFBLGlCQUNwQjtBQUFBLFNBQXFFLDhCQUEzQztBQUFBO0FBQUE7QUFBQSxXQUFBNUQsS0FnRmQ7QUFBQSxPQUNWO0FBQUEsV0FBQUQsS0FDVTtBQUFBLE9BQ1Y7QUFBQSxXQUFBRCxLQUNTO0FBQUE7QUFBQTtBQUFBLFlBQUFsRSxRQWpGTztBQUFBO0FBQUEsWUFBQVEsSUFDWjtBQUFBO0FBQUE7QUFBQSxTQUFPO0FBQUEsd0JBR0Ysd0JBQUFSLFFBQWU7QUFBQSxVQUhiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQUFBQSxRQUNKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQUFBLFFBQ1k7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUdqQjtBQUFBLFNBQUFpSSxRQUFZO0FBQUEsU0FBQWpJLFFBQ1o7QUFBQTtBQUFBLE9BMkVpRTtBQUFBLFlBQUFpSCxRQUN4RDtBQUFBLFFBekViO0FBQUEsaUJBQWtCO0FBQUEsZ0JBQ1gsU0FBVTtBQUFBLGFBQUFHLElBQVEsT0FBQTFLLFFBQUEsS0FBQXdMLE1BQUE7QUFBQTtBQUFBLFVBRXZCLG9CQUFnQjtBQUFBLFVBQ0MsS0FBVixTQUFVLGdDQUFZO0FBQUEsY0FBQWxCLFFBQzdCO0FBQUEsVUFDQTtBQUFBLGVBQUFJLE1BQWtDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBYyxRQUN4QjtBQUFBLFlBQUF4TDtBQUFBQSxjQUNPO0FBQUE7QUFBQSxnQkFBUTtBQUFBLGtCQUFLLG9CQUFtQjtBQUFBLFlBQUEwSyxNQUNqRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUJBaERGO0FBQUEsWUFBQWUsU0F1Q0EsTUFBQXJILE9BQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXFILFNBMEVXLFlBQUFySCxPQUFBO0FBQUE7QUFBQSxRQUFBc0g7QUFBQUEsVUE1RFgsU0FBQXBILE1BQUE0RztBQUFBQSxlQUFBeEQsS0FFVztBQUFBO0FBQUE7QUFBQSxnQkFBQXlELFNBR0w7QUFBQSxZQUNBO0FBQUEsZ0JBQUFBLFdBQ2tDLFFBQUExRCxLQUFsQztBQUFBO0FBQUE7QUFBQSxnQkFBQWtFLE9BRUE7QUFBQTtBQUFBO0FBQUEsYUFDc0I7QUFBQTtBQUFBLG9CQUFrQixTQUFTO0FBQUE7QUFBQTtBQUFBLGNBQUFSO0FBQUFBLGdCQUdqQztBQUFBO0FBQUE7QUFBQSxjQUFBMUQsT0FDaEI7QUFBQSxjQUFBMEQsV0FFSjtBQUFBLGNBQUExRCxLQUFBO0FBQUE7QUFBQTtBQUFBLGdCQUFBMEQsV0FMUyxRQUFBMUQsS0FBQTtBQUFBO0FBQUEsV0FLVCxZQUFnQixvREFPQTtBQUFBLFdBTmhCO0FBQUEsWUFBZ0Isd0RBTUE7QUFBQTtBQUFBLFlBQUE5RSxPQUxoQjtBQUFBLGdCQUNBO0FBQUEsWUFBQVcsUUFBQTtBQUFBLFlBQUFzSSxPQUFBLGdCQUVXO0FBQUEsV0FFWDtBQUFBLFVBQWdCO0FBQUE7QUFBQTtBQUFBLFlBQUF0SSxVQUVBO0FBQUE7QUFBQSxZQUFBUSxNQUNaO0FBQUEsUUFBTztBQUFBLGFBQUFSLFVBQ0o7QUFBQTtBQUFBLFNBREk7QUFBQSwwQ0FBQUEsVUFFWTtBQUFBO0FBQUE7QUFBQSxVQUZaO0FBQUE7QUFBQSxpQkFBQUEsVUFHSjtBQUFBO0FBQUEsaUJBQUFBLFVBQ0E7QUFBQTtBQUFBO0FBQUEsY0FFTDtBQUFBLFVBQUFpSSxVQUFZO0FBQUEsVUFBQWpJLFVBQ1o7QUFBQTtBQUFBO0FBQUEsV0FBQXVJLFdBNkJzRCxZQUFBQyxXQUFBO0FBQUEsT0FDeEQsaUJBQUExSixNQUFBLGFBQUF3SixPQUFxRCxjQUFBQSxPQUFkO0FBQUE7QUFBQSxRQUFBdEksVUFDakM7QUFBQSxPQUE4QyxzQkFDMUM7QUFBQSxXQUFBZSxJQUQwQztBQUFBLE9BR2hEO0FBQUEsWUFBQUQsU0FBQTtBQUFBO0FBQUEsYUFBQWQsVUFHVTtBQUFBLFNBQW9CO0FBQUEsY0FBQWUsTUFBQSxZQUFBQSxNQUVkO0FBQUE7QUFBQSxjQUFBQSxNQURGO0FBQUE7QUFBQTtBQUFBLGFBQUFBLE1BSmQ7QUFBQTtBQUFBO0FBQUEsWUFBQUEsTUFBQTtBQUFBLE9BT0E7QUFBQSxnQkFDSztBQUFBO0FBQUE7QUFBQSxlQUNBO0FBQUE7QUFBQTtBQUFBLGNBckNxQztBQUFBO0FBQUE7QUFBQTtBQUFBLFVBQUEwSDtBQUFBQSxTQUFBQSxNRDdsQmxEO0FBQUE7QUFBQSxTQUFBekQsSUFBQSxRQUFBc0IsSUFBQTtBQUFBLEtDbW9CeUI7QUFBQTtBQUFBO0FBQUEsV0F6S3ZCO0FBQUEsWUFBQW9DLHlCQUFBekU7QUFBQUEsSUFzTEE7QUFBQTtBQUFBO0FBQUEsS0FDSztBQUFBLElBQ0E7QUFBQSxHQUFpQjtBQUFBLFlBQUEwRSxhQUFBN0gsTUFBQTNDO0FBQUFBLFFBQUEsSUFHWTtBQUFBLElBQXZCLE9BQUosZUFBSSxxQ0FBNEM7QUFBQTtBQUFBO0FBQUEsSUFBQXlLLFdEcnBCekQ7QUFBQTtBQUFBLE1DMGRFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBLEdBQUFoRSxLQUFBWixhQUFBbEQ7QUFBQUE7QUFBQUEsS0FBQStILFFBNkxhO0FBQUEsS0FBQWhJLE9BQUE7QUFBQSxLQUFBM0MsS0FBQTtBQUFBLEtBQUE0SyxNQUNIO0FBQUEsSUFDVjtBQUFBO0FBQUEsTUFBQTNELEtBQUE7QUFBQSxVQUNhO0FBQUEsTUFBQTRELGFBQUE7QUFBQSxNQUFBL0UsZ0JBQUE7QUFBQTtBQUFBLFNBQUErRSxhQUdiLEdBQUEvRSxnQkFBQTtBQUFBO0FBQUEsU0FBNkM7QUFBQSxTQUEyQjtBQUFBLEtBQUFBLGdCQUFBO0FBQUE7QUFBQSxLQUFBRSxLQUFBO0FBQUEsS0FBQUQsS0FBQTtBQUFBLEtBQUFFLEtBQUE7QUFBQSxLQUFBcEUsUUFBQTtBQUFBLEtBQUE5QixJQUFBO0FBQUEsS0FBQTRFLElBQUE7QUFBQSxLQUFBSyxJQUFBO0FBQUEsS0FBQThGLFNBQ3hFO0FBQUEsSUFDQTtBQUFBO0FBQUEsUUFBQW5JLFNBQXlFO0FBQUEsSUFFekU7QUFBQSxhQUFtRDtBQUFBLEtBQWpDO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FDbEI7QUFBQSxNQUEwQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFDMUMsMkNBQUFvSSxVQUMrRDtBQUFBLFVBQUFBLFVBQVQ7QUFBQTtBQUFBO0FBQUEsTUFBQUMsU0FDdkM7QUFBQSxNQUFBQyxRQUNiO0FBQUEsTUFBQUMsUUFDQTtBQUFBLEtBQ0E7QUFBQTtBQUFBLElBRUY7QUFBQTtBQUFBLFlBaE5BO0FBQUEsWUFBQUMsV0FBQVIsT0FBQTdJLFFBQUFnRSxhQUFBaEcsT0FBQXNELEtBQUFSO0FBQUFBLFFBQUEsSUFtTndCO0FBQUEsSUFBMEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQW5ObEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUF3SSxTQUFBMUUsS0FBQVosYUFBQWhHLE9BQUFzRCxLQUFBUjtBQUFBQSxRQUFBRCxPQXVOVyxrQkFBQTNDLEtBQUE7QUFBQSxJQUNYO0FBQUE7QUFBQSxNQUFBaUgsS0FBQTtBQUFBLFVBQ2E7QUFBQSxNQUFBNEQsYUFBQTtBQUFBLE1BQUEvRSxnQkFBQTtBQUFBO0FBQUEsU0FBQStFLGFBR2IsR0FBQS9FLGdCQUFBO0FBQUE7QUFBQSxTQUE2QztBQUFBLFNBQTJCO0FBQUEsS0FBQUEsZ0JBQUE7QUFBQTtBQUFBLEtBQUFFLEtBQUE7QUFBQSxLQUFBRCxLQUFBO0FBQUEsS0FBQUUsS0FBQTtBQUFBLEtBQUFwRSxRQUFBO0FBQUEsS0FBQTlCLElBQUE7QUFBQSxLQUFBNEUsSUFBQTtBQUFBLEtBQUFLLElBQUE7QUFBQSxJQUN4RTtBQUFBLFFBQUFyQyxTQUFpRTtBQUFBLElBRWpFO0FBQUEsYUFBbUQ7QUFBQSxLQUFqQztBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQ2xCLDJDQUFBb0ksVUFBNkQ7QUFBQSxTQUFBQSxVQUFUO0FBQUE7QUFBQTtBQUFBLEtBQUFDLFNBQ3ZDO0FBQUEsS0FBQUMsUUFDYjtBQUFBLEtBQUFDLFFBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBcUQ7QUFBQTtBQUFBLFlBRzlDO0FBQUEsWUFBQXhHLEtBQUE7QUFBQSxHQUEwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEanNCbkMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMTk5OCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuY29vcmRpbmF0ZS5vYmpzL2pzb28vZGVmYXVsdC9jb29yZGluYXRlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtY29vcmRpbmF0ZS9saWIvY29vcmRpbmF0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBBc3Ryb2R5bmFtaWNzIGNvb3JkaW5hdGUgZnJhbWUgdHJhbnNmb3Jtcy4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgVHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSB2ZWMzID0geyB4IDogZmxvYXQ7IHkgOiBmbG9hdDsgeiA6IGZsb2F0IH1cbnR5cGUgZ2VvZGV0aWMgPSB7IGxhdCA6IGZsb2F0OyBsb24gOiBmbG9hdDsgYWx0IDogZmxvYXQgfVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb25zdGFudHMgKFdHUy04NCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgZWFydGhfcmFkaXVzID0gNjM3OC4xMzdcbmxldCBlYXJ0aF9mbGF0dGVuaW5nID0gMS4gLy4gMjk4LjI1NzIyMzU2M1xubGV0IGVhcnRoX211ID0gMzk4NjAwLjQ0MThcbmxldCBlYXJ0aF9qMiA9IDAuMDAxMDgyNjNcbmxldCBlYXJ0aF9yb3RhdGlvbl9yYXRlID0gNy4yOTIxMTUxNDY3ZS01XG5sZXQgdHdvcGkgPSAyLiAqLiBGbG9hdC5waVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVdGlsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdmVjMyB4IHkgeiA9IHsgeDsgeTsgeiB9XG5sZXQgdmVjM19sZW5ndGggdiA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkgKy4gKHYueiAqLiB2LnopKVxuXG5sZXQgbm9ybWFsaXplX2FuZ2xlIGEgPVxuICBsZXQgYSA9IEZsb2F0LnJlbSBhIHR3b3BpIGluXG4gIGlmIGEgPCAwLiB0aGVuIGEgKy4gdHdvcGkgZWxzZSBhXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFRpbWUgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBqdWxpYW5fZGF0ZV9vZl91bml4IHQgPSAodCAvLiA4NjQwMC4pICsuIDI0NDA1ODcuNVxubGV0IHVuaXhfb2ZfanVsaWFuX2RhdGUgamQgPSAoamQgLS4gMjQ0MDU4Ny41KSAqLiA4NjQwMC5cblxubGV0IGp1bGlhbl9jZW50dXJpZXMgdW5peF90ID1cbiAgbGV0IGpkID0ganVsaWFuX2RhdGVfb2ZfdW5peCB1bml4X3QgaW5cbiAgKGpkIC0uIDI0NTE1NDUuMCkgLy4gMzY1MjUuMFxuXG4oKiogR01TVCB1c2luZyB0aGUgSUFVIDE5ODIgbW9kZWwuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8sIEVxLiAzLTQ3LiBHTVNUID0gNjczMTAuNTQ4NDEgKyAoODc2NjAwaCArXG4gICAgODY0MDE4NC44MTI4NjYpVFxuICAgICsgMC4wOTMxMDQgVF4yIC0gNi4yZS02IFReMyB3aGVyZSBUIGlzIEp1bGlhbiBjZW50dXJpZXMgZnJvbSBKMjAwMC4wLiAqKVxubGV0IGdtc3Rfb2ZfdW5peCB1bml4X3RpbWUgPVxuICBsZXQgdCA9IGp1bGlhbl9jZW50dXJpZXMgdW5peF90aW1lIGluXG4gIGxldCBnbXN0X3NlYyA9XG4gICAgNjczMTAuNTQ4NDFcbiAgICArLiAoKCg4NzY2MDAuMCAqLiAzNjAwLikgKy4gODY0MDE4NC44MTI4NjYpICouIHQpXG4gICAgKy4gKDAuMDkzMTA0ICouIHQgKi4gdClcbiAgICAtLiAoNi4yZS02ICouIHQgKi4gdCAqLiB0KVxuICBpblxuICBub3JtYWxpemVfYW5nbGUgKGdtc3Rfc2VjICouIHR3b3BpIC8uIDg2NDAwLilcblxubGV0IGdtc3QgcHRpbWUgPSBnbXN0X29mX3VuaXggKFB0aW1lLnRvX2Zsb2F0X3MgcHRpbWUpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIEZyYW1lIHRyYW5zZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqKiBaLWF4aXMgcm90YXRpb24gYnkgYW5nbGUgdGhldGEuIFJ6KM64KSA9XG4gICAgW1tjb3MgzrgsIHNpbiDOuCwgMF0sIFstc2luIM64LCBjb3MgzrgsIDBdLCBbMCwgMCwgMV1dICopXG5sZXQgcm90YXRlX3ogdGhldGEgdiA9XG4gIGxldCBjID0gY29zIHRoZXRhIGFuZCBzID0gc2luIHRoZXRhIGluXG4gIHsgeCA9IChjICouIHYueCkgKy4gKHMgKi4gdi55KTsgeSA9ICgtLnMgKi4gdi54KSArLiAoYyAqLiB2LnkpOyB6ID0gdi56IH1cblxubGV0IHRlbWVfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b190ZW1lIH5nbXN0IHYgPSByb3RhdGVfeiAoLS5nbXN0KSB2XG5sZXQgajIwMDBfdG9fZWNlZiB+Z21zdCB2ID0gcm90YXRlX3ogZ21zdCB2XG5sZXQgZWNlZl90b19qMjAwMCB+Z21zdCB2ID0gcm90YXRlX3ogKC0uZ21zdCkgdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBHZW9kZXRpYyBjb252ZXJzaW9ucyAoV0dTLTg0IGVsbGlwc29pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiogQm93cmluZydzIGl0ZXJhdGl2ZSBtZXRob2QgZm9yIEVDRUYg4oaSIGdlb2RldGljLlxuXG4gICAgUmVmZXJlbmNlOiBWYWxsYWRvIEFsZ29yaXRobSAxMiwgTW9udGVuYnJ1Y2sgJiBHaWxsIMKnNS4zLiBDb252ZXJnZXMgaW4gMi0zXG4gICAgaXRlcmF0aW9ucyBmb3IgdHlwaWNhbCBwb3NpdGlvbnMuICopXG5sZXQgZWNlZl90b19nZW9kZXRpYyB2ID1cbiAgbGV0IGEgPSBlYXJ0aF9yYWRpdXMgaW5cbiAgbGV0IGYgPSBlYXJ0aF9mbGF0dGVuaW5nIGluXG4gIGxldCBlMiA9ICgyLiAqLiBmKSAtLiAoZiAqLiBmKSBpblxuICAoKiBmaXJzdCBlY2NlbnRyaWNpdHkgc3F1YXJlZCAqKVxuICBsZXQgcCA9IHNxcnQgKCh2LnggKi4gdi54KSArLiAodi55ICouIHYueSkpIGluXG4gIGxldCBsb25fcmFkID0gYXRhbjIgdi55IHYueCBpblxuICAoKiBJbml0aWFsIGxhdGl0dWRlIGVzdGltYXRlICopXG4gIGxldCBsYXRfcmFkID0gcmVmIChhdGFuMiB2LnogcCkgaW5cbiAgKCogSXRlcmF0ZSBCb3dyaW5nJ3MgbWV0aG9kICopXG4gIGZvciBfID0gMSB0byA1IGRvXG4gICAgbGV0IHNpbl9sYXQgPSBzaW4gIWxhdF9yYWQgaW5cbiAgICBsZXQgbiA9IGEgLy4gc3FydCAoMS4gLS4gKGUyICouIHNpbl9sYXQgKi4gc2luX2xhdCkpIGluXG4gICAgbGF0X3JhZCA6PSBhdGFuMiAodi56ICsuIChlMiAqLiBuICouIHNpbl9sYXQpKSBwXG4gIGRvbmU7XG4gIGxldCBzaW5fbGF0ID0gc2luICFsYXRfcmFkIGluXG4gIGxldCBuID0gYSAvLiBzcXJ0ICgxLiAtLiAoZTIgKi4gc2luX2xhdCAqLiBzaW5fbGF0KSkgaW5cbiAgbGV0IGFsdCA9XG4gICAgaWYgYWJzX2Zsb2F0IChjb3MgIWxhdF9yYWQpID4gMWUtMTAgdGhlbiAocCAvLiBjb3MgIWxhdF9yYWQpIC0uIG5cbiAgICBlbHNlIChhYnNfZmxvYXQgdi56IC8uIHNpbl9sYXQpIC0uIChuICouICgxLiAtLiBlMikpXG4gIGluXG4gIHsgbGF0ID0gIWxhdF9yYWQgKi4gMTgwLiAvLiBGbG9hdC5waTsgbG9uID0gbG9uX3JhZCAqLiAxODAuIC8uIEZsb2F0LnBpOyBhbHQgfVxuXG4oKiogR2VvZGV0aWMg4oaSIEVDRUYuXG5cbiAgICBSZWZlcmVuY2U6IFZhbGxhZG8gQWxnb3JpdGhtIDExLiAqKVxubGV0IGdlb2RldGljX3RvX2VjZWYgZyA9XG4gIGxldCBhID0gZWFydGhfcmFkaXVzIGluXG4gIGxldCBmID0gZWFydGhfZmxhdHRlbmluZyBpblxuICBsZXQgZTIgPSAoMi4gKi4gZikgLS4gKGYgKi4gZikgaW5cbiAgbGV0IGxhdF9yYWQgPSBnLmxhdCAqLiBGbG9hdC5waSAvLiAxODAuIGluXG4gIGxldCBsb25fcmFkID0gZy5sb24gKi4gRmxvYXQucGkgLy4gMTgwLiBpblxuICBsZXQgc2luX2xhdCA9IHNpbiBsYXRfcmFkIGluXG4gIGxldCBjb3NfbGF0ID0gY29zIGxhdF9yYWQgaW5cbiAgbGV0IG4gPSBhIC8uIHNxcnQgKDEuIC0uIChlMiAqLiBzaW5fbGF0ICouIHNpbl9sYXQpKSBpblxuICB7XG4gICAgeCA9IChuICsuIGcuYWx0KSAqLiBjb3NfbGF0ICouIGNvcyBsb25fcmFkO1xuICAgIHkgPSAobiArLiBnLmFsdCkgKi4gY29zX2xhdCAqLiBzaW4gbG9uX3JhZDtcbiAgICB6ID0gKChuICouICgxLiAtLiBlMikpICsuIGcuYWx0KSAqLiBzaW5fbGF0O1xuICB9XG5cbmxldCB0ZW1lX3RvX2dlb2RldGljIH5nbXN0IHYgPSBlY2VmX3RvX2dlb2RldGljICh0ZW1lX3RvX2VjZWYgfmdtc3QgdilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUHJldHR5LXByaW50aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHBwX3ZlYzMgcHBmIHYgPSBGbXQucGYgcHBmIFwiKCUuM2YsICUuM2YsICUuM2YpXCIgdi54IHYueSB2LnpcblxubGV0IHBwX2dlb2RldGljIHBwZiBnID1cbiAgRm10LnBmIHBwZiBcIiUuNGbCsCVzICUuNGbCsCVzICUuM2Yga21cIiAoYWJzX2Zsb2F0IGcubGF0KVxuICAgIChpZiBnLmxhdCA+PSAwLiB0aGVuIFwiTlwiIGVsc2UgXCJTXCIpXG4gICAgKGFic19mbG9hdCBnLmxvbilcbiAgICAoaWYgZy5sb24gPj0gMC4gdGhlbiBcIkVcIiBlbHNlIFwiV1wiKVxuICAgIGcuYWx0XG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIlB0aW1lIiwidHdvcGkiLCJ2ZWMzIiwieCIsInkiLCJ6IiwidmVjM19sZW5ndGgiLCJ2Iiwibm9ybWFsaXplX2FuZ2xlIiwiYSIsImp1bGlhbl9kYXRlX29mX3VuaXgiLCJ0IiwidW5peF9vZl9qdWxpYW5fZGF0ZSIsImpkIiwianVsaWFuX2NlbnR1cmllcyIsInVuaXhfdCIsImdtc3Rfb2ZfdW5peCIsInVuaXhfdGltZSIsImdtc3Rfc2VjIiwiZ21zdCIsInB0aW1lIiwicm90YXRlX3oiLCJ0aGV0YSIsImMiLCJzIiwidGVtZV90b19lY2VmIiwiZWNlZl90b190ZW1lIiwiajIwMDBfdG9fZWNlZiIsImVjZWZfdG9fajIwMDAiLCJlY2VmX3RvX2dlb2RldGljIiwicCIsImxvbl9yYWQiLCJsYXRfcmFkIiwiZm9yJCIsInNpbl9sYXQiLCJuIiwiYWx0IiwiZ2VvZGV0aWNfdG9fZWNlZiIsImciLCJjb3NfbGF0IiwidGVtZV90b19nZW9kZXRpYyIsImNzdCIsInBwX3ZlYzMiLCJwcGYiLCJwcF9nZW9kZXRpYyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsUUFBQTtBQUFBLElBQUFDLFFDdUJZO0FBQUEsWUFBQUMsS0FBQUMsR0FBQUMsR0FBQUMsR0FNSyxzQkFBVztBQUFBLFlBQUFDLFlBQUFDO0FBQUFBLElBQzJDLE9BQW5ELGtEQUFtRDtBQUFBO0FBQUEsWUFBQUMsZ0JBQUFDO0FBQUFBLFFBQUFBLE1BRzdEO0FBQUEsSUFDUixtQ0FBZ0M7QUFBQTtBQUFBLFlBQUFDLG9CQUFBQyxHQU1vQjtBQUFBLFlBQUFDLG9CQUFBQyxJQUNFO0FBQUEsWUFBQUMsaUJBQUFDO0FBQUFBLFFBQUFGLEtBRzdDO0FBQUEsSUFDbUI7QUFBQTtBQUFBLFlBQUFHLGFBQUFDO0FBQUFBO0FBQUFBLEtBQUFOLElBUXBCO0FBQUEsS0FBQU87QUFBQUEsT0FFTjtBQUFBO0FBQUEsSUFLMkM7QUFBQTtBQUFBLFlBQUFDLEtBQUFDLE9BRWpCLE9BQXdCLGFBQXhCLDRCQUF3QjtBQUFBLFlBQUFDLFNBQUFDLE9BQUFmO0FBQUFBLFFBQUFnQixJQVM1QyxpQkFBQUMsSUFBa0I7QUFBQSxJQUNJO0FBQUEsR0FBMkM7QUFBQSxZQUFBQyxhQUFBTixNQUFBWixHQUVoRCx3QkFBZTtBQUFBLFlBQUFtQixhQUFBUCxNQUFBWixHQUNFLDBCQUFFO0FBQUEsWUFBQW9CLGNBQUFSLE1BQUFaLEdBQ2xCLHdCQUFlO0FBQUEsWUFBQXFCLGNBQUFULE1BQUFaLEdBQ0UsMEJBQUU7QUFBQSxZQUFBc0IsaUJBQUF0QjtBQUFBQTtBQUFBQSxLQUFBdUIsSUFlckM7QUFBQSxLQUFBQyxVQUNNO0FBQUEsS0FBQUMsWUFFSTtBQUFBLEtBQUFDLE9BRWxCO0FBQUE7QUFBQTtBQUFBLE1BQUFDLFlBQ2dCO0FBQUEsTUFBQUM7QUFBQUEsUUFDTjtBQUFBLFVBQUs7QUFBQSxNQUFBSCxVQUNGO0FBQUEsVUFBcUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUUsVUFFcEM7QUFBQSxLQUFBQyxJQUNOLFdBQUs7QUFBQSxLQUFBQztBQUFBQSxPQUVnQixRQUF4QixTQUFVO0FBQUEsY0FBa0M7QUFBQSxVQUN6QztBQUFBLElBRTRCO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBMEM7QUFBQSxZQUFBQyxpQkFBQUM7QUFBQUE7QUFBQUEsS0FBQU4sVUFTaEU7QUFBQSxLQUFBRCxVQUNBO0FBQUEsS0FBQUcsVUFDQTtBQUFBLEtBQUFLLFVBQ0E7QUFBQSxLQUFBSixJQUNOLFdBQUs7QUFBQSxJQUUrQjtBQUFBLG1DQUFYO0FBQUEsbUNBQ0E7QUFBQSxzREFEVztBQUFBLEdBRzNDO0FBQUEsWUFBQUssaUJBQUFyQixNQUFBWjtBQUFBQSxJQXBEd0IsT0FzRDJDLGlCQXREM0Msa0JBc0QyQztBQUFBO0FBQUE7QUFBQSxJQUFBa0MsUURoSXRFO0FBQUE7QUFBQSxNQ3VCMEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUMsS0FBQXBDO0FBQUFBLFFBQUEsSUErR047QUFBQSx5REFBMkM7QUFBQTtBQUFBO0FBQUEsSUFBQWtDLE1EdEkvRDtBQUFBO0FBQUEsTUN1QjBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUcsWUFBQUQsS0FBQUw7QUFBQUE7QUFBQUEsS0FBQSxJQWtIeEI7QUFBQTtBQUFBLFNBRUU7QUFBQSxTQUFpQjtBQUFBLFNBRm9CO0FBQUEsSUFBaUIsMkRBSWpEO0FBQUE7QUFBQSxHQXRIaUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR2QjFCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzIxODAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL21hdGgubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGluZWFyIGFsZ2VicmEgcHJpbWl0aXZlcyBmb3IgM0QgcmVuZGVyaW5nOiBWZWMzIGFuZCBNYXQ0LiAqKVxuXG5tb2R1bGUgVmVjMyA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IHggOiBmbG9hdDsgeSA6IGZsb2F0OyB6IDogZmxvYXQgfVxuXG4gIGxldCBjcmVhdGUgeCB5IHogPSB7IHg7IHk7IHogfVxuICBsZXQgemVybyA9IHsgeCA9IDAuOyB5ID0gMC47IHogPSAwLiB9XG4gIGxldCBhZGQgYSBiID0geyB4ID0gYS54ICsuIGIueDsgeSA9IGEueSArLiBiLnk7IHogPSBhLnogKy4gYi56IH1cbiAgbGV0IHN1YiBhIGIgPSB7IHggPSBhLnggLS4gYi54OyB5ID0gYS55IC0uIGIueTsgeiA9IGEueiAtLiBiLnogfVxuICBsZXQgc2NhbGUgcyB2ID0geyB4ID0gcyAqLiB2Lng7IHkgPSBzICouIHYueTsgeiA9IHMgKi4gdi56IH1cbiAgbGV0IGRvdCBhIGIgPSAoYS54ICouIGIueCkgKy4gKGEueSAqLiBiLnkpICsuIChhLnogKi4gYi56KVxuXG4gIGxldCBjcm9zcyBhIGIgPVxuICAgIHtcbiAgICAgIHggPSAoYS55ICouIGIueikgLS4gKGEueiAqLiBiLnkpO1xuICAgICAgeSA9IChhLnogKi4gYi54KSAtLiAoYS54ICouIGIueik7XG4gICAgICB6ID0gKGEueCAqLiBiLnkpIC0uIChhLnkgKi4gYi54KTtcbiAgICB9XG5cbiAgbGV0IGxlbmd0aCB2ID0gc3FydCAoZG90IHYgdilcblxuICBsZXQgbm9ybWFsaXplIHYgPVxuICAgIGxldCBsID0gbGVuZ3RoIHYgaW5cbiAgICBpZiBsID4gMWUtMTAgdGhlbiBzY2FsZSAoMS4gLy4gbCkgdiBlbHNlIHplcm9cblxuICBsZXQgbmVnYXRlIHYgPSB7IHggPSAtLnYueDsgeSA9IC0udi55OyB6ID0gLS52LnogfVxuZW5kXG5cbm1vZHVsZSBNYXQ0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0IGFycmF5XG4gICgqKiBDb2x1bW4tbWFqb3IgNHg0IG1hdHJpeCBzdG9yZWQgYXMgYSBmbGF0IDE2LWVsZW1lbnQgYXJyYXkuIExheW91dDpcbiAgICAgIFttMCBtMSBtMiBtMyB8IG00IG01IG02IG03IHwgbTggbTkgbTEwIG0xMSB8IG0xMiBtMTMgbTE0IG0xNV0gd2hlcmUgZWFjaFxuICAgICAgZ3JvdXAgb2YgNCBpcyBvbmUgY29sdW1uLiAqKVxuXG4gIGxldCBpZGVudGl0eSAoKSA9XG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyAxLjsgMC47IDAuOyAwLjsgMC47IDEuOyAwLjsgMC47IDAuOyAwLjsgMS4gfF1cblxuICBsZXQgbXVsdGlwbHkgKGEgOiB0KSAoYiA6IHQpIDogdCA9XG4gICAgbGV0IHIgPSBBcnJheS5tYWtlIDE2IDAuIGluXG4gICAgZm9yIGNvbCA9IDAgdG8gMyBkb1xuICAgICAgZm9yIHJvdyA9IDAgdG8gMyBkb1xuICAgICAgICBsZXQgdiA9IHJlZiAwLiBpblxuICAgICAgICBmb3IgayA9IDAgdG8gMyBkb1xuICAgICAgICAgIHYgOj0gIXYgKy4gKGEuKChrICogNCkgKyByb3cpICouIGIuKChjb2wgKiA0KSArIGspKVxuICAgICAgICBkb25lO1xuICAgICAgICByLigoY29sICogNCkgKyByb3cpIDwtICF2XG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICByXG5cbiAgbGV0IHBlcnNwZWN0aXZlIH5mb3Z5IH5hc3BlY3Qgfm5lYXIgfmZhciA9XG4gICAgbGV0IGYgPSAxLiAvLiB0YW4gKGZvdnkgLy4gMi4pIGluXG4gICAgbGV0IG5mID0gMS4gLy4gKG5lYXIgLS4gZmFyKSBpblxuICAgIFt8XG4gICAgICBmIC8uIGFzcGVjdDtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgZjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAwLjtcbiAgICAgIDAuO1xuICAgICAgKGZhciArLiBuZWFyKSAqLiBuZjtcbiAgICAgIC0xLjtcbiAgICAgIDAuO1xuICAgICAgMC47XG4gICAgICAyLiAqLiBmYXIgKi4gbmVhciAqLiBuZjtcbiAgICAgIDAuO1xuICAgIHxdXG5cbiAgbGV0IGxvb2tfYXQgfmV5ZSB+Y2VudGVyIH51cCA9XG4gICAgbGV0IG9wZW4gVmVjMyBpblxuICAgIGxldCBmID0gbm9ybWFsaXplIChzdWIgY2VudGVyIGV5ZSkgaW5cbiAgICBsZXQgcyA9IG5vcm1hbGl6ZSAoY3Jvc3MgZiB1cCkgaW5cbiAgICBsZXQgdSA9IGNyb3NzIHMgZiBpblxuICAgIFt8XG4gICAgICBzLng7XG4gICAgICB1Lng7XG4gICAgICAtLmYueDtcbiAgICAgIDAuO1xuICAgICAgcy55O1xuICAgICAgdS55O1xuICAgICAgLS5mLnk7XG4gICAgICAwLjtcbiAgICAgIHMuejtcbiAgICAgIHUuejtcbiAgICAgIC0uZi56O1xuICAgICAgMC47XG4gICAgICAtLmRvdCBzIGV5ZTtcbiAgICAgIC0uZG90IHUgZXllO1xuICAgICAgZG90IGYgZXllO1xuICAgICAgMS47XG4gICAgfF1cblxuICBsZXQgcm90YXRlX3ggYW5nbGUgPVxuICAgIGxldCBjID0gY29zIGFuZ2xlIGFuZCBzID0gc2luIGFuZ2xlIGluXG4gICAgW3wgMS47IDAuOyAwLjsgMC47IDAuOyBjOyBzOyAwLjsgMC47IC0uczsgYzsgMC47IDAuOyAwLjsgMC47IDEuIHxdXG5cbiAgbGV0IHJvdGF0ZV95IGFuZ2xlID1cbiAgICBsZXQgYyA9IGNvcyBhbmdsZSBhbmQgcyA9IHNpbiBhbmdsZSBpblxuICAgIFt8IGM7IDAuOyAtLnM7IDAuOyAwLjsgMS47IDAuOyAwLjsgczsgMC47IGM7IDAuOyAwLjsgMC47IDAuOyAxLiB8XVxuXG4gIGxldCB0b19mbG9hdF9hcnJheSAobSA6IHQpIDogZmxvYXQgYXJyYXkgPSBBcnJheS5jb3B5IG1cbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiU3RkbGliX0FycmF5IiwiY3JlYXRlIiwieCIsInkiLCJ6IiwiYWRkIiwiYSIsImIiLCJzdWIiLCJzY2FsZSIsInMiLCJ2IiwiZG90IiwiY3Jvc3MiLCJsZW5ndGgiLCJ6ZXJvIiwibm9ybWFsaXplIiwibCIsIm5lZ2F0ZSIsImlkZW50aXR5IiwicGFyYW0iLCJtdWx0aXBseSIsInIiLCJjb2wiLCJyb3ciLCJrIiwicGVyc3BlY3RpdmUiLCJmb3Z5IiwiYXNwZWN0IiwibmVhciIsImZhciIsImYiLCJuZiIsImxvb2tfYXQiLCJleWUiLCJjZW50ZXIiLCJ1cCIsInUiLCJyb3RhdGVfeCIsImFuZ2xlIiwiYyIsInJvdGF0ZV95IiwidG9fZmxvYXRfYXJyYXkiLCJtIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLFlBQUFDLE9BQUFDLEdBQUFDLEdBQUFDLEdDVXFCLHNCQUFXO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FFQSxvREFBa0M7QUFBQSxZQUFBQyxJQUFBRixHQUFBQyxHQUNsQyxvREFBa0M7QUFBQSxZQUFBRSxNQUFBQyxHQUFBQyxHQUNsQywyQ0FBOEI7QUFBQSxZQUFBQyxJQUFBTixHQUFBQyxHQUNGO0FBQUEsWUFBQU0sTUFBQVAsR0FBQUM7QUFBQUEsSUFJdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUdqQztBQUFBLFlBQUFPLE9BQUFILEdBRWlCLE9BQUwsVUFBSyxVQUFTO0FBQUEsT0FBQUksT0R4Qi9CO0FBQUEsWUFBQUMsVUFBQUw7QUFBQUEsUUFBQU0sSUMyQlk7QUFBQSxJQUNSLG1CQUFpQyx1QkFBWTtBQUFBO0FBQUEsWUFBQUMsT0FBQVAsR0FFckIscUNBQXdCO0FBQUE7QUFBQSxRRDlCcEQ7QUFBQSxZQUFBUSxTQUFBQyxPQ3dDSSw4QkFBb0U7QUFBQSxZQUFBQyxTQUFBZixHQUFBQztBQUFBQSxRQUFBZSxJQUc1RCxpQ0FBQUMsTUFDUjtBQUFBO0FBQUEsU0FBQUMsTUFDRTtBQUFBO0FBQUE7QUFBQSxVQUFBYixNQUVFLElBQUFjLElBQUE7QUFBQTtBQUFBO0FBQUEsWUFDRTtBQUFBLFlBQWtEO0FBQUEsWUFBakI7QUFBQSxRQUFBZCxJQUFyQjtBQUFBLFlBQXVDO0FBQUE7QUFBQSxnQkFFckQ7QUFBQTtBQUFBLGdCQUF5QjtBQUFBO0FBQUE7QUFBQSxzQkFHN0I7QUFBQSxRQUg2QjtBQUFBO0FBQUE7QUFBQSxPQUY0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FLeEQ7QUFBQSxZQUFBZSxZQUFBQyxNQUFBQyxRQUFBQyxNQUFBQztBQUFBQSxRQUFBQyxJQUdPLEtBQU0scUJBQUFDLEtBQ0w7QUFBQSxJQUVJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWdCWDtBQUFBLFlBQUFDLFFBQUFDLEtBQUFDLFFBQUFDO0FBQUFBO0FBQUFBLEtBQUFMLElBSU0sVUFBVTtBQUFBLEtBQUFyQixJQUNWLFVBQVU7QUFBQSxLQUFBMkIsSUFDVjtBQUFBLFNBZ0JOO0FBQUEsU0FERTtBQUFBLFNBREE7QUFBQSxJQVZHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWNMO0FBQUEsWUFBQUMsU0FBQUM7QUFBQUEsUUFBQUMsSUFHTSxpQkFBQTlCLElBQWtCO0FBQUEsSUFDYztBQUFBLEdBQTBCO0FBQUEsWUFBQStCLFNBQUFGO0FBQUFBLFFBQUFDLElBRzFELGlCQUFBOUIsSUFBa0I7QUFBQSxJQUNiO0FBQUEsR0FBcUQ7QUFBQSxZQUFBZ0MsZUFBQUMsR0FFekIsb0NBQVk7QUFBQSxHRDdHekQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMjMyMiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvdmlzaWJpbGl0eS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBWaXNpYmlsaXR5IGN1bGxpbmcgYW5kIGxldmVsLW9mLWRldGFpbCBmb3Igc2F0ZWxsaXRlcyBvbiB0aGUgZ2xvYmUuXG5cbiAgICBEZXRlcm1pbmVzIHdoaWNoIHNhdGVsbGl0ZXMgYXJlIHZpc2libGUgZnJvbSB0aGUgY2FtZXJhJ3MgcGVyc3BlY3RpdmUgYW5kIGF0XG4gICAgd2hhdCBkZXRhaWwgbGV2ZWwgdGhleSBzaG91bGQgYmUgcmVuZGVyZWQuIFB1cmUgbWF0aC4gKilcblxuKCoqIHsxIEhvcml6b24gY3VsbGluZ30gKilcblxuKCoqIFRlc3QgaWYgYSBwb2ludCBvbi9hYm92ZSB0aGUgdW5pdCBzcGhlcmUgaXMgdmlzaWJsZSBmcm9tIHRoZSBjYW1lcmEuXG5cbiAgICBBIHBvaW50IGlzIHZpc2libGUgaWYgaXQncyBvbiB0aGUgY2FtZXJhLWZhY2luZyBoZW1pc3BoZXJlLiBGb3IgcG9pbnRzIGFib3ZlXG4gICAgdGhlIHN1cmZhY2UgKHNhdGVsbGl0ZXMpLCB3ZSB1c2UgYSBzbGlnaHRseSByZWxheGVkIHRlc3Q6IHRoZSBwb2ludCBpc1xuICAgIHZpc2libGUgaWYgdGhlIGFuZ2xlIGJldHdlZW4gdGhlIGNhbWVyYSBkaXJlY3Rpb24gYW5kIHRoZSBwb2ludCdzIHN1cmZhY2VcbiAgICBub3JtYWwgaXMgbGVzcyB0aGFuIH4xMDDCsCAodG8gaW5jbHVkZSBzYXRlbGxpdGVzIGp1c3QgcGFzdCB0aGUgaG9yaXpvbiB0aGF0XG4gICAgYXJlIGFib3ZlIHRoZSBzdXJmYWNlKS5cblxuICAgIFtjYW1lcmFfcG9zXTogY2FtZXJhIHBvc2l0aW9uIGluIEdMIGNvb3JkaW5hdGVzLiBbcG9pbnRdOiBzYXRlbGxpdGUgcG9zaXRpb25cbiAgICBpbiBHTCBjb29yZGluYXRlcy4gKilcbmxldCBpc192aXNpYmxlIH5jYW1lcmFfcG9zIHBvaW50ID1cbiAgbGV0IHRvX3BvaW50ID0gTWF0aC5WZWMzLnN1YiBwb2ludCBNYXRoLlZlYzMuemVybyBpblxuICBsZXQgdG9fY2FtZXJhID0gTWF0aC5WZWMzLnN1YiBjYW1lcmFfcG9zIE1hdGguVmVjMy56ZXJvIGluXG4gICgqIERvdCBwcm9kdWN0IG9mIHBvaW50IG5vcm1hbCAoPSBwb2ludCBkaXJlY3Rpb24gZnJvbSBvcmlnaW4pXG4gICAgIHdpdGggY2FtZXJhIGRpcmVjdGlvbiBmcm9tIG9yaWdpbiAqKVxuICBsZXQgZCA9XG4gICAgTWF0aC5WZWMzLmRvdCAoTWF0aC5WZWMzLm5vcm1hbGl6ZSB0b19wb2ludCkgKE1hdGguVmVjMy5ub3JtYWxpemUgdG9fY2FtZXJhKVxuICBpblxuICAoKiBWaXNpYmxlIGlmIG9uIHRoZSBzYW1lIGhlbWlzcGhlcmUgYXMgY2FtZXJhLlxuICAgICBUaHJlc2hvbGQgLTAuMiBhbGxvd3Mgc2F0ZWxsaXRlcyBzbGlnaHRseSBwYXN0IHRoZSBob3Jpem9uXG4gICAgICh0aGV5J3JlIGFib3ZlIHRoZSBzdXJmYWNlIHNvIHN0aWxsIGdlb21ldHJpY2FsbHkgdmlzaWJsZSkuICopXG4gIGQgPiAtMC4yXG5cbigqKiBGaWx0ZXIgYSBsaXN0IGtlZXBpbmcgb25seSB2aXNpYmxlIGVsZW1lbnRzLiAqKVxubGV0IGZpbHRlcl92aXNpYmxlIH5jYW1lcmFfcG9zIHBvc2l0aW9ucyA9XG4gIExpc3QuZmlsdGVyIChpc192aXNpYmxlIH5jYW1lcmFfcG9zKSBwb3NpdGlvbnNcblxuKCoqIEZpbHRlciB3aXRoIGluZGljZXMgcHJlc2VydmVkLiBSZXR1cm5zIFsoaW5kZXgsIHBvc2l0aW9uKV0gcGFpcnMuICopXG5sZXQgZmlsdGVyX3Zpc2libGVfaW5kZXhlZCB+Y2FtZXJhX3BvcyBwb3NpdGlvbnMgPVxuICBMaXN0LmZpbHRlcmkgKGZ1biBfaSBwb3MgLT4gaXNfdmlzaWJsZSB+Y2FtZXJhX3BvcyBwb3MpIHBvc2l0aW9uc1xuXG4oKiogezEgTGV2ZWwgb2YgZGV0YWlsfSAqKVxuXG50eXBlIGxvZCA9IEZ1bGwgfCBEb3Rfb25seSB8IEhpZGRlblxuXG4oKiogRGV0ZXJtaW5lIExPRCBmb3IgYSBzYXRlbGxpdGUgYmFzZWQgb24gZGlzdGFuY2UgZnJvbSBjYW1lcmEuXG5cbiAgICAtIFtGdWxsXTogdHJhaWxzICsgZG90ICsgY292ZXJhZ2UgKGRpc3RhbmNlIDwgW25lYXJdKVxuICAgIC0gW0RvdF9vbmx5XToganVzdCB0aGUgcG9zaXRpb24gZG90IChkaXN0YW5jZSA8IFtmYXJdKVxuICAgIC0gW0hpZGRlbl06IG5vdCByZW5kZXJlZCAoZGlzdGFuY2UgPj0gW2Zhcl0gb3IgYmVoaW5kIGhvcml6b24pICopXG5sZXQgbG9kX29mX2Rpc3RhbmNlIH5uZWFyIH5mYXIgZGlzdGFuY2UgPVxuICBpZiBkaXN0YW5jZSA8IG5lYXIgdGhlbiBGdWxsIGVsc2UgaWYgZGlzdGFuY2UgPCBmYXIgdGhlbiBEb3Rfb25seSBlbHNlIEhpZGRlblxuXG4oKiogQ29tcHV0ZSBMT0QgZm9yIGEgc2F0ZWxsaXRlIHBvc2l0aW9uLlxuXG4gICAgW2NhbWVyYV9wb3NdOiBjYW1lcmEgcG9zaXRpb24gaW4gR0wgY29vcmRpbmF0ZXMuIFtwb2ludF06IHNhdGVsbGl0ZSBwb3NpdGlvblxuICAgIGluIEdMIGNvb3JkaW5hdGVzLiBbbmVhcl06IGRpc3RhbmNlIHRocmVzaG9sZCBmb3IgZnVsbCBkZXRhaWwgKGRlZmF1bHQgMi4wKS5cbiAgICBbZmFyXTogZGlzdGFuY2UgdGhyZXNob2xkIGZvciBkb3Qtb25seSAoZGVmYXVsdCA2LjApLiAqKVxubGV0IGxvZCA/KG5lYXIgPSAyLjApID8oZmFyID0gNi4wKSB+Y2FtZXJhX3BvcyBwb2ludCA9XG4gIGlmIG5vdCAoaXNfdmlzaWJsZSB+Y2FtZXJhX3BvcyBwb2ludCkgdGhlbiBIaWRkZW5cbiAgZWxzZVxuICAgIGxldCBkID0gTWF0aC5WZWMzLmxlbmd0aCAoTWF0aC5WZWMzLnN1YiBjYW1lcmFfcG9zIHBvaW50KSBpblxuICAgIGxvZF9vZl9kaXN0YW5jZSB+bmVhciB+ZmFyIGRcblxuKCoqIFBhcnRpdGlvbiBzYXRlbGxpdGVzIGJ5IExPRC4gUmV0dXJucyBbKGZ1bGwsIGRvdF9vbmx5LCBoaWRkZW4pXS4gKilcbmxldCBwYXJ0aXRpb25fYnlfbG9kID8obmVhciA9IDIuMCkgPyhmYXIgPSA2LjApIH5jYW1lcmFfcG9zIHBvc2l0aW9ucyA9XG4gIGxldCBmdWxsID0gcmVmIFtdIGFuZCBkb3RzID0gcmVmIFtdIGFuZCBoaWRkZW4gPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyaVxuICAgIChmdW4gaSBwb3MgLT5cbiAgICAgIG1hdGNoIGxvZCB+bmVhciB+ZmFyIH5jYW1lcmFfcG9zIHBvcyB3aXRoXG4gICAgICB8IEZ1bGwgLT4gZnVsbCA6PSAoaSwgcG9zKSA6OiAhZnVsbFxuICAgICAgfCBEb3Rfb25seSAtPiBkb3RzIDo9IChpLCBwb3MpIDo6ICFkb3RzXG4gICAgICB8IEhpZGRlbiAtPiBoaWRkZW4gOj0gKGksIHBvcykgOjogIWhpZGRlbilcbiAgICBwb3NpdGlvbnM7XG4gIChMaXN0LnJldiAhZnVsbCwgTGlzdC5yZXYgIWRvdHMsIExpc3QucmV2ICFoaWRkZW4pXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfbGVzc3RoYW4iLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiR2xvYmVfTWF0aCIsImlzX3Zpc2libGUiLCJjYW1lcmFfcG9zIiwicG9pbnQiLCJ0b19wb2ludCIsInRvX2NhbWVyYSIsImQiLCJmaWx0ZXJfdmlzaWJsZSIsInBvc2l0aW9ucyIsImxvZCIsIm9wdCIsIm5lYXIiLCJmYXIiLCJkaXN0YW5jZSIsInBhcnRpdGlvbl9ieV9sb2QiLCJmdWxsIiwiZG90cyIsImhpZGRlbiIsImkiLCJwb3MiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxZQUFBQyxXQUFBQyxZQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxXQ3VCaUI7QUFBQSxLQUFBQyxZQUNDO0FBQUEsU0FJK0I7QUFBQSxTQUEvQjtBQUFBLEtBQUFDLElBQWQ7QUFBQSxJQUtGO0FBQUEsR0FBUTtBQUFBLFlBQUFDLGVBQUFMLFlBQUFNO0FBQUFBLElBSTRCO0FBQUEsK0JBQXhCLDhDQUFrQztBQUFBO0FBQUEsWUFBQUMsSUFBQSxHQUFBQyxLQUFBUixZQUFBQztBQUFBQSxRQUFBUSxPQXVCeEMsZUFBQUMsTUFBQTtBQUFBLElBQ0Msb0NBQW9DO0FBQUE7QUFBQSxTQUVoQjtBQUFBLEtBQUFDLFdBQWpCO0FBQUEsSUFWUDtBQUFBO0FBQUEsY0FBa0Msb0NBV1A7QUFBQTtBQUFBLFlBQUFDLGlCQUFBLEdBQUFKLEtBQUFSLFlBQUFNO0FBQUFBO0FBQUFBLEtBQUFHLE9BR1g7QUFBQSxLQUFBQyxNQUFBO0FBQUEsS0FBQUcsT0FDbkI7QUFBQSxLQUFBQyxPQUFBO0FBQUEsS0FBQUMsU0FBQTtBQUFBLElBQ0E7QUFBQTtBQUFBLGVBQUFDLEdBQUFDO0FBQUFBLE9BRVU7QUFBQTtBQUFBLFVBQ0k7QUFBQTtBQUFBLFVBQ0k7QUFBQSxrQkFDRjtBQUFBO0FBQUEsTUFBNkI7QUFBQTtBQUFBO0FBQUEsU0FFWjtBQUFBLFNBQWhCO0FBQUEsSUFBaEIscURBQWM7QUFBQSxHQUFtQztBQUFBLEdENUVwRCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMyMzg4LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZS5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL2xpYi9zcGhlcmUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogUG9pbnQgY2xvdWQgZ2VuZXJhdGlvbiBmb3IgdGhlIGRvdC1jbG91ZCBnbG9iZS5cblxuICAgIFVzZXMgZ29sZGVuIHNwaXJhbCBkaXN0cmlidXRpb24gZm9yIGV2ZW4gc3BhY2luZywgd2l0aCBicmlnaHRuZXNzIGJhc2VkIG9uXG4gICAgcG9seWdvbi10cmFjZWQgY29udGluZW50IG91dGxpbmVzLiBQb2ludHMgbmVhciBjb2FzdGxpbmVzIGdsb3cgYnJpZ2h0ZXN0LFxuICAgIGNyZWF0aW5nIGEgcmVjb2duaXphYmxlIEVhcnRoIHNpbGhvdWV0dGUuICopXG5cbnR5cGUgcG9pbnQgPSB7IHBvcyA6IE1hdGguVmVjMy50OyBicmlnaHRuZXNzIDogZmxvYXQgfVxuXG4oKiAtLS0gUmF5LWNhc3RpbmcgcG9pbnQtaW4tcG9seWdvbiB0ZXN0IC0tLSAqKVxuXG5sZXQgcG9pbnRfaW5fcG9seWdvbiBsYXQgbG9uICh2ZXJ0aWNlcyA6IChmbG9hdCAqIGZsb2F0KSBhcnJheSkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCB2ZXJ0aWNlcyBpblxuICBpZiBuIDwgMyB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaW5zaWRlID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGogPSByZWYgKG4gLSAxKSBpblxuICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgbGV0IGxhdF9pLCBsb25faSA9IHZlcnRpY2VzLihpKSBpblxuICAgICAgbGV0IGxhdF9qLCBsb25faiA9IHZlcnRpY2VzLighaikgaW5cbiAgICAgIGlmIGxhdF9pID4gbGF0IDw+IChsYXRfaiA+IGxhdCkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgeCA9XG4gICAgICAgICAgbG9uX2kgKy4gKChsYXQgLS4gbGF0X2kpICouIChsb25faiAtLiBsb25faSkgLy4gKGxhdF9qIC0uIGxhdF9pKSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbG9uIDwgeCB0aGVuIGluc2lkZSA6PSBub3QgIWluc2lkZVxuICAgICAgZW5kO1xuICAgICAgaiA6PSBpXG4gICAgZG9uZTtcbiAgICAhaW5zaWRlXG5cbigqIC0tLSBTcXVhcmVkIGRpc3RhbmNlIGZyb20gcG9pbnQgdG8gbGluZSBzZWdtZW50IC0tLSAqKVxuXG5sZXQgcG9pbnRfdG9fc2VnX2Rpc3Rfc3EgcHggcHkgYXggYXkgYnggYnkgPVxuICBsZXQgZHggPSBieCAtLiBheCBhbmQgZHkgPSBieSAtLiBheSBpblxuICBsZXQgbGVuX3NxID0gKGR4ICouIGR4KSArLiAoZHkgKi4gZHkpIGluXG4gIGlmIGxlbl9zcSA8IDFlLTEwIHRoZW5cbiAgICBsZXQgZXggPSBweCAtLiBheCBhbmQgZXkgPSBweSAtLiBheSBpblxuICAgIChleCAqLiBleCkgKy4gKGV5ICouIGV5KVxuICBlbHNlXG4gICAgbGV0IHQgPSAoKChweCAtLiBheCkgKi4gZHgpICsuICgocHkgLS4gYXkpICouIGR5KSkgLy4gbGVuX3NxIGluXG4gICAgbGV0IHQgPSBGbG9hdC5tYXggMC4gKEZsb2F0Lm1pbiAxLiB0KSBpblxuICAgIGxldCBjeCA9IGF4ICsuICh0ICouIGR4KSBhbmQgY3kgPSBheSArLiAodCAqLiBkeSkgaW5cbiAgICBsZXQgZXggPSBweCAtLiBjeCBhbmQgZXkgPSBweSAtLiBjeSBpblxuICAgIChleCAqLiBleCkgKy4gKGV5ICouIGV5KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBDb250aW5lbnQgcG9seWdvbnMg4oCUIChsYXRpdHVkZSwgbG9uZ2l0dWRlKSB2ZXJ0ZXggYXJyYXlzICAgICAgICAgICAqKVxuKCogIFRyYWNlZCB0byB+NcKwIGFjY3VyYWN5OyBlbm91Z2ggZm9yIDMway1wb2ludCBjbG91ZCByZWNvZ25pdGlvbi4gICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBhZnJpY2EgPVxuICBbfFxuICAgICgzNS4sIC01Lik7XG4gICAgKDM3LiwgMTAuKTtcbiAgICAoMzIuLCAxMy4pO1xuICAgICgzMS4sIDI1Lik7XG4gICAgKDMwLiwgMzMuKTtcbiAgICAoMjIuLCAzNy4pO1xuICAgICgxMi4sIDQ0Lik7XG4gICAgKDIuLCA1MS4pO1xuICAgICgtMi4sIDQyLik7XG4gICAgKC03LiwgNDAuKTtcbiAgICAoLTExLiwgNDAuKTtcbiAgICAoLTE2LiwgNDEuKTtcbiAgICAoLTI1LiwgMzUuKTtcbiAgICAoLTI3LiwgMzMuKTtcbiAgICAoLTM1LiwgMjYuKTtcbiAgICAoLTM0LiwgMTguKTtcbiAgICAoLTI5LiwgMTcuKTtcbiAgICAoLTIyLiwgMTQuKTtcbiAgICAoLTE3LiwgMTIuKTtcbiAgICAoLTYuLCAxMi4pO1xuICAgICg0LiwgMTAuKTtcbiAgICAoNi4sIDMuKTtcbiAgICAoNS4sIC0zLik7XG4gICAgKDUuLCAtOC4pO1xuICAgICg4LiwgLTE0Lik7XG4gICAgKDEyLiwgLTE3Lik7XG4gICAgKDE1LiwgLTE3Lik7XG4gICAgKDIxLiwgLTE3Lik7XG4gICAgKDI4LiwgLTEzLik7XG4gICAgKDMzLiwgLTguKTtcbiAgfF1cblxubGV0IGV1cmFzaWEgPVxuICBbfFxuICAgICgqIEliZXJpYSDihpIgTlcgRXVyb3BlICopXG4gICAgKDM2LiwgLTEwLik7XG4gICAgKDM5LiwgLTkuKTtcbiAgICAoNDQuLCAtOS4pO1xuICAgICg0NC4sIC0yLik7XG4gICAgKDQ4LiwgLTUuKTtcbiAgICAoNTEuLCAyLik7XG4gICAgKDU0LiwgOC4pO1xuICAgICg1Ny4sIDEwLik7XG4gICAgKCogU2NhbmRpbmF2aWEgKilcbiAgICAoNTguLCA2Lik7XG4gICAgKDYyLiwgNS4pO1xuICAgICg2Ni4sIDE0Lik7XG4gICAgKDcxLiwgMjcuKTtcbiAgICAoKiBBcmN0aWMgUnVzc2lhICopXG4gICAgKDY5LiwgMzQuKTtcbiAgICAoNjYuLCA0NC4pO1xuICAgICg2OS4sIDU4Lik7XG4gICAgKDczLiwgODAuKTtcbiAgICAoNzYuLCA5Ny4pO1xuICAgICg3My4sIDExNS4pO1xuICAgICg3Mi4sIDEzNS4pO1xuICAgICg3MC4sIDE1MC4pO1xuICAgICg2Ni4sIDE3MC4pO1xuICAgICgqIFJ1c3NpYW4gRmFyIEVhc3QgKilcbiAgICAoNjAuLCAxNjUuKTtcbiAgICAoNTYuLCAxNjIuKTtcbiAgICAoNTMuLCAxNTkuKTtcbiAgICAoNTAuLCAxNDAuKTtcbiAgICAoKiBORSBBc2lhICopXG4gICAgKDQ1LiwgMTQyLik7XG4gICAgKDQzLiwgMTM1Lik7XG4gICAgKDM5LiwgMTI1Lik7XG4gICAgKDM1LiwgMTI2Lik7XG4gICAgKDMxLiwgMTIyLik7XG4gICAgKCogU0UgQ2hpbmEgKilcbiAgICAoMjUuLCAxMTkuKTtcbiAgICAoMjIuLCAxMTMuKTtcbiAgICAoMjIuLCAxMDguKTtcbiAgICAoKiBTRSBBc2lhIG1haW5sYW5kICopXG4gICAgKDE2LiwgMTA4Lik7XG4gICAgKDEwLiwgMTA3Lik7XG4gICAgKDguLCAxMDUuKTtcbiAgICAoMS4sIDEwNC4pO1xuICAgICgqIE1hbGF5IFBlbmluc3VsYSDihpIgTXlhbm1hciAqKVxuICAgICg3LiwgMTAwLik7XG4gICAgKDE0LiwgOTkuKTtcbiAgICAoMTYuLCA5Ny4pO1xuICAgICgyMS4sIDkyLik7XG4gICAgKCogSW5kaWEgKilcbiAgICAoMjIuLCA4OC4pO1xuICAgICgxOC4sIDg0Lik7XG4gICAgKDEzLiwgODAuKTtcbiAgICAoOC4sIDc3Lik7XG4gICAgKDEwLiwgNzYuKTtcbiAgICAoMTUuLCA3NC4pO1xuICAgICgyMS4sIDczLik7XG4gICAgKDI0LiwgNjguKTtcbiAgICAoKiBQYWtpc3RhbiDihpIgSXJhbiAqKVxuICAgICgyNS4sIDYyLik7XG4gICAgKDI2LiwgNTcuKTtcbiAgICAoKiBQZXJzaWFuIEd1bGYg4oaSIElyYXEgKilcbiAgICAoMzAuLCA0OC4pO1xuICAgICgzMy4sIDQ0Lik7XG4gICAgKDM3LiwgMzYuKTtcbiAgICAoKiBUdXJrZXkg4oaSIE1lZGl0ZXJyYW5lYW4gKilcbiAgICAoMzcuLCAzMC4pO1xuICAgICgzNi4sIDI4Lik7XG4gICAgKDM4LiwgMjQuKTtcbiAgICAoNDAuLCAyMC4pO1xuICAgICg0Mi4sIDE5Lik7XG4gICAgKCogQWRyaWF0aWMg4oaSIEl0YWx5ICopXG4gICAgKDQ2LiwgMTQuKTtcbiAgICAoNDQuLCAxMy4pO1xuICAgICg0MS4sIDE3Lik7XG4gICAgKDM4LiwgMTYuKTtcbiAgICAoMzcuLCAxNS4pO1xuICAgICgqIFcgTWVkaXRlcnJhbmVhbiAqKVxuICAgICgzOS4sIDkuKTtcbiAgICAoNDMuLCA1Lik7XG4gICAgKDQwLiwgMC4pO1xuICAgICgzNy4sIC0yLik7XG4gICAgKDM2LiwgLTYuKTtcbiAgfF1cblxubGV0IGFyYWJpYSA9XG4gIFt8XG4gICAgKDMwLiwgNDguKTtcbiAgICAoMjkuLCA0OC4pO1xuICAgICgyNi4sIDUwLik7XG4gICAgKDI0LiwgNTQuKTtcbiAgICAoMjIuLCA1OS4pO1xuICAgICgxNy4sIDU1Lik7XG4gICAgKDE0LiwgNDkuKTtcbiAgICAoMTMuLCA0NC4pO1xuICAgICgxNi4sIDQzLik7XG4gICAgKDIwLiwgNDAuKTtcbiAgICAoMjQuLCAzOC4pO1xuICAgICgyOC4sIDM1Lik7XG4gICAgKDMwLiwgMzUuKTtcbiAgICAoMzMuLCAzNi4pO1xuICAgICgzMy4sIDQ0Lik7XG4gIHxdXG5cbmxldCBub3J0aF9hbWVyaWNhID1cbiAgW3xcbiAgICAoKiBBbGFza2Eg4oaSIEFyY3RpYyAqKVxuICAgICg2NS4sIC0xNjguKTtcbiAgICAoNzEuLCAtMTU3Lik7XG4gICAgKDcyLiwgLTEyOC4pO1xuICAgICg3NC4sIC05NS4pO1xuICAgICg3My4sIC04MC4pO1xuICAgICg2OS4sIC02OC4pO1xuICAgICgqIEVhc3QgY29hc3QgKilcbiAgICAoNjAuLCAtNjQuKTtcbiAgICAoNTMuLCAtNTYuKTtcbiAgICAoNDcuLCAtNjAuKTtcbiAgICAoNDQuLCAtNjcuKTtcbiAgICAoNDAuLCAtNzQuKTtcbiAgICAoMzUuLCAtNzYuKTtcbiAgICAoMzAuLCAtODEuKTtcbiAgICAoMjUuLCAtODAuKTtcbiAgICAoKiBHdWxmIOKGkiBNZXhpY28gKilcbiAgICAoMzAuLCAtODYuKTtcbiAgICAoMjkuLCAtOTUuKTtcbiAgICAoMjYuLCAtOTcuKTtcbiAgICAoMjAuLCAtOTcuKTtcbiAgICAoKiBDZW50cmFsIEFtZXJpY2EgKilcbiAgICAoMTcuLCAtOTIuKTtcbiAgICAoMTUuLCAtODcuKTtcbiAgICAoMTAuLCAtODQuKTtcbiAgICAoOC4sIC03OC4pO1xuICAgICgqIFdlc3QgY29hc3QgKilcbiAgICAoMTYuLCAtOTUuKTtcbiAgICAoMTkuLCAtMTA1Lik7XG4gICAgKDIzLiwgLTExMC4pO1xuICAgICgzMC4sIC0xMTUuKTtcbiAgICAoMzIuLCAtMTE3Lik7XG4gICAgKDM4LiwgLTEyMy4pO1xuICAgICg0Ni4sIC0xMjQuKTtcbiAgICAoNDkuLCAtMTI1Lik7XG4gICAgKDU0LiwgLTEzMS4pO1xuICAgICg1OC4sIC0xMzcuKTtcbiAgICAoNjAuLCAtMTQ3Lik7XG4gICAgKDYzLiwgLTE2NS4pO1xuICB8XVxuXG5sZXQgc291dGhfYW1lcmljYSA9XG4gIFt8XG4gICAgKDEyLiwgLTcyLik7XG4gICAgKDEwLiwgLTY3Lik7XG4gICAgKDcuLCAtNjAuKTtcbiAgICAoNS4sIC01Mi4pO1xuICAgICgwLiwgLTUwLik7XG4gICAgKC01LiwgLTM1Lik7XG4gICAgKC0xMi4sIC0zNy4pO1xuICAgICgtMjMuLCAtNDIuKTtcbiAgICAoLTMzLiwgLTUyLik7XG4gICAgKC0zNS4sIC01Ny4pO1xuICAgICgtNDIuLCAtNjQuKTtcbiAgICAoLTUyLiwgLTY4Lik7XG4gICAgKC01NS4sIC02OS4pO1xuICAgICgtNTUuLCAtNjYuKTtcbiAgICAoLTUwLiwgLTczLik7XG4gICAgKC00NS4sIC03NC4pO1xuICAgICgtMzQuLCAtNzIuKTtcbiAgICAoLTIzLiwgLTcwLik7XG4gICAgKC0xNi4sIC03NS4pO1xuICAgICgtNS4sIC04MS4pO1xuICAgICgwLiwgLTgwLik7XG4gICAgKDcuLCAtNzguKTtcbiAgICAoMTEuLCAtNzUuKTtcbiAgfF1cblxubGV0IGF1c3RyYWxpYSA9XG4gIFt8XG4gICAgKC0xMi4sIDEzMS4pO1xuICAgICgtMTEuLCAxMzYuKTtcbiAgICAoLTE0LiwgMTQyLik7XG4gICAgKC0xOS4sIDE0Ni4pO1xuICAgICgtMjQuLCAxNTMuKTtcbiAgICAoLTI4LiwgMTUzLik7XG4gICAgKC0zNC4sIDE1MS4pO1xuICAgICgtMzguLCAxNDUuKTtcbiAgICAoLTM2LiwgMTM3Lik7XG4gICAgKC0zNC4sIDEzNi4pO1xuICAgICgtMzIuLCAxMzMuKTtcbiAgICAoLTMyLiwgMTE1Lik7XG4gICAgKC0yMi4sIDExNC4pO1xuICAgICgtMTQuLCAxMjcuKTtcbiAgfF1cblxubGV0IGdyZWVubGFuZCA9XG4gIFt8XG4gICAgKDYwLiwgLTQzLik7XG4gICAgKDYzLiwgLTQwLik7XG4gICAgKDY2LiwgLTM2Lik7XG4gICAgKDcyLiwgLTIyLik7XG4gICAgKDc4LiwgLTE4Lik7XG4gICAgKDg0LiwgLTMwLik7XG4gICAgKDgzLiwgLTU4Lik7XG4gICAgKDc4LiwgLTcyLik7XG4gICAgKDc2LiwgLTY4Lik7XG4gICAgKDcwLiwgLTU1Lik7XG4gICAgKDY0LiwgLTUwLik7XG4gIHxdXG5cbmxldCB1ayA9XG4gIFt8XG4gICAgKDUwLiwgLTUuKTtcbiAgICAoNTEuLCAxLik7XG4gICAgKDUzLiwgMC4pO1xuICAgICg1NS4sIC0yLik7XG4gICAgKDU4LiwgLTMuKTtcbiAgICAoNTkuLCAtNS4pO1xuICAgICg1Ny4sIC03Lik7XG4gICAgKDU1LiwgLTYuKTtcbiAgICAoNTQuLCAtMy4pO1xuICAgICg1Mi4sIC01Lik7XG4gIHxdXG5cbmxldCBpcmVsYW5kID1cbiAgW3xcbiAgICAoNTIuLCAtNi4pO1xuICAgICg1My4sIC02Lik7XG4gICAgKDU1LiwgLTYuKTtcbiAgICAoNTUuLCAtOC4pO1xuICAgICg1NC4sIC0xMC4pO1xuICAgICg1Mi4sIC0xMC4pO1xuICAgICg1MS4sIC05Lik7XG4gIHxdXG5cbmxldCBpY2VsYW5kID0gW3wgKDY0LiwgLTIyLik7ICg2NC4sIC0xNC4pOyAoNjYuLCAtMTQuKTsgKDY2LiwgLTI0LikgfF1cblxubGV0IGphcGFuID1cbiAgW3xcbiAgICAoMzEuLCAxMzEuKTtcbiAgICAoMzMuLCAxMzAuKTtcbiAgICAoMzUuLCAxMzMuKTtcbiAgICAoMzYuLCAxMzcuKTtcbiAgICAoMzguLCAxMzkuKTtcbiAgICAoNDAuLCAxNDAuKTtcbiAgICAoNDIuLCAxNDEuKTtcbiAgICAoNDQuLCAxNDUuKTtcbiAgICAoNDUuLCAxNDIuKTtcbiAgICAoNDMuLCAxNDEuKTtcbiAgICAoMzguLCAxNDEuKTtcbiAgICAoMzUuLCAxNDAuKTtcbiAgICAoMzQuLCAxMzUuKTtcbiAgICAoMzMuLCAxMzEuKTtcbiAgfF1cblxubGV0IG1hZGFnYXNjYXIgPVxuICBbfFxuICAgICgtMTIuLCA0OS4pO1xuICAgICgtMTYuLCA1MC4pO1xuICAgICgtMjIuLCA0OC4pO1xuICAgICgtMjYuLCA0Ny4pO1xuICAgICgtMjQuLCA0NC4pO1xuICAgICgtMTYuLCA0NC4pO1xuICAgICgtMTMuLCA0OC4pO1xuICB8XVxuXG5sZXQgc3JpX2xhbmthID0gW3wgKDEwLiwgODAuKTsgKDguLCA4Mi4pOyAoNi4sIDgxLik7ICg3LiwgODAuKTsgKDkuLCA4MC4pIHxdXG5cbmxldCBzdW1hdHJhID1cbiAgW3xcbiAgICAoNS4sIDk1Lik7XG4gICAgKDIuLCA5OS4pO1xuICAgICgtMi4sIDEwNC4pO1xuICAgICgtNS4sIDEwNS4pO1xuICAgICgtNi4sIDEwNC4pO1xuICAgICgtMy4sIDEwMC4pO1xuICAgICgxLiwgOTcuKTtcbiAgfF1cblxubGV0IGJvcm5lbyA9XG4gIFt8XG4gICAgKDcuLCAxMTcuKTtcbiAgICAoNS4sIDExOS4pO1xuICAgICgyLiwgMTE4Lik7XG4gICAgKC0xLiwgMTE3Lik7XG4gICAgKC00LiwgMTE1Lik7XG4gICAgKC0zLiwgMTExLik7XG4gICAgKDAuLCAxMDkuKTtcbiAgICAoMy4sIDExMC4pO1xuICB8XVxuXG5sZXQgamF2YSA9XG4gIFt8XG4gICAgKC02LiwgMTA2Lik7ICgtNy4sIDExMC4pOyAoLTguLCAxMTQuKTsgKC04LiwgMTE1Lik7ICgtOC4sIDExMC4pOyAoLTcuLCAxMDYuKTtcbiAgfF1cblxubGV0IHBhcHVhID1cbiAgW3xcbiAgICAoLTEuLCAxMzMuKTtcbiAgICAoLTIuLCAxMzguKTtcbiAgICAoLTQuLCAxNDEuKTtcbiAgICAoLTguLCAxNDEuKTtcbiAgICAoLTkuLCAxMzguKTtcbiAgICAoLTguLCAxMzQuKTtcbiAgICAoLTUuLCAxMzMuKTtcbiAgfF1cblxubGV0IHBoaWxpcHBpbmVzID1cbiAgW3xcbiAgICAoMTguLCAxMjEuKTtcbiAgICAoMTUuLCAxMjIuKTtcbiAgICAoMTIuLCAxMjQuKTtcbiAgICAoOC4sIDEyNi4pO1xuICAgICg3LiwgMTI0Lik7XG4gICAgKDEwLiwgMTIwLik7XG4gICAgKDE0LiwgMTIwLik7XG4gIHxdXG5cbmxldCBuZXdfemVhbGFuZF9uID1cbiAgW3xcbiAgICAoLTM1LiwgMTczLik7XG4gICAgKC0zNy4sIDE3Ni4pO1xuICAgICgtMzkuLCAxNzguKTtcbiAgICAoLTQyLiwgMTc1Lik7XG4gICAgKC0zOS4sIDE3NC4pO1xuICAgICgtMzcuLCAxNzQuKTtcbiAgfF1cblxubGV0IG5ld196ZWFsYW5kX3MgPVxuICBbfFxuICAgICgtNDIuLCAxNzIuKTtcbiAgICAoLTQ0LiwgMTcxLik7XG4gICAgKC00Ni4sIDE2OC4pO1xuICAgICgtNDYuLCAxNjYuKTtcbiAgICAoLTQ0LiwgMTY4Lik7XG4gICAgKC00Mi4sIDE3MC4pO1xuICB8XVxuXG5sZXQgYWxsX3BvbHlnb25zID1cbiAgW3xcbiAgICBhZnJpY2E7XG4gICAgZXVyYXNpYTtcbiAgICBhcmFiaWE7XG4gICAgbm9ydGhfYW1lcmljYTtcbiAgICBzb3V0aF9hbWVyaWNhO1xuICAgIGF1c3RyYWxpYTtcbiAgICBncmVlbmxhbmQ7XG4gICAgdWs7XG4gICAgaXJlbGFuZDtcbiAgICBpY2VsYW5kO1xuICAgIGphcGFuO1xuICAgIG1hZGFnYXNjYXI7XG4gICAgc3JpX2xhbmthO1xuICAgIHN1bWF0cmE7XG4gICAgYm9ybmVvO1xuICAgIGphdmE7XG4gICAgcGFwdWE7XG4gICAgcGhpbGlwcGluZXM7XG4gICAgbmV3X3plYWxhbmRfbjtcbiAgICBuZXdfemVhbGFuZF9zO1xuICB8XVxuXG4oKiAtLS0gTGFuZCBkZXRlY3Rpb24gYW5kIGNvYXN0IHByb3hpbWl0eSAtLS0gKilcblxubGV0IGlzX2xhbmQgbGF0IGxvbiA9XG4gIGxhdCA8IC02NS4gKCogQW50YXJjdGljYSAqKVxuICB8fCBBcnJheS5leGlzdHMgKGZ1biBwb2x5IC0+IHBvaW50X2luX3BvbHlnb24gbGF0IGxvbiBwb2x5KSBhbGxfcG9seWdvbnNcblxubGV0IG1pbl9jb2FzdF9kaXN0X3NxIGxhdCBsb24gPVxuICBsZXQgYmVzdCA9IHJlZiBpbmZpbml0eSBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBwb2x5Z29uIC0+XG4gICAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwb2x5Z29uIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbGV0IGxhdF9pLCBsb25faSA9IHBvbHlnb24uKGkpIGluXG4gICAgICAgIGxldCBsYXRfaiwgbG9uX2ogPSBwb2x5Z29uLigoaSArIDEpIG1vZCBuKSBpblxuICAgICAgICBsZXQgZCA9IHBvaW50X3RvX3NlZ19kaXN0X3NxIGxhdCBsb24gbGF0X2kgbG9uX2kgbGF0X2ogbG9uX2ogaW5cbiAgICAgICAgaWYgZCA8ICFiZXN0IHRoZW4gYmVzdCA6PSBkXG4gICAgICBkb25lKVxuICAgIGFsbF9wb2x5Z29ucztcbiAgIWJlc3RcblxuKCogLS0tIFBvaW50IGNsb3VkIGdlbmVyYXRpb24gLS0tICopXG5cbmxldCBnZW5lcmF0ZV9jbG91ZCB+bnVtX3BvaW50cyA9XG4gIGxldCBwaSA9IEZsb2F0LnBpIGluXG4gIGxldCBnb2xkZW5fcmF0aW8gPSAoMS4gKy4gc3FydCA1LikgLy4gMi4gaW5cbiAgQXJyYXkuaW5pdCBudW1fcG9pbnRzIChmdW4gaSAtPlxuICAgICAgbGV0IGZpID0gRmxvYXQub2ZfaW50IGkgaW5cbiAgICAgIGxldCBuID0gRmxvYXQub2ZfaW50IG51bV9wb2ludHMgaW5cbiAgICAgIGxldCB0aGV0YSA9IGFjb3MgKDEuIC0uICgyLiAqLiAoZmkgKy4gMC41KSAvLiBuKSkgaW5cbiAgICAgIGxldCBwaGkgPSAyLiAqLiBwaSAqLiBmaSAvLiBnb2xkZW5fcmF0aW8gaW5cbiAgICAgIGxldCB4ID0gc2luIHRoZXRhICouIGNvcyBwaGkgaW5cbiAgICAgIGxldCB5ID0gY29zIHRoZXRhIGluXG4gICAgICBsZXQgeiA9IHNpbiB0aGV0YSAqLiBzaW4gcGhpIGluXG4gICAgICBsZXQgbGF0ID0gOTAuIC0uICh0aGV0YSAqLiAxODAuIC8uIHBpKSBpblxuICAgICAgbGV0IGxvbl9yYXcgPSBwaGkgKi4gMTgwLiAvLiBwaSBpblxuICAgICAgbGV0IGxvbiA9IEZsb2F0LnJlbSBsb25fcmF3IDM2MC4gaW5cbiAgICAgIGxldCBsb24gPSBpZiBsb24gPiAxODAuIHRoZW4gbG9uIC0uIDM2MC4gZWxzZSBsb24gaW5cbiAgICAgIGxldCBvbl9sYW5kID0gaXNfbGFuZCBsYXQgbG9uIGluXG4gICAgICBsZXQgY29hc3RfZCA9IHNxcnQgKG1pbl9jb2FzdF9kaXN0X3NxIGxhdCBsb24pIGluXG4gICAgICBsZXQgY29hc3RfZ2xvdyA9IEZsb2F0Lm1heCAwLiAoMS4gLS4gKGNvYXN0X2QgLy4gOC4pKSBpblxuICAgICAgbGV0IGJyaWdodG5lc3MgPVxuICAgICAgICBpZiBvbl9sYW5kIHRoZW4gMC41NSArLiAoMC40NSAqLiBjb2FzdF9nbG93KVxuICAgICAgICBlbHNlIDAuMTAgKy4gKDAuMjUgKi4gY29hc3RfZ2xvdylcbiAgICAgIGluXG4gICAgICB7IHBvcyA9IE1hdGguVmVjMy5jcmVhdGUgeCB5IHo7IGJyaWdodG5lc3MgfSlcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfb2JqX2R1cCIsImdsb2JhbF9kYXRhIiwiU3RkbGliX0Zsb2F0IiwiR2xvYmVfTWF0aCIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYiIsImFmcmljYSIsImV1cmFzaWEiLCJhcmFiaWEiLCJub3J0aF9hbWVyaWNhIiwic291dGhfYW1lcmljYSIsImF1c3RyYWxpYSIsImdyZWVubGFuZCIsInVrIiwiaXJlbGFuZCIsImphcGFuIiwibWFkYWdhc2NhciIsInNyaV9sYW5rYSIsInN1bWF0cmEiLCJib3JuZW8iLCJqYXZhIiwicGFwdWEiLCJwaGlsaXBwaW5lcyIsIm5ld196ZWFsYW5kX24iLCJuZXdfemVhbGFuZF9zIiwiYWxsX3BvbHlnb25zIiwiaXNfbGFuZCIsImxhdCIsImxvbiIsInZlcnRpY2VzIiwibiIsImluc2lkZSIsImoiLCJpIiwibWF0Y2giLCJsb25faSIsImxhdF9pIiwibG9uX2oiLCJsYXRfaiIsIngiLCJtaW5fY29hc3RfZGlzdF9zcSIsImJlc3QiLCJwb2x5Z29uIiwiZHgiLCJkeSIsImxlbl9zcSIsImV4IiwiZXkiLCJkIiwidCIsImN4IiwiY3kiLCJnZW5lcmF0ZV9jbG91ZCIsIm51bV9wb2ludHMiLCJwaSIsImZpIiwidGhldGEiLCJwaGkiLCJ5IiwieiIsImxvbl9yYXciLCJvbl9sYW5kIiwiY29hc3RfZCIsImNvYXN0X2dsb3ciLCJicmlnaHRuZXNzIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDO0FBQUFBLE1BQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FB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QUMsVUFDQSxVQUFLO0FBQUEsZUFBQUMsYUFDRjtBQUFBLGVBQUFDO0FBQUFBLGlCQUNqQjtBQUFBLGNBSVEsNERBQXNCO0FBQUEsYUFBYyxFQUFDO0FBQUE7QUFBQSxHRDdlbkQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMjg4MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmUub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvY29sb3IubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogQ29sb3IgdXRpbGl0aWVzIGZvciBnbG9iZSByZW5kZXJpbmcuICopXG5cbnR5cGUgdCA9IGZsb2F0ICogZmxvYXQgKiBmbG9hdFxuXG5sZXQgcmdiIHIgZyBiID0gKHIsIGcsIGIpXG5cbigqKiBHZW5lcmF0ZSBhIGNvbG9yIGZyb20gYSBodWUgdmFsdWUgaW4gWzAsIDFdLiBNYXBzIHRocm91Z2ggYSBjeWFuLW9yYW5nZS1waW5rXG4gICAgcGFsZXR0ZSBzdWl0YWJsZSBmb3IgZGFyayBiYWNrZ3JvdW5kcy4gKilcbmxldCBvZl9odWUgaCA9ICgwLjMgKy4gKDAuNyAqLiBoKSwgMC44IC0uICgwLjMgKi4gaCksIDEuMCAtLiAoMC41ICouIGgpKVxuXG4oKiogR2VuZXJhdGUgW25dIGRpc3RpbmN0IGNvbG9ycyBldmVubHkgc3BhY2VkIGluIGh1ZS4gKilcbmxldCBwYWxldHRlIG4gPVxuICBMaXN0LmluaXQgbiAoZnVuIGkgLT4gb2ZfaHVlIChGbG9hdC5vZl9pbnQgaSAvLiBGbG9hdC5vZl9pbnQgKG1heCAxIG4pKSlcblxuKCoqIE1hcCBhIHByb2JhYmlsaXR5IHZhbHVlIHRvIGdyZWVuIOKGkiB5ZWxsb3cg4oaSIHJlZC4gKilcbmxldCBvZl9wcm9iYWJpbGl0eSBwID1cbiAgaWYgcCA8IDFlLTcgdGhlbiAoMC4xLCAwLjksIDAuMilcbiAgZWxzZSBpZiBwIDwgMWUtNSB0aGVuXG4gICAgbGV0IHQgPSAobG9nMTAgcCArLiA3LikgLy4gMi4gaW5cbiAgICAoMC4xICsuICgwLjkgKi4gdCksIDAuOSAtLiAoMC40ICouIHQpLCAwLjIgLS4gKDAuMSAqLiB0KSlcbiAgZWxzZSAoMS4wLCAwLjIsIDAuMSlcblxubGV0IGdob3N0ID0gKDAuMTUsIDAuMiwgMC4yNSlcbmxldCB3aGl0ZSA9ICgxLiwgMS4sIDEuKVxubGV0IGN5YW4gPSAoMC4zLCAwLjg1LCAxLjApXG5sZXQgZ3JpZF9kZWZhdWx0ID0gKDAuMTUsIDAuMzUsIDAuNSlcbmxldCBwcCBwcGYgKHIsIGcsIGIpID0gRm10LnBmIHBwZiBcIiglLjJmLCAlLjJmLCAlLjJmKVwiIHIgZyBiXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDMiLCJmIiwiYTAiLCJhMSIsImEyIiwiZ2xvYmFsX2RhdGEiLCJGbXQiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsInJnYiIsInIiLCJnIiwiYiIsIm9mX2h1ZSIsImgiLCJwYWxldHRlIiwibiIsImkiLCJvZl9wcm9iYWJpbGl0eSIsInAiLCJ0IiwiY3N0IiwicHAiLCJwcGYiLCJwYXJhbSJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUMsR0FBQUMsR0NTZ0Isb0JBQVM7QUFBQSxZQUFBQyxPQUFBQyxHQUlRLHVEQUF1QztBQUFBLFlBQUFDLFFBQUFDO0FBQUFBLElBSXRFO0FBQUE7QUFBQTtBQUFBLHNCQUFBQyxHQUE2RCxPQUFVLFdBQVYsNEJBQVUsR0FBQztBQUFBO0FBQUEsV0RqQjFFO0FBQUEsWUFBQUMsZUFBQUM7QUFBQUEsSUNxQkUsYUFBaUI7QUFBQSxJQUNaLGlCQUdBO0FBQUEsUUFBQUMsSUFGTTtBQUFBLElBQ1M7QUFBQSxHQUNBO0FBQUE7QUFBQSxJQUFBQyxNRHpCdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLFFBQUFaLElDK0JPLFVBQUFELElBQUEsVUFBQUQsSUFBQTtBQUFBLElBQWdCLHFEQUFxQztBQUFBO0FBQUEsR0QvQjVEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI5NTIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2dsX2Nvb3JkLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMIGNvb3JkaW5hdGUgbWFwcGluZyBmb3IgRWFydGgtY2VudGVyZWQgZnJhbWVzLlxuXG4gICAgTWFwcyBhc3Ryb2R5bmFtaWNzIGNvbnZlbnRpb25zIChYLFkgPSBlcXVhdG9yaWFsLCBaID0gbm9ydGggcG9sZSkgdG8gV2ViR0xcbiAgICBjb252ZW50aW9ucyAoWCxaID0gZXF1YXRvcmlhbCwgWSA9IHVwL25vcnRoIHBvbGUpLCBzY2FsZWQgc28gRWFydGggcmFkaXVzID1cbiAgICAxLjAuICopXG5cbmxldCBzY2FsZSA9IDEuIC8uIENvb3JkaW5hdGUuZWFydGhfcmFkaXVzXG5sZXQgb2ZfYXN0cm8geCB5IHogPSBNYXRoLlZlYzMuY3JlYXRlICh4ICouIHNjYWxlKSAoeiAqLiBzY2FsZSkgKHkgKi4gc2NhbGUpXG5sZXQgb2ZfY29vcmRpbmF0ZSAodiA6IENvb3JkaW5hdGUudmVjMykgPSBvZl9hc3RybyB2Lnggdi55IHYuelxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJnbG9iYWxfZGF0YSIsIkdsb2JlX01hdGgiLCJDb29yZGluYXRlIiwic2NhbGUiLCJvZl9hc3RybyIsIngiLCJ5IiwieiIsIm9mX2Nvb3JkaW5hdGUiLCJ2Il0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFFDV1k7QUFBQSxZQUFBQyxTQUFBQyxHQUFBQyxHQUFBQztBQUFBQSxJQUNzQyxtRUFBMEI7QUFBQTtBQUFBLFlBQUFDLGNBQUFDLEdBQ2xDLGlDQUFvQjtBQUFBLEdBRnJCO0FBQUE7QUFBQTtBQUFBLEVEWHpDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzI5NzIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3NhdGVsbGl0ZS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjUgVGhvbWFzIEdhemFnbmFpcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbigqKiBTYXRlbGxpdGUgc3RhdGUgbWFuYWdlbWVudCBmb3IgZ2xvYmUgcmVuZGVyaW5nLlxuXG4gICAgQ2FjaGVzIHByZWNvbXB1dGVkIEtlcGxlciBlbGVtZW50cywgZ2VuZXJhdGVzIGdob3N0IG9yYml0cyBhbmQgcGVyLWZyYW1lXG4gICAgdHJhaWwgcG9zaXRpb25zLiBQdXJlIE9DYW1sLCBubyBXZWJHTCBkZXBlbmRlbmN5LiAqKVxuXG50eXBlIHQgPSB7XG4gIGVsZW1lbnRzIDogS2VwbGVyLkFuYWx5dGljLmVsZW1lbnRzO1xuICBwb3MgOiBLZXBsZXIuVmVjMy50O1xuICB2ZWwgOiBLZXBsZXIuVmVjMy50O1xuICBjb2xvciA6IENvbG9yLnQ7XG4gIHBlcmlvZCA6IGZsb2F0O1xuICBlcG9jaF91bml4IDogZmxvYXQ7XG4gIGdob3N0X3BvaW50cyA6IE1hdGguVmVjMy50IG9wdGlvbiBhcnJheTtcbiAgdHJhaWxfbGVuZ3RoIDogaW50O1xufVxuXG5sZXQgdiB+cG9zIH52ZWwgfmNvbG9yID8oZXBvY2hfdW5peCA9IDAuKSA/KHRyYWlsX2xlbmd0aCA9IDUwKSAoKSA9XG4gIGxldCBlbGVtZW50cyA9IEtlcGxlci5BbmFseXRpYy5wcmVjb21wdXRlIH5wb3MgfnZlbCBpblxuICBsZXQgcGVyaW9kID0gS2VwbGVyLkFuYWx5dGljLnBlcmlvZCBlbGVtZW50cyBpblxuICBsZXQgZ2hvc3RfcG9pbnRzID1cbiAgICBsZXQgbiA9IDEyMCBpblxuICAgICgqIFVzZSBwZXJpb2QgZm9yIGJvdW5kIG9yYml0cywgNTQwMHMgYXJjIGZvciB1bmJvdW5kICopXG4gICAgbGV0IGR1ciA9IGlmIEZsb2F0LmlzX2Zpbml0ZSBwZXJpb2QgJiYgcGVyaW9kID4gMC4gdGhlbiBwZXJpb2QgZWxzZSA1NDAwLiBpblxuICAgIGxldCBmYWxsYmFjayA9IEdsX2Nvb3JkLm9mX2FzdHJvIHBvcy54IHBvcy55IHBvcy56IGluXG4gICAgQXJyYXkuaW5pdCBuIChmdW4gaSAtPlxuICAgICAgICBsZXQgdCA9IEZsb2F0Lm9mX2ludCBpICouIGR1ciAvLiBGbG9hdC5vZl9pbnQgbiBpblxuICAgICAgICBsZXQgcCA9IEtlcGxlci5BbmFseXRpYy5hdF9wcmVjb21wdXRlZCBlbGVtZW50cyB+ZHQ6dCBpblxuICAgICAgICBpZiBGbG9hdC5pc19maW5pdGUgcC54ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnkgJiYgRmxvYXQuaXNfZmluaXRlIHAuelxuICAgICAgICB0aGVuIFNvbWUgKEdsX2Nvb3JkLm9mX2FzdHJvIHAueCBwLnkgcC56KVxuICAgICAgICBlbHNlIFNvbWUgZmFsbGJhY2spXG4gIGluXG4gIHsgZWxlbWVudHM7IHBvczsgdmVsOyBjb2xvcjsgcGVyaW9kOyBlcG9jaF91bml4OyBnaG9zdF9wb2ludHM7IHRyYWlsX2xlbmd0aCB9XG5cbmxldCBjb2xvciB0ID0gdC5jb2xvclxubGV0IHBlcmlvZCB0ID0gdC5wZXJpb2RcbmxldCBlcG9jaF91bml4IHQgPSB0LmVwb2NoX3VuaXhcbmxldCBnaG9zdF9wb2ludHMgdCA9IHQuZ2hvc3RfcG9pbnRzXG5sZXQgZXBvY2hfcG9zaXRpb24gdCA9IEdsX2Nvb3JkLm9mX2FzdHJvIHQucG9zLnggdC5wb3MueSB0LnBvcy56XG5cbmxldCBwb3NpdGlvbl9hdCB0IH5kdCA9XG4gIGxldCBwID0gS2VwbGVyLkFuYWx5dGljLmF0X3ByZWNvbXB1dGVkIHQuZWxlbWVudHMgfmR0IGluXG4gIGlmIEZsb2F0LmlzX2Zpbml0ZSBwLnggJiYgRmxvYXQuaXNfZmluaXRlIHAueSAmJiBGbG9hdC5pc19maW5pdGUgcC56IHRoZW5cbiAgICBHbF9jb29yZC5vZl9hc3RybyBwLnggcC55IHAuelxuICBlbHNlIGVwb2NoX3Bvc2l0aW9uIHRcblxubGV0IHRyYWlsX3Bvc2l0aW9ucyB0IH5kdCA9XG4gIGxldCBuID0gdC50cmFpbF9sZW5ndGggaW5cbiAgKCogRm9yIHVuYm91bmQgb3JiaXRzLCB1c2UgMzBzIHN0ZXBzOyBmb3IgYm91bmQsIDEvMTUwIG9mIHBlcmlvZCAqKVxuICBsZXQgc3RlcCA9XG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHQucGVyaW9kICYmIHQucGVyaW9kID4gMC4gdGhlblxuICAgICAgdC5wZXJpb2QgLy4gRmxvYXQub2ZfaW50IChuICogMylcbiAgICBlbHNlIDMwLlxuICBpblxuICBsZXQgZmFsbGJhY2sgPSBlcG9jaF9wb3NpdGlvbiB0IGluXG4gIEFycmF5LmluaXQgbiAoZnVuIGkgLT5cbiAgICAgIGxldCB0X29mZnNldCA9IGR0IC0uIChGbG9hdC5vZl9pbnQgKG4gLSAxIC0gaSkgKi4gc3RlcCkgaW5cbiAgICAgIGxldCBwID0gS2VwbGVyLkFuYWx5dGljLmF0X3ByZWNvbXB1dGVkIHQuZWxlbWVudHMgfmR0OnRfb2Zmc2V0IGluXG4gICAgICBpZiBGbG9hdC5pc19maW5pdGUgcC54ICYmIEZsb2F0LmlzX2Zpbml0ZSBwLnkgJiYgRmxvYXQuaXNfZmluaXRlIHAueiB0aGVuXG4gICAgICAgIFNvbWUgKEdsX2Nvb3JkLm9mX2FzdHJvIHAueCBwLnkgcC56KVxuICAgICAgZWxzZSBTb21lIGZhbGxiYWNrKVxuXG5sZXQgZG90IHQgfmR0ID1cbiAgbGV0IHBvcyA9IHBvc2l0aW9uX2F0IHQgfmR0IGluXG4gIChwb3MsIHQuY29sb3IpXG5cbmxldCBwcCBwcGYgdCA9XG4gIEZtdC5wZiBwcGYgXCJzYXQocGVyaW9kPSUuMGZzIGU9JS40ZiBjb2xvcj0lYSlcIiB0LnBlcmlvZFxuICAgIChLZXBsZXIuQW5hbHl0aWMuZWNjZW50cmljaXR5IHQuZWxlbWVudHMpXG4gICAgQ29sb3IucHAgdC5jb2xvclxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw0IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9Db2xvciIsIktlcGxlcl9BbmFseXRpYyIsIkZtdCIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX0dsX2Nvb3JkIiwiU3RkbGliX0FycmF5IiwidiIsInBvcyIsInZlbCIsImNvbG9yIiwib3B0IiwicGFyYW0iLCJlcG9jaF91bml4IiwidHJhaWxfbGVuZ3RoIiwiZWxlbWVudHMiLCJwZXJpb2QiLCJuIiwiZHVyIiwiZmFsbGJhY2siLCJnaG9zdF9wb2ludHMiLCJpIiwidCIsInAiLCJlcG9jaF9wb3NpdGlvbiIsInBvc2l0aW9uX2F0IiwiZHQiLCJ0cmFpbF9wb3NpdGlvbnMiLCJzdGVwIiwidF9vZmZzZXQiLCJkb3QiLCJwcCIsInBwZiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxFQUFBQyxLQUFBQyxLQUFBQyxPQUFBLEdBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLGFDcUJNO0FBQUEsS0FBQUMsZUFBQTtBQUFBLEtBQUFDLFdBQ1c7QUFBQSxLQUFBQyxTQUNGO0FBQUE7QUFBQTtBQUFBLFNBQUFDLElBSUU7QUFBQSxnRUFBQUMsTUFBc0I7QUFBQSxTQUFBQSxNQUFpQztBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUNyRDtBQUFBLEtBQUFDO0FBQUFBLE9BQ2Y7QUFBQTtBQUFBO0FBQUEsa0JBQUFDO0FBQUFBO0FBQUFBLFdBQUFDLElBQ1k7QUFBQSxXQUFBQyxJQUNBO0FBQUEsVUFDTDtBQUFBO0FBQUE7QUFBQSxhQUF1QjtBQUFBLGdCQUF1QjtBQUFBLFdBQ3ZDLDBEQUErQjtBQUFBLFVBQ3BDO0FBQUEsU0FBYTtBQUFBLElBRXhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBQTZFO0FBQUEsWUFBQWIsTUFBQVksR0FFakUsWUFBTztBQUFBLFlBQUFOLE9BQUFNLEdBQ04sWUFBUTtBQUFBLFlBQUFULFdBQUFTLEdBQ0osWUFBWTtBQUFBLFlBQUFGLGFBQUFFLEdBQ1YsWUFBYztBQUFBLFlBQUFFLGVBQUFGO0FBQUFBLElBQ1osOERBQXlDO0FBQUE7QUFBQSxZQUFBRyxZQUFBSCxHQUFBSTtBQUFBQSxRQUFBSCxJQUd0RDtBQUFBLElBQ0w7QUFBQTtBQUFBO0FBQUEsT0FBdUIscUNBQXVCO0FBQUEsS0FDL0MscURBQ21CO0FBQUEsSUFBaEIsd0JBQWdCO0FBQUE7QUFBQSxZQUFBSSxnQkFBQUwsR0FBQUk7QUFBQUEsUUFBQVQsSUFHckI7QUFBQTtBQUFBO0FBQUEsS0FHSyx1REFBQVcsT0FDK0I7QUFBQSxTQUFBQSxPQUM3QjtBQUFBO0FBQUEsUUFBQVQsV0FFUTtBQUFBLElBQ2Y7QUFBQTtBQUFBO0FBQUEsc0JBQUFFO0FBQUFBO0FBQUFBLGVBQUFRLFdBQ21CO0FBQUEsZUFBQU4sSUFDUDtBQUFBLGNBQ0w7QUFBQTtBQUFBO0FBQUEsaUJBQXVCO0FBQUEsb0JBQXVCO0FBQUEsZUFDMUMsMERBQStCO0FBQUEsY0FDakM7QUFBQSxhQUFhLEVBQUM7QUFBQTtBQUFBLFlBQUFPLElBQUFSLEdBQUFJLFFBQUFsQixNQUdiLG9CQUNWLHNCQUFjO0FBQUE7QUFBQTtBQUFBLE1EcEVoQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQXVCLEdBQUFDLEtBQUFWO0FBQUFBO0FBQUFBLEtBQUEsSUN3RUk7QUFBQTtBQUFBO0FBQUEsU0FBeUM7QUFBQSw0REFDekI7QUFBQTtBQUFBLEdEekVwQiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjMzMTExLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5nbG9iZS5vYmpzL2pzb28vZGVmYXVsdC9nbG9iZS5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL3dvcmtzcGFjZV9yb290L29jYW1sLWdsb2JlL2xpYi9yYXljYXN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFJheWNhc3RpbmcgZm9yIDNEIHBpY2tpbmcgb24gdGhlIGdsb2JlLiAqKVxuXG50eXBlIHJheSA9IHsgb3JpZ2luIDogTWF0aC5WZWMzLnQ7IGRpcmVjdGlvbiA6IE1hdGguVmVjMy50IH1cbnR5cGUgaGl0ID0geyBkaXN0YW5jZSA6IGZsb2F0OyBwb3NpdGlvbiA6IE1hdGguVmVjMy50OyBpbmRleCA6IGludCB9XG5cbigqKiB7MSBNYXRyaXggaW52ZXJzaW9ufVxuXG4gICAgNHg0IGludmVyc2UgdmlhIGNvZmFjdG9yIGV4cGFuc2lvbi4gRGVjb21wb3NlZCB1c2luZyBhIDN4MyBkZXRlcm1pbmFudFxuICAgIGhlbHBlciBzbyBlYWNoIGNvZmFjdG9yIGlzIG9uZSByZWFkYWJsZSBsaW5lLiAqKVxuXG5sZXQgZGV0MyBhIGIgYyBkIGUgZiBnIGggaSA9XG4gIChhICouIGUgKi4gaSlcbiAgKy4gKGIgKi4gZiAqLiBnKVxuICArLiAoYyAqLiBkICouIGgpXG4gIC0uIChjICouIGUgKi4gZylcbiAgLS4gKGIgKi4gZCAqLiBpKVxuICAtLiAoYSAqLiBmICouIGgpXG5cbmxldCBjb2ZhY3RvcnMgbSBpbnYgPVxuICBpbnYuKDApIDwtIGRldDMgbS4oNSkgbS4oOSkgbS4oMTMpIG0uKDYpIG0uKDEwKSBtLigxNCkgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig0KSA8LSAtLmRldDMgbS4oNCkgbS4oOCkgbS4oMTIpIG0uKDYpIG0uKDEwKSBtLigxNCkgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig4KSA8LSBkZXQzIG0uKDQpIG0uKDgpIG0uKDEyKSBtLig1KSBtLig5KSBtLigxMykgbS4oNykgbS4oMTEpIG0uKDE1KTtcbiAgaW52LigxMikgPC0gLS5kZXQzIG0uKDQpIG0uKDgpIG0uKDEyKSBtLig1KSBtLig5KSBtLigxMykgbS4oNikgbS4oMTApIG0uKDE0KTtcbiAgaW52LigxKSA8LSAtLmRldDMgbS4oMSkgbS4oOSkgbS4oMTMpIG0uKDIpIG0uKDEwKSBtLigxNCkgbS4oMykgbS4oMTEpIG0uKDE1KTtcbiAgaW52Lig1KSA8LSBkZXQzIG0uKDApIG0uKDgpIG0uKDEyKSBtLigyKSBtLigxMCkgbS4oMTQpIG0uKDMpIG0uKDExKSBtLigxNSk7XG4gIGludi4oOSkgPC0gLS5kZXQzIG0uKDApIG0uKDgpIG0uKDEyKSBtLigxKSBtLig5KSBtLigxMykgbS4oMykgbS4oMTEpIG0uKDE1KTtcbiAgaW52LigxMykgPC0gZGV0MyBtLigwKSBtLig4KSBtLigxMikgbS4oMSkgbS4oOSkgbS4oMTMpIG0uKDIpIG0uKDEwKSBtLigxNCk7XG4gIGludi4oMikgPC0gZGV0MyBtLigxKSBtLig1KSBtLigxMykgbS4oMikgbS4oNikgbS4oMTQpIG0uKDMpIG0uKDcpIG0uKDE1KTtcbiAgaW52Lig2KSA8LSAtLmRldDMgbS4oMCkgbS4oNCkgbS4oMTIpIG0uKDIpIG0uKDYpIG0uKDE0KSBtLigzKSBtLig3KSBtLigxNSk7XG4gIGludi4oMTApIDwtIGRldDMgbS4oMCkgbS4oNCkgbS4oMTIpIG0uKDEpIG0uKDUpIG0uKDEzKSBtLigzKSBtLig3KSBtLigxNSk7XG4gIGludi4oMTQpIDwtIC0uZGV0MyBtLigwKSBtLig0KSBtLigxMikgbS4oMSkgbS4oNSkgbS4oMTMpIG0uKDIpIG0uKDYpIG0uKDE0KTtcbiAgaW52LigzKSA8LSAtLmRldDMgbS4oMSkgbS4oNSkgbS4oOSkgbS4oMikgbS4oNikgbS4oMTApIG0uKDMpIG0uKDcpIG0uKDExKTtcbiAgaW52Lig3KSA8LSBkZXQzIG0uKDApIG0uKDQpIG0uKDgpIG0uKDIpIG0uKDYpIG0uKDEwKSBtLigzKSBtLig3KSBtLigxMSk7XG4gIGludi4oMTEpIDwtIC0uZGV0MyBtLigwKSBtLig0KSBtLig4KSBtLigxKSBtLig1KSBtLig5KSBtLigzKSBtLig3KSBtLigxMSk7XG4gIGludi4oMTUpIDwtIGRldDMgbS4oMCkgbS4oNCkgbS4oOCkgbS4oMSkgbS4oNSkgbS4oOSkgbS4oMikgbS4oNikgbS4oMTApXG5cbmxldCBpbnZlcnRfbWF0NCBtID1cbiAgbGV0IGludiA9IEFycmF5Lm1ha2UgMTYgMC4gaW5cbiAgY29mYWN0b3JzIG0gaW52O1xuICBsZXQgZGV0ID1cbiAgICAobS4oMCkgKi4gaW52LigwKSlcbiAgICArLiAobS4oMSkgKi4gaW52Lig0KSlcbiAgICArLiAobS4oMikgKi4gaW52Lig4KSlcbiAgICArLiAobS4oMykgKi4gaW52LigxMikpXG4gIGluXG4gIGlmIGFic19mbG9hdCBkZXQgPCAxZS0xMiB0aGVuIE5vbmVcbiAgZWxzZSBiZWdpblxuICAgIGxldCBpbnZfZGV0ID0gMS4gLy4gZGV0IGluXG4gICAgQXJyYXkuaXRlcmkgKGZ1biBpIHYgLT4gaW52LihpKSA8LSB2ICouIGludl9kZXQpIGludjtcbiAgICBTb21lIGludlxuICBlbmRcblxuKCoqIHsxIFJheSBjb25zdHJ1Y3Rpb259ICopXG5cbmxldCBtYXQ0X211bF92ZWM0IG0geCB5IHogdyA9XG4gICggKG0uKDApICouIHgpICsuIChtLig0KSAqLiB5KSArLiAobS4oOCkgKi4geikgKy4gKG0uKDEyKSAqLiB3KSxcbiAgICAobS4oMSkgKi4geCkgKy4gKG0uKDUpICouIHkpICsuIChtLig5KSAqLiB6KSArLiAobS4oMTMpICouIHcpLFxuICAgIChtLigyKSAqLiB4KSArLiAobS4oNikgKi4geSkgKy4gKG0uKDEwKSAqLiB6KSArLiAobS4oMTQpICouIHcpLFxuICAgIChtLigzKSAqLiB4KSArLiAobS4oNykgKi4geSkgKy4gKG0uKDExKSAqLiB6KSArLiAobS4oMTUpICouIHcpIClcblxubGV0IHJheV9mcm9tX3NjcmVlbiB+c2NyZWVuX3ggfnNjcmVlbl95IH53aWR0aCB+aGVpZ2h0IH5wcm9qZWN0aW9uIH52aWV3ID1cbiAgbGV0IG5kY194ID0gKDIuICouIHNjcmVlbl94IC8uIEZsb2F0Lm9mX2ludCB3aWR0aCkgLS4gMS4gaW5cbiAgbGV0IG5kY195ID0gMS4gLS4gKDIuICouIHNjcmVlbl95IC8uIEZsb2F0Lm9mX2ludCBoZWlnaHQpIGluXG4gIGxldCB2cCA9IE1hdGguTWF0NC5tdWx0aXBseSBwcm9qZWN0aW9uIHZpZXcgaW5cbiAgbWF0Y2ggaW52ZXJ0X21hdDQgdnAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaW52X3ZwIC0+XG4gICAgICBsZXQgbngsIG55LCBueiwgbncgPSBtYXQ0X211bF92ZWM0IGludl92cCBuZGNfeCBuZGNfeSAoLTEuKSAxLiBpblxuICAgICAgbGV0IGZ4LCBmeSwgZnosIGZ3ID0gbWF0NF9tdWxfdmVjNCBpbnZfdnAgbmRjX3ggbmRjX3kgMS4gMS4gaW5cbiAgICAgIGlmIGFic19mbG9hdCBudyA8IDFlLTEwIHx8IGFic19mbG9hdCBmdyA8IDFlLTEwIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbmVhciA9IE1hdGguVmVjMy5jcmVhdGUgKG54IC8uIG53KSAobnkgLy4gbncpIChueiAvLiBudykgaW5cbiAgICAgICAgbGV0IGZhciA9IE1hdGguVmVjMy5jcmVhdGUgKGZ4IC8uIGZ3KSAoZnkgLy4gZncpIChmeiAvLiBmdykgaW5cbiAgICAgICAgbGV0IGRpciA9IE1hdGguVmVjMy5ub3JtYWxpemUgKE1hdGguVmVjMy5zdWIgZmFyIG5lYXIpIGluXG4gICAgICAgIFNvbWUgeyBvcmlnaW4gPSBuZWFyOyBkaXJlY3Rpb24gPSBkaXIgfVxuXG4oKiogezEgSW50ZXJzZWN0aW9uIHRlc3RzfSAqKVxuXG5sZXQgaW50ZXJzZWN0X3NwaGVyZSByYXkgfmNlbnRlciB+cmFkaXVzID1cbiAgbGV0IG9jID0gTWF0aC5WZWMzLnN1YiByYXkub3JpZ2luIGNlbnRlciBpblxuICBsZXQgYSA9IE1hdGguVmVjMy5kb3QgcmF5LmRpcmVjdGlvbiByYXkuZGlyZWN0aW9uIGluXG4gIGxldCBiID0gMi4gKi4gTWF0aC5WZWMzLmRvdCBvYyByYXkuZGlyZWN0aW9uIGluXG4gIGxldCBjID0gTWF0aC5WZWMzLmRvdCBvYyBvYyAtLiAocmFkaXVzICouIHJhZGl1cykgaW5cbiAgbGV0IGRpc2NyaW1pbmFudCA9IChiICouIGIpIC0uICg0LiAqLiBhICouIGMpIGluXG4gIGlmIGRpc2NyaW1pbmFudCA8IDAuIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgbGV0IHNxcnRfZCA9IHNxcnQgZGlzY3JpbWluYW50IGluXG4gICAgbGV0IHQxID0gKC0uYiAtLiBzcXJ0X2QpIC8uICgyLiAqLiBhKSBpblxuICAgIGxldCB0MiA9ICgtLmIgKy4gc3FydF9kKSAvLiAoMi4gKi4gYSkgaW5cbiAgICBpZiB0MSA+IDAuIHRoZW4gU29tZSB0MSBlbHNlIGlmIHQyID4gMC4gdGhlbiBTb21lIHQyIGVsc2UgTm9uZVxuXG5sZXQgaW50ZXJzZWN0X3BvaW50IHJheSBwb2ludCB+dGhyZXNob2xkID1cbiAgbGV0IG9jID0gTWF0aC5WZWMzLnN1YiBwb2ludCByYXkub3JpZ2luIGluXG4gIGxldCB0ID0gTWF0aC5WZWMzLmRvdCBvYyByYXkuZGlyZWN0aW9uIGluXG4gIGlmIHQgPCAwLiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIGxldCBjbG9zZXN0ID0gTWF0aC5WZWMzLmFkZCByYXkub3JpZ2luIChNYXRoLlZlYzMuc2NhbGUgdCByYXkuZGlyZWN0aW9uKSBpblxuICAgIGxldCBkaXN0ID0gTWF0aC5WZWMzLmxlbmd0aCAoTWF0aC5WZWMzLnN1YiBjbG9zZXN0IHBvaW50KSBpblxuICAgIGlmIGRpc3QgPD0gdGhyZXNob2xkIHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuXG4oKiogezEgUGlja2luZ30gKilcblxubGV0IHBpY2tfbmVhcmVzdCByYXkgcG9pbnRzIH50aHJlc2hvbGQgPVxuICBsZXQgYmVzdCA9IHJlZiBOb25lIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHBvcyA6IE1hdGguVmVjMy50KSAtPlxuICAgICAgbWF0Y2ggaW50ZXJzZWN0X3BvaW50IHJheSBwb3MgfnRocmVzaG9sZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSB0IC0+XG4gICAgICAgICAgbGV0IGJldHRlciA9XG4gICAgICAgICAgICBtYXRjaCAhYmVzdCB3aXRoIFNvbWUgaCAtPiB0IDwgaC5kaXN0YW5jZSB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYmV0dGVyIHRoZW5cbiAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgIE1hdGguVmVjMy5hZGQgcmF5Lm9yaWdpbiAoTWF0aC5WZWMzLnNjYWxlIHQgcmF5LmRpcmVjdGlvbilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBiZXN0IDo9IFNvbWUgeyBkaXN0YW5jZSA9IHQ7IHBvc2l0aW9uOyBpbmRleCA9IGkgfSlcbiAgICBwb2ludHM7XG4gICFiZXN0XG5cbmxldCBwaWNrX2VhcnRoIHJheSA9XG4gIG1hdGNoIGludGVyc2VjdF9zcGhlcmUgcmF5IH5jZW50ZXI6TWF0aC5WZWMzLnplcm8gfnJhZGl1czoxLjAgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdCAtPiBTb21lIChNYXRoLlZlYzMuYWRkIHJheS5vcmlnaW4gKE1hdGguVmVjMy5zY2FsZSB0IHJheS5kaXJlY3Rpb24pKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9NYXRoIiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfQXJyYXkiLCJkdW1teSIsImRldDMiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJjb2ZhY3RvcnMiLCJtIiwiaW52IiwiaW52ZXJ0X21hdDQiLCJkZXQiLCJpbnZfZGV0IiwidiIsIm1hdDRfbXVsX3ZlYzQiLCJ4IiwieSIsInoiLCJ3IiwicmF5X2Zyb21fc2NyZWVuIiwic2NyZWVuX3giLCJzY3JlZW5feSIsIndpZHRoIiwiaGVpZ2h0IiwicHJvamVjdGlvbiIsInZpZXciLCJuZGNfeCIsIm5kY195IiwidnAiLCJtYXRjaCIsImludl92cCIsIm53IiwibnoiLCJueSIsIm54IiwiZnciLCJmeiIsImZ5IiwiZngiLCJuZWFyIiwiZmFyIiwiZGlyIiwiaW50ZXJzZWN0X3NwaGVyZSIsInJheSIsImNlbnRlciIsInJhZGl1cyIsIm9jIiwiZGlzY3JpbWluYW50Iiwic3FydF9kIiwidDEiLCJ0MiIsImludGVyc2VjdF9wb2ludCIsInBvaW50IiwidGhyZXNob2xkIiwidCIsImNsb3Nlc3QiLCJkaXN0IiwicGlja19uZWFyZXN0IiwicG9pbnRzIiwiYmVzdCIsInBvcyIsImJldHRlciIsInBvc2l0aW9uIiwicGlja19lYXJ0aCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUMsR0FBQUM7QUFBQUEsSUNxQmtCO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFVBQUFDLEdBQUFDO0FBQUFBO0FBQUFBLEtBQUEsSUFHb0Q7QUFBQSxTQUFQO0FBQUEsU0FBTjtBQUFBLFNBQVA7QUFBQSxTQUFQO0FBQUEsU0FBTjtBQUFBLFNBQVA7QUFBQSxTQUFOO0FBQUEsU0FBWCxLQUFLO0FBQUEsSUFBaEI7QUFBQTtBQUFBLFNBQzhCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBTjtBQUFBLFNBQU4sRUFBTCxLQUFLO0FBQUEsSUFBbEI7QUFBQSxZQUNXO0FBQUEsSUFBWDtBQUFBLFlBQ2M7QUFBQSxJQUFkO0FBQUE7QUFBQSxTQUN5RDtBQUFBO0FBQUE7QUFBQSxTQUFwQjtBQUFBO0FBQUE7QUFBQSxTQUFuQjtBQUFBO0FBQUEsV0FBTCxLQUFLO0FBQUEsSUFBbEI7QUFBQTtBQUFBLFNBQ2dCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFMLEtBQUs7QUFBQSxJQUFoQjtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDWTtBQUFBLElBQVo7QUFBQSxZQUNXO0FBQUEsSUFBWDtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDWTtBQUFBLElBQVo7QUFBQSxZQUNjO0FBQUEsSUFBZDtBQUFBLFlBQ2E7QUFBQSxJQUFiO0FBQUEsWUFDVztBQUFBLElBQVg7QUFBQSxZQUNjO0FBQUEsSUFBZDtBQUFB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fX0seyJvZmZzZXQiOnsibGluZSI6MzMzNDAsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlLm9ianMvanNvby9kZWZhdWx0L2dsb2JlLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL2dlb21ldHJ5Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdsb2JlIGdlb21ldHJ5IGNvbXB1dGF0aW9ucyAocHVyZSBtYXRoLCBubyBXZWJHTCkuICopXG5cbmxldCBwaSA9IEZsb2F0LnBpXG5cbigqKiBTYXRlbGxpdGUgZ3JvdW5kIGZvb3RwcmludCBoYWxmLWFuZ2xlIChyYWRpYW5zKS5cblxuICAgIEdpdmVuIGEgc2F0ZWxsaXRlIGF0IFthbHRpdHVkZV0ga20gYW5kIGEgbWluaW11bSBlbGV2YXRpb24gYW5nbGVcbiAgICBbbWluX2VsZXZhdGlvbl0gcmFkaWFucywgcmV0dXJucyB0aGUgYW5ndWxhciByYWRpdXMgb2YgdGhlIGdyb3VuZCBmb290cHJpbnRcbiAgICBjaXJjbGUuXG5cbiAgICBGcm9tIGdlb21ldHJ5OiByaG8gPSBhc2luKFIgLyAoUiArIGgpKSwgaGFsZl9hbmdsZSA9IHBpLzIgLSBlbGV2YXRpb24gLSByaG8uXG4qKVxubGV0IGZvb3RwcmludF9hbmdsZSB+YWx0aXR1ZGUgfm1pbl9lbGV2YXRpb24gPVxuICBsZXQgciA9IENvb3JkaW5hdGUuZWFydGhfcmFkaXVzIGluXG4gIGxldCByaG8gPSBhc2luIChyIC8uIChyICsuIGFsdGl0dWRlKSkgaW5cbiAgKHBpIC8uIDIuKSAtLiBtaW5fZWxldmF0aW9uIC0uIHJob1xuXG4oKiogR2VuZXJhdGUgbGF0L2xvbiBncmlkIGxpbmUgdmVydGljZXMgb24gdGhlIHVuaXQgc3BoZXJlLlxuXG4gICAgUmV0dXJucyBwYWlycyBvZiAoeCx5LHopIGVuZHBvaW50cyBpbiBHTCBjb29yZGluYXRlcyAoWT11cCkuIFtzcGFjaW5nXSBpc1xuICAgIGRlZ3JlZXMgYmV0d2VlbiBsaW5lcy4gKilcbmxldCBncmlkX2xpbmVzID8oc3BhY2luZyA9IDMwLikgPyhzZWdtZW50cyA9IDcyKSAoKSA9XG4gIGxldCBkZWdfdG9fcmFkIGQgPSBkICouIHBpIC8uIDE4MC4gaW5cbiAgbGV0IHZlcnRpY2VzID0gcmVmIFtdIGluXG4gIGxldCByID0gMS4wMDIgaW5cbiAgbGV0IGxhdCA9IHJlZiAoLTkwLiArLiBzcGFjaW5nKSBpblxuICB3aGlsZSAhbGF0IDwgOTAuIGRvXG4gICAgbGV0IGxhdF9yYWQgPSBkZWdfdG9fcmFkICFsYXQgaW5cbiAgICBsZXQgY29zX2xhdCA9IGNvcyBsYXRfcmFkIGFuZCBzaW5fbGF0ID0gc2luIGxhdF9yYWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbG9uMCA9IEZsb2F0Lm9mX2ludCBpICouIDIuICouIHBpIC8uIEZsb2F0Lm9mX2ludCBzZWdtZW50cyBpblxuICAgICAgbGV0IGxvbjEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICAgIHZlcnRpY2VzIDo9XG4gICAgICAgIE1hdGguVmVjMy5jcmVhdGVcbiAgICAgICAgICAociAqLiBjb3NfbGF0ICouIGNvcyBsb24wKVxuICAgICAgICAgIChyICouIHNpbl9sYXQpXG4gICAgICAgICAgKHIgKi4gY29zX2xhdCAqLiBzaW4gbG9uMClcbiAgICAgICAgOjogTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgICAgIChyICouIGNvc19sYXQgKi4gY29zIGxvbjEpXG4gICAgICAgICAgICAgKHIgKi4gc2luX2xhdClcbiAgICAgICAgICAgICAociAqLiBjb3NfbGF0ICouIHNpbiBsb24xKVxuICAgICAgICA6OiAhdmVydGljZXNcbiAgICBkb25lO1xuICAgIGxhdCA6PSAhbGF0ICsuIHNwYWNpbmdcbiAgZG9uZTtcbiAgbGV0IGxvbiA9IHJlZiAoLTE4MC4pIGluXG4gIHdoaWxlICFsb24gPCAxODAuIGRvXG4gICAgbGV0IGxvbl9yYWQgPSBkZWdfdG9fcmFkICFsb24gaW5cbiAgICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgICBsZXQgbGF0MCA9XG4gICAgICAgICgtLnBpIC8uIDIuKSArLiAoRmxvYXQub2ZfaW50IGkgKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzKVxuICAgICAgaW5cbiAgICAgIGxldCBsYXQxID1cbiAgICAgICAgKC0ucGkgLy4gMi4pICsuIChGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMpXG4gICAgICBpblxuICAgICAgdmVydGljZXMgOj1cbiAgICAgICAgTWF0aC5WZWMzLmNyZWF0ZVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIGNvcyBsb25fcmFkKVxuICAgICAgICAgIChyICouIHNpbiBsYXQwKVxuICAgICAgICAgIChyICouIGNvcyBsYXQwICouIHNpbiBsb25fcmFkKVxuICAgICAgICA6OiBNYXRoLlZlYzMuY3JlYXRlXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gY29zIGxvbl9yYWQpXG4gICAgICAgICAgICAgKHIgKi4gc2luIGxhdDEpXG4gICAgICAgICAgICAgKHIgKi4gY29zIGxhdDEgKi4gc2luIGxvbl9yYWQpXG4gICAgICAgIDo6ICF2ZXJ0aWNlc1xuICAgIGRvbmU7XG4gICAgbG9uIDo9ICFsb24gKy4gc3BhY2luZ1xuICBkb25lO1xuICBMaXN0LnJldiAhdmVydGljZXNcblxuKCoqIEdlbmVyYXRlIGEgY2lyY2xlIG9mIHBvaW50cyBvbiB0aGUgdW5pdCBzcGhlcmUgYXJvdW5kIFtjZW50ZXJdLlxuXG4gICAgW2NlbnRlcl0gaXMgYSBHTC1jb29yZGluYXRlIHVuaXQgdmVjdG9yLiBbaGFsZl9hbmdsZV0gaXMgdGhlIGFuZ3VsYXIgcmFkaXVzXG4gICAgaW4gcmFkaWFucy4gUmV0dXJucyBbc2VnbWVudHNdIHBhaXJzIG9mIGxpbmUgZW5kcG9pbnRzLiAqKVxubGV0IGNpcmNsZV9vbl9zcGhlcmUgY2VudGVyIH5oYWxmX2FuZ2xlIH5zZWdtZW50cyA9XG4gIGxldCBvcGVuIE1hdGguVmVjMyBpblxuICBsZXQgbiA9IG5vcm1hbGl6ZSBjZW50ZXIgaW5cbiAgbGV0IGFyYml0cmFyeSA9XG4gICAgaWYgYWJzX2Zsb2F0IG4ueSA8IDAuOSB0aGVuIGNyZWF0ZSAwLiAxLiAwLiBlbHNlIGNyZWF0ZSAxLiAwLiAwLlxuICBpblxuICBsZXQgdSA9IG5vcm1hbGl6ZSAoY3Jvc3MgbiBhcmJpdHJhcnkpIGluXG4gIGxldCB2ID0gY3Jvc3MgbiB1IGluXG4gIGxldCBjb3NfYSA9IGNvcyBoYWxmX2FuZ2xlIGFuZCBzaW5fYSA9IHNpbiBoYWxmX2FuZ2xlIGluXG4gIGxldCByID0gMS4wMDMgaW5cbiAgbGV0IHZlcnRzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBzZWdtZW50cyAtIDEgZG9cbiAgICBsZXQgdDAgPSBGbG9hdC5vZl9pbnQgaSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgdDEgPSBGbG9hdC5vZl9pbnQgKGkgKyAxKSAqLiAyLiAqLiBwaSAvLiBGbG9hdC5vZl9pbnQgc2VnbWVudHMgaW5cbiAgICBsZXQgcG9pbnQgdCA9XG4gICAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi54KSArLiAoc2luX2EgKi4gY3QgKi4gdS54KSArLiAoc2luX2EgKi4gc3QgKi4gdi54KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAgIChyICouICgoY29zX2EgKi4gbi56KSArLiAoc2luX2EgKi4gY3QgKi4gdS56KSArLiAoc2luX2EgKi4gc3QgKi4gdi56KSkpXG4gICAgaW5cbiAgICB2ZXJ0cyA6PSBwb2ludCB0MCA6OiBwb2ludCB0MSA6OiAhdmVydHNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXZlcnRzXG5cbmxldCBmaWxsZWRfY2lyY2xlX29uX3NwaGVyZSBjZW50ZXIgfmhhbGZfYW5nbGUgfnNlZ21lbnRzID1cbiAgbGV0IG9wZW4gTWF0aC5WZWMzIGluXG4gIGxldCBuID0gbm9ybWFsaXplIGNlbnRlciBpblxuICBsZXQgYXJiaXRyYXJ5ID1cbiAgICBpZiBhYnNfZmxvYXQgbi55IDwgMC45IHRoZW4gY3JlYXRlIDAuIDEuIDAuIGVsc2UgY3JlYXRlIDEuIDAuIDAuXG4gIGluXG4gIGxldCB1ID0gbm9ybWFsaXplIChjcm9zcyBuIGFyYml0cmFyeSkgaW5cbiAgbGV0IHYgPSBjcm9zcyBuIHUgaW5cbiAgbGV0IGNvc19hID0gY29zIGhhbGZfYW5nbGUgYW5kIHNpbl9hID0gc2luIGhhbGZfYW5nbGUgaW5cbiAgbGV0IHIgPSAxLjAwMyBpblxuICBsZXQgY2VudGVyX3B0ID0gc2NhbGUgciBuIGluXG4gIGxldCBwb2ludCB0ID1cbiAgICBsZXQgY3QgPSBjb3MgdCBhbmQgc3QgPSBzaW4gdCBpblxuICAgIGNyZWF0ZVxuICAgICAgKHIgKi4gKChjb3NfYSAqLiBuLngpICsuIChzaW5fYSAqLiBjdCAqLiB1LngpICsuIChzaW5fYSAqLiBzdCAqLiB2LngpKSlcbiAgICAgIChyICouICgoY29zX2EgKi4gbi55KSArLiAoc2luX2EgKi4gY3QgKi4gdS55KSArLiAoc2luX2EgKi4gc3QgKi4gdi55KSkpXG4gICAgICAociAqLiAoKGNvc19hICouIG4ueikgKy4gKHNpbl9hICouIGN0ICouIHUueikgKy4gKHNpbl9hICouIHN0ICouIHYueikpKVxuICBpblxuICBsZXQgdHJpcyA9IHJlZiBbXSBpblxuICBmb3IgaSA9IDAgdG8gc2VnbWVudHMgLSAxIGRvXG4gICAgbGV0IHQwID0gRmxvYXQub2ZfaW50IGkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgbGV0IHQxID0gRmxvYXQub2ZfaW50IChpICsgMSkgKi4gMi4gKi4gcGkgLy4gRmxvYXQub2ZfaW50IHNlZ21lbnRzIGluXG4gICAgdHJpcyA6PSBjZW50ZXJfcHQgOjogcG9pbnQgdDAgOjogcG9pbnQgdDEgOjogIXRyaXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXRyaXNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9NYXRoIiwiU3RkbGliX0xpc3QiLCJDb29yZGluYXRlIiwiU3RkbGliX0Zsb2F0IiwicGkiLCJmb290cHJpbnRfYW5nbGUiLCJhbHRpdHVkZSIsIm1pbl9lbGV2YXRpb24iLCJyIiwicmhvIiwiZ3JpZF9saW5lcyIsIm9wdCIsInBhcmFtIiwic3BhY2luZyIsInNlZ21lbnRzIiwiZGVnX3RvX3JhZCIsImQiLCJsYXQiLCJ2ZXJ0aWNlcyIsImxhdF9yYWQiLCJjb3NfbGF0Iiwic2luX2xhdCIsImkiLCJsb24wIiwibG9uMSIsImxvbiIsImxvbl9yYWQiLCJsYXQwIiwibGF0MSIsImNpcmNsZV9vbl9zcGhlcmUiLCJjZW50ZXIiLCJoYWxmX2FuZ2xlIiwibiIsImFyYml0cmFyeSIsInUiLCJ2IiwiY29zX2EiLCJzaW5fYSIsInZlcnRzIiwidDAiLCJ0MSIsInBvaW50IiwidCIsImN0Iiwic3QiLCJmaWxsZWRfY2lyY2xlX29uX3Nw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RUwsYUFBQUMsS0FBZTtBQUFBLEtBRWlEO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkVBRUE7QUFBQTtBQUFBLFlBRzNFLHNCQVJBO0FBQUEsSUFRQTtBQUFBLFNBQUFHLFNBQUE7QUFBQTtBQUFBLFNBQUFBLE9BQUEsR0FBQXpCLElBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQWlCLEtBQ1c7QUFBQSxPQUFBQyxLQUNBO0FBQUEsV0FDd0I7QUFBQSxXQUFaO0FBQUEsV0FBUTtBQUFBLHNCQUFBTyxTQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUUvQix5Q0FBYztBQUFBO0FBQUEsR0RoSWhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM1MzQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvb19ydW50aW1lLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiXSwibmFtZXMiOlsicnVudGltZSIsImNzdF82XzNfMiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUEseUJBQUFDLFlBQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozMzU0NywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJqc29vX3J1bnRpbWUuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHJ1bnRpbWVfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNvb19ydW50aW1lX3ZhbHVlXCJcbiAgKCoqIFtydW50aW1lX3ZhbHVlIFwiRk9PXCJdIHJldHVybnMgdGhlIEphdmFTY3JpcHQgdmFsdWUgRk9PIHByb3ZpZGVkIGJ5IHRoZSBKYXZhU2NyaXB0IHJ1bnRpbWUgKHdpdGggJy8vUHJvdmlkZXM6IEZPTycpLiBUaGUgc3RyaW5nIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbC4gKilcblxuICBleHRlcm5hbCBjdXN0b21faWRlbnRpZmllciA6IE9iai50IC0+IHN0cmluZyA9IFwiY2FtbF9jdXN0b21faWRlbnRpZmllclwiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICB0eXBlIGVmZmVjdHNfYmFja2VuZCA9XG4gICAgICBbIGBEaXNhYmxlZFxuICAgICAgfCBgQ3BzXG4gICAgICB8IGBEb3VibGVfdHJhbnNsYXRpb25cbiAgICAgIF1cblxuICAgIGV4dGVybmFsIGVmZmVjdHNfIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcblxuICAgIGxldCBlZmZlY3RzICgpID1cbiAgICAgIG1hdGNoIGVmZmVjdHNfICgpIHdpdGhcbiAgICAgIHwgXCJkaXNhYmxlZFwiIC0+IGBEaXNhYmxlZFxuICAgICAgfCBcImNwc1wiIC0+IGBDcHNcbiAgICAgIHwgXCJkb3VibGUtdHJhbnNsYXRpb25cIiAtPiBgRG91YmxlX3RyYW5zbGF0aW9uXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YVNjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YVNjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgZXh0ZXJuYWwgcmFpc2VfIDogdCAtPiAnYSA9IFwiY2FtbF90aHJvd19qc19leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb24ndCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZSBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcblxuICBleHRlcm5hbCBjYW1sX3N0cmluZ19vZl9hcnJheSA6ICdhIGFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIHN0cmluZ19vZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX3VpbnQ4X2FycmF5XCJcblxuICBleHRlcm5hbCBieXRlc19vZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBieXRlcyA9IFwiY2FtbF9ieXRlc19vZl91aW50OF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdWludDhBcnJheV9vZl9ieXRlcyA6IGJ5dGVzIC0+IHVpbnQ4QXJyYXkgPSBcImNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuXG5tb2R1bGUgRWZmZWN0IDogc2lnXG4gIGV4dGVybmFsIGFzc3VtZV9ub19wZXJmb3JtIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2Fzc3VtZV9ub19wZXJmb3JtXCJcbiAgKCoqIFBhc3NpbmcgYSBmdW5jdGlvbiBbZl0gYXMgYXJndW1lbnQgb2YgYGFzc3VtZV9ub19wZXJmb3JtYCBndWFyYW50ZWVzIHRoYXQsXG4gICAgICB3aGVuIGNvbXBpbGluZyB3aXRoIGAtLWVmZmVjdHM9ZG91YmxlLXRyYW5zbGF0aW9uYCwgdGhlIGRpcmVjdC1zdHlsZVxuICAgICAgdmVyc2lvbiBvZiBbZl0gaXMgY2FsbGVkLCB3aGljaCBpcyBmYXN0ZXIgdGhhbiB0aGUgQ1BTIHZlcnNpb24uIEFzIGFcbiAgICAgIGNvbnNlcXVlbmNlLCBwZXJmb3JtaW5nIGFuIGVmZmVjdCBpbiBhIHRyYW5zaXRpdmUgY2FsbGVlIG9mIFtmXSB3aWxsXG4gICAgICByYWlzZSBgRWZmZWN0LlVuaGFuZGxlZGAsIHJlZ2FyZGxlc3Mgb2YgYW55IGVmZmVjdCBoYW5kbGVycyBpbnN0YWxsZWRcbiAgICAgIGJlZm9yZSB0aGUgY2FsbCB0byBgYXNzdW1lX25vX3BlcmZvcm1gLCB1bmxlc3MgYSBuZXcgZWZmZWN0IGhhbmRsZXIgd2FzXG4gICAgICBpbnN0YWxsZWQgaW4gdGhlIG1lYW50aW1lLlxuXG4gICAgICBUaGlzIGJlaGF2aW91ciBpcyB0aGUgc2FtZSB3aGVuIGRvdWJsZSB0cmFuc2xhdGlvbiBpcyBkaXNhYmxlZC4gKilcbmVuZCA9IHN0cnVjdFxuICBleHRlcm5hbCBhc3N1bWVfbm9fcGVyZm9ybSA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9hc3N1bWVfbm9fcGVyZm9ybVwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiZ2xvYmFsX2RhdGEiLCJBc3NlcnRfZmFpbHVyZSIsIkpzb29fcnVudGltZV9SdW50aW1lX3ZlcnNpb24iLCJTdGRsaWJfQ2FsbGJhY2siLCJlZmZlY3RzIiwicGFyYW0iLCJtYXRjaCIsInZlcnNpb24iLCJnaXRfdmVyc2lvbiIsIkV4biIsIkVycm9yIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLDhCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsK0JBQUE7QUFBQSxJQUFBQyxrQkFBQTtBQUFBO0FBQUEsWUFBQUMsUUFBQUM7QUFBQUEsUUFBQUMsUUNpS1k7QUFBQSxJQUFXLG9CQUVOO0FBQUEsSUFGTSx5QkFDRDtBQUFBLElBREM7QUFBQSxLQUlWO0FBQUEsSUFEbUI7QUFBQSxHQUNQO0FBQUE7QUFBQSxJQUFBQyxVRHJLekI7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLEdDd01VO0FBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUE0RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR4TXRFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM1OTUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvanN0ci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCogTWluaSBKdiwgdGhpcyBhbGxvd3MgdXMgdG8gdXNlIEpzdHIgaW4gSnYgKilcblxudHlwZSBqdlxuZXh0ZXJuYWwganZfY2FsbCA6IGp2IC0+IHN0cmluZyAtPiBqdiBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuZXh0ZXJuYWwganZfYXBwbHkgOiBqdiAtPiBqdiBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5leHRlcm5hbCBqdl9nZXQgOiBqdiAtPiBzdHJpbmcgLT4ganYgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIGp2X29mX2ludCA6IGludCAtPiBqdiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGp2X3RvX2ludCA6IGp2IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGp2X29mX2Zsb2F0IDogZmxvYXQgLT4ganYgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5leHRlcm5hbCBqdl90b19mbG9hdCA6IGp2IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcbmV4dGVybmFsIGp2X3RvX2Jvb2wgOiBqdiAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwganZfcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5sZXQganZfZ2xvYmFsID0ganZfcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbigqIFN0cmluZ3MgKilcblxudHlwZSB0ID0ganZcbmV4dGVybmFsIGp2X3RvX2pzdHJfbGlzdCA6IGp2IC0+IHQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcbmV4dGVybmFsIGp2X29mX2pzdHJfbGlzdCA6IHQgbGlzdCAtPiBqdiA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcbmV4dGVybmFsIHYgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxubGV0IGxlbmd0aCBzID0ganZfdG9faW50IChqdl9nZXQgcyBcImxlbmd0aFwiKVxuXG5leHRlcm5hbCBqc3RyX3RvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5sZXQganN0cl9vZl9pbnQgPyhiYXNlID0gMTApIGkgPVxuICBqdl9jYWxsIChqdl9vZl9pbnQgaSkgXCJ0b1N0cmluZ1wiIFt8IGp2X29mX2ludCBiYXNlIHxdXG5cbmxldCBlcnJfYm91bmRzIGkgbGVuID1cbiAgbGV0ICggKyApIHMwIHMxID0ganZfY2FsbCBzMCBcImNvbmNhdFwiIFt8IHMxIHxdIGluXG4gIGpzdHJfdG9fc3RyaW5nIEBAXG4gIHYgXCJpbmRleCBcIiArIGpzdHJfb2ZfaW50IGkgKyB2IFwiIG5vdCBpbiBib3VuZHMgWzA7XCIgK1xuICBqc3RyX29mX2ludCAobGVuIC0gMSkgKyB2IFwiXVwiXG5cbmxldCBnZXQgcyBpID1cbiAgaWYgaSA+PSBsZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIChlcnJfYm91bmRzIGkgKGxlbmd0aCBzKSkgZWxzZVxuICBsZXQgdSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwiY29kZVBvaW50QXRcIiBbfGp2X29mX2ludCBpfF0pIGluXG4gIGxldCB1ID0gaWYgdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIHRoZW4gdSBlbHNlIDB4RkZGRCAoKiBVY2hhci5yZXAgKikgaW5cbiAgVWNoYXIudW5zYWZlX29mX2ludCB1XG5cbmxldCBqc3RyX29mX3VjaGFyX2ludCBpID1cbiAganZfY2FsbCAoanZfZ2V0IGp2X2dsb2JhbCBcIlN0cmluZ1wiKSBcImZyb21Db2RlUG9pbnRcIiBbfCBqdl9vZl9pbnQgaSB8XVxuXG5sZXQgZ2V0X2pzdHIgcyBpID0ganN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCAoZ2V0IHMgaSkpXG5cbigqIENvbnN0YW50cyAqKVxuXG5sZXQgZW1wdHkgPSB2IFwiXCJcbmxldCBzcCA9IHYgXCIgXCJcbmxldCBubCA9IHYgXCJcXG5cIlxuXG4oKiBBc3NlbWJsaW5nICopXG5cbmxldCBhcHBlbmQgczAgczEgPSBqdl9jYWxsIHMwIFwiY29uY2F0XCIgW3wgczEgfF1cbmxldCAoICsgKSA9IGFwcGVuZFxubGV0IGNvbmNhdCA/KHNlcCA9IGVtcHR5KSBzcyA9IGp2X2NhbGwgKGp2X29mX2pzdHJfbGlzdCBzcykgXCJqb2luXCIgW3wgc2VwIHxdXG5sZXQgcGFkX3N0YXJ0ID8ocGFkID0gc3ApIGxlbiBzID0ganZfY2FsbCBzIFwicGFkU3RhcnRcIiBbfCBqdl9vZl9pbnQgbGVuOyBwYWQgfF1cbmxldCBwYWRfZW5kID8ocGFkID0gc3ApIGxlbiBzID0ganZfY2FsbCBzIFwicGFkRW5kXCIgW3wganZfb2ZfaW50IGxlbjsgcGFkIHxdXG5sZXQgcmVwZWF0IG4gcyA9IGp2X2NhbGwgcyBcInJlcGVhdFwiIFt8IGp2X29mX2ludCBuIHxdXG5cbigqIEZpbmRpbmcgKilcblxubGV0IGZpbmRfc3ViID8oc3RhcnQgPSAwKSB+c3ViIHMgPVxuICBsZXQgaSA9IGp2X3RvX2ludCAoanZfY2FsbCBzIFwiaW5kZXhPZlwiIFt8IHN1YjsganZfb2ZfaW50IHN0YXJ0IHxdKSBpblxuICBpZiBpID0gLTEgdGhlbiBOb25lIGVsc2UgU29tZSBpXG5cbmxldCBmaW5kX2xhc3Rfc3ViID9iZWZvcmUgfnN1YiBzID1cbiAgbGV0IGJlZm9yZSA9IG1hdGNoIGJlZm9yZSB3aXRoIE5vbmUgLT4gbGVuZ3RoIHMgfCBTb21lIGIgLT4gYiBpblxuICBsZXQgcG9zID0gYmVmb3JlIC0gbGVuZ3RoIHN1YiBpblxuICBpZiBwb3MgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGxldCBpID0ganZfdG9faW50IChqdl9jYWxsIHMgXCJsYXN0SW5kZXhPZlwiIFt8c3ViOyBqdl9vZl9pbnQgcG9zfF0pIGluXG4gIGlmIGkgPSAtMSB0aGVuIE5vbmUgZWxzZSBTb21lIGlcblxuKCogQnJlYWtpbmcgKilcblxubGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCBzID1cbiAgbGV0IGFyZ3MgPSBtYXRjaCBzdG9wIHdpdGhcbiAgfCBOb25lIC0+IFt8IGp2X29mX2ludCBzdGFydCB8XVxuICB8IFNvbWUgc3RvcCAtPiBbfCBqdl9vZl9pbnQgc3RhcnQ7IGp2X29mX2ludCBzdG9wIHxdXG4gIGluXG4gIGp2X2NhbGwgcyBcInNsaWNlXCIgYXJnc1xuXG5sZXQgc3ViID8oc3RhcnQgPSAwKSA/bGVuIHMgPVxuICBsZXQgYXJncyA9IG1hdGNoIGxlbiB3aXRoXG4gIHwgTm9uZSAtPiBbfCBqdl9vZl9pbnQgc3RhcnQgfF1cbiAgfCBTb21lIGxlbiAtPiBbfCBqdl9vZl9pbnQgc3RhcnQ7IGp2X29mX2ludCBsZW4gfF1cbiAgaW5cbiAganZfY2FsbCBzIFwic3Vic3RyXCIgYXJnc1xuXG5sZXQgY3V0cyB+c2VwIHMgPSBqdl90b19qc3RyX2xpc3QgKGp2X2NhbGwgcyBcInNwbGl0XCIgW3wgc2VwIHxdKVxuXG4oKiBUcmF2ZXJzaW5nIGFuZCB0cmFuc2Zvcm1pbmcgKilcblxubGV0IGl0ZXJhdG9yIDoganYgPSBqdl9wdXJlX2pzX2V4cHIgXCJTeW1ib2wuaXRlcmF0b3JcIlxuZXh0ZXJuYWwgZ2V0X3N5bWJvbCA6IGp2IC0+IGp2IC0+IGp2ID0gXCJjYW1sX2pzX2dldFwiXG5cbmxldCBmb2xkX3VjaGFycyBmIHMgYWNjID1cbiAgbGV0IHJlYyBsb29wIGl0IGFjYyA9XG4gICAgbGV0IHIgPSBqdl9jYWxsIGl0IFwibmV4dFwiIFt8fF0gaW5cbiAgICBpZiBqdl90b19ib29sIChqdl9nZXQgciBcImRvbmVcIikgdGhlbiBhY2MgZWxzZVxuICAgIGxldCB1ID0ganZfY2FsbCAoanZfZ2V0IHIgXCJ2YWx1ZVwiKSBcImNvZGVQb2ludEF0XCIgW3wganZfb2ZfaW50IDAgfF0gaW5cbiAgICBsZXQgdSA9IGlmIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiB0aGVuIHUgZWxzZSAweEZGRkQgKCogVWNoYXIucmVwICopIGluXG4gICAgbG9vcCBpdCAoZiAoVWNoYXIudW5zYWZlX29mX2ludCB1KSBhY2MpXG4gIGluXG4gIGxvb3AgKGp2X2FwcGx5IChnZXRfc3ltYm9sIHMgaXRlcmF0b3IpIFt8fF0pIGFjY1xuXG5sZXQgZm9sZF9qc3RyX3VjaGFycyBmIHMgYWNjID1cbiAgbGV0IGYnIHUgYWNjID0gZiAoanN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCB1KSkgYWNjIGluXG4gIGZvbGRfdWNoYXJzIGYnIHMgYWNjXG5cbmxldCB0cmltIHMgPSBqdl9jYWxsIHMgXCJ0cmltXCIgW3x8XVxuXG4oKiBOb3JtYWxpemF0aW9uICopXG5cbnR5cGUgbm9ybWFsaXphdGlvbiA9IFsgYE5GRCB8IGBORkMgfCBgTkZLRCB8IGBORktDIF1cblxubGV0IG5vcm1hbGl6ZWQgbmYgcyA9XG4gIGxldCBuZiA9IG1hdGNoIG5mIHdpdGhcbiAgfCBgTkZEIC0+IHYgXCJORkRcIiB8IGBORkMgLT4gdiBcIk5GQ1wiIHwgYE5GS0QgLT4gdiBcIk5GS0RcIiB8IGBORktDIC0+IHYgXCJORktDXCJcbiAgaW5cbiAganZfY2FsbCBzIFwibm9ybWFsaXplXCIgW3wgbmYgfF1cblxuKCogQ2FzZSBtYXBwaW5nICopXG5cbmxldCBsb3dlcmNhc2VkIHMgPSBqdl9jYWxsIHMgXCJ0b0xvd2VyQ2FzZVwiIFt8fF1cbmxldCB1cHBlcmNhc2VkIHMgPSBqdl9jYWxsIHMgXCJ0b1VwcGVyQ2FzZVwiIFt8fF1cblxuKCogUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnMgKilcblxubGV0IGlzX2VtcHR5IHMgPSBsZW5ndGggcyA9IDBcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcInN0YXJ0c1dpdGhcIiBbfCBwcmVmaXggfF1cbmxldCBpbmNsdWRlcyB+YWZmaXggcyA9IGp2X3RvX2Jvb2wgQEAganZfY2FsbCBzIFwiaW5jbHVkZXNcIiBbfCBhZmZpeCB8XVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPSBqdl90b19ib29sIEBAIGp2X2NhbGwgcyBcImVuZHNXaXRoXCIgW3wgc3VmZml4IHxdXG5sZXQgZXF1YWwgPSAoID0gKVxubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbigqIENvbnZlcnNpb25zICopXG5cbmxldCBvZl91Y2hhciB1ID0ganN0cl9vZl91Y2hhcl9pbnQgKFVjaGFyLnRvX2ludCB1KVxubGV0IG9mX2NoYXIgYyA9IGpzdHJfb2ZfdWNoYXJfaW50IChDaGFyLmNvZGUgYylcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5leHRlcm5hbCBiaW5hcnlfdG9fb2N0ZXRzIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuZXh0ZXJuYWwgYmluYXJ5X29mX29jdGV0cyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxubGV0IG51bWJlciA9IGp2X2dldCBqdl9nbG9iYWwgXCJOdW1iZXJcIlxuXG5sZXQgb2ZfaW50ID0ganN0cl9vZl9pbnRcbmxldCB0b19pbnQgP2Jhc2UgcyA9XG4gIGxldCBhcmdzID0gbWF0Y2ggYmFzZSB3aXRoIE5vbmUgLT4gW3wgcyB8XSB8IFNvbWUgYiAtPiBbfCBzOyBqdl9vZl9pbnQgYiB8XSBpblxuICBsZXQgbiA9IGp2X2NhbGwgbnVtYmVyIFwicGFyc2VJbnRcIiBhcmdzIGluXG4gIGlmIG5vdCAobiA9IG4pIHRoZW4gKCogTmFOICopIE5vbmUgZWxzZSBTb21lIChqdl90b19pbnQgbilcblxubGV0IHRvX2Zsb2F0IHMgPSBqdl90b19mbG9hdCBAQCBqdl9jYWxsIG51bWJlciBcInBhcnNlRmxvYXRcIiBbfCBzIHxdXG5sZXQgb2ZfZmxvYXQgP2ZyYWMgbiA9IG1hdGNoIGZyYWMgd2l0aFxufCBOb25lIC0+IGp2X2NhbGwgKGp2X29mX2Zsb2F0IG4pIFwidG9TdHJpbmdcIiBbfHxdXG58IFNvbWUgZnJhYyAtPiBqdl9jYWxsIChqdl9vZl9mbG9hdCBuKSBcInRvRml4ZWRcIiBbfGp2X29mX2ludCBmcmFjfF1cbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9lcXVhbCIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9jYWxsMiIsImYiLCJhMCIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfVWNoYXIiLCJTdGRsaWIiLCJqdl9nbG9iYWwiLCJsZW5ndGgiLCJzIiwianN0cl9vZl9pbnQiLCJvcHQiLCJpIiwiYmFzZSIsImdldCIsImxlbiIsInMxIiwiczAiLCJ1IiwianN0cl9vZl91Y2hhcl9pbnQiLCJnZXRfanN0ciIsImFwcGVuZCIsImVtcHR5IiwiY29uY2F0Iiwic3MiLCJzZXAiLCJzcCIsInBhZF9zdGFydCIsInBhZCIsInBhZF9lbmQiLCJyZXBlYXQiLCJuIiwiZmluZF9zdWIiLCJzdWIiLCJzdGFydCIsImZpbmRfbGFzdF9zdWIiLCJiZWZvcmUiLCJiIiwicG9zIiwic2xpY2UiLCJzdG9wIiwiYXJncyIsImN1dHMiLCJpdGVyYXRvciIsImZvbGRfdWNoYXJzIiwiYWNjIiwiaXQiLCJyIiwiZm9sZF9qc3RyX3VjaGFycyIsInRyaW0iLCJub3JtYWxpemVkIiwibmYiLCJsb3dlcmNhc2VkIiwidXBwZXJjYXNlZCIsImlzX2VtcHR5Iiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJpbmNsdWRlcyIsImFmZml4IiwiZW5kc193aXRoIiwic3VmZml4IiwiY29tcGFyZSIsIm9mX3VjaGFyIiwib2ZfY2hhciIsImMiLCJudW1iZXIiLCJ0b19pbnQiLCJ0b19mbG9hdCIsIm9mX2Zsb2F0IiwiZnJhYyJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFlDaUJnQjtBQUFBLFlBQUFDLE9BQUFDLEdBUTRCO0FBQUEsWUFBQUMsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQUMsT0FHNUI7QUFBQSxJQUNkLHVCQUFxRDtBQUFBO0FBQUEsWUFBQUMsSUFBQUwsR0FBQUc7QUFBQUEsSUFTckM7QUFBQTtBQUFBLE1BQUFHLE1BYk87QUFBQSxNQUFBQyxLQVV2QjtBQUFBLE1BQUFBLE9BRGE7QUFBQSxNQUFBQyxLQUZLO0FBQUEsTUFBQUEsT0FBQTtBQUFBLE1BQUFBLE9BQUE7QUFBQSxVQUNsQixnQ0FEa0I7QUFBQSxLQU15Qyw4QkFHdEM7QUFBQTtBQUFBLFFBQUFDLElBRkgsa0JBQUFBLE1BQ2xCO0FBQUEsSUFDQSxzQ0FBcUI7QUFBQTtBQUFBLFlBQUFDLGtCQUFBUCxHQUdyQix3Q0FBcUU7QUFBQSxZQUFBUSxTQUFBWCxHQUFBRztBQUFBQSxRQUFBLElBRXBCO0FBQUEsSUFBZCxPQUF3QixrQkFBeEIsK0JBQXdCO0FBQUE7QUFBQSxZQUFBUyxPQUFBSixJQUFBRCxJQVUxQyxvQkFBNEI7QUFBQSxPQUFBTSxRQU5uQztBQUFBLFlBQUFDLE9BQUFaLEtBQUFhO0FBQUFBLFFBQUFDLE1BUUQ7QUFBQSxJQUE0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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURySnRDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzM3NzksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvanYubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDIwIFRoZSBicnIgcHJvZ3JhbW1lcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbmV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuKCogVmFsdWVzICopXG5cbnR5cGUgdFxudHlwZSBqdiA9IHRcblxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuZXh0ZXJuYWwgc3RyaWN0X2VxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5leHRlcm5hbCB0eXBlb2YgOiB0IC0+IEpzdHIudCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gY29uczp0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogTnVsbCBhbmQgdW5kZWZpbmVkICopXG5cbmxldCBudWxsID0gcHVyZV9qc19leHByIFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbmxldCBpc19udWxsIHYgPSBzdHJpY3RfZXF1YWwgdiBudWxsXG5sZXQgaXNfdW5kZWZpbmVkIHYgPSBzdHJpY3RfZXF1YWwgdiB1bmRlZmluZWRcbmxldCBpc19ub25lIHYgPSBpc19udWxsIHYgfHwgaXNfdW5kZWZpbmVkIHZcbmxldCBpc19zb21lIHYgPSBub3QgKGlzX25vbmUgdilcbmxldCB0b19vcHRpb24gY29udiB2ID0gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNvbnYgdilcbmxldCBvZl9vcHRpb24gfm5vbmUgY29udiA9IGZ1bmN0aW9uIE5vbmUgLT4gbm9uZSB8IFNvbWUgdiAtPiBjb252IHZcblxuKCogT2JqZWN0cyAqKVxuXG5sZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbigqIFByb3BlcnRpZXMgKilcblxudHlwZSBwcm9wID0gc3RyaW5nXG5cbmV4dGVybmFsIGdldCA6IHQgLT4gcHJvcCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IHByb3AgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGUgOiB0IC0+IHByb3AgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxubGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIHYgLT4gc2V0IG8gcCB2XG5sZXQgZmluZCBvIHAgPSBsZXQgdiA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSB2IHRoZW4gTm9uZSBlbHNlIFNvbWUgdlxubGV0IGZpbmRfbWFwIGYgbyBwID0gbGV0IHYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgdiB0aGVuIE5vbmUgZWxzZSBTb21lIChmIHYpXG5sZXQgcmVjIGZpbmRfcGF0aCBvID0gZnVuY3Rpb25cbnwgW10gLT4gU29tZSBvXG58IHAgOjogcHMgLT4gbWF0Y2ggZmluZCBvIHAgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIG8gLT4gZmluZF9wYXRoIG8gcHNcblxuKCogQ3JlYXRpbmcgKilcblxuZXh0ZXJuYWwgb2JqIDogKHByb3AgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5leHRlcm5hbCBuZXcnIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuKCogTWV0aG9kcyAqKVxuXG5leHRlcm5hbCBjYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4oKiBCb29sZWFucyAqKVxuXG5sZXQgdHJ1ZScgPSBwdXJlX2pzX2V4cHIgXCJ0cnVlXCJcbmxldCBmYWxzZScgPSBwdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5leHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgb2ZfYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGIgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgYiB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19ib29sIGIpXG4gIGxldCBnZXQgbyBwID0gdG9fYm9vbCAoZ2V0IG8gcClcbiAgbGV0IHNldCBvIHAgYiA9IHNldCBvIHAgKG9mX2Jvb2wgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGIgLT4gc2V0IG8gcCBiXG5lbmRcblxuKCogSW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGkgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgaSB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19pbnQgaSlcbiAgbGV0IGdldCBvIHAgPSB0b19pbnQgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGkgPSBzZXQgbyBwIChvZl9pbnQgaSlcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGkgLT4gc2V0IG8gcCBpXG5lbmRcblxuKCogRmxvYXRzICopXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IGZpbmQgbyBwID0gbGV0IGYgPSBnZXQgbyBwIGluIGlmIGlzX25vbmUgZiB0aGVuIE5vbmUgZWxzZSBTb21lKHRvX2Zsb2F0IGYpXG4gIGxldCBnZXQgbyBwID0gdG9fZmxvYXQgKGdldCBvIHApXG4gIGxldCBzZXQgbyBwIGIgPSBzZXQgbyBwIChvZl9mbG9hdCBiKVxuICBsZXQgc2V0X2lmX3NvbWUgbyBwID0gZnVuY3Rpb24gTm9uZSAtPiAoKSB8IFNvbWUgZiAtPiBzZXQgbyBwIGZcbmVuZFxuXG4oKiBJbnQzMiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxubW9kdWxlIEludDMyID0gc3RydWN0XG4gIGxldCBmaW5kIG8gcCA9IGxldCBmID0gZ2V0IG8gcCBpbiBpZiBpc19ub25lIGYgdGhlbiBOb25lIGVsc2UgU29tZSh0b19pbnQzMiBmKVxuICBsZXQgZ2V0IG8gcCA9IHRvX2ludDMyIChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfaW50MzIgYilcbiAgbGV0IHNldF9pZl9zb21lIG8gcCA9IGZ1bmN0aW9uIE5vbmUgLT4gKCkgfCBTb21lIGYgLT4gc2V0IG8gcCBmXG5lbmRcblxuKCogSnN0ciAqKVxuXG5leHRlcm5hbCB0b19qc3RyIDogdCAtPiBKc3RyLnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvZl9qc3RyIDogSnN0ci50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5tb2R1bGUgSnN0ciA9IHN0cnVjdFxuICBsZXQgZmluZCBvIHAgPSBsZXQgcyA9IGdldCBvIHAgaW4gaWYgaXNfbm9uZSBzIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX2pzdHIgcylcbiAgbGV0IGdldCBvIHAgPSB0b19qc3RyIChnZXQgbyBwKVxuICBsZXQgc2V0IG8gcCBiID0gc2V0IG8gcCAob2ZfanN0ciBiKVxuICBsZXQgc2V0X2lmX3NvbWUgbyBwID0gZnVuY3Rpb24gTm9uZSAtPiAoKSB8IFNvbWUgZiAtPiBzZXQgbyBwIGZcblxuICAoKiBXaGVuIGRvIHdlIGdldCAuLi8gPyAqKVxuICB0eXBlIHQgPSBKc3RyLnRcbiAgbGV0IHRvX3N0cmluZyA9IEpzdHIudG9fc3RyaW5nXG5lbmRcblxuKCogU3RyaW5nICopXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5leHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4oKiBBcnJheXMgKilcblxubGV0IGlzX2FycmF5IGp2ID0gdG9fYm9vbCAoY2FsbCAoZ2V0IGdsb2JhbCBcIkFycmF5XCIpIFwiaXNBcnJheVwiIFt8IGp2IHxdKVxuXG5tb2R1bGUgSmFycmF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIGxldCBjcmVhdGUgbiA9IG5ldycgKGdldCBnbG9iYWwgXCJBcnJheVwiKSBbfCBvZl9pbnQgbiB8XVxuICBsZXQgbGVuZ3RoIGEgPSB0b19pbnQgKGdldCBhIFwibGVuZ3RoXCIpXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5lbmRcblxubGV0IHRvX2FycmF5IGNvbnYgdiA9XG4gIGxldCBsZW4gPSBKYXJyYXkubGVuZ3RoIHYgaW5cbiAgQXJyYXkuaW5pdCBsZW4gKGZ1biBpIC0+IGNvbnYgKEphcnJheS5nZXQgdiBpKSlcblxubGV0IG9mX2FycmF5IGNvbnYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgamEgPSBKYXJyYXkuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBKYXJyYXkuc2V0IGphIGkgKGNvbnYgKEFycmF5LmdldCBhIGkpKSBkb25lO1xuICBqYVxuXG5sZXQgdG9fbGlzdCBjb252IHYgPVxuICBsZXQgbGVuID0gSmFycmF5Lmxlbmd0aCB2IGluXG4gIExpc3QuaW5pdCBsZW4gKGZ1biBpIC0+IGNvbnYgKEphcnJheS5nZXQgdiBpKSlcblxubGV0IG9mX2xpc3QgY29udiBsID1cbiAgKCogU2hvdWxkIGJlIGJlbmNobWFya2VkIGNoZWNraW5nIGxlbmd0aCBvZiBbbF0gZmlyc3QgbWF5IGJlIGZhc3RlclxuICAgICAgIHRoYW4gZXh0ZW5kaW5nIHRoZSBhcnJheSByZXBlYXRlZGx5ICopXG4gIGxldCByZWMgbG9vcCBpIGphID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBqYVxuICB8IHYgOjogdnMgLT4gSmFycmF5LnNldCBqYSBpIChjb252IHYpOyBsb29wIChpICsgMSkgamEgdnNcbiAgaW5cbiAgbG9vcCAwIChKYXJyYXkuY3JlYXRlIDApIGxcblxuZXh0ZXJuYWwgdG9fanZfYXJyYXkgOiB0IC0+IHQgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanZfYXJyYXkgOiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5leHRlcm5hbCB0b19qdl9saXN0IDogdCAtPiB0IGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5leHRlcm5hbCBvZl9qdl9saXN0IDogdCBsaXN0IC0+IHQgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5leHRlcm5hbCB0b19qc3RyX2FycmF5IDogdCAtPiBKc3RyLnQgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuZXh0ZXJuYWwgb2ZfanN0cl9hcnJheSA6IEpzdHIudCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuZXh0ZXJuYWwgdG9fanN0cl9saXN0IDogdCAtPiBKc3RyLnQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcbmV4dGVybmFsIG9mX2pzdHJfbGlzdCA6IEpzdHIudCBsaXN0IC0+IHQgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbigqIEZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBhcHBseSA6IHQgLT4gdCBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5leHRlcm5hbCBjYWxsYmFjayA6IGFyaXR5OmludCAtPiAoXyAtPiBfKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuKCogRXJyb3JzICopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICB0eXBlIGVudW0gPVxuICBbIGBBYm9ydF9lcnJvciB8IGBDb25zdHJhaW50X2Vycm9yIHwgYERhdGFfY2xvbmVfZXJyb3IgfCBgRGF0YV9lcnJvclxuICB8IGBFbmNvZGluZ19lcnJvciB8IGBIaWVyYXJjaHlfcmVxdWVzdF9lcnJvciB8IGBJbmRleF9zaXplX2Vycm9yXG4gIHwgYEludmFsaWRfYWNjZXNzX2Vycm9yIHwgYEludmFsaWRfY2hhcmFjdGVyX2Vycm9yXG4gIHwgYEludmFsaWRfbW9kaWZpY2F0aW9uX2Vycm9yIHwgYEludmFsaWRfbm9kZV90eXBlX2Vycm9yXG4gIHwgYEludmFsaWRfc3RhdGVfZXJyb3IgfCBgTmFtZXNwYWNlX2Vycm9yIHwgYE5ldHdvcmtfZXJyb3JcbiAgfCBgTm9fbW9kaWZpY2F0aW9uX2FsbG93ZWRfZXJyb3IgfCBgTm90X2FsbG93ZWRfZXJyb3IgfCBgTm90X2ZvdW5kX2Vycm9yXG4gIHwgYE5vdF9yZWFkYWJsZV9lcnJvciB8IGBOb3Rfc3VwcG9ydGVkX2Vycm9yIHwgYE9wZXJhdGlvbl9lcnJvclxuICB8IGBRdW90YV9leGNlZWRlZF9lcnJvciB8IGBSZWFkX29ubHlfZXJyb3IgfCBgU2VjdXJpdHlfZXJyb3JcbiAgfCBgU3ludGF4X2Vycm9yIHwgYFRpbWVvdXRfZXJyb3IgfCBgVHJhbnNhY3Rpb25faW5hY3RpdmVfZXJyb3IgfCBgVHlwZV9lcnJvclxuICB8IGBUeXBlX21pc21hdGNoX2Vycm9yIHwgYFVybF9taXNtYXRjaF9lcnJvciB8IGBVbmtub3duX2Vycm9yXG4gIHwgYFZlcnNpb25fZXJyb3IgfCBgV3JvbmdfZG9jdW1lbnRfZXJyb3IgfCBgT3RoZXIgXVxuXG4gIHR5cGUgdCA9IEpzb29fcnVudGltZS5FcnJvci50XG4gIGxldCB2ID9uYW1lIG1zZyA6IHQgPVxuICAgIGxldCBlID0gbmV3JyAoZ2V0IGdsb2JhbCBcIkVycm9yXCIpIFt8IG9mX2pzdHIgbXNnIHxdIGluXG4gICAgbWF0Y2ggbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+IE9iai5tYWdpYyBlXG4gICAgfCBTb21lIG4gLT4gc2V0IGUgXCJuYW1lXCIgKG9mX2pzdHIgbik7IE9iai5tYWdpYyBlXG5cbiAgbGV0IG5hbWUgKGUgOiB0KSA9IHRvX2pzdHIgKGdldCAoT2JqLm1hZ2ljIGUpIFwibmFtZVwiKVxuICBsZXQgZW51bSBlID0gbWF0Y2ggdG9fc3RyaW5nIChnZXQgKE9iai5tYWdpYyBlKSBcIm5hbWVcIikgd2l0aFxuICB8IFwiQWJvcnRFcnJvclwiIC0+IGBBYm9ydF9lcnJvclxuICB8IFwiQ29uc3RyYWludEVycm9yXCIgLT4gYENvbnN0cmFpbnRfZXJyb3JcbiAgfCBcIkRhdGFDbG9uZUVycm9yXCIgLT4gYERhdGFfY2xvbmVfZXJyb3JcbiAgfCBcIkRhdGFFcnJvclwiIC0+IGBEYXRhX2Vycm9yXG4gIHwgXCJFbmNvZGluZ0Vycm9yXCIgLT4gYEVuY29kaW5nX2Vycm9yXG4gIHwgXCJIaWVyYXJjaHlSZXF1ZXN0RXJyb3JcIiAtPiBgSGllcmFyY2h5X3JlcXVlc3RfZXJyb3JcbiAgfCBcIkluZGV4U2l6ZUVycm9yXCIgLT4gYEluZGV4X3NpemVfZXJyb3JcbiAgfCBcIkludmFsaWRBY2Nlc3NFcnJvclwiIC0+IGBJbnZhbGlkX2FjY2Vzc19lcnJvclxuICB8IFwiSW52YWxpZENoYXJhY3RlckVycm9yXCIgLT4gYEludmFsaWRfY2hhcmFjdGVyX2Vycm9yXG4gIHwgXCJJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3JcIiAtPiBgSW52YWxpZF9tb2RpZmljYXRpb25fZXJyb3JcbiAgfCBcIkludmFsaWROb2RlVHlwZUVycm9yXCIgLT4gYEludmFsaWRfbm9kZV90eXBlX2Vycm9yXG4gIHwgXCJJbnZhbGlkU3RhdGVFcnJvclwiIC0+IGBJbnZhbGlkX3N0YXRlX2Vycm9yXG4gIHwgXCJOYW1lc3BhY2VFcnJvclwiIC0+IGBOYW1lc3BhY2VfZXJyb3JcbiAgfCBcIk5ldHdvcmtFcnJvclwiIC0+IGBOZXR3b3JrX2Vycm9yXG4gIHwgXCJOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvclwiIC0+IGBOb19tb2RpZmljYXRpb25fYWxsb3dlZF9lcnJvclxuICB8IFwiTm90QWxsb3dlZEVycm9yXCIgLT4gYE5vdF9hbGxvd2VkX2Vycm9yXG4gIHwgXCJOb3RGb3VuZEVycm9yXCIgLT4gYE5vdF9mb3VuZF9lcnJvclxuICB8IFwiTm90UmVhZGFibGVFcnJvclwiIC0+IGBOb3RfcmVhZGFibGVfZXJyb3JcbiAgfCBcIk5vdFN1cHBvcnRlZEVycm9yXCIgLT4gYE5vdF9zdXBwb3J0ZWRfZXJyb3JcbiAgfCBcIk9wZXJhdGlvbkVycm9yXCIgLT4gYE9wZXJhdGlvbl9lcnJvclxuICB8IFwiUXVvdGFFeGNlZWRlZEVycm9yXCIgLT4gYFF1b3RhX2V4Y2VlZGVkX2Vycm9yXG4gIHwgXCJSZWFkT25seUVycm9yXCIgLT4gYFJlYWRfb25seV9lcnJvclxuICB8IFwiU2VjdXJpdHlFcnJvclwiIC0+IGBTZWN1cml0eV9lcnJvclxuICB8IFwiU3ludGF4RXJyb3JcIiAtPiBgU3ludGF4X2Vycm9yXG4gIHwgXCJUaW1lb3V0RXJyb3JcIiAtPiBgVGltZW91dF9lcnJvclxuICB8IFwiVHlwZUVycm9yXCIgLT4gYFR5cGVfZXJyb3JcbiAgfCBcIlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvclwiIC0+IGBUcmFuc2FjdGlvbl9pbmFjdGl2ZV9lcnJvclxuICB8IFwiVHlwZU1pc21hdGNoRXJyb3JcIiAtPiBgVHlwZV9taXNtYXRjaF9lcnJvclxuICB8IFwiVVJMTWlzbWF0Y2hFcnJvclwiIC0+IGBVcmxfbWlzbWF0Y2hfZXJyb3JcbiAgfCBcIlVua25vd25FcnJvclwiIC0+IGBVbmtub3duX2Vycm9yXG4gIHwgXCJWZXJzaW9uRXJyb3JcIiAtPiBgVmVyc2lvbl9lcnJvclxuICB8IFwiV3JvbmdEb2N1bWVudEVycm9yXCIgLT4gYFdyb25nX2RvY3VtZW50X2Vycm9yXG4gIHwgXyAtPiBgT3RoZXJcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fanN0ciAoZ2V0IChPYmoubWFnaWMgZSkgXCJtZXNzYWdlXCIpXG4gIGxldCBzdGFjayBlID0gdG9fanN0ciAoZ2V0IChPYmoubWFnaWMgZSkgXCJzdGFja1wiKVxuICBsZXQgdG9fcmVzdWx0IGUgPSBFcnJvciBlXG5lbmRcblxuZXh0ZXJuYWwgb2ZfZXJyb3IgOiBFcnJvci50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0b19lcnJvciA6IHQgLT4gRXJyb3IudCA9IFwiJWlkZW50aXR5XCJcblxubGV0IHRocm93ID9uYW1lIG1zZyA9XG4gIGxldCBlID0gRXJyb3IudiA/bmFtZSBtc2cgaW5cbiAgKGpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIiA6IEVycm9yLnQgLT4gJ2EpIGVcblxuZXhjZXB0aW9uIEVycm9yID0gSnNvb19ydW50aW1lLkVycm9yLkV4blxuXG4oKiBJdGVyYWJsZSBhbmQgaXRlcmF0b3IgKilcblxubW9kdWxlIEl0ID0gc3RydWN0XG4gIHR5cGUgdCA9IGp2XG4gIHR5cGUgcmVzdWx0ID0ganZcblxuICBsZXQgc3ltYm9sIDoganYgPSBwdXJlX2pzX2V4cHIgXCJTeW1ib2wuaXRlcmF0b3JcIlxuICBleHRlcm5hbCBnZXRfc3ltYm9sIDoganYgLT4ganYgLT4ganYgPSBcImNhbWxfanNfZ2V0XCJcblxuICBsZXQgaXRlcmFibGUgbyA9IG1hdGNoIHRvX29wdGlvbiBGdW4uaWQgKGdldF9zeW1ib2wgbyBzeW1ib2wpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmUgfCBTb21lIGZ1bmMgLT4gYXBwbHkgZnVuYyBbfHxdXG5cbiAgbGV0IGl0ZXJhdG9yIG8gPSBhcHBseSAoZ2V0X3N5bWJvbCBvIHN5bWJvbCkgW3x8XVxuXG4gIGxldCBuZXh0IGl0ID0gY2FsbCBpdCBcIm5leHRcIiBbfHxdXG5cbiAgbGV0IHJlc3VsdF9kb25lIG8gPSBtYXRjaCB0b19vcHRpb24gdG9fYm9vbCAoZ2V0IG8gXCJkb25lXCIpIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBkIC0+IGRcblxuICBsZXQgcmVzdWx0X3ZhbHVlIG8gPSB0b19vcHRpb24gRnVuLmlkIChnZXQgbyBcInZhbHVlXCIpXG4gIGxldCBnZXRfcmVzdWx0X3ZhbHVlIG8gPSBnZXQgbyBcInZhbHVlXCJcblxuICBsZXQgZm9sZCBvZl9qdiBmIGl0IGFjYyA9XG4gICAgbGV0IHJlYyBsb29wIGl0IGFjYyA9XG4gICAgICBsZXQgciA9IG5leHQgaXQgaW5cbiAgICAgIGlmIHJlc3VsdF9kb25lIHIgdGhlbiBhY2MgZWxzZVxuICAgICAgbG9vcCBpdCAoZiAob2ZfanYgKGdldF9yZXN1bHRfdmFsdWUgcikpIGFjYylcbiAgICBpblxuICAgIGxvb3AgaXQgYWNjXG5cbiAgbGV0IGZvbGRfYmluZGluZ3MgfmtleSB+dmFsdWUgZiBpdCBhY2MgPVxuICAgIGxldCByZWMgbG9vcCBpdCBhY2MgPVxuICAgICAgbGV0IHIgPSBuZXh0IGl0IGluXG4gICAgICBpZiByZXN1bHRfZG9uZSByIHRoZW4gYWNjIGVsc2VcbiAgICAgIGxldCBhcnIgPSBnZXRfcmVzdWx0X3ZhbHVlIHIgaW5cbiAgICAgIGxvb3AgaXQgKGYgKGtleSAoSmFycmF5LmdldCBhcnIgMCkpICh2YWx1ZSAoSmFycmF5LmdldCBhcnIgMSkpIGFjYylcbiAgICBpblxuICAgIGxvb3AgaXQgYWNjXG5lbmRcblxuKCogUHJvbWlzZXMgKilcblxubW9kdWxlIFByb21pc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ganZcbiAgbGV0IHByb21pc2UgPSBnZXQgZ2xvYmFsIFwiUHJvbWlzZVwiXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGcgcmVzIHJlaiA9XG4gICAgICBmIChmdW4geCAtPiBhcHBseSByZXMgW3xyZXByIHh8XSkgKGZ1biB4IC0+IGFwcGx5IHJlaiBbfHJlcHIgeHxdKSBpblxuICAgIG5ldycgcHJvbWlzZSBbfCBjYWxsYmFjayB+YXJpdHk6MiBnIHxdXG4gIGxldCByZXNvbHZlIHYgPSBjYWxsIHByb21pc2UgXCJyZXNvbHZlXCIgW3wgcmVwciB2IHxdXG4gIGxldCByZWplY3QgdiA9IGNhbGwgcHJvbWlzZSBcInJlamVjdFwiIFt8IHJlcHIgdiB8XVxuICBsZXQgYXdhaXQgcCBrID0gaWdub3JlIChjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgayB8XSlcbiAgbGV0IGJpbmQgcCByZXMgPSBjYWxsIHAgXCJ0aGVuXCIgW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzIHxdXG4gIGxldCB0aGVuJyBwIHJlcyByZWogPVxuICAgIGNhbGwgcCBcInRoZW5cIiBbfCBjYWxsYmFjayB+YXJpdHk6MSByZXM7IGNhbGxiYWNrIH5hcml0eToxIHJlanxdXG5cbiAgbGV0IGFsbCBhcnIgPSBjYWxsIHByb21pc2UgXCJhbGxcIiBbfCByZXByIGFyciB8XVxuZW5kXG5cbigqIFVuaWNvZGUgaWRlbnRpZmllcnMgKilcblxudHlwZSBwcm9wJyA9IEpzdHIudFxuZXh0ZXJuYWwgZ2V0JyA6IHQgLT4gcHJvcCcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0JyA6IHQgLT4gcHJvcCcgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGUnIDogdCAtPiBwcm9wJyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5sZXQgZmluZCcgbyBwID0gbGV0IHYgPSBnZXQnIG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSB2XG5sZXQgZmluZF9tYXAnIGYgbyBwID0gbGV0IHYgPSBnZXQnIG8gcCBpbiBpZiBpc19ub25lIHYgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB2KVxuXG4oKiBYWFggdGhlIGZvbGxvd2luZyB3ZXJlIHN1cHBvc2VkIHRvIGJlIGRpcmVjdCBjYWxsIHRvIGV4dGVybmFscyBsaWtlIGZvclxuICAgdGhlIGFib3ZlIGJ1dCB0aGV5IGFyZSBub3QgaW1wbGVtZW50ZWQgdGhhdCB3YXkgZm9yIG5vdy4gU2VlIGRpc2N1c3Npb24gaGVyZTpcbiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2pzX29mX29jYW1sL3B1bGwvOTk3I2lzc3VlY29tbWVudC02OTQ5MjU3NjUuXG4gICBJdCB3b3VsZCBsaWtlbHkgbmVlZCBhIGJpdCBvZiB1cHN0cmVhbSBjYWpvbGluZyB0byBtb3ZlIG9uIOKAkyBPVE9IXG4gICB0aGVzZSBzaG91bGQgZW5kIHVwIGJlaW5nIHVzZWQgcGVydmFzaXZlbHkuICopXG5cbmxldCBvYmonIHByb3BzID0gb2JqIChBcnJheS5tYXAgKGZ1biAocCwgdikgLT4gSnN0ci50b19zdHJpbmcgcCwgdikgcHJvcHMpXG5sZXQgY2FsbCcgbyBtIGFyZ3MgPSBjYWxsIG8gKEpzdHIudG9fc3RyaW5nIG0pIGFyZ3NcblxuKCogRGVidWdnZXIgKilcblxuZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuKCogRmVhdHVyZSBkZXRlY3Rpb24gKilcblxubGV0IGhhcyBwIHYgPSBpc19zb21lIChnZXQgKHJlcHIgdikgcClcbmxldCBkZWZpbmVkIHYgPSBpc19zb21lIChyZXByIHYpXG5cbigqIENvbnZlcnNpb24gaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIENPTlYgPSBzaWdcbiAgdHlwZSB0XG4gIGV4dGVybmFsIHRvX2p2IDogdCAtPiBqdiA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgb2ZfanYgOiBqdiAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZW5kXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBleHRlcm5hbCB0b19qdiA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDogdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2pzX2dldCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfc3RyaW5nX2NvbXBhcmUiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9MaXN0IiwiSnNvb19ydW50aW1lIiwibnVsbCQiLCJ1bmRlZmluZWQkIiwiaXNfbnVsbCIsInYiLCJpc191bmRlZmluZWQiLCJpc19ub25lIiwiaXNfc29tZSIsInRvX29wdGlvbiIsImNvbnYiLCJvZl9vcHRpb24iLCJub25lIiwicGFyYW0iLCJnbG9iYWwiLCJzZXRfaWZfc29tZSIsIm8iLCJwIiwiZmluZCIsImZpbmRfbWFwIiwiZmluZF9wYXRoIiwicHMiLCJtYXRjaCIsImIiLCJnZXQiLCJzZXQiLCJpIiwicyIsImlzX2FycmF5IiwianYiLCJjcmVhdGUiLCJuIiwibGVuZ3RoIiwiYSIsInRvX2FycmF5IiwibGVuIiwib2ZfYXJyYXkiLCJqYSIsInRvX2xpc3QiLCJvZl9saXN0IiwibCIsInZzIiwibmFtZSIsIm1zZyIsImUiLCJlbnVtJCIsInN3aXRjaCQiLCJtZXNzYWdlIiwic3RhY2siLCJ0aHJvdyQiLCJFcnJvciIsInN5bWJvbCIsIml0ZXJhYmxlIiwiZnVuYyIsIml0ZXJhdG9yIiwibmV4dCIsIml0IiwicmVzdWx0X2RvbmUiLCJkIiwicmVzdWx0X3ZhbHVlIiwiZ2V0X3Jlc3VsdF92YWx1ZSIsImZvbGQiLCJvZl9qdiIsImFjYyIsInIiLCJmb2xkX2JpbmRpbmdzIiwia2V5IiwidmFsdWUiLCJhcnIiLCJwcm9taXNlIiwiZyIsInJlcyIsInJlaiIsIngiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXdhaXQkIiwiayIsImJpbmQiLCJ0aGVuIiwiYWxsIiwib2JqIiwicHJvcHMiLCJjYWxsIiwibSIsImFyZ3MiLCJoYXMiLCJkZWZpbmVkIiwiSnYiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLFlBQUFDLFdB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QVosSUFDeEM7QUFBQSxJQUFlLDRCQUE4QixpQkFBSztBQUFBO0FBQUEsWUFBQTRFLElBQUFDO0FBQUFBLElBUTNELE9BQUo7QUFBQSxhQUFJO0FBQUE7QUFBQSx3QkFBQXJFO0FBQUFBLG9CQUFBUixJQUFXLFVBQUFZLElBQUE7QUFBQSxnQkFBZSx5Q0FBZ0I7QUFBQSxlQUFJO0FBQUEsc0JBQU87QUFBQTtBQUFBLFlBQUFrRSxLQUFBbkUsR0FBQW9FLEdBQUFDO0FBQUFBLElBQzlDLE9BQVAsNkJBQU8saUNBQXVCO0FBQUE7QUFBQSxZQUFBQyxJQUFBckUsR0FBQVosR0FRYjtBQUFBLFlBQUFrRixRQUFBbEYsR0FDdEIsaUJBQWdCO0FBQUE7QUFBQSxJQUFBbUY7QUFBQUEsTUF4Q0k7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURqU3BDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzQxMjUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvZnV0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiBXZSByZXByZXNlbnQgZnV0dXJlcyBieSBhbiBvYmplY3QgeyBmdXQgOiA8cHJvbWlzZT4gfSB3aXRoIGEgc2luZ2xlXG4gICBbZnV0XSBKYXZhU2NyaXB0IFByb21pc2Ugb2JqZWN0IHdoaWNoLCBieSBjb25zdHJ1Y3Rpb24sICpuZXZlcipcbiAgIHJlamVjdHMuIFRoZSBwcm9taXNlIGlzIHdyYXBwZWQgaW4gYW4gb2JqZWN0IGJlY2F1c2UgSmF2YVNjcmlwdCdzXG4gICBbcmVzb2x2ZV0gd2hpY2ggc2hvdWxkIGJlIG1vbmFkaWMgW3JldHVybl0gdW5mb3J0dW5hdGVseSBhbHNvXG4gICBtb25hZGljYWxseSBbam9pbl1zLiBUaGlzIEphdmFTY3JpcHQgZXhwcmVzc2lvbjpcblxuICAgICBQcm9taXNlLnJlc29sdmUgKFByb21pc2UucmVzb2x2ZSAoXCJOb29vb29vIVwiKSlcblxuICAgZXZhbHVhdGVzIHRvOiAgUHJvbWlzZSB7PGZ1bGZpbGxlZD46IFwiTm9vb29vbyFcIn1cbiAgICAgaW5zdGVhZCBvZjogIFByb21pc2UgezxmdWxmaWxsZWQ+OiBQcm9taXNlIHs8ZnVsZmlsbGVkPjogXCJcIk5vb29vb28hXCJcIn19XG5cbiAgIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB0eXBlIFtyZXNvbHZlXSBjb3JyZWN0bHkgaW4gT0NhbWwgc2luY2UgaXRcbiAgIHdvdWxkIG5lZWQgdG8gaGF2ZSB0aGVzZSB0d28gdHlwZXM6XG5cbiAgICAgdmFsIHJlc29sdmUgOiAnYSAtPiAnYSBQcm9taXNlLnRcbiAgICAgdmFsIHJlc29sdmUgOiAnYSBQcm9taXNlLnQgLT4gJ2EgUHJvbWlzZS50XG5cbiAgIEluIGdlbmVyYWwgdGhpcyBicmVha3MgdHlwZSBzYWZldHkgZm9yIGV4YW1wbGUgW2JpbmRdaW5nIGEgWydhXG4gICBGdXQudCBGdXQudF0gdmFsdWUgeW91ciBmdW5jdGlvbiBjb3VsZCBlbmQgdXAgd2l0aCBhIGdyb3VuZCB2YWx1ZVxuICAgb2YgdHlwZSBbJ2FdIG5vdCB0aGUgZXhwZWN0ZWQgWydhIEZ1dC50XSB2YWx1ZSBhcyBhcmd1bWVudC4gQnlcbiAgIHdyYXBwaW5nIHRoZSBwcm9taXNlIGluIGFuIG9iamVjdCB3ZSBjYW4gY29udHJvbCB0aGF0LiAqKVxuXG50eXBlICdhIHQgPSBKdi50ICgqIGEgSmF2YVNjcmlwdCBvYmplY3Qgb2YgdGhlIGZvcm06IHsgZnV0IDogPHByb21pc2U+IH0gKilcblxubGV0IGZ1dCBwID0gSnYub2JqIFt8IFwiZnV0XCIsIHAgfF1cbmxldCBwcm9taXNlIGYgPSBKdi5nZXQgZiBcImZ1dFwiXG5sZXQgcHJvbWlzZScgZiA9IEp2LmdldCBmIFwiZnV0XCJcbmxldCBjcmVhdGUgKCkgPSAoKiBVZ2x5IGFzIHNoaXQgYnV0IHRoYXQncyB3aGF0IG5ldyBQcm9taXNlIGdpdmVzIHVzLiAgKilcbiAgbGV0IG5vdF9zZXQgPSBmdW4gXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgbGV0IGlzX3NldCA9IGZ1biBfIC0+IEp2LnRocm93IChKc3RyLnYgXCJUaGUgZnV0dXJlIGlzIGFscmVhZHkgc2V0XCIpIGluXG4gIGxldCBzZXR0ZXIgPSByZWYgbm90X3NldCBpblxuICBsZXQgc2V0X3NldHRlciByZXNvbHZlIF9yZWplY3QgPSBzZXR0ZXIgOj0gcmVzb2x2ZSBpblxuICBsZXQgcCA9IEp2LlByb21pc2UuY3JlYXRlIHNldF9zZXR0ZXIgaW5cbiAgbGV0IHNldCB2ID0gIXNldHRlciB2OyBzZXR0ZXIgOj0gaXNfc2V0IGluXG4gIGZ1dCBwLCBzZXRcblxubGV0IGF3YWl0IGYgayA9IEp2LlByb21pc2UuYXdhaXQgKHByb21pc2UgZikga1xubGV0IHJldHVybiB2ID0gZnV0IEBAIEp2LlByb21pc2UucmVzb2x2ZSB2XG5sZXQgYmluZCBmIGZuID0gZnV0IEBAIEp2LlByb21pc2UuYmluZCAocHJvbWlzZSBmKSAoZnVuIHYgLT4gcHJvbWlzZSAoZm4gdikpXG5sZXQgbWFwIGZuIGYgPSBiaW5kIGYgKGZ1biB2IC0+IHJldHVybiAoZm4gdikpXG5sZXQgcGFpciBmMCBmMSA9XG4gIGZ1dCBAQFxuICBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZjApIEBAIGZ1biB2MCAtPlxuICBKdi5Qcm9taXNlLmJpbmQgKHByb21pc2UgZjEpIEBAIGZ1biB2MSAtPlxuICBKdi5Qcm9taXNlLnJlc29sdmUgKHYwLCB2MSlcblxubGV0IG9mX2xpc3QgZnMgPVxuICBsZXQgYXJyID0gSnYub2ZfbGlzdCBwcm9taXNlJyBmcyBpblxuICBsZXQgYWxsID0gSnYuUHJvbWlzZS5hbGwgYXJyIGluXG4gIGxldCB0b19saXN0IGwgPSBKdi5Qcm9taXNlLnJlc29sdmUgKEp2LnRvX2xpc3QgT2JqLm1hZ2ljIGwpIGluXG4gIGZ1dCBAQCBKdi5Qcm9taXNlLmJpbmQgYWxsIHRvX2xpc3RcblxubGV0IHRpY2sgfm1zID1cbiAgZnV0IEBAIEp2LlByb21pc2UuY3JlYXRlIEBAIGZ1biByZXMgX3JlaiAtPlxuICBpZ25vcmUgKEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwic2V0VGltZW91dFwiKVxuICAgICAgICAgICAgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjEgcmVzOyBvZl9pbnQgbXMgfF0pXG5cbigqIENvbnZlcnRpbmcgd2l0aCBKYXZhU2NyaXB0IHByb21pc2VzICopXG5cbnR5cGUgbm9ucmVjICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIHJlc3VsdCB0XG50eXBlICdhIG9yX2Vycm9yID0gKCdhLCBKdi5FcnJvci50KSByZXN1bHRcblxubGV0IG9rIHYgPSByZXR1cm4gKE9rIHYpXG5sZXQgZXJyb3IgZSA9IHJldHVybiAoRXJyb3IgZSlcblxubGV0IG9mX3Byb21pc2UnIH5vayB+ZXJyb3IgcCA9XG4gIGxldCBvayB2ID0gSnYuUHJvbWlzZS5yZXNvbHZlIChPayAob2sgdikpIGluXG4gIGxldCBlcnJvciBlID0gSnYuUHJvbWlzZS5yZXNvbHZlIChFcnJvciAoZXJyb3IgZSkpIGluXG4gIGZ1dCBAQCBKdi5Qcm9taXNlLnRoZW4nIHAgb2sgZXJyb3JcblxubGV0IHRvX3Byb21pc2UnIH5vayB+ZXJyb3IgZiA9XG4gIEp2LlByb21pc2UuY3JlYXRlIEBAIGZ1biByZXMgcmVqIC0+XG4gIGF3YWl0IGYgQEAgZnVuY3Rpb25cbiAgfCBPayB2IC0+IHJlcyAob2sgdilcbiAgfCBFcnJvciBlIC0+IHJlaiAoZXJyb3IgZSlcblxubGV0IG9mX3Byb21pc2Ugfm9rIHYgPSBvZl9wcm9taXNlJyB+b2sgfmVycm9yOkp2LnRvX2Vycm9yIHZcbmxldCB0b19wcm9taXNlIH5vayB2ID0gdG9fcHJvbWlzZScgfm9rIH5lcnJvcjpKdi5vZl9lcnJvciB2XG5cbigqIEZ1dHVyZSBzeW50YXhlcyAqKVxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCogKSA9IGJpbmRcbiAgbGV0ICggYW5kKiApID0gcGFpclxuICBsZXQgKCBsZXQrICkgZiBmbiA9IG1hcCBmbiBmXG4gIGxldCAoIGFuZCsgKSA9ICggYW5kKiApXG5lbmRcblxubW9kdWxlIFJlc3VsdF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJlc3VsdF9wYWlyIHIgPSBtYXRjaCByIHdpdGhcbiAgfCAoRXJyb3IgXyBhcyByKSwgXyB8IF8sIChFcnJvciBfIGFzIHIpIC0+IHJcbiAgfCBPayB2MCwgT2sgdjEgLT4gT2sgKHYwLCB2MSlcblxuICBsZXQgKCBsZXQqICkgZiBmbiA9IGJpbmQgZiBAQCBmdW5jdGlvblxuICB8IE9rIHYgLT4gZm4gdlxuICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZVxuXG4gIGxldCAoIGFuZCogKSBmMCBmMSA9IG1hcCByZXN1bHRfcGFpciAocGFpciBmMCBmMSlcbiAgbGV0ICggbGV0KyApIGYgZm4gPSBtYXAgKFJlc3VsdC5tYXAgZm4pIGZcbiAgbGV0ICggYW5kKyApID0gKCBhbmQqIClcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfUmVzdWx0IiwiSnYiLCJBc3NlcnRfZmFpbHVyZSIsInByb21pc2UiLCJjcmVhdGUiLCJwYXJhbSIsIm5vdF9zZXQiLCJpc19zZXQiLCJzZXR0ZXIiLCJzZXRfc2V0dGVyIiwicmVzb2x2ZSIsInJlamVjdCIsInAiLCJzZXQiLCJ2IiwiYXdhaXQkIiwiayIsInJldHVybiQiLCJiaW5kIiwiZm4iLCJtYXAiLCJwYWlyIiwiZjAiLCJmMSIsInYwIiwidjEiLCJvZl9saXN0IiwiZnMiLCJhcnIiLCJhbGwiLCJ0b19saXN0IiwibCIsInRpY2siLCJtcyIsInJlcyIsInJlaiIsIm9rIiwiZXJyb3IiLCJlIiwib2ZfcHJvbWlzZSIsInRvX3Byb21pc2UiLCJsZXQkIiwicmVzdWx0X3BhaXIiLCJyIiwibWF0Y2giLCJhbmQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsOEJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLFlBQUFDLFFBQUFWLEdDK0IrQjtBQUFBLFdEL0IvQjtBQUFBLFlBQUFXLE9BQUFD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QTtBQUFBO0FBQUEsWUFBQStCLElBQUF2QixJQUFBQyxJQUVXLE9BQVksaUJBQVosYUFBWTtBQUFBLFlBQUFrQixNQUFBaEQsR0FBQTBCO0FBQUFBLFFBQUEsSUFDekI7QUFBQSxJQUFlLHVCQUFmLHFCQUFpQjtBQUFBO0FBQUEsR0R2RzNDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6MzQzMDIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJyLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9icnIvYnJyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyMCBUaGUgYnJyIHByb2dyYW1tZXJzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiBET00gZXZlbnRzLlxuXG4gICBXZSBuZWVkIHRoYXQgdW5kZXJuZWF0aCBzb21lIG9mIHRoZSBBUElzIGJlbG93LCBzb1xuICAgdGhhdCBjb21lcyBmaXJzdC4gKilcblxubW9kdWxlIEV2ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwZScgPSBKc3RyLnRcbiAgbW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHZvaWRcbiAgICB0eXBlICdhIHQgPSAnYSB0eXBlJ1xuICAgIGV4dGVybmFsIGNyZWF0ZSA6IEpzdHIudCAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICAgIGV4dGVybmFsIG5hbWUgOiAnYSB0IC0+IEpzdHIudCA9IFwiJWlkZW50aXR5XCJcbiAgICBleHRlcm5hbCB2b2lkIDogSnN0ci50IC0+ICdhIHQgPSBcIiVpZGVudGl0eVwiXG4gIGVuZFxuICB0eXBlIHZvaWQgPSBUeXBlLnZvaWQgdHlwZSdcblxuICAoKiBFdmVudHMgKilcblxuICB0eXBlIGluaXQgPSBKdi50XG4gIGxldCBpbml0ID9idWJibGVzID9jYW5jZWxhYmxlID9jb21wb3NlZCAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImJ1YmJsZXNcIiBidWJibGVzO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNhbmNlbGFibGVcIiBjYW5jZWxhYmxlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNvbXBvc2VkXCIgY29tcG9zZWQ7XG4gICAgb1xuXG4gIHR5cGUgdGFyZ2V0ID0gSnYudFxuICBleHRlcm5hbCB0YXJnZXRfdG9fanYgOiB0YXJnZXQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIHRhcmdldF9vZl9qdiA6ICdhIC0+IHRhcmdldCA9IFwiJWlkZW50aXR5XCJcblxuICB0eXBlICdhIHQgPSBKdi50XG4gIHR5cGUgJ2EgZXZlbnQgPSAnYSB0XG4gIGV4dGVybmFsIHRvX2p2IDogJ2EgdCAtPiBKdi50ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBvZl9qdiA6IEp2LnQgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IGV2ZW50ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkV2ZW50XCJcbiAgbGV0IGNyZWF0ZSA/KGluaXQgPSBKdi5vYmogW3x8XSkgdCA9IEp2Lm5ldycgZXZlbnQgSnYuW3wgb2ZfanN0ciB0OyBpbml0fF1cbiAgZXh0ZXJuYWwgYXNfdHlwZSA6ICdhIHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG4gIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcInR5cGVcIlxuICBsZXQgdGFyZ2V0IGUgPSBKdi5nZXQgZSBcInRhcmdldFwiXG4gIGxldCBjdXJyZW50X3RhcmdldCBlID0gSnYuZ2V0IGUgXCJjdXJyZW50VGFyZ2V0XCJcbiAgbGV0IGNvbXBvc2VkX3BhdGggZSA9IEp2LnRvX2xpc3QgdGFyZ2V0X29mX2p2IChKdi5jYWxsIGUgXCJjb21wb3NlZFBhdGhcIiBbfHxdKVxuICBsZXQgZXZlbnRfcGhhc2UgZSA9XG4gICAgbWF0Y2ggSnYuSW50LmdldCBlIFwiZXZlbnRQaGFzZVwiIHdpdGhcbiAgICB8IDEgLT4gYENhcHR1cmluZyB8IDIgLT4gYEF0X3RhcmdldCB8IDMgLT4gYEJ1YmJsaW5nIHwgXyAtPiBgTm9uZVxuXG4gIGxldCBidWJibGVzIGUgPSBKdi5Cb29sLmdldCBlIFwiYnViYmxlc1wiXG4gIGxldCBzdG9wX3Byb3BhZ2F0aW9uIGUgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwic3RvcFByb3BhZ2F0aW9uXCIgW3x8XVxuICBsZXQgc3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiIFt8fF1cblxuICBsZXQgY2FuY2VsYWJsZSBlID0gSnYuQm9vbC5nZXQgZSBcImNhbmNlbGFibGVcIlxuICBsZXQgcHJldmVudF9kZWZhdWx0IGUgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwicHJldmVudERlZmF1bHRcIiBbfHxdXG4gIGxldCBkZWZhdWx0X3ByZXZlbnRlZCBlID0gSnYuQm9vbC5nZXQgZSBcImRlZmF1bHRQcmV2ZW50ZWRcIlxuICBsZXQgY29tcG9zZWQgZSA9IEp2LkJvb2wuZ2V0IGUgXCJjb21wb3NlZFwiXG4gIGxldCBpc190cnVzdGVkIGUgPSBKdi5Cb29sLmdldCBlIFwiaXNUcnVzdGVkXCJcbiAgbGV0IHRpbWVzdGFtcF9tcyBlID0gSnYuRmxvYXQuZ2V0IGUgXCJ0aW1lU3RhbXBcIlxuICBsZXQgZGlzcGF0Y2ggZSB0ID0gSnYudG9fYm9vbCBAQCBKdi5jYWxsIHQgXCJkaXNwYXRjaEV2ZW50XCIgW3wgZSB8XVxuXG4gICgqIExpc3RlbmluZyAqKVxuXG4gIHR5cGUgbGlzdGVuX29wdHMgPSBKdi50XG4gIGxldCBsaXN0ZW5fb3B0cyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImNhcHR1cmVcIiBjYXB0dXJlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcIm9uY2VcIiBvbmNlO1xuICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInBhc3NpdmVcIiBwYXNzaXZlO1xuICAgIG9cblxuICB0eXBlIGxpc3RlbmVyID0gdW5pdCAtPiB1bml0XG5cbiAgbGV0IGxpc3RlbiA/KG9wdHMgPSBKdi5vYmogW3x8XSkgdHlwZScgZiB0ID1cbiAgICBsZXQgdHlwZScgPSBKdi5vZl9qc3RyIHR5cGUnIGluXG4gICAgbGV0IGYgPSBKdi5jYWxsYmFjayB+YXJpdHk6MSBmIGluXG4gICAgbGV0IHVubGlzdGVuICgpID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHQgXCJyZW1vdmVFdmVudExpc3RlbmVyXCIgW3x0eXBlJzsgZjsgb3B0cyB8XVxuICAgIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgdCBcImFkZEV2ZW50TGlzdGVuZXJcIiBbfHR5cGUnOyBmOyBvcHRzIHxdO1xuICAgIHVubGlzdGVuXG5cbiAgbGV0IHVubGlzdGVuIHVubGlzdGVuID0gdW5saXN0ZW4gKClcblxuICBsZXQgbmV4dCA/Y2FwdHVyZSB0eXBlJyB0ID1cbiAgICBsZXQgZnV0LCBzZXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IG9wdHMgPSBsaXN0ZW5fb3B0cyA/Y2FwdHVyZSB+b25jZTp0cnVlICgpIGluXG4gICAgaWdub3JlIChsaXN0ZW4gfm9wdHMgdHlwZScgc2V0IHQgOiBsaXN0ZW5lcik7XG4gICAgZnV0XG5cbiAgKCogRXZlbnQgb2JqZWN0cyAqKVxuXG4gIG1vZHVsZSBEYXRhX3RyYW5zZmVyID0gc3RydWN0XG4gICAgbW9kdWxlIEVmZmVjdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgbm9uZSA9IEpzdHIudiBcIm5vbmVcIlxuICAgICAgbGV0IGNvcHkgPSBKc3RyLnYgXCJjb3B5XCJcbiAgICAgIGxldCBjb3B5X2xpbmsgPSBKc3RyLnYgXCJjb3B5TGlua1wiXG4gICAgICBsZXQgY29weV9tb3ZlID0gSnN0ci52IFwiY29weU1vdmVcIlxuICAgICAgbGV0IGxpbmsgPSBKc3RyLnYgXCJsaW5rXCJcbiAgICAgIGxldCBsaW5rX21vdmUgPSBKc3RyLnYgXCJsaW5rTW92ZVwiXG4gICAgICBsZXQgbW92ZSA9IEpzdHIudiBcIm1vdmVcIlxuICAgICAgbGV0IGFsbCA9IEpzdHIudiBcImFsbFwiXG4gICAgICBsZXQgdW5pbml0aWFsaXplZCA9IEpzdHIudiBcInVuaW5pdGlhbGl6ZWRcIlxuICAgIGVuZFxuICAgIG1vZHVsZSBJdGVtID0gc3RydWN0XG4gICAgICBtb2R1bGUgS2luZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgICAgbGV0IGZpbGUgPSBKc3RyLnYgXCJmaWxlXCJcbiAgICAgICAgbGV0IHN0cmluZyA9IEpzdHIudiBcInN0cmluZ1wiXG4gICAgICBlbmRcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgbGV0IGtpbmQgaSA9IEp2LkpzdHIuZ2V0IGkgXCJraW5kXCJcbiAgICAgIGxldCB0eXBlJyBpID0gSnYuSnN0ci5nZXQgaSBcInR5cGVcIlxuICAgICAgbGV0IGdldF9maWxlIGkgPSBKdi50b19vcHRpb24gRnVuLmlkIChKdi5jYWxsIGkgXCJnZXRBc0ZpbGVcIiBbfHxdKVxuICAgICAgbGV0IGdldF9qc3RyIGkgPVxuICAgICAgICBsZXQgc3RyLCBzZXRfc3RyID0gRnV0LmNyZWF0ZSAoKSBpblxuICAgICAgICBsZXQgc2V0X3N0ciA9IEp2LmNhbGxiYWNrIH5hcml0eToxIHNldF9zdHIgaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGkgXCJnZXRBc1N0cmluZ1wiIFt8IHNldF9zdHIgfF0pO1xuICAgICAgICBzdHJcbiAgICBlbmRcbiAgICBtb2R1bGUgSXRlbV9saXN0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKdi50XG4gICAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgbGV0IGxlbmd0aCBsID0gSnYuSW50LmdldCBsIFwibGVuZ3RoXCJcblxuICAgICAgbGV0IGFkZF9qc3RyIGwgfnR5cGUnIHN0ciA9XG4gICAgICAgIEp2LnRvX29wdGlvbiBJdGVtLm9mX2p2IEBAXG4gICAgICAgIEp2LmNhbGwgbCBcImFkZFwiIEp2Llt8IG9mX2pzdHIgc3RyOyBvZl9qc3RyIHR5cGUnIHxdXG5cbiAgICAgIGxldCBhZGRfZmlsZSB0IGZpbGUgPVxuICAgICAgICBKdi50b19vcHRpb24gSXRlbS5vZl9qdiBAQFxuICAgICAgICBKdi5jYWxsIHQgXCJhZGRcIiBKdi5bfCBmaWxlIHxdXG5cbiAgICAgIGxldCByZW1vdmUgbCBpID0gaWdub3JlIChKdi5jYWxsIGwgXCJyZW1vdmVcIiBKdi5bfG9mX2ludCBpfF0pXG4gICAgICBsZXQgY2xlYXIgbCA9IGlnbm9yZSAoSnYuY2FsbCBsIFwiY2xlYXJcIiBbfHxdKVxuICAgICAgZXh0ZXJuYWwgaXRlbSA6IHQgLT4gaW50IC0+IEl0ZW0udCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgICBsZXQgaXRlbXMgbCA9XG4gICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgZm9yIGkgPSBsZW5ndGggbCAtIDEgZG93bnRvIDAgZG8gYWNjIDo9IGl0ZW0gbCBpIDo6ICFhY2MgZG9uZTtcbiAgICAgICAgIWFjY1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICAgIGxldCBkcm9wX2VmZmVjdCBkID0gSnYuSnN0ci5nZXQgZCBcImRyb3BFZmZlY3RcIlxuICAgIGxldCBzZXRfZHJvcF9lZmZlY3QgZCBlID0gSnYuSnN0ci5zZXQgZCBcImRyb3BFZmZlY3RcIiBlXG4gICAgbGV0IGVmZmVjdF9hbGxvd2VkIGQgPSBKdi5Kc3RyLmdldCBkIFwiZWZmZWN0QWxsb3dlZFwiXG4gICAgbGV0IHNldF9lZmZlY3RfYWxsb3dlZCBkIGUgPSBKdi5Kc3RyLnNldCBkIFwiZWZmZWN0QWxsb3dlZFwiIGVcbiAgICBsZXQgaXRlbXMgZCA9IEl0ZW1fbGlzdC5vZl9qdiBAQCBKdi5nZXQgZCBcIml0ZW1zXCJcbiAgZW5kXG4gIG1vZHVsZSBDbGlwYm9hcmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IGRhdGEgYyA9IEp2LmZpbmRfbWFwIERhdGFfdHJhbnNmZXIub2ZfanYgYyBcImNsaXBib2FyZERhdGFcIlxuICBlbmRcbiAgbW9kdWxlIENvbXBvc2l0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGkgPSBKdi5Kc3RyLmdldCBpIFwiZGF0YVwiXG4gIGVuZFxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IG1lc3NhZ2UgZSA9IEp2LkpzdHIuZ2V0IGUgXCJtZXNzYWdlXCJcbiAgICBsZXQgZmlsZW5hbWUgZSA9IEp2LkpzdHIuZ2V0IGUgXCJmaWxlbmFtZVwiXG4gICAgbGV0IGxpbmVubyBlID0gSnYuSW50LmdldCBlIFwibGluZW5vXCJcbiAgICBsZXQgY29sbm8gZSA9IEp2LkludC5nZXQgZSBcImNvbG5vXCJcbiAgICBsZXQgZXJyb3IgZSA9IEp2LmdldCBlIFwiZXJyb3JcIlxuICBlbmRcbiAgbW9kdWxlIEV4dGVuZGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHdhaXRfdW50aWwgZSBmdXQgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcIndhaXRVbnRpbFwiIFt8IEZ1dC50b19wcm9taXNlIH5vazpKdi5yZXByIGZ1dCB8XVxuICBlbmRcbiAgbW9kdWxlIEZvY3VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByZWxhdGVkX3RhcmdldCBtID0gSnYuZmluZF9tYXAgdGFyZ2V0X29mX2p2IG0gXCJyZWxhdGVkVGFyZ2V0XCJcbiAgZW5kXG4gIG1vZHVsZSBIYXNoX2NoYW5nZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgb2xkX3VybCBlID0gSnYuSnN0ci5nZXQgZSBcIm9sZFVSTFwiXG4gICAgbGV0IG5ld191cmwgZSA9IEp2LkpzdHIuZ2V0IGUgXCJuZXdVUkxcIlxuICBlbmRcbiAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCBkYXRhIGkgPSBKdi5Kc3RyLmdldCBpIFwiZGF0YVwiXG4gICAgbGV0IGRhdGFfdHJhbnNmZXIgaSA9IEp2LmZpbmQgaSBcImRhdGFUcmFuc2ZlclwiXG4gICAgbGV0IGlucHV0X3R5cGUgaSA9IEp2LkpzdHIuZ2V0IGkgXCJpbnB1dFR5cGVcIlxuICAgIGxldCBpc19jb21wb3NpbmcgaSA9IEp2LkJvb2wuZ2V0IGkgXCJpc0NvbXBvc2luZ1wiXG4gIGVuZFxuICBtb2R1bGUgS2V5Ym9hcmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTG9jYXRpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludFxuICAgICAgbGV0IHN0YW5kYXJkID0gMHgwMFxuICAgICAgbGV0IGxlZnQgPSAweDAxXG4gICAgICBsZXQgcmlnaHQgPSAweDAyXG4gICAgICBsZXQgbnVtcGFkID0gMHgwM1xuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQga2V5IGsgPSBKdi5Kc3RyLmdldCBrIFwia2V5XCJcbiAgICBsZXQgY29kZSBrID0gSnYuSnN0ci5nZXQgayBcImNvZGVcIlxuICAgIGxldCBsb2NhdGlvbiBrID0gSnYuSW50LmdldCBrIFwibG9jYXRpb25cIlxuICAgIGxldCByZXBlYXQgayA9IEp2LkJvb2wuZ2V0IGsgXCJyZXBlYXRcIlxuICAgIGxldCBpc19jb21wb3NpbmcgayA9IEp2LkJvb2wuZ2V0IGsgXCJpc0NvbXBvc2luZ1wiXG4gICAgbGV0IGFsdF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJhbHRLZXlcIlxuICAgIGxldCBjdHJsX2tleSBrID0gSnYuQm9vbC5nZXQgayBcImN0cmxLZXlcIlxuICAgIGxldCBzaGlmdF9rZXkgayA9IEp2LkJvb2wuZ2V0IGsgXCJzaGlmdEtleVwiXG4gICAgbGV0IG1ldGFfa2V5IGsgPSBKdi5Cb29sLmdldCBrIFwibWV0YUtleVwiXG4gICAgbGV0IGdldF9tb2RpZmllcl9zdGF0ZSBrIGtleSA9XG4gICAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgayBcImdldE1vZGlmaWVyU3RhdGVcIiBKdi5bfCBvZl9qc3RyIGtleSB8XVxuICBlbmRcbiAgbW9kdWxlIE1vdXNlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGxldCByZWxhdGVkX3RhcmdldCBtID0gSnYuZmluZF9tYXAgdGFyZ2V0X29mX2p2IG0gXCJyZWxhdGVkVGFyZ2V0XCJcbiAgICBsZXQgb2Zmc2V0X3ggbSA9IEp2LkZsb2F0LmdldCBtIFwib2Zmc2V0WFwiXG4gICAgbGV0IG9mZnNldF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm9mZnNldFlcIlxuICAgIGxldCBjbGllbnRfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJjbGllbnRYXCJcbiAgICBsZXQgY2xpZW50X3kgbSA9IEp2LkZsb2F0LmdldCBtIFwiY2xpZW50WVwiXG4gICAgbGV0IHBhZ2VfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJwYWdlWFwiXG4gICAgbGV0IHBhZ2VfeSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJwYWdlWVwiXG4gICAgbGV0IHNjcmVlbl94IG0gPSBKdi5GbG9hdC5nZXQgbSBcInNjcmVlblhcIlxuICAgIGxldCBzY3JlZW5feSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJzY3JlZW5ZXCJcbiAgICBsZXQgbW92ZW1lbnRfeCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtb3ZlbWVudFhcIlxuICAgIGxldCBtb3ZlbWVudF95IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm1vdmVtZW50WVwiXG4gICAgbGV0IGJ1dHRvbiBtID0gSnYuSW50LmdldCBtIFwiYnV0dG9uXCJcbiAgICBsZXQgYnV0dG9ucyBtID0gSnYuSW50LmdldCBtIFwiYnV0dG9uc1wiXG4gICAgbGV0IGFsdF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJhbHRLZXlcIlxuICAgIGxldCBjdHJsX2tleSBtID0gSnYuQm9vbC5nZXQgbSBcImN0cmxLZXlcIlxuICAgIGxldCBzaGlmdF9rZXkgbSA9IEp2LkJvb2wuZ2V0IG0gXCJzaGlmdEtleVwiXG4gICAgbGV0IG1ldGFfa2V5IG0gPSBKdi5Cb29sLmdldCBtIFwibWV0YUtleVwiXG4gICAgbGV0IGdldF9tb2RpZmllcl9zdGF0ZSBtIGtleSA9XG4gICAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgbSBcImdldE1vZGlmaWVyU3RhdGVcIiBKdi5bfCBvZl9qc3RyIGtleSB8XVxuICBlbmRcbiAgbW9kdWxlIERyYWcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgZXh0ZXJuYWwgYXNfbW91c2UgOiB0IC0+IE1vdXNlLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGRhdGFfdHJhbnNmZXIgZCA9IEp2LmZpbmRfbWFwIEZ1bi5pZCBkIFwiZGF0YVRyYW5zZmVyXCJcbiAgZW5kXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnYSBldmVudCA9ICdhIHRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgZXh0ZXJuYWwgYXNfbW91c2UgOiB0IC0+IE1vdXNlLnQgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IGlkIHAgPSBKdi5JbnQuZ2V0IHAgXCJwb2ludGVySWRcIlxuICAgIGxldCB3aWR0aCBwID0gSnYuRmxvYXQuZ2V0IHAgXCJ3aWR0aFwiXG4gICAgbGV0IGhlaWdodCBwID0gSnYuRmxvYXQuZ2V0IHAgXCJoZWlnaHRcIlxuICAgIGxldCBwcmVzc3VyZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJwcmVzc3VyZVwiXG4gICAgbGV0IHRhbmdlbnRpYWxfcHJlc3N1cmUgcCA9IEp2LkZsb2F0LmdldCBwIFwidGFuZ2VudGlhbFByZXNzdXJlXCJcbiAgICBsZXQgdGlsdF94IHAgPSBKdi5JbnQuZ2V0IHAgXCJ0aWx0WFwiXG4gICAgbGV0IHRpbHRfeSBwID0gSnYuSW50LmdldCBwIFwidGlsdFlcIlxuICAgIGxldCB0d2lzdCBwID0gSnYuSW50LmdldCBwIFwidHdpc3RcIlxuICAgIGxldCBhbHRpdHVkZV9hbmdsZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJhbHRpdHVkZUFuZ2xlXCJcbiAgICBsZXQgYXppbXV0aF9hbmdsZSBwID0gSnYuRmxvYXQuZ2V0IHAgXCJhemltdXRoQW5nbGVcIlxuICAgIGxldCB0eXBlJyBwID0gSnYuSnN0ci5nZXQgcCBcInBvaW50ZXJUeXBlXCJcbiAgICBsZXQgaXNfcHJpbWFyeSBwID0gSnYuQm9vbC5nZXQgcCBcImlzUHJpbWFyeVwiXG4gICAgbGV0IGdldF9jb2FsZXNjZWRfZXZlbnRzIHAgPVxuICAgICAgSnYudG9fbGlzdCBGdW4uaWQgKEp2LmNhbGwgcCBcImdldENvYWxlc2NlZEV2ZW50c1wiIFt8fF0pXG5cbiAgICBsZXQgZ2V0X3ByZWRpY3RlZF9ldmVudHMgcCA9XG4gICAgICBKdi50b19saXN0IEZ1bi5pZCAoSnYuY2FsbCBwIFwiZ2V0UHJlZGljdGVkRXZlbnRzXCIgW3x8XSlcbiAgZW5kXG4gIG1vZHVsZSBXaGVlbCA9IHN0cnVjdFxuICAgIG1vZHVsZSBEZWx0YV9tb2RlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBwaXhlbCA9IDB4MDBcbiAgICAgIGxldCBsaW5lID0gMHgwMVxuICAgICAgbGV0IHBhZ2UgPSAweDAyXG4gICAgZW5kXG4gICAgdHlwZSB0ID0gSnYudFxuICAgIGV4dGVybmFsIGFzX21vdXNlIDogdCAtPiBNb3VzZS50ID0gXCIlaWRlbnRpdHlcIlxuICAgIGxldCBkZWx0YV94IHcgPSBKdi5GbG9hdC5nZXQgdyBcImRlbHRhWFwiXG4gICAgbGV0IGRlbHRhX3kgdyA9IEp2LkZsb2F0LmdldCB3IFwiZGVsdGFZXCJcbiAgICBsZXQgZGVsdGFfeiB3ID0gSnYuRmxvYXQuZ2V0IHcgXCJkZWx0YVpcIlxuICAgIGxldCBkZWx0YV9tb2RlIHcgPSBKdi5JbnQuZ2V0IHcgXCJkZWx0YU1vZGVcIlxuICBlbmRcblxuICAoKiBFdmVudCB0eXBlcyAqKVxuXG4gIGxldCBhYm9ydCA9IFR5cGUudm9pZCAoSnN0ci52IFwiYWJvcnRcIilcbiAgbGV0IGFjdGl2YXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImFjdGl2YXRlXCIpXG4gIGxldCBhdXhjbGljayA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkYmxjbGlja1wiKVxuICBsZXQgYmVmb3JlaW5wdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmVmb3JlaW5wdXRcIilcbiAgbGV0IGJlZm9yZXVubG9hZCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJiZWZvcmV1bmxvYWRcIilcbiAgbGV0IGJsdXIgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiYmx1clwiKVxuICBsZXQgY2FucGxheSA9IFR5cGUudm9pZCAoSnN0ci52IFwiY2FucGxheVwiKVxuICBsZXQgY2FucGxheXRocm91Z2ggPSBUeXBlLnZvaWQgKEpzdHIudiBcImNhbnBsYXl0aHJvdWdoXCIpXG4gIGxldCBjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcImNoYW5nZVwiKVxuICBsZXQgY2xpY2sgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY2xpY2tcIilcbiAgbGV0IGNsaXBib2FyZGNoYW5nZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJjbGlwYm9hcmRjaGFuZ2VcIilcbiAgbGV0IGNsb3NlID0gVHlwZS52b2lkIChKc3RyLnYgXCJjbG9zZVwiKVxuICBsZXQgY29tcG9zaXRpb25lbmQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb25lbmRcIilcbiAgbGV0IGNvbXBvc2l0aW9uc3RhcnQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb25zdGFydFwiKVxuICBsZXQgY29tcG9zaXRpb251ZHBhdGUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29tcG9zaXRpb251cGRhdGVcIilcbiAgbGV0IGNvbnRyb2xsZXJjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY29udHJvbGxlcmNoYW5nZVwiKVxuICBsZXQgY29weSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJjb3B5XCIpXG4gIGxldCBjdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiY3V0XCIpXG4gIGxldCBkYmxjbGljayA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkYmxjbGlja1wiKVxuICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJET01Db250ZW50TG9hZGVkXCIpXG4gIGxldCBkcmFnID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdcIilcbiAgbGV0IGRyYWdlbmQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2VuZFwiKVxuICBsZXQgZHJhZ2VudGVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdlbnRlclwiKVxuICBsZXQgZHJhZ2V4aXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ2V4aXRcIilcbiAgbGV0IGRyYWdsZWF2ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJkcmFnbGVhdmVcIilcbiAgbGV0IGRyYWdvdmVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyYWdvdmVyXCIpXG4gIGxldCBkcmFnc3RhcnQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZHJhZ3N0YXJ0XCIpXG4gIGxldCBkcm9wID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImRyb3BcIilcbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gVHlwZS52b2lkIChKc3RyLnYgXCJkdXJhdGlvbmNoYW5nZVwiKVxuICBsZXQgZW1wdGllZCA9IFR5cGUudm9pZCAoSnN0ci52IFwiZW1wdGllZFwiKVxuICBsZXQgZW5kZWQgPSBUeXBlLnZvaWQgKEpzdHIudiBcImVuZGVkXCIpXG4gIGxldCBlcnJvciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJlcnJvclwiKVxuICBsZXQgZm9jdXMgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNcIilcbiAgbGV0IGZvY3VzaW4gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNpblwiKVxuICBsZXQgZm9jdXNvdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZm9jdXNvdXRcIilcbiAgbGV0IGZ1bGxzY3JlZW5jaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZnVsbHNjcmVlbmNoYW5nZVwiKVxuICBsZXQgZnVsbHNjcmVlbmVycm9yID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcImZ1bGxzY3JlZW5lcnJvclwiKVxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiZ290cG9pbnRlcmNhcHR1cmVcIilcbiAgbGV0IGhhc2hjaGFuZ2UgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaGFzaGNoYW5nZVwiKVxuICBsZXQgaW5wdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaW5wdXRcIilcbiAgbGV0IGluc3RhbGwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwiaW5zdGFsbFwiKVxuICBsZXQga2V5ZG93biA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJrZXlkb3duXCIpXG4gIGxldCBrZXl1cCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJrZXl1cFwiKVxuICBsZXQgbGFuZ3VhZ2VjaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcImxhbmd1YWdlY2hhbmdlXCIpXG4gIGxldCBsb2FkID0gVHlwZS52b2lkIChKc3RyLnYgXCJsb2FkXCIpXG4gIGxldCBsb2FkZWRkYXRhID0gVHlwZS52b2lkIChKc3RyLnYgXCJsb2FkZWRkYXRhXCIpXG4gIGxldCBsb2FkZWRtZXRhZGF0YSA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZGVkbWV0YWRhdGFcIilcbiAgbGV0IGxvYWRzdGFydCA9IFR5cGUudm9pZCAoSnN0ci52IFwibG9hZHN0YXJ0XCIpXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibG9zdHBvaW50ZXJjYXB0dXJlXCIpXG4gIGxldCBtb3VzZWRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2Vkb3duXCIpXG4gIGxldCBtb3VzZWVudGVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlZW50ZXJcIilcbiAgbGV0IG1vdXNlbGVhdmUgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VsZWF2ZVwiKVxuICBsZXQgbW91c2Vtb3ZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcIm1vdXNlbW92ZVwiKVxuICBsZXQgbW91c2VvdXQgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2VvdXRcIilcbiAgbGV0IG1vdXNlb3ZlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJtb3VzZW92ZXJcIilcbiAgbGV0IG1vdXNldXAgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwibW91c2V1cFwiKVxuICBsZXQgb3BlbicgPSBUeXBlLnZvaWQgKEpzdHIudiBcIm9wZW5cIilcbiAgbGV0IHBhc3RlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBhc3RlXCIpXG4gIGxldCBwYXVzZSA9IFR5cGUudm9pZCAoSnN0ci52IFwicGF1c2VcIilcbiAgbGV0IHBsYXkgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBsYXlcIilcbiAgbGV0IHBsYXlpbmcgPSBUeXBlLnZvaWQgKEpzdHIudiBcInBsYXlpbmdcIilcbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmNhbmNlbFwiKVxuICBsZXQgcG9pbnRlcmRvd24gPSBUeXBlLmNyZWF0ZSAoSnN0ci52IFwicG9pbnRlcmRvd25cIilcbiAgbGV0IHBvaW50ZXJlbnRlciA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVyZW50ZXJcIilcbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVybGVhdmVcIilcbiAgbGV0IHBvaW50ZXJsb2NrY2hhbmdlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJsb2NrY2hhbmdlXCIpXG4gIGxldCBwb2ludGVybG9ja2Vycm9yID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJsb2NrZXJyb3JcIilcbiAgbGV0IHBvaW50ZXJtb3ZlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJtb3ZlXCIpXG4gIGxldCBwb2ludGVyb3V0ID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJvdXRcIilcbiAgbGV0IHBvaW50ZXJvdmVyID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJvdmVyXCIpXG4gIGxldCBwb2ludGVycmF3dXBkYXRlID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvaW50ZXJyYXd1cGRhdGVcIilcbiAgbGV0IHBvaW50ZXJ1cCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJwb2ludGVydXBcIilcbiAgbGV0IHByb2dyZXNzID0gVHlwZS52b2lkIChKc3RyLnYgXCJwcm9ncmVzc1wiKVxuICBsZXQgcmF0ZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwicmF0ZWNoYW5nZVwiKVxuICBsZXQgcmVzZXQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJlc2V0XCIpXG4gIGxldCByZXNpemUgPSBUeXBlLnZvaWQgKEpzdHIudiBcInJlc2l6ZVwiKVxuICBsZXQgc2Nyb2xsID0gVHlwZS5jcmVhdGUgKEpzdHIudiBcInNjcm9sbFwiKVxuICBsZXQgc2Vla2VkID0gVHlwZS52b2lkIChKc3RyLnYgXCJzZWVrZWRcIilcbiAgbGV0IHNlZWtpbmcgPSBUeXBlLnZvaWQgKEpzdHIudiBcInNlZWtpbmdcIilcbiAgbGV0IHNlbGVjdCA9IFR5cGUudm9pZCAoSnN0ci52IFwic2VsZWN0XCIpXG4gIGxldCBzdGFsbGVkID0gVHlwZS52b2lkIChKc3RyLnYgXCJzdGFsbGVkXCIpXG4gIGxldCBzdGF0ZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwic3RhdGVjaGFuZ2VcIilcbiAgbGV0IHN1c3BlbmQgPSBUeXBlLnZvaWQgKEpzdHIudiBcInN1c3BlbmRcIilcbiAgbGV0IHRpbWV1cGRhdGUgPSBUeXBlLnZvaWQgKEpzdHIudiBcInRpbWV1cGRhdGVcIilcbiAgbGV0IHVubG9hZCA9IFR5cGUudm9pZCAoSnN0ci52IFwidW5sb2FkXCIpXG4gIGxldCB1cGRhdGVmb3VuZCA9IFR5cGUudm9pZCAoSnN0ci52IFwidXBkYXRlZm91bmRcIilcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2UgPSBUeXBlLnZvaWQgKEpzdHIudiBcInZpc2liaWxpdHljaGFuZ2VcIilcbiAgbGV0IHZvbHVtZWNoYW5nZSA9IFR5cGUudm9pZCAoSnN0ci52IFwidm9sdW1lY2hhbmdlXCIpXG4gIGxldCB3YWl0aW5nID0gVHlwZS52b2lkIChKc3RyLnYgXCJ3YWl0aW5nXCIpXG4gIGxldCB3aGVlbCA9IFR5cGUuY3JlYXRlIChKc3RyLnYgXCJ3aGVlbFwiKVxuZW5kXG5cbigqIERhdGEgY29udGFpbmVycyBhbmQgZW5jb2RpbmdzICopXG5cbm1vZHVsZSBUYXJyYXkgPSBzdHJ1Y3RcblxuICAoKiBBcnJheSBidWZmZXJzICopXG5cbiAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBhcnJheV9idWZmZXIgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiQXJyYXlCdWZmZXJcIlxuICAgIGxldCBjcmVhdGUgbiA9IEp2Lm5ldycgYXJyYXlfYnVmZmVyIEp2Llt8IG9mX2ludCBuIHxdXG4gICAgbGV0IGJ5dGVfbGVuZ3RoIGEgPSBKdi5JbnQuZ2V0IGEgXCJieXRlTGVuZ3RoXCJcbiAgICBsZXQgc2xpY2UgPyhzdGFydCA9IDApID9zdG9wICBhID1cbiAgICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgICBKdi5jYWxsIGEgXCJzbGljZVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cbiAgZW5kXG5cbiAgKCogQ29tbW9uIHRvIHR5cGVkIGFycmF5cyBhbmQgRGF0YVZpZXdzICopXG5cbiAgbGV0IGJ1ZmZlciBvID0gQnVmZmVyLm9mX2p2IEBAIEp2LmdldCBvIFwiYnVmZmVyXCJcbiAgbGV0IGJ5dGVfb2Zmc2V0IG8gPSBKdi5JbnQuZ2V0IG8gXCJieXRlT2Zmc2V0XCJcbiAgbGV0IGJ5dGVfbGVuZ3RoIG8gPSBKdi5JbnQuZ2V0IG8gXCJieXRlTGVuZ3RoXCJcblxuICAoKiBCeXRlLWxldmVsIGRhdGEgYWNjZXNzICopXG5cbiAgbW9kdWxlIERhdGFfdmlldyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnQgKCogRGF0YVZpZXcgb2JqZWN0ICopXG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgZGF0YXZpZXcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRGF0YVZpZXdcIlxuICAgIGxldCBvZl9idWZmZXIgPyhieXRlX29mZnNldCA9IDApID9ieXRlX2xlbmd0aCBiID1cbiAgICAgIGxldCBieXRlX2xlbmd0aCA9IG1hdGNoIGJ5dGVfbGVuZ3RoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYnl0ZV9sZW5ndGggYlxuICAgICAgfCBTb21lIGwgLT4gbFxuICAgICAgaW5cbiAgICAgIEp2Lm5ldycgZGF0YXZpZXdcbiAgICAgICAgSnYuW3xCdWZmZXIudG9fanYgYjsgb2ZfaW50IGJ5dGVfb2Zmc2V0OyBvZl9pbnQgYnl0ZV9sZW5ndGh8XVxuXG4gICAgbGV0IGJ1ZmZlciA9IGJ1ZmZlclxuICAgIGxldCBieXRlX29mZnNldCA9IGJ5dGVfb2Zmc2V0XG4gICAgbGV0IGJ5dGVfbGVuZ3RoID0gYnl0ZV9sZW5ndGhcblxuICAgIGxldCBnZXRfaW50OCBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldEludDhcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldEludDE2XCIgSnYuW3wgb2ZfaW50IGkgfF1cblxuICAgIGxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0SW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBnZXRfdWludDggYiBpID1cbiAgICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGIgXCJnZXRVaW50OFwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50IEBAIEp2LmNhbGwgYiBcImdldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IGdldF91aW50MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2ludDMyIEBAIEp2LmNhbGwgYiBcImdldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpIHxdXG5cbiAgICBsZXQgZ2V0X3VpbnQzMl9sZSBiIGkgPVxuICAgICAgSnYudG9faW50MzIgQEAgSnYuY2FsbCBiIFwiZ2V0VWludDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X2Zsb2F0MzJfYmUgYiBpID1cbiAgICAgIEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYiBcImdldEZsb2F0MzJcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDMyX2xlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgZ2V0X2Zsb2F0NjRfYmUgYiBpID1cbiAgICAgIEp2LnRvX2Zsb2F0IEBAIEp2LmNhbGwgYiBcImdldEZsb2F0NjRcIiBKdi5bfCBvZl9pbnQgaSB8XVxuXG4gICAgbGV0IGdldF9mbG9hdDY0X2xlIGIgaSA9XG4gICAgICBKdi50b19mbG9hdCBAQCBKdi5jYWxsIGIgXCJnZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGk7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X2ludDggYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDhcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50IHYgfF1cblxuICAgIGxldCBzZXRfaW50MTZfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDE2XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludCB2IHxdXG5cbiAgICBsZXQgc2V0X2ludDE2X2xlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRJbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfaW50MzJfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHYgfF1cblxuICAgIGxldCBzZXRfaW50MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldEludDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2ludDMyIHY7IEp2LnRydWUnIHxdXG5cbiAgICBsZXQgc2V0X3VpbnQ4IGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50OFwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MTZfYmUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MTZfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQxNlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQgdjsgSnYudHJ1ZScgfF1cblxuICAgIGxldCBzZXRfdWludDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRVaW50MzJcIiBKdi5bfCBvZl9pbnQgaTsgb2ZfaW50MzIgdiB8XVxuXG4gICAgbGV0IHNldF91aW50MzJfbGUgYiBpIHYgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgYiBcInNldFVpbnQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9pbnQzMiB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9mbG9hdDMyX2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRGbG9hdDMyXCIgSnYuW3wgb2ZfaW50IGk7IG9mX2Zsb2F0IHYgfF1cblxuICAgIGxldCBzZXRfZmxvYXQzMl9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQzMlwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2OyBKdi50cnVlJyB8XVxuXG4gICAgbGV0IHNldF9mbG9hdDY0X2JlIGIgaSB2ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGIgXCJzZXRGbG9hdDY0XCIgSnYuW3wgb2ZfaW50IGk7IG9mX2Zsb2F0IHYgfF1cblxuICAgIGxldCBzZXRfZmxvYXQ2NF9sZSBiIGkgdiA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBiIFwic2V0RmxvYXQ2NFwiIEp2Llt8IG9mX2ludCBpOyBvZl9mbG9hdCB2OyBKdi50cnVlJyB8XVxuICBlbmRcblxuICAoKiBBcnJheSB0eXBlcyAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdHlwZScgPVxuICB8IEludDggOiAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGUnXG4gIHwgSW50MTYgOiAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlJ1xuICB8IEludDMyIDogKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGUnXG4gIHwgVWludDggOiAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZSdcbiAgfCBVaW50OF9jbGFtcGVkIDogKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGUnXG4gIHwgVWludDE2IDogKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlJ1xuICB8IFVpbnQzMiA6IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlJ1xuICB8IEZsb2F0MzIgOiAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlJ1xuICB8IEZsb2F0NjQgOiAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlJ1xuXG4gIGxldCB0eXBlX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IGludCA9IGZ1bmN0aW9uXG4gIHwgSW50OCB8IFVpbnQ4IHwgVWludDhfY2xhbXBlZCAtPiAxIHwgSW50MTYgfCBVaW50MTYgLT4gMlxuICB8IEludDMyIHwgVWludDMyIHwgRmxvYXQzMiAtPiA0IHwgRmxvYXQ2NCAgLT4gOFxuXG4gICgqIFR5cGVkIGFycmF5cyAqKVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IEp2LnRcbiAgZXh0ZXJuYWwgdG9fanYgOiAoJ2EsICdiKSB0IC0+IEp2LnQgPSBcIiVpZGVudGl0eVwiXG4gIGV4dGVybmFsIG9mX2p2IDogSnYudCAtPiAoJ2EsICdiKSB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBjb25zX29mX3R5cGUgOiB0eXBlIGEgYi4gKGEsIGIpIHR5cGUnIC0+IEp2LnQgPSBmdW5jdGlvblxuICB8IEludDggLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkludDhBcnJheVwiXG4gIHwgSW50MTYgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkludDE2QXJyYXlcIlxuICB8IEludDMyIC0+IEp2LmdldCBKdi5nbG9iYWwgXCJJbnQzMkFycmF5XCJcbiAgfCBVaW50OCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDhBcnJheVwiXG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDhDbGFtcGVkQXJyYXlcIlxuICB8IFVpbnQxNiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDE2QXJyYXlcIlxuICB8IFVpbnQzMiAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiVWludDMyQXJyYXlcIlxuICB8IEZsb2F0MzIgLT4gSnYuZ2V0IEp2Lmdsb2JhbCBcIkZsb2F0MzJBcnJheVwiXG4gIHwgRmxvYXQ2NCAtPiBKdi5nZXQgSnYuZ2xvYmFsIFwiRmxvYXQ2NEFycmF5XCJcblxuICBsZXQgY3JlYXRlIHQgbiA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBKdi5bfCBvZl9pbnQgbiB8XVxuICBsZXQgb2ZfYnVmZmVyIHQgPyhieXRlX29mZnNldCA9IDApID9sZW5ndGggYiA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBsZW5ndGggd2l0aFxuICAgIHwgTm9uZSAtPiBKdi5bfCBiOyBvZl9pbnQgYnl0ZV9vZmZzZXQgfF1cbiAgICB8IFNvbWUgbCAtPiBKdi5bfCBiOyBvZl9pbnQgYnl0ZV9vZmZzZXQ7IG9mX2ludCBsIHxdXG4gICAgaW5cbiAgICBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgYXJnc1xuXG4gIGxldCBsZW5ndGggYSA9IEp2LkludC5nZXQgYSBcImxlbmd0aFwiXG4gIGxldCB0eXBlJyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoYSwgYikgdHlwZScgPSBmdW4gYSAtPlxuICAgIGxldCBtID0gT2JqLm1hZ2ljIGluXG4gICAgbWF0Y2ggSnN0ci50b19zdHJpbmcgKEp2LkpzdHIuZ2V0IChKdi5nZXQgYSBcImNvbnN0cnVjdG9yXCIpIFwibmFtZVwiKSB3aXRoXG4gICAgfCBcIkludDhBcnJheVwiIC0+IG0gSW50OFxuICAgIHwgXCJJbnQxNkFycmF5XCIgLT4gbSBJbnQxNlxuICAgIHwgXCJJbnQzMkFycmF5XCIgLT4gbSBJbnQzMlxuICAgIHwgXCJVaW50OEFycmF5XCIgLT4gbSBVaW50OFxuICAgIHwgXCJVaW50OENsYW1wZWRBcnJheVwiIC0+IG0gVWludDhfY2xhbXBlZFxuICAgIHwgXCJVaW50MTZBcnJheVwiIC0+IG0gVWludDE2XG4gICAgfCBcIlVpbnQzMkFycmF5XCIgLT4gbSBVaW50MzJcbiAgICB8IFwiRmxvYXQzMkFycmF5XCIgLT4gbSBGbG9hdDMyXG4gICAgfCBcIkZsb2F0NjRBcnJheVwiIC0+IG0gRmxvYXQ2NFxuICAgIHwgcyAtPlxuICAgICAgICBsZXQgdCA9IEpzdHIub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgSnYudGhyb3cgKEpzdHIuYXBwZW5kIChKc3RyLnYgXCJVbmtub3duIHR5cGVkIGFycmF5OiBcIikgdClcblxuICBsZXQgdG9fanZfb2ZfdHlwZSA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gYSAtPiBKdi50ID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2Lm9mX2ludFxuICB8IEludDE2IC0+IEp2Lm9mX2ludFxuICB8IEludDMyIC0+IEp2Lm9mX2ludDMyXG4gIHwgVWludDggLT4gSnYub2ZfaW50XG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi5vZl9pbnRcbiAgfCBVaW50MTYgLT4gSnYub2ZfaW50XG4gIHwgVWludDMyIC0+IEp2Lm9mX2ludDMyXG4gIHwgRmxvYXQzMiAtPiBKdi5vZl9mbG9hdFxuICB8IEZsb2F0NjQgLT4gSnYub2ZfZmxvYXRcblxuICBsZXQgb2ZfanZfb2ZfdHlwZSA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gSnYudCAtPiBhID0gZnVuY3Rpb25cbiAgfCBJbnQ4IC0+IEp2LnRvX2ludFxuICB8IEludDE2IC0+IEp2LnRvX2ludFxuICB8IEludDMyIC0+IEp2LnRvX2ludDMyXG4gIHwgVWludDggLT4gSnYudG9faW50XG4gIHwgVWludDhfY2xhbXBlZCAtPiBKdi50b19pbnRcbiAgfCBVaW50MTYgLT4gSnYudG9faW50XG4gIHwgVWludDMyIC0+IEp2LnRvX2ludDMyXG4gIHwgRmxvYXQzMiAtPiBKdi50b19mbG9hdFxuICB8IEZsb2F0NjQgLT4gSnYudG9fZmxvYXRcblxuICBsZXQgZWx0X3RvX2p2IGEgPSB0b19qdl9vZl90eXBlICh0eXBlJyBhKVxuICBsZXQgZWx0X29mX2p2IGEgPSBvZl9qdl9vZl90eXBlICh0eXBlJyBhKVxuXG4gICgqIFNldHRpbmcsIGNvcHlpbmcgYW5kIHNsaWNpbmcgKilcblxuICBsZXQgY29tcGlsZWRfdG9fd2FzbSA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE90aGVyIFwid2FzbV9vZl9vY2FtbFwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgPSBcImNhbWxfanNfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYikgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGxldCBnZXQgPVxuICAgIGlmIGNvbXBpbGVkX3RvX3dhc21cbiAgICB0aGVuIGZ1biBhIGkgLT4gZWx0X29mX2p2IGEgKEp2LkphcnJheS5nZXQgKEp2LnJlcHIgYSkgaSlcbiAgICBlbHNlIGdldFxuXG4gIGxldCBzZXQgPVxuICAgIGlmIGNvbXBpbGVkX3RvX3dhc21cbiAgICB0aGVuIGZ1biBhIGkgdiAtPiBKdi5KYXJyYXkuc2V0IChKdi5yZXByIGEpIGkgKGVsdF90b19qdiBhIHYpXG4gICAgZWxzZSBzZXRcblxuICBsZXQgc2V0X3RhcnJheSBhIH5kc3QgYiA9IGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJzZXRcIiBKdi5bfCBiOyBvZl9pbnQgZHN0IHxdXG5cbiAgbGV0IGZpbGwgPyhzdGFydCA9IDApID9zdG9wIHYgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBsZW5ndGggYSB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYSBcImZpbGxcIiBKdi5bfCBlbHRfdG9fanYgYSB2OyBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IGNvcHlfd2l0aGluID8oc3RhcnQgPSAwKSA/c3RvcCB+ZHN0IGEgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gbGVuZ3RoIGEgfCBTb21lIHN0b3AgLT4gc3RvcCBpblxuICAgIGlnbm9yZSBAQFxuICAgIEp2LmNhbGwgYSBcImNvcHlXaXRoaW5cIiBKdi5bfCBvZl9pbnQgZHN0OyBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wIHxdXG5cbiAgbGV0IHNsaWNlID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBieXRlX2xlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBKdi5jYWxsIGEgXCJzbGljZVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cblxuICBsZXQgc3ViID8oc3RhcnQgPSAwKSA/c3RvcCAgYSA9XG4gICAgbGV0IHN0b3AgPSBtYXRjaCBzdG9wIHdpdGggTm9uZSAtPiBieXRlX2xlbmd0aCBhIHwgU29tZSBzdG9wIC0+IHN0b3AgaW5cbiAgICBKdi5jYWxsIGEgXCJzdWJhcnJheVwiIEp2Llt8IG9mX2ludCBzdGFydDsgb2ZfaW50IHN0b3AgfF1cblxuICAoKiBQcmVkaWNhdGVzICopXG5cbiAgbGV0IGZpbmQgc2F0IGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IHNhdCB2IGkgPSBKdi5vZl9ib29sIChzYXQgaSAob2ZfanYgdikpIGluXG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IChKdi5jYWxsIGEgXCJmaW5kXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgc2F0IHxdKVxuXG4gIGxldCBmaW5kX2luZGV4IHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIGxldCBpID0gSnYudG9faW50IChKdi5jYWxsIGEgXCJmaW5kSW5kZXhcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF0pIGluXG4gICAgaWYgaSA9IC0xIHRoZW4gTm9uZSBlbHNlIFNvbWUgaVxuXG4gIGxldCBmb3JfYWxsIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBhIFwiZXZlcnlcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICBsZXQgZXhpc3RzIHNhdCBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBzYXQgdiBpID0gSnYub2ZfYm9vbCAoc2F0IGkgKG9mX2p2IHYpKSBpblxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBhIFwiZXZlcnlcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICAoKiBUcmF2ZXJzYWxzICopXG5cbiAgbGV0IGZpbHRlciBzYXQgYSA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgc2F0IHYgaSA9IEp2Lm9mX2Jvb2wgKHNhdCBpIChvZl9qdiB2KSkgaW5cbiAgICBKdi5jYWxsIGEgXCJmaWx0ZXJcIiBKdi5bfCBjYWxsYmFjayB+YXJpdHk6MiBzYXQgfF1cblxuICBsZXQgaXRlciBmIGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgdiBpID0gZiBpIChvZl9qdiB2KSBpblxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGEgXCJmb3JFYWNoXCIgSnYuW3wgY2FsbGJhY2sgfmFyaXR5OjIgZiB8XVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgb2ZfanYgPSBlbHRfb2ZfanYgYSBpblxuICAgIGxldCBmIHYgPSBmIChvZl9qdiB2KSBpblxuICAgIEp2LmNhbGwgYSBcIm1hcFwiIEp2Llt8IGNhbGxiYWNrIH5hcml0eToxIGYgfF1cblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIGEgPVxuICAgIGxldCBvZl9qdiA9IGVsdF9vZl9qdiBhIGluXG4gICAgbGV0IGYgYWNjIHYgPSBmIGFjYyAob2ZfanYgdikgaW5cbiAgICBPYmoubWFnaWMgQEAgSnYuY2FsbCBhIFwicmVkdWNlXCIgW3xKdi5jYWxsYmFjayB+YXJpdHk6MiBmOyBKdi5yZXByIGFjY3xdXG5cbiAgbGV0IGZvbGRfcmlnaHQgZiBhIGFjYyA9XG4gICAgbGV0IG9mX2p2ID0gZWx0X29mX2p2IGEgaW5cbiAgICBsZXQgZiBhY2MgdiA9IGYgKG9mX2p2IHYpIGFjYyBpblxuICAgIE9iai5tYWdpYyBAQCBKdi5jYWxsIGEgXCJyZWR1Y2VSaWdodFwiIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjIgZjsgSnYucmVwciBhY2N8XVxuXG4gIGxldCByZXZlcnNlIGEgPSBKdi5jYWxsIGEgXCJyZXZlcnNlXCIgSnYuW3x8XVxuXG4gICgqIFR5cGUgYWxpYXNlcyAqKVxuXG4gIHR5cGUgaW50OCA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdFxuICB0eXBlIGludDE2ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdFxuICB0eXBlIGludDMyID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHRcbiAgdHlwZSB1aW50OCA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDhfY2xhbXBlZCA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDE2ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0XG4gIHR5cGUgdWludDMyID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHRcbiAgdHlwZSBmbG9hdDMyID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdFxuICB0eXBlIGZsb2F0NjQgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0XG5cbiAgKCogQ29udmVydGluZyAqKVxuXG4gIGxldCBvZl90YXJyYXkgdCBhID0gSnYubmV3JyAoY29uc19vZl90eXBlIHQpIFt8IGEgfF1cbiAgbGV0IG9mX2ludF9hcnJheSB0IGEgPSBKdi5uZXcnIChjb25zX29mX3R5cGUgdCkgSnYuW3wgb2ZfYXJyYXkgSnYub2ZfaW50IGEgfF1cbiAgbGV0IG9mX2Zsb2F0X2FycmF5IHQgYSA9IEp2Lm5ldycgKGNvbnNfb2ZfdHlwZSB0KSBKdi5bfCBvZl9hcnJheSBvZl9mbG9hdCBhfF1cbiAgbGV0IHRvX2ludF9qc3RyID8oc2VwID0gSnN0ci5zcCkgYiA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGIgXCJqb2luXCIgSnYuW3wgb2ZfanN0ciBzZXAgfF1cblxuICBsZXQgdG9faGV4X2pzdHIgPyhzZXAgPSBKc3RyLmVtcHR5KSBhID1cbiAgICBsZXQgaGV4ID0gSnN0ci52IFwiMDEyMzQ1Njc4OWFiY2RlZlwiIGluXG4gICAgbGV0IGQgPSBEYXRhX3ZpZXcub2ZfYnVmZmVyIChidWZmZXIgYSkgaW5cbiAgICBsZXQgcyA9IHJlZiBKc3RyLmVtcHR5IGluXG4gICAgZm9yIGkgPSAwIHRvIERhdGFfdmlldy5ieXRlX2xlbmd0aCBkIC0gMSBkb1xuICAgICAgbGV0IGIgPSBEYXRhX3ZpZXcuZ2V0X3VpbnQ4IGQgaSBpblxuICAgICAgbGV0IHNlcCA9IGlmIGkgPSAwIHRoZW4gSnN0ci5lbXB0eSBlbHNlIHNlcCBpblxuICAgICAgcyA6PSBKc3RyLighcyArIHNlcCArIGdldF9qc3RyIGhleCAoYiBsc3IgNCkgKyBnZXRfanN0ciBoZXggKGIgbGFuZCAweEYpKVxuICAgIGRvbmU7XG4gICAgIXNcblxuICBsZXQgdWludDhfb2ZfYnVmZmVyIGIgPSBvZl9idWZmZXIgVWludDggYlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHVpbnQ4IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfdWludDhfYXJyYXlcIlxuXG4gIGxldCBvZl9qc3RyIHMgPVxuICAgIGxldCBlbmMgPSBKdi5uZXcnIChKdi5nZXQgSnYuZ2xvYmFsIFwiVGV4dEVuY29kZXJcIikgW3x8XSBpblxuICAgIEp2LmNhbGwgZW5jIFwiZW5jb2RlXCIgW3wgSnYub2ZfanN0ciBzIHxdXG5cbiAgbGV0IHRvX2pzdHIgYSA9XG4gICAgbGV0IGFyZ3MgPSBbfCBKdi5vZl9zdHJpbmcgXCJ1dGYtOFwiOyBKdi5vYmogW3wgXCJmYXRhbFwiLCBKdi50cnVlJyB8XXxdIGluXG4gICAgbGV0IGRlYyA9IEp2Lm5ldycgKEp2LmdldCBKdi5nbG9iYWwgXCJUZXh0RGVjb2RlclwiKSBhcmdzIGluXG4gICAgbWF0Y2ggSnYuY2FsbCBkZWMgXCJkZWNvZGVcIiBbfCBhIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGUgfCBzIC0+IE9rIChKdi50b19qc3RyIHMpXG5cbiAgbGV0IG9mX2JpbmFyeV9qc3RyIHMgPVxuICAgIGxldCBjb2RlIHMgaSA9XG4gICAgICBsZXQgYyA9IEp2LnRvX2ludCBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwiY2hhckNvZGVBdFwiIFt8SnYub2ZfaW50IGl8XWluXG4gICAgICBpZiBjIDw9IDI1NSB0aGVuIGMgZWxzZVxuICAgICAgSnYudGhyb3cgSnN0ci4ob2ZfaW50IGkgKyB2IFwiOiBjaGFyIGNvZGUgXCIgKyBvZl9pbnQgYyArIHYgXCJleGNlZWRzIDI1NVwiKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKEpzdHIubGVuZ3RoIHMpIGluXG4gICAgICBsZXQgZCA9IERhdGFfdmlldy5vZl9idWZmZXIgYiBpblxuICAgICAgZm9yIGkgPSAwIHRvIEpzdHIubGVuZ3RoIHMgLSAxIGRvIERhdGFfdmlldy5zZXRfaW50OCBkIGkgKGNvZGUgcyBpKSBkb25lO1xuICAgICAgT2sgKG9mX2J1ZmZlciBJbnQ4IGIpXG4gICAgd2l0aFxuICAgIHwgSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgbGV0IHRvX2JpbmFyeV9qc3RyIGEgPVxuICAgIGxldCBjaHIgYiA9XG4gICAgICBKdi50b19qc3RyIEBAXG4gICAgICBKdi5jYWxsIChKdi5nZXQgSnYuZ2xvYmFsIFwiU3RyaW5nXCIpIFwiZnJvbUNoYXJDb2RlXCIgW3wgSnYub2ZfaW50IGIgfF1cbiAgICBpblxuICAgIGxldCBkID0gRGF0YV92aWV3Lm9mX2J1ZmZlciAoYnVmZmVyIGEpIGluXG4gICAgbGV0IHMgPSByZWYgSnN0ci5lbXB0eSBpblxuICAgIGZvciBpID0gMCB0byBEYXRhX3ZpZXcuYnl0ZV9sZW5ndGggZCAtIDEgZG9cbiAgICAgIGxldCBiID0gRGF0YV92aWV3LmdldF91aW50OCBkIGkgaW5cbiAgICAgIHMgOj0gSnN0ci4oIXMgKyBjaHIgYik7XG4gICAgZG9uZTtcbiAgICAhc1xuXG4gICgqIEJpZ2FycmF5ICopXG5cbiAgbGV0IHR5cGVfdG9fYmlnYXJyYXlfa2luZCA6IHR5cGUgYSBiLiAoYSwgYikgdHlwZScgLT4gKGEsIGIpIEJpZ2FycmF5LmtpbmQgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBJbnQ4IC0+IEJpZ2FycmF5LmludDhfc2lnbmVkXG4gICAgfCBJbnQxNiAtPiBCaWdhcnJheS5pbnQxNl9zaWduZWRcbiAgICB8IEludDMyIC0+IEJpZ2FycmF5LmludDMyXG4gICAgfCBVaW50OCAtPiBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkXG4gICAgfCBVaW50OF9jbGFtcGVkIC0+IEJpZ2FycmF5LmludDhfdW5zaWduZWRcbiAgICB8IFVpbnQxNiAtPiBCaWdhcnJheS5pbnQxNl91bnNpZ25lZFxuICAgIHwgVWludDMyIC0+IEJpZ2FycmF5LmludDMyXG4gICAgfCBGbG9hdDMyIC0+IEJpZ2FycmF5LmZsb2F0MzJcbiAgICB8IEZsb2F0NjQgLT4gQmlnYXJyYXkuZmxvYXQ2NFxuXG4gIGxldCB0eXBlX29mX2JpZ2FycmF5X2tpbmQgOlxuICAgIHR5cGUgYSBiLiAoYSwgYikgQmlnYXJyYXkua2luZCAtPiAoYSwgYikgdHlwZScgb3B0aW9uID1cbiAgICBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuSW50OF9zaWduZWQgLT4gU29tZSBJbnQ4XG4gICAgfCBCaWdhcnJheS5JbnQxNl9zaWduZWQgLT4gU29tZSBJbnQxNlxuICAgIHwgQmlnYXJyYXkuSW50MzIgLT4gU29tZSBJbnQzMlxuICAgIHwgQmlnYXJyYXkuSW50OF91bnNpZ25lZCAtPiBTb21lIFVpbnQ4XG4gICAgfCBCaWdhcnJheS5JbnQxNl91bnNpZ25lZCAtPiBTb21lIFVpbnQxNlxuICAgIHwgQmlnYXJyYXkuRmxvYXQzMiAtPiBTb21lIEZsb2F0MzJcbiAgICB8IEJpZ2FycmF5LkZsb2F0NjQgLT4gU29tZSBGbG9hdDY0XG4gICAgfCBfIC0+IE5vbmVcblxuICBleHRlcm5hbCBiaWdhcnJheV9raW5kIDogKCdhLCAnYikgdCAtPiAoJ2EsJ2IpIEJpZ2FycmF5LmtpbmQgPVxuICAgIFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9iaWdhcnJheTEgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudCAtPiAoJ2EsICdiKSB0ID1cbiAgICBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2JpZ2FycmF5MSA6XG4gICAgKCdhLCAnYikgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnQgPVxuICAgIFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9iaWdhcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdCA9XG4gICAgXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgQmxvYiA9IHN0cnVjdFxuXG4gICgqIEVudW1lcmF0aW9ucyAqKVxuXG4gIG1vZHVsZSBFbmRpbmdfdHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCB0cmFuc3BhcmVudCA9IEpzdHIudiBcInRyYW5zcGFyZW50XCJcbiAgICBsZXQgbmF0aXZlID0gSnN0ci52IFwibmF0aXZlXCJcbiAgZW5kXG5cbiAgKCogSW5pdGlhbGlzYXRpb24gb2JqZWN0cyAqKVxuXG4gIHR5cGUgaW5pdCA9IEp2LnRcbiAgbGV0IGluaXQgP3R5cGUnID9lbmRpbmdzICgpID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwidHlwZVwiIHR5cGUnO1xuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcImVuZGluZ3NcIiBlbmRpbmdzO1xuICAgIG9cblxuICAoKiBCbG9icyAqKVxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBibG9iID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIkJsb2JcIlxuICBsZXQgb2ZfanN0ciA/KGluaXQgPSBKdi51bmRlZmluZWQpIHMgPVxuICAgIGxldCBhID0gSnYuSmFycmF5LmNyZWF0ZSAxIGluXG4gICAgSnYuSmFycmF5LnNldCBhIDAgKEp2Lm9mX2pzdHIgcyk7XG4gICAgSnYubmV3JyBibG9iIFt8IGE7IGluaXQgfF1cblxuICBsZXQgb2ZfamFycmF5ID8oaW5pdCA9IEp2LnVuZGVmaW5lZCkgYSA9IEp2Lm5ldycgYmxvYiBbfCBhOyBpbml0IHxdXG4gIGxldCBvZl9hcnJheV9idWZmZXIgPyhpbml0ID0gSnYudW5kZWZpbmVkKSBiID1cbiAgICBKdi5uZXcnIGJsb2IgW3wgSnYub2ZfanZfYXJyYXkgW3wgVGFycmF5LkJ1ZmZlci50b19qdiBiIHxdOyBpbml0IHxdXG5cbiAgbGV0IGJ5dGVfbGVuZ3RoIGIgPSBKdi5JbnQuZ2V0IGIgXCJzaXplXCJcbiAgbGV0IHR5cGUnIGIgPSBKdi5Kc3RyLmdldCBiIFwidHlwZVwiXG4gIGxldCBzbGljZSA/KHN0YXJ0ID0gMCkgP3N0b3AgPyh0eXBlJyA9IEpzdHIuZW1wdHkpIGIgPVxuICAgIGxldCBzdG9wID0gbWF0Y2ggc3RvcCB3aXRoIE5vbmUgLT4gYnl0ZV9sZW5ndGggYiB8IFNvbWUgc3RvcCAtPiBzdG9wIGluXG4gICAgSnYuY2FsbCBiIFwic2xpY2VcIiBKdi5bfCBvZl9pbnQgc3RhcnQ7IG9mX2ludCBzdG9wOyBvZl9qc3RyIHR5cGUnIHxdXG5cbiAgbGV0IHN0cmVhbSBiID0gSnYuZ2V0IGIgXCJzdHJlYW1cIlxuXG4gICgqIExvYWRpbmcgKilcblxuICB0eXBlIHByb2dyZXNzID0gKGZsb2F0ICogZmxvYXQpIG9wdGlvbiAtPiB1bml0XG5cbiAgKCogSWYgd2Ugd2FudCBwcm9ncmVzcyB3ZSBuZWVkIGEgRmlsZVJlYWRlciAqKVxuXG4gIGxldCBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgY29udiA9XG4gICAgbGV0IHByb2dyZXNzX2RhdGEgZSA9XG4gICAgICBsZXQgZSA9IEV2LnRvX2p2IGUgaW5cbiAgICAgIGlmIG5vdCAoSnYuQm9vbC5nZXQgZSBcImxlbmd0aENvbXB1dGFibGVcIikgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBsb2FkZWQgPSBKdi5GbG9hdC5nZXQgZSBcImxvYWRlZFwiIGluXG4gICAgICBsZXQgdG90YWwgPSBKdi5GbG9hdC5nZXQgZSBcInRvdGFsXCIgaW5cbiAgICAgIFNvbWUgKGxvYWRlZCwgdG90YWwpXG4gICAgaW5cbiAgICBsZXQgcmVhZGVyID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIkZpbGVSZWFkZXJcIikgW3x8XSBpblxuICAgIGxldCBmdXQsIHNldF9mdXQgPSBGdXQuY3JlYXRlICgpIGluXG4gICAgbGV0IG9rIGUgPVxuICAgICAgYmVnaW4gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgcHJvZ3Jlc3MgLT4gcHJvZ3Jlc3MgKHByb2dyZXNzX2RhdGEgZSlcbiAgICAgIGVuZDtcbiAgICAgIHNldF9mdXQgKE9rIChjb252IChKdi5nZXQgcmVhZGVyIFwicmVzdWx0XCIpKSlcbiAgICBpblxuICAgIGxldCBlcnJvciBfZSA9IHNldF9mdXQgKEVycm9yIChKdi50b19lcnJvciAoSnYuZ2V0IHJlYWRlciBcImVycm9yXCIpKSkgaW5cbiAgICBsZXQgdCA9IEV2LnRhcmdldF9vZl9qdiByZWFkZXIgaW5cbiAgICBsZXQgb3B0cyA9IEV2Lmxpc3Rlbl9vcHRzIH5vbmNlOnRydWUgKCkgaW5cbiAgICBpZ25vcmUgKEV2Lmxpc3RlbiB+b3B0cyBFdi5sb2FkIG9rIHQgOiBFdi5saXN0ZW5lcik7XG4gICAgaWdub3JlIChFdi5saXN0ZW4gfm9wdHMgRXYuZXJyb3IgZXJyb3IgdCA6IEV2Lmxpc3RlbmVyKTtcbiAgICBiZWdpbiBtYXRjaCBwcm9ncmVzcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHByb2dyZXNzIC0+XG4gICAgICAgIGxldCBwcm9ncmVzcyBlID0gcHJvZ3Jlc3MgKHByb2dyZXNzX2RhdGEgZSkgaW5cbiAgICAgICAgaWdub3JlIChFdi5saXN0ZW4gRXYucHJvZ3Jlc3MgcHJvZ3Jlc3MgdCA6IEV2Lmxpc3RlbmVyKTtcbiAgICBlbmQ7XG4gICAgZnV0LCByZWFkZXJcblxuICBsZXQgYXJyYXlfYnVmZmVyID9wcm9ncmVzcyBiID0gbWF0Y2ggcHJvZ3Jlc3Mgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIEZ1dC5vZl9wcm9taXNlIH5vazpUYXJyYXkuQnVmZmVyLm9mX2p2IChKdi5jYWxsIGIgXCJhcnJheUJ1ZmZlclwiIFt8fF0pXG4gIHwgU29tZSBfIC0+XG4gICAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgVGFycmF5LkJ1ZmZlci5vZl9qdiBpblxuICAgICAgaWdub3JlIChKdi5jYWxsIHJlYWRlciBcInJlYWRBc0FycmF5QnVmZmVyXCIgW3wgYiB8XSk7XG4gICAgICBmdXRcblxuICBsZXQgdGV4dCA/cHJvZ3Jlc3MgYiA9IG1hdGNoIHByb2dyZXNzIHdpdGhcbiAgfCBOb25lIC0+IEZ1dC5vZl9wcm9taXNlIH5vazpKdi50b19qc3RyIChKdi5jYWxsIGIgXCJ0ZXh0XCIgW3x8XSlcbiAgfCBTb21lIF8gLT5cbiAgICAgIGxldCBmdXQsIHJlYWRlciA9IGZpbGVfcmVhZGVyID9wcm9ncmVzcyBKdi50b19qc3RyIGluXG4gICAgICBpZ25vcmUgKEp2LmNhbGwgcmVhZGVyIFwicmVhZEFzVGV4dFwiIFt8IGIgfF0pO1xuICAgICAgZnV0XG5cbiAgbGV0IGRhdGFfdXJpID9wcm9ncmVzcyBiID1cbiAgICAoKiBUaGVyZSdzIG5vIGRpcmVjdCBzdXBwb3J0IGZvciBkYXRhIHVybHMgaW4gYmxvYiBvYmplY3RzLlxuICAgICAgIFdlIGRvIHRoaXMgdmlhIHRoZSBGaWxlUmVhZGVyIEFQSS4gKilcbiAgICBsZXQgZnV0LCByZWFkZXIgPSBmaWxlX3JlYWRlciA/cHJvZ3Jlc3MgSnYudG9fanN0ciBpblxuICAgIGlnbm9yZSAoSnYuY2FsbCByZWFkZXIgXCJyZWFkQXNEYXRhVVJMXCIgW3wgYiB8XSk7XG4gICAgZnV0XG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAoKiBJbml0aWFsaXNhdGlvbiBvYmplY3RzICopXG5cbiAgdHlwZSBpbml0ID0gSnYudFxuICBsZXQgaW5pdCA/YmxvYl9pbml0ID9sYXN0X21vZGlmaWVkX21zICgpID1cbiAgICBsZXQgbyA9IG1hdGNoIGJsb2JfaW5pdCB3aXRoIE5vbmUgLT4gSnYub2JqIFt8fF0gfCBTb21lIGIgLT4gSnYucmVwciBiIGluXG4gICAgSnYuSW50LnNldF9pZl9zb21lIG8gXCJsYXN0TW9kaWZpZWRcIiBsYXN0X21vZGlmaWVkX21zO1xuICAgIG9cblxuICBsZXQgZmlsZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJGaWxlXCJcbiAgbGV0IG9mX2Jsb2IgPyhpbml0ID0gSnYub2JqIFt8fF0pIG5hbWUgYiA9XG4gICAgSnYubmV3JyBmaWxlIFt8QmxvYi50b19qdiBiOyBKdi5vZl9qc3RyIG5hbWU7IGluaXR8XVxuXG4gIGxldCBuYW1lIGYgPSBKdi5Kc3RyLmdldCBmIFwibmFtZVwiXG4gIGxldCByZWxhdGl2ZV9wYXRoIGYgPVxuICAgIGxldCBwID0gSnYuZmluZF9tYXAgSnYudG9fanN0ciBmIFwid2Via2l0UmVsYXRpdmVQYXRoXCIgaW5cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SnN0ci5lbXB0eSBwXG5cbiAgbGV0IGxhc3RfbW9kaWZpZWRfbXMgZiA9IEp2LkludC5nZXQgZiBcImxhc3RNb2RpZmllZFwiXG4gIGV4dGVybmFsIGFzX2Jsb2IgOiB0IC0+IEJsb2IudCA9IFwiJWlkZW50aXR5XCJcbmVuZFxuXG5tb2R1bGUgQmFzZTY0ID0gc3RydWN0XG5cbiAgdHlwZSBkYXRhID0gSnN0ci50XG5cbiAgbGV0IGRhdGFfdXRmXzhfb2ZfanN0ciBzID0gVGFycmF5LnRvX2JpbmFyeV9qc3RyIChUYXJyYXkub2ZfanN0ciBzKVxuICBsZXQgZGF0YV91dGZfOF90b19qc3RyIGQgPSBtYXRjaCBUYXJyYXkub2ZfYmluYXJ5X2pzdHIgZCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGUgfCBPayB0IC0+IFRhcnJheS50b19qc3RyIHRcblxuICBsZXQgZGF0YV9vZl9iaW5hcnlfanN0ciA9IEZ1bi5pZFxuICBsZXQgZGF0YV90b19iaW5hcnlfanN0ciA9IEZ1bi5pZFxuXG4gIGxldCBlbmNvZGUgYnMgPVxuICAgIG1hdGNoIEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwiYnRvYVwiKSBKdi5bfCBvZl9qc3RyIGJzIHxdIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKdi5FcnJvciBlIC0+IEVycm9yIGVcbiAgICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgZGVjb2RlIHMgPVxuICAgIG1hdGNoIEp2LmFwcGx5IChKdi5nZXQgSnYuZ2xvYmFsIFwiYXRvYlwiKSBKdi5bfCBvZl9qc3RyIHMgfF0gd2l0aFxuICAgIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICAgIHwgdiAtPiBPayAoSnYudG9fanN0ciB2KVxuZW5kXG5cbm1vZHVsZSBKc29uID0gc3RydWN0XG4gIHR5cGUgdCA9IEp2LnRcbiAgbGV0IGpzb24gPSBKdi5nZXQgSnYuZ2xvYmFsIFwiSlNPTlwiXG4gIGxldCBlbmNvZGUgdiA9IEp2LnRvX2pzdHIgKEp2LmNhbGwganNvbiBcInN0cmluZ2lmeVwiIFt8IHYgfF0pXG4gIGxldCBkZWNvZGUgcyA9IG1hdGNoIEp2LmNhbGwganNvbiBcInBhcnNlXCIgW3xKdi5vZl9qc3RyIHN8XSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZSB8IHYgLT4gT2sgdlxuZW5kXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgZW5jb2RlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImVuY29kZVVSSVwiXG4gIGxldCBkZWNvZGUgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZGVjb2RlVVJJXCJcbiAgbGV0IGVuY29kZV9jb21wb25lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZW5jb2RlVVJJQ29tcG9uZW50XCJcbiAgbGV0IGRlY29kZV9jb21wb25lbnQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiZGVjb2RlVVJJQ29tcG9uZW50XCJcblxuICBsZXQgdXJsID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlVSTFwiXG5cbiAgbGV0IHYgP2Jhc2UgcyA9IG1hdGNoIGJhc2Ugd2l0aFxuICB8IE5vbmUgLT4gSnYubmV3JyB1cmwgW3wgSnYub2ZfanN0ciBzIHxdXG4gIHwgU29tZSBiIC0+IEp2Lm5ldycgdXJsIFt8IEp2Lm9mX2pzdHIgczsgSnYub2ZfanN0ciBiIHxdXG5cbiAgbGV0IHdpdGhfdXJpID9zY2hlbWUgP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCB1ID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICB0cnlcbiAgICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInByb3RvY29sXCIgc2NoZW1lO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwiaG9zdG5hbWVcIiBob3N0O1xuICAgICAgYmVnaW4gbWF0Y2ggcG9ydCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBwIC0+IEp2LkpzdHIuc2V0X2lmX3NvbWUgdSBcInBvcnRcIiAoT3B0aW9uLm1hcCBKc3RyLm9mX2ludCBwKVxuICAgICAgZW5kO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwicGF0aG5hbWVcIiBwYXRoO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSB1IFwic2VhcmNoXCIgcXVlcnk7XG4gICAgICBKdi5Kc3RyLnNldF9pZl9zb21lIHUgXCJoYXNoXCIgZnJhZ21lbnQ7XG4gICAgICBPayB1XG4gICAgd2l0aCBKdi5FcnJvciBlIC0+IEVycm9yIGVcblxuICBsZXQgc2NoZW1lIHUgPVxuICAgIGxldCBwID0gSnYuSnN0ci5nZXQgdSBcInByb3RvY29sXCIgaW5cbiAgICBpZiBKc3RyLmxlbmd0aCBwIDw+IDAgdGhlbiBKc3RyLnNsaWNlIHAgfnN0b3A6KC0xKSAoKiByZW1vdmUgJzonICopIGVsc2UgcFxuXG4gIGxldCBob3N0IHUgPSBKdi5Kc3RyLmdldCB1IFwiaG9zdG5hbWVcIlxuICBsZXQgcG9ydCB1ID1cbiAgICBsZXQgcCA9IEp2LkpzdHIuZ2V0IHUgXCJwb3J0XCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IHAgdGhlbiBOb25lIGVsc2UgSnN0ci50b19pbnQgcFxuXG4gIGxldCBzbGFzaCA9IEpzdHIudiBcIi9cIlxuXG4gIGxldCBwYXRoIHUgPSBKdi5Kc3RyLmdldCB1IFwicGF0aG5hbWVcIlxuXG4gIGxldCBxdWVyeSB1ID1cbiAgICBsZXQgcSA9IEp2LkpzdHIuZ2V0IHUgXCJzZWFyY2hcIiBpblxuICAgIGlmIEpzdHIuaXNfZW1wdHkgcSB0aGVuIHEgZWxzZSBKc3RyLnNsaWNlIHEgfnN0YXJ0OjEgKCogcmVtb3ZlICc/JyAqKVxuXG4gIGxldCBmcmFnbWVudCB1ID1cbiAgICBsZXQgZiA9IEp2LkpzdHIuZ2V0IHUgXCJoYXNoXCIgaW5cbiAgICBpZiBKc3RyLmlzX2VtcHR5IGYgdGhlbiBmIGVsc2UgSnN0ci5zbGljZSBmIH5zdGFydDoxICgqIHJlbW92ZSAnIycgKilcblxuICAoKiBQYXRoICopXG5cbiAgdHlwZSBwYXRoID0gSnN0ci50IGxpc3RcblxuICBsZXQgcGF0aF9zZWdtZW50cyB1ID1cbiAgICBsZXQgZGVjb2RlX3NlZyBzID0gSnYuKHRvX2pzdHIgKGFwcGx5IGRlY29kZV9jb21wb25lbnQgW3wgb2ZfanN0ciBzIHxdKSkgaW5cbiAgICB0cnlcbiAgICAgIGxldCBwID0gcGF0aCB1IGFuZCBwcmVmaXggPSBzbGFzaCBpblxuICAgICAgbGV0IHAgPSBpZiBKc3RyLnN0YXJ0c193aXRoIH5wcmVmaXggcCB0aGVuIEpzdHIuc2xpY2UgcCB+c3RhcnQ6MSBlbHNlIHAgaW5cbiAgICAgIE9rIChMaXN0Lm1hcCBkZWNvZGVfc2VnIChKc3RyLmN1dHMgfnNlcDpzbGFzaCBwKSlcbiAgICB3aXRoIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuXG4gIGxldCB3aXRoX3BhdGhfc2VnbWVudHMgdSBzZWdzID1cbiAgICBsZXQgZW5jb2RlX3NlZyBzID1cbiAgICAgIEpzdHIuYXBwZW5kIHNsYXNoIEp2Lih0b19qc3RyIChhcHBseSBlbmNvZGVfY29tcG9uZW50IFt8IG9mX2pzdHIgcyB8XSkpXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIGxldCB1ID0gSnYubmV3JyB1cmwgW3wgdSB8XSBpblxuICAgICAgbGV0IHBhdGggPSBKc3RyLmNvbmNhdCAoTGlzdC5tYXAgZW5jb2RlX3NlZyBzZWdzKSBpblxuICAgICAgSnYuc2V0IHUgXCJwYXRobmFtZVwiIChKdi5vZl9qc3RyIHBhdGgpO1xuICAgICAgT2sgdVxuICAgIHdpdGggSnYuRXJyb3IgZSAtPiBFcnJvciBlXG5cbiAgKCogUGFyYW1zICopXG5cbiAgbW9kdWxlIFBhcmFtcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCB1c3AgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiVVJMU2VhcmNoUGFyYW1zXCJcbiAgICBsZXQgaXNfZW1wdHkgcCA9IEp2Lkl0LnJlc3VsdF9kb25lIChKdi5JdC5uZXh0IChKdi5jYWxsIHAgXCJlbnRyaWVzXCIgW3x8XSkpXG4gICAgbGV0IG1lbSBrIHAgPSBKdi50b19ib29sIChKdi5jYWxsIHAgXCJoYXNcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmaW5kIGsgcCA9IEp2LnRvX29wdGlvbiBKdi50b19qc3RyIChKdi5jYWxsIHAgXCJnZXRcIiBbfEp2Lm9mX2pzdHIga3xdKVxuICAgIGxldCBmaW5kX2FsbCBrIHAgPSBKdi50b19qc3RyX2xpc3QgKEp2LmNhbGwgcCBcImdldEFsbFwiIFt8SnYub2ZfanN0ciBrfF0pXG4gICAgbGV0IGZvbGQgZiBwIGFjYyA9XG4gICAgICBsZXQga2V5ID0gSnYudG9fanN0ciBpblxuICAgICAgbGV0IHZhbHVlID0gSnYudG9fanN0ciBpblxuICAgICAgSnYuSXQuZm9sZF9iaW5kaW5ncyB+a2V5IH52YWx1ZSBmIChKdi5jYWxsIHAgXCJlbnRyaWVzXCIgW3x8XSkgYWNjXG5cbiAgICBsZXQgb2ZfanN0ciBzID1cbiAgICAgICgqIE5vdGUgdGhhdCBpdCBzZWVtcyB0aGF0IHRoaXMgbmV2ZXIgZXJyb3JzLiBBdCBsZWFzdCBkZWNvZGluZ1xuICAgICAgICAgZXJyb3JzIHNlZW0gdG8gYmUgcmVwbGFjZWQgYnkgVStGRkZELiAqKVxuICAgICAgSnYubmV3JyB1c3AgW3wgSnYub2ZfanN0ciBzfF1cblxuICAgIGxldCB0b19qc3RyIHAgPSBKdi50b19qc3RyIChKdi5jYWxsIHAgXCJ0b1N0cmluZ1wiIFt8fF0pXG4gICAgbGV0IG9mX2Fzc29jIGwgPVxuICAgICAgbGV0IHAgPSBvZl9qc3RyIEpzdHIuZW1wdHkgaW5cbiAgICAgIGxldCBhcHAgcCAoaywgdikgPVxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgcCBcImFwcGVuZFwiIEp2Llt8b2ZfanN0ciBrOyBvZl9qc3RyIHZ8XSlcbiAgICAgIGluXG4gICAgICBMaXN0Lml0ZXIgKGFwcCBwKSBsOyBwXG5cbiAgICBsZXQgdG9fYXNzb2MgcCA9IExpc3QucmV2IChmb2xkIChmdW4gayB2IGFjYyAtPiAoaywgdikgOjogYWNjKSBwIFtdKVxuICAgIGxldCBvZl9vYmogbyA9IEp2Lm5ldycgdXNwIFt8IG8gfF1cbiAgZW5kXG5cbiAgbGV0IHF1ZXJ5X3BhcmFtcyB1ID0gUGFyYW1zLm9mX2pzdHIgKHF1ZXJ5IHUpXG4gIGxldCB3aXRoX3F1ZXJ5X3BhcmFtcyB1IHBzID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICBKdi5Kc3RyLnNldCB1IFwic2VhcmNoXCIgKFBhcmFtcy50b19qc3RyIHBzKTtcbiAgICB1XG5cbiAgbGV0IGZyYWdtZW50X3BhcmFtcyB1ID0gUGFyYW1zLm9mX2pzdHIgKGZyYWdtZW50IHUpXG4gIGxldCB3aXRoX2ZyYWdtZW50X3BhcmFtcyB1IHBzID1cbiAgICBsZXQgdSA9IEp2Lm5ldycgdXJsIFt8IHUgfF0gaW5cbiAgICBKdi5Kc3RyLnNldCB1IFwiaGFzaFwiIChQYXJhbXMudG9fanN0ciBwcyk7XG4gICAgdVxuXG4gICgqIENvbnZlcnRpbmcgKilcblxuICBsZXQgdG9fanN0ciB1ID0gSnYudG9fanN0ciAoSnYuY2FsbCB1IFwidG9TdHJpbmdcIiBbfHxdKVxuICBsZXQgb2ZfanN0ciA/YmFzZSBzID0gbWF0Y2ggdiA/YmFzZSBzIHdpdGhcbiAgfCBleGNlcHRpb24gSnYuRXJyb3IgZSAtPiBFcnJvciBlIHwgdiAtPiBPayB2XG5cbiAgKCogUGVyY2VudC1lbmNvZGluZyAqKVxuXG4gIGxldCBjb2RlIGYgcyA9IG1hdGNoIEp2LmFwcGx5IGYgW3xKdi5vZl9qc3RyIHN8XSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgZW5jb2RlIHMgPSBjb2RlIGVuY29kZSBzXG4gIGxldCBkZWNvZGUgcyA9IGNvZGUgZGVjb2RlIHNcbiAgbGV0IGVuY29kZV9jb21wb25lbnQgcyA9IGNvZGUgZW5jb2RlX2NvbXBvbmVudCBzXG4gIGxldCBkZWNvZGVfY29tcG9uZW50IHMgPSBjb2RlIGRlY29kZV9jb21wb25lbnQgc1xuZW5kXG5cbm1vZHVsZSBSZWdleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBpbnB1dCByID0gSnYuSnN0ci5nZXQgciBcImlucHV0XCJcbiAgICBsZXQgbWF0Y2gnIHIgPSBKdi50b19qc3RyIChKdi5KYXJyYXkuZ2V0IHIgMClcbiAgICBsZXQgc3RhcnRfaW5kZXggciA9IEp2LkludC5nZXQgciBcImluZGV4XCJcbiAgICBsZXQgc3RvcF9pbmRleCByID0gc3RhcnRfaW5kZXggciArIEpzdHIubGVuZ3RoIChtYXRjaCcgcilcbiAgICBsZXQgZm9sZF9ncm91cHMgZiByIGFjYyA9XG4gICAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgICAgZm9yIGkgPSAxICgqIDAgaXMgdGhlIHdob2xlIG1hdGNoICopIHRvIEp2LkphcnJheS5sZW5ndGggciAtIDEgZG9cbiAgICAgICAgYWNjIDo9IGYgKEp2LnRvX2pzdHIgKEp2LkphcnJheS5nZXQgciBpKSkgIWFjY1xuICAgICAgZG9uZTtcbiAgICAgICFhY2NcblxuICAgIGxldCBmb2xkX2dyb3VwX2luZGljZXMgZiByIGFjYyA9IG1hdGNoIEp2LmZpbmQgciBcImluZGljZXNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjYyAoKiBoYXBwZW5zIGlmIHJlZ2V4cCBoYWQgbm8gW2RdIGZsYWcuICopXG4gICAgfCBTb21lIGEgLT5cbiAgICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAxICgqIDAgaXMgdGhlIHdob2xlIG1hdGNoICopIHRvIEp2LkphcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBsZXQgcmFuZ2UgPSBKdi5KYXJyYXkuZ2V0IGEgaSBpblxuICAgICAgICAgIGxldCBzdGFydCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAwKSBpblxuICAgICAgICAgIGxldCBzdG9wID0gSnYudG9faW50IChKdi5KYXJyYXkuZ2V0IHJhbmdlIDEpIGluXG4gICAgICAgICAgYWNjIDo9IGYgfnN0YXJ0IH5zdG9wICFhY2NcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWFjY1xuXG4gICAgKCogTm8gaXRlcmF0b3IgcHJvdG9jb2wgb24gT2JqZWN0IG1lbWJlcnMgPyAqKVxuICAgIGxldCBvYmpfZW50cmllcyBqdiA9IEp2LmNhbGwgKEp2LmdldCBKdi5nbG9iYWwgXCJPYmplY3RcIikgXCJlbnRyaWVzXCIgW3wganYgfF1cbiAgICBsZXQgb2JqX2tleSBhID0gSnYuSmFycmF5LmdldCBhIDBcbiAgICBsZXQgb2JqX3ZhbHVlIGEgPSBKdi5KYXJyYXkuZ2V0IGEgMVxuXG4gICAgbGV0IGZvbGRfbmFtZWRfZ3JvdXBzIGYgciBhY2MgPSBtYXRjaCBKdi5maW5kIHIgXCJncm91cHNcIiB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSBncm91cHMgLT5cbiAgICAgICAgbGV0IGVudHJpZXMgPSBvYmpfZW50cmllcyBncm91cHMgaW5cbiAgICAgICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEp2LkphcnJheS5sZW5ndGggZW50cmllcyAtIDEgZG9cbiAgICAgICAgICBsZXQgZW50cnkgPSBKdi5KYXJyYXkuZ2V0IGVudHJpZXMgaSBpblxuICAgICAgICAgIGxldCBtYXRjaCcgPSBvYmpfdmFsdWUgZW50cnkgaW5cbiAgICAgICAgICBpZiBKdi5pc191bmRlZmluZWQgbWF0Y2gnIHRoZW4gKCkgZWxzZVxuICAgICAgICAgIGxldCBuYW1lID0gSnYudG9fanN0ciAob2JqX2tleSBlbnRyeSkgaW5cbiAgICAgICAgICBhY2MgOj0gZiB+bmFtZSAoSnYudG9fanN0ciBtYXRjaCcpICFhY2NcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWFjY1xuXG4gICAgbGV0IGZvbGRfbmFtZWRfZ3JvdXBfaW5kaWNlcyBmIHIgYWNjID0gbWF0Y2ggSnYuZmluZCByIFwiaW5kaWNlc1wiIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjICgqIGhhcHBlbnMgaWYgcmVnZXhwIGhhZCBubyBbZF0gZmxhZy4gKilcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgICBtYXRjaCBKdi5maW5kIGEgXCJncm91cHNcIiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIGdyb3VwcyAtPlxuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBvYmpfZW50cmllcyBncm91cHMgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgICAgICAgICBmb3IgaSA9IDAgdG8gSnYuSmFycmF5Lmxlbmd0aCBlbnRyaWVzIC0gMSBkb1xuICAgICAgICAgICAgICBsZXQgZW50cnkgPSBKdi5KYXJyYXkuZ2V0IGVudHJpZXMgaSBpblxuICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSBvYmpfdmFsdWUgZW50cnkgaW5cbiAgICAgICAgICAgICAgaWYgSnYuaXNfdW5kZWZpbmVkIHJhbmdlIHRoZW4gKCkgZWxzZVxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IEp2LnRvX2pzdHIgKG9ial9rZXkgZW50cnkpIGluXG4gICAgICAgICAgICAgIGxldCBzdGFydCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAwKSBpblxuICAgICAgICAgICAgICBsZXQgc3RvcCA9IEp2LnRvX2ludCAoSnYuSmFycmF5LmdldCByYW5nZSAxKSBpblxuICAgICAgICAgICAgICBhY2MgOj0gZiB+bmFtZSB+c3RhcnQgfnN0b3AgIWFjY1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICFhY2NcbiAgZW5kXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgcmVnZXhwID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIlJlZ0V4cFwiXG4gIGxldCBlc2NhcGUgcyA9IEp2LnRvX2pzdHIgKEp2LmNhbGwgcmVnZXhwIFwiZXNjYXBlXCIgSnYuW3xvZl9qc3RyIHN8XSlcbiAgbGV0IGNyZWF0ZSA/ZmxhZ3MgcyA9XG4gICAgbGV0IGZsYWdzID0gSnYub2Zfb3B0aW9uIH5ub25lOkp2LnVuZGVmaW5lZCBKdi5vZl9qc3RyIGZsYWdzIGluXG4gICAgSnYubmV3JyByZWdleHAgSnYuW3xvZl9qc3RyIHM7IGZsYWdzfF1cblxuICBsZXQgZXhlYyByIHMgPVxuICAgIEp2LnRvX29wdGlvbiBSZXN1bHQub2ZfanYgQEAgSnYuY2FsbCByIFwiZXhlY1wiIEp2Llt8b2ZfanN0ciBzfF1cblxuICBsZXQgbWF0Y2gnIHIgcyA9XG4gICAgSnYudG9fb3B0aW9uIFJlc3VsdC5vZl9qdiBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwibWF0Y2hcIiBKdi5bfHJ8XVxuXG4gIGxldCBmb2xkX21hdGNoZXMgciBmIHMgYWNjID1cbiAgICBsZXQgaXRlciA9IEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJtYXRjaEFsbFwiIEp2Llt8cnxdIGluXG4gICAgSnYuSXQuZm9sZCBSZXN1bHQub2ZfanYgZiBpdGVyIGFjY1xuXG4gIGxldCByZXBsYWNlIHIgfmJ5IHMgPVxuICAgIEp2LnRvX2pzdHIgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInJlcGxhY2VcIiBKdi5bfHI7IG9mX2pzdHIgYnl8XVxuXG4gIGxldCByZXBsYWNlX2FsbCByIH5ieSBzID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJyZXBsYWNlQWxsXCIgSnYuW3xyOyBvZl9qc3RyIGJ5fF1cblxuICBsZXQgc2VhcmNoIHIgcyA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgKEp2Lm9mX2pzdHIgcykgXCJzZWFyY2hcIiBKdi5bfHJ8XVxuXG4gIGxldCBzcGxpdCA/bGltaXQgciBzID0gbWF0Y2ggbGltaXQgd2l0aFxuICB8IE5vbmUgLT4gSnYudG9fanN0cl9hcnJheSBAQCBKdi5jYWxsIChKdi5vZl9qc3RyIHMpIFwic3BsaXRcIiBKdi5bfHJ8XVxuICB8IFNvbWUgbGltaXQgLT5cbiAgICAgIEp2LnRvX2pzdHJfYXJyYXkgQEAgSnYuY2FsbCAoSnYub2ZfanN0ciBzKSBcInNwbGl0XCIgSnYuW3xyOyBvZl9pbnQgbGltaXR8XVxuXG4gIGxldCB0ZXN0IHIgcyA9IEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwidGVzdFwiIEp2Llt8b2ZfanN0ciBzfF1cbiAgbGV0IGxhc3RfaW5kZXggciA9IEp2LkludC5nZXQgciBcImxhc3RJbmRleFwiXG4gIGxldCBzZXRfbGFzdF9pbmRleCByIGkgPSBKdi5JbnQuc2V0IHIgXCJsYXN0SW5kZXhcIiBpXG4gIGxldCBkb3RfYWxsIHIgPSBKdi5Cb29sLmdldCByIFwiZG90QWxsXCJcbiAgbGV0IGZsYWdzIHIgPSBKdi5Kc3RyLmdldCByIFwiZmxhZ3NcIlxuICBsZXQgZ2xvYmFsIHIgPSBKdi5Cb29sLmdldCByIFwiZ2xvYmFsXCJcbiAgbGV0IGhhc19pbmRpY2VzIHIgPSBKdi5Cb29sLmdldCByIFwiaGFzSW5kaWNlc1wiXG4gIGxldCBpZ25vcmVfY2FzZSByID0gSnYuQm9vbC5nZXQgciBcImlnbm9yZUNhc2VcIlxuICBsZXQgbXVsdGlsaW5lIHIgPSBKdi5Cb29sLmdldCByIFwibXVsdGlsaW5lXCJcbiAgbGV0IHNvdXJjZSByID0gSnYuSnN0ci5nZXQgciBcInNvdXJjZVwiXG4gIGxldCBzdGlja3kgciA9IEp2LkJvb2wuZ2V0IHIgXCJzdGlja3lcIlxuICBsZXQgdW5pY29kZSByID0gSnYuQm9vbC5nZXQgciBcInVuaWNvZGVcIlxuICBsZXQgdW5pY29kZV9zZXRzIHIgPSBKdi5Cb29sLmdldCByIFwidW5pY29kZVNldHNcIlxuZW5kXG5cblxuKCogRE9NIGludGVyYWN0aW9uICopXG5cbm1vZHVsZSBBdCA9IHN0cnVjdFxuICB0eXBlIG5hbWUgPSBKc3RyLnRcbiAgdHlwZSB0ID0gbmFtZSAqIEpzdHIudFxuICBsZXRbQGlubGluZV0gdiBuIHYgPSAobiwgdilcbiAgbGV0IHZvaWQgPSAoSnN0ci5lbXB0eSwgSnN0ci5lbXB0eSlcbiAgbGV0IGlzX3ZvaWQgKG4sIHYpID0gSnN0ci5pc19lbXB0eSBuICYmIEpzdHIuaXNfZW1wdHkgdlxuICBsZXQgaWYnIGIgYXQgPSBpZiBiIHRoZW4gYXQgZWxzZSB2b2lkXG4gIGxldCBpZl9zb21lID0gZnVuY3Rpb24gTm9uZSAtPiB2b2lkIHwgU29tZSBhdCAtPiBhdFxuICBsZXQgdHJ1ZScgbiA9IChuLCBKc3RyLmVtcHR5KVxuICBsZXQgaW50IG4gaSA9IChuLCBKc3RyLm9mX2ludCBpKVxuICBsZXQgZmxvYXQgbiBmID0gKG4sIEpzdHIub2ZfZmxvYXQgZilcbiAgbGV0IHRvX3BhaXIgPSBGdW4uaWRcbiAgbGV0IGFkZF9pZiBiIGF0IGwgPSBpZiBiIHRoZW4gYXQgOjogbCBlbHNlIGxcbiAgbGV0IGFkZF9pZl9zb21lIG5hbWUgbyBsID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gbCB8IFNvbWUgYSAtPiAobmFtZSwgYSkgOjogbFxuICBtb2R1bGUgTmFtZSA9IHN0cnVjdFxuICAgIGxldCBhY2Nlc3NrZXkgPSBKc3RyLnYgXCJhY2Nlc3NrZXlcIlxuICAgIGxldCBhY3Rpb24gPSBKc3RyLnYgXCJhY3Rpb25cIlxuICAgIGxldCBhdXRvY29tcGxldGUgPSBKc3RyLnYgXCJhdXRvY29tcGxldGVcIlxuICAgIGxldCBhdXRvZm9jdXMgPSBKc3RyLnYgXCJhdXRvZm9jdXNcIlxuICAgIGxldCBjaGFyc2V0ID0gSnN0ci52IFwiY2hhcnNldFwiXG4gICAgbGV0IGNoZWNrZWQgPSBKc3RyLnYgXCJjaGVja2VkXCJcbiAgICBsZXQgY2xhc3MnID0gSnN0ci52IFwiY2xhc3NcIlxuICAgIGxldCBjb2xzID0gSnN0ci52IFwiY29sc1wiXG4gICAgbGV0IGNvbnRlbnQgPSBKc3RyLnYgXCJjb250ZW50XCJcbiAgICBsZXQgY29udGVudGVkaXRhYmxlID0gSnN0ci52IFwiY29udGVudGVkaXRhYmxlXCJcbiAgICBsZXQgZGVmZXIgPSBKc3RyLnYgXCJkZWZlclwiXG4gICAgbGV0IGRpciA9IEpzdHIudiBcImRpclwiXG4gICAgbGV0IGRpc2FibGVkID0gSnN0ci52IFwiZGlzYWJsZWRcIlxuICAgIGxldCBkb3dubG9hZCA9IEpzdHIudiBcImRvd25sb2FkXCJcbiAgICBsZXQgZHJhZ2dhYmxlID0gSnN0ci52IFwiZHJhZ2dhYmxlXCJcbiAgICBsZXQgZm9yJyA9IEpzdHIudiBcImZvclwiXG4gICAgbGV0IGhlaWdodCA9IEpzdHIudiBcImhlaWdodFwiXG4gICAgbGV0IGhpZGRlbiA9IEpzdHIudiBcImhpZGRlblwiXG4gICAgbGV0IGhyZWYgPSBKc3RyLnYgXCJocmVmXCJcbiAgICBsZXQgaWQgPSBKc3RyLnYgXCJpZFwiXG4gICAgbGV0IGxhbmcgPSBKc3RyLnYgXCJsYW5nXCJcbiAgICBsZXQgbGlzdCA9IEpzdHIudiBcImxpc3RcIlxuICAgIGxldCBtZWRpYSA9IEpzdHIudiBcIm1lZGlhXCJcbiAgICBsZXQgbWV0aG9kJyA9IEpzdHIudiBcIm1ldGhvZFwiXG4gICAgbGV0IG5hbWUgPSBKc3RyLnYgXCJuYW1lXCJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSBKc3RyLnYgXCJwbGFjZWhvbGRlclwiXG4gICAgbGV0IHJlbCA9IEpzdHIudiBcInJlbFwiXG4gICAgbGV0IHJlcXVpcmVkID0gSnN0ci52IFwicmVxdWlyZWRcIlxuICAgIGxldCByb3dzID0gSnN0ci52IFwicm93c1wiXG4gICAgbGV0IHNlbGVjdGVkID0gSnN0ci52IFwic2VsZWN0ZWRcIlxuICAgIGxldCBzcGVsbGNoZWNrID0gSnN0ci52IFwic3BlbGxjaGVja1wiXG4gICAgbGV0IHNyYyA9IEpzdHIudiBcInNyY1wiXG4gICAgbGV0IHN0eWxlID0gSnN0ci52IFwic3R5bGVcIlxuICAgIGxldCB0YWJpbmRleCA9IEpzdHIudiBcInRhYmluZGV4XCJcbiAgICBsZXQgdGl0bGUgPSBKc3RyLnYgXCJ0aXRsZVwiXG4gICAgbGV0IHR5cGUnID0gSnN0ci52IFwidHlwZVwiXG4gICAgbGV0IHZhbHVlID0gSnN0ci52IFwidmFsdWVcIlxuICAgIGxldCB3aWR0aCA9IEpzdHIudiBcIndpZHRoXCJcbiAgICBsZXQgd3JhcCA9IEpzdHIudiBcIndyYXBcIlxuICBlbmRcbiAgdHlwZSAnYSBjb25zID0gJ2EgLT4gdFxuICBsZXQgYWNjZXNza2V5IHMgPSB2IE5hbWUuYWNjZXNza2V5IHNcbiAgbGV0IGFjdGlvbiBzID0gdiBOYW1lLmFjdGlvbiBzXG4gIGxldCBhdXRvY29tcGxldGUgcyA9IHYgTmFtZS5hdXRvY29tcGxldGUgc1xuICBsZXQgYXV0b2ZvY3VzID0gdHJ1ZScgTmFtZS5hdXRvZm9jdXNcbiAgbGV0IGNoYXJzZXQgPSB2IE5hbWUuY2hhcnNldFxuICBsZXQgY2hlY2tlZCA9IHRydWUnIE5hbWUuY2hlY2tlZFxuICBsZXQgY2xhc3MnIHMgPSB2IE5hbWUuY2xhc3MnIHNcbiAgbGV0IGNvbHMgaSA9IGludCBOYW1lLmNvbHMgaVxuICBsZXQgY29udGVudCBzID0gdiBOYW1lLmNvbnRlbnQgc1xuICBsZXQgY29udGVudGVkaXRhYmxlIHMgPSB0cnVlJyBOYW1lLmNvbnRlbnRlZGl0YWJsZVxuICBsZXQgZGVmZXIgPSB0cnVlJyBOYW1lLmRlZmVyXG4gIGxldCBkaXIgcyA9IHYgTmFtZS5kaXIgc1xuICBsZXQgZGlzYWJsZWQgPSB0cnVlJyBOYW1lLmRpc2FibGVkXG4gIGxldCBkb3dubG9hZCBzID0gdiBOYW1lLmRvd25sb2FkIHNcbiAgbGV0IGRyYWdnYWJsZSBzID0gdiBOYW1lLmRyYWdnYWJsZSBzXG4gIGxldCBmb3InIHMgPSB2IE5hbWUuZm9yJyBzXG4gIGxldCBoZWlnaHQgaSA9IGludCBOYW1lLmhlaWdodCBpXG4gIGxldCBoaWRkZW4gPSB0cnVlJyBOYW1lLmhpZGRlblxuICBsZXQgaHJlZiBzID0gdiBOYW1lLmhyZWYgc1xuICBsZXQgaWQgcyA9IHYgTmFtZS5pZCBzXG4gIGxldCBsYW5nIHMgPSB2IE5hbWUubGFuZyBzXG4gIGxldCBsaXN0IHMgPSB2IE5hbWUubGlzdCBzXG4gIGxldCBtZWRpYSBzID0gdiBOYW1lLm1lZGlhIHNcbiAgbGV0IG1ldGhvZCcgcyA9IHYgTmFtZS5tZXRob2QnIHNcbiAgbGV0IG5hbWUgcyA9IHYgTmFtZS5uYW1lIHNcbiAgbGV0IHBsYWNlaG9sZGVyIHMgPSB2IE5hbWUucGxhY2Vob2xkZXIgc1xuICBsZXQgcmVsIHMgPSB2IE5hbWUucmVsIHNcbiAgbGV0IHJlcXVpcmVkID0gdHJ1ZScgTmFtZS5yZXF1aXJlZFxuICBsZXQgcm93cyBpID0gaW50IE5hbWUucm93cyBpXG4gIGxldCBzZWxlY3RlZCA9IHRydWUnIE5hbWUuc2VsZWN0ZWRcbiAgbGV0IHNwZWxsY2hlY2sgPSB2IE5hbWUuc3BlbGxjaGVja1xuICBsZXQgc3JjIHMgPSB2IE5hbWUuc3JjIHNcbiAgbGV0IHN0eWxlIHMgPSB2IE5hbWUuc3R5bGUgc1xuICBsZXQgdGFiaW5kZXggaSA9IGludCBOYW1lLnRhYmluZGV4IGlcbiAgbGV0IHRpdGxlIHMgPSB2IE5hbWUudGl0bGUgc1xuICBsZXQgdHlwZScgcyA9IHYgTmFtZS50eXBlJyBzXG4gIGxldCB2YWx1ZSBzID0gdiBOYW1lLnZhbHVlIHNcbiAgbGV0IHdpZHRoIGkgPSBpbnQgTmFtZS53aWR0aCBpXG4gIGxldCB3cmFwIHMgPSB2IE5hbWUud3JhcCBzXG5lbmRcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIHR5cGUgZG9jdW1lbnQgPSBKdi50XG4gIHR5cGUgd2luZG93ID0gSnYudFxuICB0eXBlIHRhZ19uYW1lID0gSnN0ci50XG4gIHR5cGUgZWwgPSBKdi50XG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGdsb2JhbF9kb2N1bWVudCA9IEp2LmdldCBKdi5nbG9iYWwgXCJkb2N1bWVudFwiXG4gIGxldCBkb2N1bWVudCBlID0gSnYuZ2V0IGUgXCJvd25lckRvY3VtZW50XCJcbiAgbGV0IGdsb2JhbF9yb290ID1cbiAgICBpZiBKdi5pc19ub25lIGdsb2JhbF9kb2N1bWVudCB0aGVuICgqIGUuZy4gd2ViIHdvcmtlciAqKSBKdi51bmRlZmluZWQgZWxzZVxuICAgIEp2LmdldCBnbG9iYWxfZG9jdW1lbnQgXCJkb2N1bWVudEVsZW1lbnRcIlxuXG4gIGxldCBlbF9saXN0X29mX25vZGVfbGlzdCBubCA9XG4gICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgIGxldCBsZW4gPSBKdi5JbnQuZ2V0IG5sIFwibGVuZ3RoXCIgaW5cbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG8gYWNjIDo9IEp2LkphcnJheS5nZXQgbmwgaSA6OiAhYWNjIGRvbmU7XG4gICAgIWFjY1xuXG4gIGxldCBhcHBlbmRfY2hpbGQgZSBuID0gaWdub3JlIChKdi5jYWxsIGUgXCJhcHBlbmRDaGlsZFwiIFt8IG4gfF0pXG5cbiAgbGV0IHJlYyBzZXRfYXR0cyBlIHNzIGNsc3MgPSBmdW5jdGlvblxuICB8IChhLCB2KSA6OiBhdCAtPlxuICAgICAgaWYgSnN0ci5pc19lbXB0eSBhIHRoZW4gc2V0X2F0dHMgZSBzcyBjbHNzIGF0IGVsc2VcbiAgICAgIGlmIEpzdHIuZXF1YWwgYSBBdC5OYW1lLnN0eWxlIHRoZW4gc2V0X2F0dHMgZSAodiA6OiBzcykgY2xzcyBhdCBlbHNlXG4gICAgICBpZiBKc3RyLmVxdWFsIGEgQXQuTmFtZS5jbGFzcycgdGhlblxuICAgICAgICBzZXRfYXR0cyBlIHNzIChpZiBKc3RyLmlzX2VtcHR5IHYgdGhlbiBjbHNzIGVsc2UgdiA6OiBjbHNzKSBhdFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZ25vcmUgKEp2LmNhbGwgZSBcInNldEF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhOyBvZl9qc3RyIHZ8XSk7XG4gICAgICAgIHNldF9hdHRzIGUgc3MgY2xzcyBhdFxuICAgICAgZW5kXG4gIHwgW10gLT5cbiAgICAgIGlmIHNzIDw+IFtdIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGEgPSBBdC5OYW1lLnN0eWxlIGluXG4gICAgICAgIGxldCB2ID0gSnN0ci5jb25jYXQgfnNlcDooSnN0ci52IFwiO1wiKSAoTGlzdC5yZXYgc3MpIGluXG4gICAgICAgIGlnbm9yZSAoSnYuY2FsbCBlIFwic2V0QXR0cmlidXRlXCIgSnYuW3xvZl9qc3RyIGE7IG9mX2pzdHIgdnxdKTtcbiAgICAgIGVuZDtcbiAgICAgIGlmIGNsc3MgPD4gW10gdGhlbiBiZWdpblxuICAgICAgICBsZXQgYSA9IEF0Lk5hbWUuY2xhc3MnIGluXG4gICAgICAgIGxldCB2ID0gSnN0ci5jb25jYXQgfnNlcDooSnN0ci52IFwiIFwiKSAoTGlzdC5yZXYgY2xzcykgaW5cbiAgICAgICAgaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pXG4gICAgICBlbmRcblxuICBsZXQgdiA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpID8oYXQgPSBbXSkgbmFtZSBjcyA9XG4gICAgbGV0IGUgPSBKdi5jYWxsIGQgXCJjcmVhdGVFbGVtZW50XCIgW3wgSnYub2ZfanN0ciBuYW1lIHxdIGluXG4gICAgc2V0X2F0dHMgZSBbXSBbXSBhdDtcbiAgICBMaXN0Lml0ZXIgKGFwcGVuZF9jaGlsZCBlKSBjcztcbiAgICBlXG5cbiAgbGV0IHR4dCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpIHMgPVxuICAgIEp2LmNhbGwgZCBcImNyZWF0ZVRleHROb2RlXCIgW3xKdi5vZl9qc3RyIHN8XVxuXG4gIGxldCB0eHQnID8oZCA9IGdsb2JhbF9kb2N1bWVudCkgcyA9XG4gICAgSnYuY2FsbCBkIFwiY3JlYXRlVGV4dE5vZGVcIiBbfCBKdi5vZl9zdHJpbmcgcyB8XVxuXG4gIGxldCBzcCA/KGQgPSBnbG9iYWxfZG9jdW1lbnQpICgpID0gdHh0IChKc3RyLnYgXCIgXCIpXG4gIGxldCBuYnNwID8oZCA9IGdsb2JhbF9kb2N1bWVudCkgKCkgPSB0eHQgKEpzdHIudiBcIlxcdXswMEEwfVwiKVxuXG4gIGxldCBpc190eHQgZSA9IEp2LkludC5nZXQgZSBcIm5vZGVUeXBlXCIgPSAzXG4gIGxldCBpc19lbCBlID0gSnYuSW50LmdldCBlIFwibm9kZVR5cGVcIiA9IDFcbiAgbGV0IHRhZ19uYW1lIGUgPSBKc3RyLmxvd2VyY2FzZWQgQEAgSnYuSnN0ci5nZXQgZSBcIm5vZGVOYW1lXCJcbiAgbGV0IGhhc190YWdfbmFtZSBuIGUgPSBKc3RyLmVxdWFsIG4gKHRhZ19uYW1lIGUpXG4gIGxldCB0eHRfdGV4dCB0eHQgPSBtYXRjaCBpc190eHQgdHh0IHdpdGhcbiAgfCB0cnVlIC0+IEp2LkpzdHIuZ2V0IHR4dCBcIm5vZGVWYWx1ZVwiXG4gIHwgZmFsc2UgLT4gSnN0ci5lbXB0eVxuXG4gIGxldCB0ZXh0X2NvbnRlbnQgZSA9IEp2LkpzdHIuZ2V0IGUgXCJ0ZXh0Q29udGVudFwiXG5cbiAgZXh0ZXJuYWwgYXNfdGFyZ2V0IDogdCAtPiBFdi50YXJnZXQgPSBcIiVpZGVudGl0eVwiXG5cbiAgKCogRWxlbWVudCBsb29rdXBzICopXG5cbiAgbGV0IGZpbmRfYnlfY2xhc3MgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIGMgPVxuICAgIGVsX2xpc3Rfb2Zfbm9kZV9saXN0IEBAXG4gICAgSnYuY2FsbCByb290IFwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVwiIFt8IEp2Lm9mX2pzdHIgYyB8XVxuXG4gIGxldCBmaW5kX2J5X3RhZ19uYW1lID8ocm9vdCA9IGdsb2JhbF9yb290KSBuID1cbiAgICBlbF9saXN0X29mX25vZGVfbGlzdCBAQFxuICAgIEp2LmNhbGwgcm9vdCBcImdldEVsZW1lbnRzQnlUYWdOYW1lXCIgW3wgSnYub2ZfanN0ciBuIHxdXG5cbiAgbGV0IGZpbmRfZmlyc3RfYnlfc2VsZWN0b3IgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIHNlbCA9XG4gICAgSnYudG9fb3B0aW9uIG9mX2p2IEBAIEp2LmNhbGwgcm9vdCBcInF1ZXJ5U2VsZWN0b3JcIiBbfCBKdi5vZl9qc3RyIHNlbCB8XVxuXG4gIGxldCBmb2xkX2ZpbmRfYnlfc2VsZWN0b3IgPyhyb290ID0gZ2xvYmFsX3Jvb3QpIGYgc2VsIGFjYyA9XG4gICAgbGV0IG5sID0gSnYuY2FsbCByb290IFwicXVlcnlTZWxlY3RvckFsbFwiIFt8IEp2Lm9mX2pzdHIgc2VsIHxdIGluXG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBmb3IgaSA9IDAgdG8gKEp2LkludC5nZXQgbmwgXCJsZW5ndGhcIikgLSAxIGRvXG4gICAgICBhY2MgOj0gZiAob2ZfanYgKEp2LkphcnJheS5nZXQgbmwgaSkpICFhY2NcbiAgICBkb25lO1xuICAgICFhY2NcblxuICAoKiBQYXJlbnQgYW5kIGNoaWxkcmVuICopXG5cbiAgbGV0IHBhcmVudCBlID0gbWF0Y2ggSnYuZmluZCBlIFwicGFyZW50Tm9kZVwiIHdpdGhcbiAgfCBTb21lIGUgd2hlbiBpc19lbCBlIC0+IFNvbWUgZVxuICB8IF8gLT4gTm9uZVxuXG4gIGxldCBkZWxldGVfY2hpbGRyZW4gZSA9XG4gICAgd2hpbGUgbm90IChKdi5pc19udWxsIChKdi5nZXQgZSBcImZpcnN0Q2hpbGRcIikpIGRvXG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBlIFwicmVtb3ZlQ2hpbGRcIiBbfCBKdi5nZXQgZSBcImZpcnN0Q2hpbGRcIiB8XTtcbiAgICBkb25lXG5cbiAgbGV0IGNoaWxkcmVuID8ob25seV9lbHMgPSBmYWxzZSkgZSA9IG1hdGNoIG9ubHlfZWxzIHdpdGhcbiAgfCB0cnVlIC0+IGVsX2xpc3Rfb2Zfbm9kZV9saXN0IChKdi5nZXQgZSBcImNoaWxkcmVuXCIpXG4gIHwgZmFsc2UgLT4gZWxfbGlzdF9vZl9ub2RlX2xpc3QgKEp2LmdldCBlIFwiY2hpbGROb2Rlc1wiKVxuXG4gIGxldCBzZXRfY2hpbGRyZW4gZSBsID0gZGVsZXRlX2NoaWxkcmVuIGU7IExpc3QuaXRlciAoYXBwZW5kX2NoaWxkIGUpIGxcbiAgbGV0IGFwcGVuZF9jaGlsZCBlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBlIFwiYXBwZW5kQ2hpbGRcIiBbfCBjIHxdXG5cbiAgbGV0IHByZXBlbmRfY2hpbGRyZW4gZSBsID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInByZXBlbmRcIiAoQXJyYXkub2ZfbGlzdCBsKVxuICBsZXQgYXBwZW5kX2NoaWxkcmVuIGUgbCA9IGlnbm9yZSBAQCBKdi5jYWxsIGUgXCJhcHBlbmRcIiAoQXJyYXkub2ZfbGlzdCBsKVxuICBsZXQgcHJldmlvdXNfc2libGluZyBlID0gSnYuZmluZCBlIFwicHJldmlvdXNFbGVtZW50U2libGluZ1wiXG4gIGxldCBuZXh0X3NpYmxpbmcgZSA9IEp2LmZpbmQgZSBcIm5leHRFbGVtZW50U2libGluZ1wiXG4gIGxldCBpbnNlcnRfc2libGluZ3MgbG9jIGUgbCA9IGlnbm9yZSBAQCBtYXRjaCBsb2Mgd2l0aFxuICB8IGBCZWZvcmUgLT4gSnYuY2FsbCBlIFwiYmVmb3JlXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgfCBgQWZ0ZXIgLT4gIEp2LmNhbGwgZSBcImFmdGVyXCIgKEFycmF5Lm9mX2xpc3QgbClcbiAgfCBgUmVwbGFjZSAtPiBKdi5jYWxsIGUgXCJyZXBsYWNlV2l0aFwiIChBcnJheS5vZl9saXN0IGwpXG5cbiAgbGV0IHJlbW92ZSBlID0gaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlbW92ZVwiIFt8IGUgfF1cblxuICAoKiBBdHRyaWJ1dGVzICopXG5cbiAgbGV0IGF0IGEgZSA9XG4gICAgSnYudG9fb3B0aW9uIEp2LnRvX2pzdHIgKEp2LmNhbGwgZSBcImdldEF0dHJpYnV0ZVwiIFt8SnYub2ZfanN0ciBhfF0pXG5cbiAgbGV0IHNldF9hdCBhIHYgZSA9XG4gICAgaWYgSnN0ci5pc19lbXB0eSBhIHRoZW4gKCkgZWxzZVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgTm9uZSAtPiBpZ25vcmUgKEp2LmNhbGwgZSBcInJlbW92ZUF0dHJpYnV0ZVwiIEp2Llt8b2ZfanN0ciBhfF0pXG4gICAgfCBTb21lIHYgLT4gaWdub3JlIChKdi5jYWxsIGUgXCJzZXRBdHRyaWJ1dGVcIiBKdi5bfG9mX2pzdHIgYTsgb2ZfanN0ciB2fF0pXG5cbiAgKCogUHJvcGVydGllcyAqKVxuXG4gIG1vZHVsZSBQcm9wID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbiA6IEpzdHIudDtcbiAgICAgICAganZfdG8gOiBKdi50IC0+ICdhO1xuICAgICAgICBqdl9vZiA6ICdhIC0+IEp2LnQ7IH1cblxuICAgIGxldCBqdl90b19ib29sIGIgPSBpZiBKdi5pc191bmRlZmluZWQgYiB0aGVuIGZhbHNlIGVsc2UgSnYudG9fYm9vbCBiXG4gICAgbGV0IGp2X3RvX2ludCBpID0gaWYgSnYuaXNfdW5kZWZpbmVkIGkgdGhlbiAwIGVsc2UgSnYudG9faW50IGlcbiAgICBsZXQganZfdG9fZmxvYXQgZiA9IGlmIEp2LmlzX3VuZGVmaW5lZCBmIHRoZW4gMC4gZWxzZSBKdi50b19mbG9hdCBmXG4gICAgbGV0IGp2X3RvX2pzdHIgcyA9IGlmIEp2LmlzX3VuZGVmaW5lZCBzIHRoZW4gSnN0ci5lbXB0eSBlbHNlIEp2LnRvX2pzdHIgc1xuXG4gICAgbGV0IGJvb2wgbiA9IHsgbjsganZfdG8gPSBqdl90b19ib29sIDsganZfb2YgPSBKdi5vZl9ib29sIH1cbiAgICBsZXQgaW50IG4gPSB7IG47IGp2X3RvID0ganZfdG9faW50IDsganZfb2YgPSBKdi5vZl9pbnQgfVxuICAgIGxldCBmbG9hdCBuID0geyBuOyBqdl90byA9IGp2X3RvX2Zsb2F0IDsganZfb2YgPSBKdi5vZl9mbG9hdCB9XG4gICAgbGV0IGpzdHIgbiA9IHsgbjsganZfdG8gPSBqdl90b19qc3RyIDsganZfb2YgPSBKdi5vZl9qc3RyIH1cblxuICAgIGxldCBjaGVja2VkID0gYm9vbCAoSnN0ci52IFwiY2hlY2tlZFwiKVxuICAgIGxldCBoZWlnaHQgPSBpbnQgKEpzdHIudiBcImhlaWdodFwiKVxuICAgIGxldCBoaWRkZW4gPSBib29sIChKc3RyLnYgXCJoaWRkZW5cIilcbiAgICBsZXQgaWQgPSBqc3RyIChKc3RyLnYgXCJpZFwiKVxuICAgIGxldCBuYW1lID0ganN0ciAoSnN0ci52IFwibmFtZVwiKVxuICAgIGxldCB0aXRsZSA9IGpzdHIgKEpzdHIudiBcInRpdGxlXCIpXG4gICAgbGV0IHZhbHVlID0ganN0ciAoSnN0ci52IFwidmFsdWVcIilcbiAgICBsZXQgd2lkdGggPSBpbnQgKEpzdHIudiBcIndpZHRoXCIpXG4gIGVuZFxuXG4gIGxldCBwcm9wIHAgZSA9IHAuUHJvcC5qdl90byBAQCBKdi5nZXQnIGUgcC5Qcm9wLm5cbiAgbGV0IHNldF9wcm9wIHAgdiBlID0gaWdub3JlIEBAIEp2LnNldCcgZSBwLlByb3AubiAocC5Qcm9wLmp2X29mIHYpXG5cbiAgKCogQ2xhc3MgKilcblxuICBsZXQgY2xhc3MnIGMgZSA9XG4gICAgSnYudG9fYm9vbCAoSnYuY2FsbCAoSnYuZ2V0IGUgXCJjbGFzc0xpc3RcIikgXCJjb250YWluc1wiIFt8SnYub2ZfanN0ciBjfF0pXG5cbiAgbGV0IHNldF9jbGFzcyBjIGIgZSA9IG1hdGNoIGIgd2l0aFxuICB8IHRydWUgLT4gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgZSBcImNsYXNzTGlzdFwiKSBcImFkZFwiIFt8SnYub2ZfanN0ciBjfF0pXG4gIHwgZmFsc2UgLT4gaWdub3JlIChKdi5jYWxsIChKdi5nZXQgZSBcImNsYXNzTGlzdFwiKSBcInJlbW92ZVwiIFt8SnYub2ZfanN0ciBjfF0pXG5cbiAgKCogU3R5bGUgKilcblxuICBtb2R1bGUgU3R5bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHByb3AgPSBKc3RyLnRcbiAgICBsZXQgYmFja2dyb3VuZF9jb2xvciA9IEpzdHIudiBcImJhY2tncm91bmQtY29sb3JcIlxuICAgIGxldCBib3R0b20gPSBKc3RyLnYgXCJib3R0b21cIlxuICAgIGxldCBjb2xvciA9IEpzdHIudiBcImNvbG9yXCJcbiAgICBsZXQgY3Vyc29yID0gSnN0ci52IFwiY3Vyc29yXCJcbiAgICBsZXQgZGlzcGxheSA9IEpzdHIudiBcImRpc3BsYXlcIlxuICAgIGxldCBoZWlnaHQgPSBKc3RyLnYgXCJoZWlnaHRcIlxuICAgIGxldCBsZWZ0ID0gSnN0ci52IFwibGVmdFwiXG4gICAgbGV0IHBvc2l0aW9uID0gSnN0ci52IFwicG9zaXRpb25cIlxuICAgIGxldCByaWdodCA9IEpzdHIudiBcInJpZ2h0XCJcbiAgICBsZXQgdG9wID0gSnN0ci52IFwidG9wXCJcbiAgICBsZXQgdmlzaWJpbGl0eSA9IEpzdHIudiBcInZpc2liaWxpdHlcIlxuICAgIGxldCB3aWR0aCA9IEpzdHIudiBcIndpZHRoXCJcbiAgICBsZXQgel9pbmRleCA9IEpzdHIudiBcInotaW5kZXhcIlxuICAgIGxldCB6b29tID0gSnN0ci52IFwiem9vbVwiXG4gIGVuZFxuXG4gIGxldCBjb21wdXRlZF9zdHlsZSA/KHcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwid2luZG93XCIpIHAgZSA9XG4gICAgbGV0IHN0eWxlID0gSnYuY2FsbCB3IFwiZ2V0Q29tcHV0ZWRTdHlsZVwiIFt8ZXxdIGluXG4gICAgbGV0IHYgPSBKdi5nZXQnIHN0eWxlIHAgaW5cbiAgICBpZiBKdi5pc19ub25lIHYgdGhlbiBKc3RyLmVtcHR5IGVsc2UgSnYudG9fanN0ciB2XG5cbiAgbGV0IGlubGluZV9zdHlsZSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiBKc3RyLmVtcHR5IGVsc2VcbiAgICBsZXQgdiA9IEp2LmdldCcgc3R5bGUgcCBpblxuICAgIGlmIEp2LmlzX25vbmUgdiB0aGVuIEpzdHIuZW1wdHkgZWxzZSBKdi50b19qc3RyIHZcblxuICBsZXQgc2V0X2lubGluZV9zdHlsZSA/KGltcG9ydGFudCA9IGZhbHNlKSBwIHYgZSA9XG4gICAgbGV0IHByaW9yaXR5ID0gaWYgaW1wb3J0YW50IHRoZW4gSnN0ci52IFwiaW1wb3J0YW50XCIgZWxzZSBKc3RyLmVtcHR5IGluXG4gICAgbGV0IHN0eWxlID0gSnYuZ2V0IGUgXCJzdHlsZVwiIGluXG4gICAgaWYgSnYuaXNfbm9uZSBzdHlsZSB0aGVuICgpIGVsc2VcbiAgICAoaWdub3JlIEBAXG4gICAgIEp2LmNhbGwgc3R5bGUgXCJzZXRQcm9wZXJ0eVwiIEp2Llt8b2ZfanN0ciBwOyBvZl9qc3RyIHY7IG9mX2pzdHIgcHJpb3JpdHl8XSlcblxuICBsZXQgcmVtb3ZlX2lubGluZV9zdHlsZSBwIGUgPVxuICAgIGxldCBzdHlsZSA9IEp2LmdldCBlIFwic3R5bGVcIiBpblxuICAgIGlmIEp2LmlzX25vbmUgc3R5bGUgdGhlbiAoKSBlbHNlXG4gICAgKGlnbm9yZSBAQCBKdi5jYWxsIHN0eWxlIFwicmVtb3ZlUHJvcGVydHlcIiBKdi5bfG9mX2pzdHIgcHxdKVxuXG4gICgqIExheW91dCAqKVxuXG4gIGxldCBpbm5lcl94IGUgPSBKdi5GbG9hdC5nZXQgZSBcImNsaWVudExlZnRcIlxuICBsZXQgaW5uZXJfeSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRUb3BcIlxuICBsZXQgaW5uZXJfdyBlID0gSnYuRmxvYXQuZ2V0IGUgXCJjbGllbnRXaWR0aFwiXG4gIGxldCBpbm5lcl9oIGUgPSBKdi5GbG9hdC5nZXQgZSBcImNsaWVudEhlaWdodFwiXG4gIGxldCBib3VuZF94IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwieFwiXG4gIGxldCBib3VuZF95IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwieVwiXG4gIGxldCBib3VuZF93IGUgPSBKdi5GbG9hdC5nZXQgKEp2LmNhbGwgZSBcImdldEJvdW5kaW5nQ2xpZW50UmVjdFwiIFt8fF0pIFwid2lkdGhcIlxuICBsZXQgYm91bmRfaCBlID0gSnYuRmxvYXQuZ2V0IChKdi5jYWxsIGUgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBbfHxdKSBcImhlaWdodFwiXG5cbiAgKCogT2Zmc2V0ICopXG5cbiAgbGV0IG9mZnNldF93IGUgPSBKdi5JbnQuZ2V0IGUgXCJvZmZzZXRXaWR0aFwiXG4gIGxldCBvZmZzZXRfaCBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0SGVpZ2h0XCJcblxuICBsZXQgb2Zmc2V0X2xlZnQgZSA9IEp2LkludC5nZXQgZSBcIm9mZnNldExlZnRcIlxuICBsZXQgb2Zmc2V0X3RvcCBlID0gSnYuSW50LmdldCBlIFwib2Zmc2V0VG9wXCJcblxuICBsZXQgb2Zmc2V0X3BhcmVudCBlID0gSnYuZ2V0IGUgXCJvZmZzZXRQYXJlbnRcIiB8PiBKdi50b19vcHRpb24gb2ZfanZcblxuICAoKiBTY3JvbGxpbmcgKilcblxuICBsZXQgc2Nyb2xsX3ggZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsTGVmdFwiXG4gIGxldCBzY3JvbGxfeSBlID0gSnYuRmxvYXQuZ2V0IGUgXCJzY3JvbGxUb3BcIlxuICBsZXQgc2Nyb2xsX3cgZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsV2lkdGhcIlxuICBsZXQgc2Nyb2xsX2ggZSA9IEp2LkZsb2F0LmdldCBlIFwic2Nyb2xsSGVpZ2h0XCJcblxuICBsZXQgc2Nyb2xsX2ludG9fdmlldyA/KGFsaWduX3YgPSBgU3RhcnQpID9iZWhhdmlvciBlID1cbiAgICBsZXQgYWxpZ24gPSBtYXRjaCBhbGlnbl92IHdpdGhcbiAgICAgIHwgYFN0YXJ0IC0+IFwic3RhcnRcIlxuICAgICAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgICAgIHwgYE5lYXJlc3QgLT4gXCJuZWFyZXN0XCJcbiAgICAgIHwgYEVuZCAtPiBcImVuZFwiXG4gICAgaW5cbiAgICBsZXQgYmVoYXZpb3IgPVxuICAgICAgSnYub2Zfb3B0aW9uIH5ub25lOkp2Lm51bGwgSnYub2Zfc3RyaW5nIEBAXG4gICAgICAgIE9wdGlvbi5tYXAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTbW9vdGggLT4gXCJzbW9vdGhcIlxuICAgICAgICAgICAgfCBgSW5zdGFudCAtPiBcImluc3RhbnRcIlxuICAgICAgICAgICAgfCBgQXV0byAtPiBcImF1dG9cIilcbiAgICAgICAgICBiZWhhdmlvclxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPSBKdi5vYmogW3xcImJsb2NrXCIsIEp2Lm9mX3N0cmluZyBhbGlnbjsgXCJiZWhhdmlvclwiICwgYmVoYXZpb3IgfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBlIFwic2Nyb2xsSW50b1ZpZXdcIiBbfCBvcHRpb25zIHxdXG5cbiAgKCogRm9jdXMgKilcblxuICBsZXQgaGFzX2ZvY3VzIGUgPVxuICAgIG1hdGNoIEp2LnRvX29wdGlvbiBGdW4uaWQgKEp2LmdldCAoZG9jdW1lbnQgZSkgXCJhY3RpdmVFbGVtZW50XCIpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2UgfCBTb21lIGUnIC0+IGUgPT0gZSdcblxuICBsZXQgc2V0X2hhc19mb2N1cyBiIGUgPVxuICAgIGlnbm9yZSAoaWYgYiB0aGVuIEp2LmNhbGwgZSBcImZvY3VzXCIgW3x8XSBlbHNlIEp2LmNhbGwgZSBcImJsdXJcIiBbfHxdKVxuXG4gICgqIFBvaW50ZXIgbG9ja2luZyAqKVxuXG4gIGxldCBpc19sb2NraW5nX3BvaW50ZXIgZSA9XG4gICAgbWF0Y2ggSnYudG9fb3B0aW9uIEZ1bi5pZCAoSnYuZ2V0IChkb2N1bWVudCBlKSBcInBvaW50ZXJMb2NrRWxlbWVudFwiKSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlIHwgU29tZSBlJyAtPiBlID09IGUnXG5cbiAgbGV0IHJlcXVlc3RfcG9pbnRlcl9sb2NrIGUgPVxuICAgIGxldCBmdXQsIHNldCA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgZCA9IChPYmoubWFnaWMgZG9jdW1lbnQgZSA6IEV2LnRhcmdldCkgaW5cbiAgICBsZXQgb3B0cyA9IEV2Lmxpc3Rlbl9vcHRzIH5vbmNlOnRydWUgKCkgaW5cbiAgICBsZXQgdW5saXN0ZW4gPSByZWYgKGZ1biAoKSAtPiAoKSkgaW5cbiAgICBsZXQgbG9ja2VkIF9ldiA9IHNldCAoT2sgKCkpOyAhdW5saXN0ZW4gKClcbiAgICBhbmQgZXJyb3IgX2V2ID1cbiAgICAgIGxldCBlcnIgPSBKdi5FcnJvci52IChKc3RyLnYgXCJDb3VsZCBub3QgbG9jayBwb2ludGVyXCIpIGluXG4gICAgICBzZXQgKEVycm9yIGVycik7ICF1bmxpc3RlbiAoKVxuICAgIGluXG4gICAgbGV0IGsgPSBFdi5saXN0ZW4gfm9wdHMgRXYucG9pbnRlcmxvY2tjaGFuZ2UgbG9ja2VkIGQgaW5cbiAgICBsZXQgaycgPSBFdi5saXN0ZW4gfm9wdHMgRXYucG9pbnRlcmxvY2tlcnJvciBlcnJvciBkIGluXG4gICAgdW5saXN0ZW4gOj0gKGZ1biAoKSAtPiBFdi51bmxpc3RlbiBrOyBFdi51bmxpc3RlbiBrJyk7XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgZSBcInJlcXVlc3RQb2ludGVyTG9ja1wiIFt8fF07XG4gICAgZnV0XG5cbiAgKCogQ2xpY2sgc2ltbHVhdGlvbiAqKVxuXG4gIGxldCBjbGljayBlID0gaWdub3JlIChKdi5jYWxsIGUgXCJjbGlja1wiIFt8fF0pXG4gIGxldCBzZWxlY3RfdGV4dCBlID0gaWdub3JlIChKdi5jYWxsIGUgXCJzZWxlY3RcIiBbfHxdKVxuXG4gICgqIEZ1bGxzY3JlZW4gKilcblxuICBtb2R1bGUgTmF2aWdhdGlvbl91aSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBhdXRvID0gSnN0ci52IFwiYXV0b1wiXG4gICAgbGV0IGhpZGUgPSBKc3RyLnYgXCJoaWRlXCJcbiAgICBsZXQgc2hvdyA9IEpzdHIudiBcInNob3dcIlxuICBlbmRcblxuICB0eXBlIGZ1bGxzY3JlZW5fb3B0cyA9IEp2LnRcbiAgbGV0IGZ1bGxzY3JlZW5fb3B0cyA/bmF2aWdhdGlvbl91aSAoKSA9XG4gICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgIEp2LkpzdHIuc2V0X2lmX3NvbWUgbyBcIm5hdmlnYXRpb25VSVwiIG5hdmlnYXRpb25fdWk7XG4gICAgb1xuXG4gIGxldCByZXF1ZXN0X2Z1bGxzY3JlZW4gPyhvcHRzID0gSnYub2JqIFt8fF0pIGUgPVxuICAgIEZ1dC5vZl9wcm9taXNlIH5vazppZ25vcmUgQEAgSnYuY2FsbCBlIFwicmVxdWVzdEZ1bGxzY3JlZW5cIiBbfCBvcHRzIHxdXG5cbiAgKCogSW5wdXQgKilcblxuICBtb2R1bGUgSW5wdXQgPSBzdHJ1Y3RcbiAgICBsZXQgZmlsZXMgZSA9IG1hdGNoIEp2LmZpbmQgZSBcImZpbGVzXCIgd2l0aFxuICAgIHwgTm9uZSAtPiBbXSB8IFNvbWUgZmlsZXMgLT4gSnYudG9fbGlzdCBGaWxlLm9mX2p2IGZpbGVzXG4gIGVuZFxuXG4gICgqIEVsZW1lbnQgdGFnIG5hbWVzICopXG5cbiAgbW9kdWxlIE5hbWUgPSBzdHJ1Y3RcbiAgICBsZXQgYSA9IEpzdHIudiBcImFcIlxuICAgIGxldCBhYmJyID0gSnN0ci52IFwiYWJiclwiXG4gICAgbGV0IGFkZHJlc3MgPSBKc3RyLnYgXCJhZGRyZXNzXCJcbiAgICBsZXQgYXJlYSA9IEpzdHIudiBcImFyZWFcIlxuICAgIGxldCBhcnRpY2xlID0gSnN0ci52IFwiYXJ0aWNsZVwiXG4gICAgbGV0IGFzaWRlID0gSnN0ci52IFwiYXNpZGVcIlxuICAgIGxldCBhdWRpbyA9IEpzdHIudiBcImF1ZGlvXCJcbiAgICBsZXQgYiA9IEpzdHIudiBcImJcIlxuICAgIGxldCBiYXNlID0gSnN0ci52IFwiYmFzZVwiXG4gICAgbGV0IGJkaSA9IEpzdHIudiBcImJkaVwiXG4gICAgbGV0IGJkbyA9IEpzdHIudiBcImJkb1wiXG4gICAgbGV0IGJsb2NrcXVvdGUgPSBKc3RyLnYgXCJibG9ja3F1b3RlXCJcbiAgICBsZXQgYm9keSA9IEpzdHIudiBcImJvZHlcIlxuICAgIGxldCBiciA9IEpzdHIudiBcImJyXCJcbiAgICBsZXQgYnV0dG9uID0gSnN0ci52IFwiYnV0dG9uXCJcbiAgICBsZXQgY2FudmFzID0gSnN0ci52IFwiY2FudmFzXCJcbiAgICBsZXQgY2FwdGlvbiA9IEpzdHIudiBcImNhcHRpb25cIlxuICAgIGxldCBjaXRlID0gSnN0ci52IFwiY2l0ZVwiXG4gICAgbGV0IGNvZGUgPSBKc3RyLnYgXCJjb2RlXCJcbiAgICBsZXQgY29sID0gSnN0ci52IFwiY29sXCJcbiAgICBsZXQgY29sZ3JvdXAgPSBKc3RyLnYgXCJjb2xncm91cFwiXG4gICAgbGV0IGNvbW1hbmQgPSBKc3RyLnYgXCJjb21tYW5kXCJcbiAgICBsZXQgZGF0YWxpc3QgPSBKc3RyLnYgXCJkYXRhbGlzdFwiXG4gICAgbGV0IGRkID0gSnN0ci52IFwiZGRcIlxuICAgIGxldCBkZWwgPSBKc3RyLnYgXCJkZWxcIlxuICAgIGxldCBkZXRhaWxzID0gSnN0ci52IFwiZGV0YWlsc1wiXG4gICAgbGV0IGRmbiA9IEpzdHIudiBcImRmblwiXG4gICAgbGV0IGRpdiA9IEpzdHIudiBcImRpdlwiXG4gICAgbGV0IGRsID0gSnN0ci52IFwiZGxcIlxuICAgIGxldCBkdCA9IEpzdHIudiBcImR0XCJcbiAgICBsZXQgZW0gPSBKc3RyLnYgXCJlbVwiXG4gICAgbGV0IGVtYmVkID0gSnN0ci52IFwiZW1iZWRcIlxuICAgIGxldCBmaWVsZHNldCA9IEpzdHIudiBcImZpZWxkc2V0XCJcbiAgICBsZXQgZmlnY2FwdGlvbiA9IEpzdHIudiBcImZpZ2NhcHRpb25cIlxuICAgIGxldCBmaWd1cmUgPSBKc3RyLnYgXCJmaWd1cmVcIlxuICAgIGxldCBmb290ZXIgPSBKc3RyLnYgXCJmb290ZXJcIlxuICAgIGxldCBmb3JtID0gSnN0ci52IFwiZm9ybVwiXG4gICAgbGV0IGgxID0gSnN0ci52IFwiaDFcIlxuICAgIGxldCBoMiA9IEpzdHIudiBcImgyXCJcbiAgICBsZXQgaDMgPSBKc3RyLnYgXCJoM1wiXG4gICAgbGV0IGg0ID0gSnN0ci52IFwiaDRcIlxuICAgIGxldCBoNSA9IEpzdHIudiBcImg1XCJcbiAgICBsZXQgaDYgPSBKc3RyLnYgXCJoNlwiXG4gICAgbGV0IGhlYWQgPSBKc3RyLnYgXCJoZWFkXCJcbiAgICBsZXQgaGVhZGVyID0gSnN0ci52IFwiaGVhZGVyXCJcbiAgICBsZXQgaGdyb3VwID0gSnN0ci52IFwiaGdyb3VwXCJcbiAgICBsZXQgaHIgPSBKc3RyLnYgXCJoclwiXG4gICAgbGV0IGh0bWwgPSBKc3RyLnYgXCJodG1sXCJcbiAgICBsZXQgaSA9IEpzdHIudiBcImlcIlxuICAgIGxldCBpZnJhbWUgPSBKc3RyLnYgXCJpZnJhbWVcIlxuICAgIGxldCBpbWcgPSBKc3RyLnYgXCJpbWdcIlxuICAgIGxldCBpbnB1dCA9IEpzdHIudiBcImlucHV0XCJcbiAgICBsZXQgaW5zID0gSnN0ci52IFwiaW5zXCJcbiAgICBsZXQga2JkID0gSnN0ci52IFwia2JkXCJcbiAgICBsZXQga2V5Z2VuID0gSnN0ci52IFwia2V5Z2VuXCJcbiAgICBsZXQgbGFiZWwgPSBKc3RyLnYgXCJsYWJlbFwiXG4gICAgbGV0IGxlZ2VuZCA9IEpzdHIudiBcImxlZ2VuZFwiXG4gICAgbGV0IGxpID0gSnN0ci52IFwibGlcIlxuICAgIGxldCBsaW5rID0gSnN0ci52IFwibGlua1wiXG4gICAgbGV0IG1hcCA9IEpzdHIudiBcIm1hcFwiXG4gICAgbGV0IG1hcmsgPSBKc3RyLnYgXCJtYXJrXCJcbiAgICBsZXQgbWVudSA9IEpzdHIudiBcIm1lbnVcIlxuICAgIGxldCBtZXRhID0gSnN0ci52IFwibWV0YVwiXG4gICAgbGV0IG1ldGVyID0gSnN0ci52IFwibWV0ZXJcIlxuICAgIGxldCBuYXYgPSBKc3RyLnYgXCJuYXZcIlxuICAgIGxldCBub3NjcmlwdCA9IEpzdHIudiBcIm5vc2NyaXB0XCJcbiAgICBsZXQgb2JqZWN0JyA9IEpzdHIudiBcIm9iamVjdFwiXG4gICAgbGV0IG9sID0gSnN0ci52IFwib2xcIlxuICAgIGxldCBvcHRncm91cCA9IEpzdHIudiBcIm9wdGdyb3VwXCJcbiAgICBsZXQgb3B0aW9uID0gSnN0ci52IFwib3B0aW9uXCJcbiAgICBsZXQgb3V0cHV0ID0gSnN0ci52IFwib3V0cHV0XCJcbiAgICBsZXQgcCA9IEpzdHIudiBcInBcIlxuICAgIGxldCBwYXJhbSA9IEpzdHIudiBcInBhcmFtXCJcbiAgICBsZXQgcHJlID0gSnN0ci52IFwicHJlXCJcbiAgICBsZXQgcHJvZ3Jlc3MgPSBKc3RyLnYgXCJwcm9ncmVzc1wiXG4gICAgbGV0IHEgPSBKc3RyLnYgXCJxXCJcbiAgICBsZXQgcnAgPSBKc3RyLnYgXCJycFwiXG4gICAgbGV0IHJ0ID0gSnN0ci52IFwicnRcIlxuICAgIGxldCBydWJ5ID0gSnN0ci52IFwicnVieVwiXG4gICAgbGV0IHMgPSBKc3RyLnYgXCJzXCJcbiAgICBsZXQgc2FtcCA9IEpzdHIudiBcInNhbXBcIlxuICAgIGxldCBzY3JpcHQgPSBKc3RyLnYgXCJzY3JpcHRcIlxuICAgIGxldCBzZWN0aW9uID0gSnN0ci52IFwic2VjdGlvblwiXG4gICAgbGV0IHNlbGVjdCA9IEpzdHIudiBcInNlbGVjdFwiXG4gICAgbGV0IHNtYWxsID0gSnN0ci52IFwic21hbGxcIlxuICAgIGxldCBzb3VyY2UgPSBKc3RyLnYgXCJzb3VyY2VcIlxuICAgIGxldCBzcGFuID0gSnN0ci52IFwic3BhblwiXG4gICAgbGV0IHN0cm9uZyA9IEpzdHIudiBcInN0cm9uZ1wiXG4gICAgbGV0IHN0eWxlID0gSnN0ci52IFwic3R5bGVcIlxuICAgIGxldCBzdWIgPSBKc3RyLnYgXCJzdWJcIlxuICAgIGxldCBzdW1tYXJ5ID0gSnN0ci52IFwic3VtbWFyeVwiXG4gICAgbGV0IHN1cCA9IEpzdHIudiBcInN1cFwiXG4gICAgbGV0IHRhYmxlID0gSnN0ci52IFwidGFibGVcIlxuICAgIGxldCB0Ym9keSA9IEpzdHIudiBcInRib2R5XCJcbiAgICBsZXQgdGQgPSBKc3RyLnYgXCJ0ZFwiXG4gICAgbGV0IHRleHRhcmVhID0gSnN0ci52IFwidGV4dGFyZWFcIlxuICAgIGxldCB0Zm9vdCA9IEpzdHIudiBcInRmb290XCJcbiAgICBsZXQgdGggPSBKc3RyLnYgXCJ0aFwiXG4gICAgbGV0IHRoZWFkID0gSnN0ci52IFwidGhlYWRcIlxuICAgIGxldCB0aW1lID0gSnN0ci52IFwidGltZVwiXG4gICAgbGV0IHRpdGxlID0gSnN0ci52IFwidGl0bGVcIlxuICAgIGxldCB0ciA9IEpzdHIudiBcInRyXCJcbiAgICBsZXQgdHJhY2sgPSBKc3RyLnYgXCJ0cmFja1wiXG4gICAgbGV0IHUgPSBKc3RyLnYgXCJ1XCJcbiAgICBsZXQgdWwgPSBKc3RyLnYgXCJ1bFwiXG4gICAgbGV0IHZhciA9IEpzdHIudiBcInZhclwiXG4gICAgbGV0IHZpZGVvID0gSnN0ci52IFwidmlkZW9cIlxuICAgIGxldCB3YnIgPSBKc3RyLnYgXCJ3YnJcIlxuICBlbmRcblxuICB0eXBlIGNvbnMgPSAgP2Q6ZG9jdW1lbnQgLT4gP2F0OkF0LnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIHZvaWRfY29ucyA9ID9kOmRvY3VtZW50IC0+ID9hdDpBdC50IGxpc3QgLT4gdW5pdCAtPiB0XG4gIGxldCBjb25zIG5hbWUgP2QgP2F0IGNzID0gdiA/ZCA/YXQgbmFtZSBjc1xuICBsZXQgdm9pZF9jb25zIG5hbWUgP2QgP2F0ICgpID0gdiA/ZCA/YXQgbmFtZSBbXVxuXG4gIGxldCBhID0gY29ucyBOYW1lLmFcbiAgbGV0IGFiYnIgPSBjb25zIE5hbWUuYWJiclxuICBsZXQgYWRkcmVzcyA9IGNvbnMgTmFtZS5hZGRyZXNzXG4gIGxldCBhcmVhID0gdm9pZF9jb25zIE5hbWUuYXJlYVxuICBsZXQgYXJ0aWNsZSA9IGNvbnMgTmFtZS5hcnRpY2xlXG4gIGxldCBhc2lkZSA9IGNvbnMgTmFtZS5hc2lkZVxuICBsZXQgYXVkaW8gPSBjb25zIE5hbWUuYXVkaW9cbiAgbGV0IGIgPSBjb25zIE5hbWUuYlxuICBsZXQgYmFzZSA9IHZvaWRfY29ucyBOYW1lLmJhc2VcbiAgbGV0IGJkaSA9IGNvbnMgTmFtZS5iZGlcbiAgbGV0IGJkbyA9IGNvbnMgTmFtZS5iZG9cbiAgbGV0IGJsb2NrcXVvdGUgPSBjb25zIE5hbWUuYmxvY2txdW90ZVxuICBsZXQgYm9keSA9IGNvbnMgTmFtZS5ib2R5XG4gIGxldCBiciA9IHZvaWRfY29ucyBOYW1lLmJyXG4gIGxldCBidXR0b24gPSBjb25zIE5hbWUuYnV0dG9uXG4gIGxldCBjYW52YXMgPSBjb25zIE5hbWUuY2FudmFzXG4gIGxldCBjYXB0aW9uID0gY29ucyBOYW1lLmNhcHRpb25cbiAgbGV0IGNpdGUgPSBjb25zIE5hbWUuY2l0ZVxuICBsZXQgY29kZSA9IGNvbnMgTmFtZS5jb2RlXG4gIGxldCBjb2wgPSB2b2lkX2NvbnMgTmFtZS5jb2xcbiAgbGV0IGNvbGdyb3VwID0gY29ucyBOYW1lLmNvbGdyb3VwXG4gIGxldCBjb21tYW5kID0gY29ucyBOYW1lLmNvbW1hbmRcbiAgbGV0IGRhdGFsaXN0ID0gY29ucyBOYW1lLmRhdGFsaXN0XG4gIGxldCBkZCA9IGNvbnMgTmFtZS5kZFxuICBsZXQgZGVsID0gY29ucyBOYW1lLmRlbFxuICBsZXQgZGV0YWlscyA9IGNvbnMgTmFtZS5kZXRhaWxzXG4gIGxldCBkZm4gPSBjb25zIE5hbWUuZGZuXG4gIGxldCBkaXYgPSBjb25zIE5hbWUuZGl2XG4gIGxldCBkbCA9IGNvbnMgTmFtZS5kbFxuICBsZXQgZHQgPSBjb25zIE5hbWUuZHRcbiAgbGV0IGVtID0gY29ucyBOYW1lLmVtXG4gIGxldCBlbWJlZCA9IHZvaWRfY29ucyBOYW1lLmVtYmVkXG4gIGxldCBmaWVsZHNldCA9IGNvbnMgTmFtZS5maWVsZHNldFxuICBsZXQgZmlnY2FwdGlvbiA9IGNvbnMgTmFtZS5maWdjYXB0aW9uXG4gIGxldCBmaWd1cmUgPSBjb25zIE5hbWUuZmlndXJlXG4gIGxldCBmb290ZXIgPSBjb25zIE5hbWUuZm9vdGVyXG4gIGxldCBmb3JtID0gY29ucyBOYW1lLmZvcm1cbiAgbGV0IGgxID0gY29ucyBOYW1lLmgxXG4gIGxldCBoMiA9IGNvbnMgTmFtZS5oMlxuICBsZXQgaDMgPSBjb25zIE5hbWUuaDNcbiAgbGV0IGg0ID0gY29ucyBOYW1lLmg0XG4gIGxldCBoNSA9IGNvbnMgTmFtZS5oNVxuICBsZXQgaDYgPSBjb25zIE5hbWUuaDZcbiAgbGV0IGhlYWQgPSBjb25zIE5hbWUuaGVhZFxuICBsZXQgaGVhZGVyID0gY29ucyBOYW1lLmhlYWRlclxuICBsZXQgaGdyb3VwID0gY29ucyBOYW1lLmhncm91cFxuICBsZXQgaHIgPSB2b2lkX2NvbnMgTmFtZS5oclxuICBsZXQgaHRtbCA9IGNvbnMgTmFtZS5odG1sXG4gIGxldCBpID0gY29ucyBOYW1lLmlcbiAgbGV0IGlmcmFtZSA9IGNvbnMgTmFtZS5pZnJhbWVcbiAgbGV0IGltZyA9IHZvaWRfY29ucyBOYW1lLmltZ1xuICBsZXQgaW5wdXQgPSB2b2lkX2NvbnMgTmFtZS5pbnB1dFxuICBsZXQgaW5zID0gY29ucyBOYW1lLmluc1xuICBsZXQga2JkID0gY29ucyBOYW1lLmtiZFxuICBsZXQga2V5Z2VuID0gY29ucyBOYW1lLmtleWdlblxuICBsZXQgbGFiZWwgPSBjb25zIE5hbWUubGFiZWxcbiAgbGV0IGxlZ2VuZCA9IGNvbnMgTmFtZS5sZWdlbmRcbiAgbGV0IGxpID0gY29ucyBOYW1lLmxpXG4gIGxldCBsaW5rID0gdm9pZF9jb25zIE5hbWUubGlua1xuICBsZXQgbWFwID0gY29ucyBOYW1lLm1hcFxuICBsZXQgbWFyayA9IGNvbnMgTmFtZS5tYXJrXG4gIGxldCBtZW51ID0gY29ucyBOYW1lLm1lbnVcbiAgbGV0IG1ldGEgPSB2b2lkX2NvbnMgTmFtZS5tZXRhXG4gIGxldCBtZXRlciA9IGNvbnMgTmFtZS5tZXRlclxuICBsZXQgbmF2ID0gY29ucyBOYW1lLm5hdlxuICBsZXQgbm9zY3JpcHQgPSBjb25zIE5hbWUubm9zY3JpcHRcbiAgbGV0IG9iamVjdCcgPSBjb25zIE5hbWUub2JqZWN0J1xuICBsZXQgb2wgPSBjb25zIE5hbWUub2xcbiAgbGV0IG9wdGdyb3VwID0gY29ucyBOYW1lLm9wdGdyb3VwXG4gIGxldCBvcHRpb24gPSBjb25zIE5hbWUub3B0aW9uXG4gIGxldCBvdXRwdXQgPSBjb25zIE5hbWUub3V0cHV0XG4gIGxldCBwID0gY29ucyBOYW1lLnBcbiAgbGV0IHBhcmFtID0gdm9pZF9jb25zIE5hbWUucGFyYW1cbiAgbGV0IHByZSA9IGNvbnMgTmFtZS5wcmVcbiAgbGV0IHByb2dyZXNzID0gY29ucyBOYW1lLnByb2dyZXNzXG4gIGxldCBxID0gY29ucyBOYW1lLnFcbiAgbGV0IHJwID0gY29ucyBOYW1lLnJwXG4gIGxldCBydCA9IGNvbnMgTmFtZS5ydFxuICBsZXQgcnVieSA9IGNvbnMgTmFtZS5ydWJ5XG4gIGxldCBzID0gY29ucyBOYW1lLnNcbiAgbGV0IHNhbXAgPSBjb25zIE5hbWUuc2FtcFxuICBsZXQgc2NyaXB0ID0gY29ucyBOYW1lLnNjcmlwdFxuICBsZXQgc2VjdGlvbiA9IGNvbnMgTmFtZS5zZWN0aW9uXG4gIGxldCBzZWxlY3QgPSBjb25zIE5hbWUuc2VsZWN0XG4gIGxldCBzbWFsbCA9IGNvbnMgTmFtZS5zbWFsbFxuICBsZXQgc291cmNlID0gdm9pZF9jb25zIE5hbWUuc291cmNlXG4gIGxldCBzcGFuID0gY29ucyBOYW1lLnNwYW5cbiAgbGV0IHN0cm9uZyA9IGNvbnMgTmFtZS5zdHJvbmdcbiAgbGV0IHN0eWxlID0gY29ucyBOYW1lLnN0eWxlXG4gIGxldCBzdWIgPSBjb25zIE5hbWUuc3ViXG4gIGxldCBzdW1tYXJ5ID0gY29ucyBOYW1lLnN1bW1hcnlcbiAgbGV0IHN1cCA9IGNvbnMgTmFtZS5zdXBcbiAgbGV0IHRhYmxlID0gY29ucyBOYW1lLnRhYmxlXG4gIGxldCB0Ym9keSA9IGNvbnMgTmFtZS50Ym9keVxuICBsZXQgdGQgPSBjb25zIE5hbWUudGRcbiAgbGV0IHRleHRhcmVhID0gY29ucyBOYW1lLnRleHRhcmVhXG4gIGxldCB0Zm9vdCA9IGNvbnMgTmFtZS50Zm9vdFxuICBsZXQgdGggPSBjb25zIE5hbWUudGhcbiAgbGV0IHRoZWFkID0gY29ucyBOYW1lLnRoZWFkXG4gIGxldCB0aW1lID0gY29ucyBOYW1lLnRpbWVcbiAgbGV0IHRpdGxlID0gY29ucyBOYW1lLnRpdGxlXG4gIGxldCB0ciA9IGNvbnMgTmFtZS50clxuICBsZXQgdHJhY2sgPSB2b2lkX2NvbnMgTmFtZS50cmFja1xuICBsZXQgdSA9IGNvbnMgTmFtZS51XG4gIGxldCB1bCA9IGNvbnMgTmFtZS51bFxuICBsZXQgdmFyID0gY29ucyBOYW1lLnZhclxuICBsZXQgdmlkZW8gPSBjb25zIE5hbWUudmlkZW9cbiAgbGV0IHdiciA9IHZvaWRfY29ucyBOYW1lLndiclxuZW5kXG5cbm1vZHVsZSBSYW5nZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIHR5cGUgY29tcGFyZV9ob3cgPSBpbnRcbiAgbGV0IGVuZF90b19lbmQgPSBKdi5JbnQuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlLkVORF9UT19FTkRcIlxuICBsZXQgZW5kX3RvX3N0YXJ0ID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5FTkRfVE9fU1RBUlRcIlxuICBsZXQgc3RhcnRfdG9fZW5kID0gSnYuSW50LmdldCBKdi5nbG9iYWwgXCJSYW5nZS5TVEFSVF9UT19FTkRcIlxuICBsZXQgc3RhcnRfdG9fc3RhcnQgPSBKdi5JbnQuZ2V0IEp2Lmdsb2JhbCBcIlJhbmdlLlNUQVJUX1RPX1NUQVJUXCJcblxuICBsZXQgcmFuZ2UgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiUmFuZ2VcIlxuICBsZXQgY3JlYXRlICgpID0gSnYubmV3JyByYW5nZSBbfHxdXG4gIGxldCBjbG9uZV9yYW5nZSByID0gSnYuY2FsbCByIFwiY2xvbmVSYW5nZVwiIFt8fF1cbiAgbGV0IGNvbGxhcHNlIHIgYiA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJjb2xsYXBzZVwiIEp2Llt8b2ZfYm9vbCBifF1cbiAgbGV0IGNvbGxhcHNlX3RvX3N0YXJ0IHIgPSBjb2xsYXBzZSByIHRydWVcbiAgbGV0IGNvbGxhcHNlX3RvX2VuZCByID0gY29sbGFwc2UgciBmYWxzZVxuXG4gIGxldCBjb21wYXJlX2JvdW5kYXJ5X3BvaW50cyByIGhvdyByJyA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgciBcImNvbXBhcmVCb3VuZGFyeVBvaW50c1wiIFt8SnYub2ZfaW50IGhvdzsgcid8XVxuXG4gIGxldCBjb21wYXJlX3BvaW50IHIgZWwgb2Zmc2V0ID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCByIFwiY29tcGFyZVBvaW50XCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgKCogIGxldCBjcmVhdGVfY29udGV4dHVhbF9mcmFnbWVudCByID0gZmFpbHdpdGggXCJjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnRcIiAqKVxuXG4gIGxldCBkZWxldGVfY29udGVudHMgciA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJkZWxldGVDb250ZW50c1wiIFt8fF1cbiAgKCpcbiAgbGV0IGV4dHJhY3RfY29udGVudHMgciA9IGZhaWx3aXRoIFwiZXh0cmFjdENvbnRlbnRzXCJcbiAgbGV0IGdldF9ib3VuZGluZ19jbGllbnRfcmVjdCByID0gZmFpbHdpdGggXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIlxuICBsZXQgZ2V0X2NsaWVudF9yZWN0cyByID0gZmFpbHdpdGggXCJnZXRDbGllbnRSZWN0c1wiICopXG5cbiAgbGV0IGluc2VydF9ub2RlIHIgZWwgPSBpZ25vcmUgQEAgSnYuY2FsbCByIFwiaW5zZXJ0Tm9kZVwiIFt8RWwudG9fanYgZWx8XVxuICBsZXQgaW50ZXJzZWN0c19ub2RlIHIgZWwgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwiaW50ZXJzZWN0c05vZGVcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fcmFuZ2UgciBlbCBvZmZzZXQgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCByIFwiaXNQb2ludEluUmFuZ2VcIiBbfEVsLnRvX2p2IGVsOyBKdi5vZl9pbnQgb2Zmc2V0fF1cblxuICBsZXQgc2VsZWN0X25vZGUgciBlbCA9IGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZWxlY3ROb2RlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNlbGVjdF9ub2RlX2NvbnRlbnRzIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZWxlY3ROb2RlQ29udGVudHNcIiBbfEVsLnRvX2p2IGVsfF1cblxuICBsZXQgc2V0X2VuZCByIGVsIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldEVuZFwiIFt8RWwudG9fanYgZWw7IEp2Lm9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBzZXRfZW5kX2FmdGVyIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRFbmRBZnRlclwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfZW5kX2JlZm9yZSByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0RW5kQmVmb3JlXCIgW3xFbC50b19qdiBlbHxdXG5cbiAgbGV0IHNldF9zdGFydCByIGVsIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgciBcInNldFN0YXJ0XCIgW3xFbC50b19qdiBlbDsgSnYub2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHNldF9zdGFydF9hZnRlciByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic2V0U3RhcnRBZnRlclwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzZXRfc3RhcnRfYmVmb3JlIHIgZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIHIgXCJzZXRTdGFydEJlZm9yZVwiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCBzdXJyb3VuZF9jb250ZW50cyByIGVsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCByIFwic3Vycm91bmRDb250ZW50c1wiIFt8RWwudG9fanYgZWx8XVxuXG4gIGxldCB0b19zdHJpbmcgciA9IEp2LnRvX2pzdHIgQEAgSnYuY2FsbCByIFwidG9TdHJpbmdcIiBbfHxdXG5cbiAgKCogUHJvcGVydGllcyAqKVxuXG4gIGxldCBjb2xsYXBzZWQgciA9IEp2LkJvb2wuZ2V0IHIgXCJjb2xsYXBzZWRcIlxuICBsZXQgY29tbW9uX2FuY2VzdG9yX2NvbnRhaW5lciByID1cbiAgICBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJjb21tb25BbmNlc3RvckNvbnRhaW5lclwiKVxuXG4gIGxldCBlbmRfY29udGFpbmVyIHIgPSBFbC5vZl9qdiAoSnYuZ2V0IHIgXCJlbmRDb250YWluZXJcIilcbiAgbGV0IGVuZF9vZmZzZXQgciA9IEp2LkludC5nZXQgciBcImVuZE9mZnNldFwiXG4gIGxldCBzdGFydF9jb250YWluZXIgciA9IEVsLm9mX2p2IChKdi5nZXQgciBcInN0YXJ0Q29udGFpbmVyXCIpXG4gIGxldCBzdGFydF9vZmZzZXQgciA9IEp2LkludC5nZXQgciBcInNhcnRPZmZzZXRcIlxuZW5kXG5cblxubW9kdWxlIERvY3VtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEVsLmRvY3VtZW50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhc190YXJnZXQgZCA9IGRcblxuICAoKiBFbGVtZW50cyAqKVxuXG4gIGxldCByb290IGQgPSBFbC5vZl9qdiAoSnYuZ2V0IGQgXCJkb2N1bWVudEVsZW1lbnRcIilcbiAgbGV0IGJvZHkgZCA9XG4gICAgbGV0IGIgPSBKdi5nZXQgZCBcImJvZHlcIiBpblxuICAgIGlmIEp2LmlzX3NvbWUgYiB0aGVuIEVsLm9mX2p2IGIgZWxzZVxuICAgIGxldCBlcnIgPSBcIkRvY3VtZW50IGJvZHkgaXMgbnVsbC4gVHJ5IHRvIGRlZmVyIHlvdXIgc2NyaXB0IGV4ZWN1dGlvbi5cIiAgaW5cbiAgICBKdi50aHJvdyAoSnN0ci52IGVycilcblxuICBsZXQgaGVhZCBkID0gRWwub2ZfanYgKEp2LmdldCBkIFwiaGVhZFwiKVxuICBsZXQgYWN0aXZlX2VsIGQgPSBKdi50b19vcHRpb24gRWwub2ZfanYgKEp2LmdldCBkIFwiYWN0aXZlRWxlbWVudFwiKVxuXG4gIGxldCBmaW5kX2VsX2J5X2lkIGQgaWQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiAoSnYuY2FsbCBkIFwiZ2V0RWxlbWVudEJ5SWRcIiBbfCBKdi5vZl9qc3RyIGlkIHxdKVxuXG4gIGxldCBmaW5kX2Vsc19ieV9uYW1lIGQgbiA9XG4gICAgRWwuZWxfbGlzdF9vZl9ub2RlX2xpc3QgKEp2LmNhbGwgZCBcImdldEVsZW1lbnRzQnlOYW1lXCIgW3wgSnYub2ZfanN0ciBuIHxdKVxuXG4gICgqIFByb3BlcnRpZXMgKilcblxuICBsZXQgcmVmZXJyZXIgZCA9IEp2LkpzdHIuZ2V0IGQgXCJyZWZlcnJlclwiXG4gIGxldCB0aXRsZSBkID0gSnYuSnN0ci5nZXQgZCBcInRpdGxlXCJcbiAgbGV0IHNldF90aXRsZSBkIHQgPSBKdi5Kc3RyLnNldCBkIFwidGl0bGVcIiB0XG5cbiAgbW9kdWxlIFZpc2liaWxpdHlfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgaGlkZGVuID0gSnN0ci52IFwiaGlkZGVuXCJcbiAgICBsZXQgdmlzaWJsZSA9IEpzdHIudiBcInZpc2libGVcIlxuICBlbmRcblxuICBsZXQgdmlzaWJpbGl0eV9zdGF0ZSBkID0gSnYuSnN0ci5nZXQgZCBcInZpc2liaWxpdHlTdGF0ZVwiXG5cbiAgKCogUG9pbnRlciBsb2NrICopXG5cbiAgbGV0IHBvaW50ZXJfbG9ja19lbGVtZW50IGQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiBAQCBKdi5nZXQgZCBcInBvaW50ZXJMb2NrRWxlbWVudFwiXG5cbiAgbGV0IGV4aXRfcG9pbnRlcl9sb2NrIGQgPVxuICAgIGxldCBmdXQgPSBFdi5uZXh0IEV2LnBvaW50ZXJsb2NrY2hhbmdlIChhc190YXJnZXQgZCkgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBkIFwiZXhpdFBvaW50ZXJMb2NrXCIgW3x8XTtcbiAgICBmdXRcblxuICAoKiBGdWxsc2NyZWVuICopXG5cbiAgbGV0IGZ1bGxzY3JlZW5fYXZhaWxhYmxlIGQgPSBKdi5Cb29sLmdldCBkIFwiZnVsbHNjcmVlbkVuYWJsZWRcIlxuICBsZXQgZnVsbHNjcmVlbl9lbGVtZW50IGQgPVxuICAgIEp2LnRvX29wdGlvbiBFbC5vZl9qdiBAQCBKdi5nZXQgZCBcImZ1bGxzY3JlZW5FbGVtZW50XCJcblxuICBsZXQgZXhpdF9mdWxsc2NyZWVuIGQgPVxuICAgIEZ1dC5vZl9wcm9taXNlIH5vazppZ25vcmUgQEAgSnYuY2FsbCBkIFwiZXhpdEZ1bGxzY3JlZW5cIiBbfHxdXG5lbmRcblxuKCogQnJvd3NlciBpbnRlcmFjdGlvbiAqKVxuXG5tb2R1bGUgQWJvcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNpZ25hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBleHRlcm5hbCBhc190YXJnZXQgOiB0IC0+IEV2LnRhcmdldCA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgYWJvcnRlZCBzID0gSnYuQm9vbC5nZXQgcyBcImFib3J0ZWRcIlxuICAgIGxldCBhYm9ydCA9IEV2LlR5cGUudm9pZCAoSnN0ci52IFwiYWJvcnRcIilcbiAgZW5kXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gIGxldCBjb250cm9sbGVyICgpID0gSnYubmV3JyAoSnYuZ2V0IEp2Lmdsb2JhbCBcIkFib3J0Q29udHJvbGxlclwiKSBbfHxdXG4gIGxldCBzaWduYWwgYyA9IFNpZ25hbC5vZl9qdiAoSnYuZ2V0IGMgXCJzaWduYWxcIilcbiAgbGV0IGFib3J0IGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYWJvcnRcIiBbfHxdXG5lbmRcblxubW9kdWxlIENvbnNvbGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IGNhbGwgYyBtZXRoIGFyZ3MgPSBpZ25vcmUgKEp2LmNhbGwgYyBtZXRoIGFyZ3MpXG5cbiAgbGV0IGMgPSByZWYgKEp2LmdldCBKdi5nbG9iYWwgXCJjb25zb2xlXCIpXG4gIGxldCBnZXQgKCkgPSAhY1xuICBsZXQgc2V0IG4gPSBjIDo9IG5cbiAgbGV0IGNsZWFyICgpID0gY2FsbCAhYyBcImNsZWFyXCIgW3x8XVxuXG4gICgqIExvZyBmdW5jdGlvbnMgKilcblxuICB0eXBlIG1zZyA9IFtdIDogbXNnIHwgKCA6OiApIDogJ2EgKiBtc2cgLT4gbXNnXG4gIHR5cGUgJ2EgbXNnciA9ICdhIC0+IG1zZ1xuICBsZXQgbXNnIHYgPSBbdl1cbiAgbGV0IHN0ciB2ID1cbiAgICBsZXQgdiA9IEp2LnJlcHIgdiBpblxuICAgIGlmIEp2LmlzX251bGwgdiB0aGVuIEpzdHIudiBcIm51bGxcIiBlbHNlXG4gICAgaWYgSnYuaXNfdW5kZWZpbmVkIHYgdGhlbiBKc3RyLnYgXCJ1bmRlZmluZWRcIiBlbHNlXG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIHYgXCJ0b1N0cmluZ1wiIFt8fF1cblxuICBsZXQgbXNnX3RvX2p2X2FycmF5IG1zZyA9XG4gICAgbGV0IHJlYyBsb29wIGEgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhXG4gICAgfCB2IDo6IHZzIC0+IEp2LkphcnJheS5zZXQgYSBpIChKdi5yZXByIHYpOyBsb29wIGEgKGkgKyAxKSB2c1xuICAgIGluXG4gICAgSnYudG9fanZfYXJyYXkgQEAgbG9vcCAoSnYuSmFycmF5LmNyZWF0ZSAwKSAwIG1zZ1xuXG4gIHR5cGUgbG9nID0gbXNnIC0+IHVuaXRcblxuICAoKiBMZXZlbGxlZCBsb2dnaW5nICopXG5cbiAgbGV0IGxvZyBtc2cgPSBjYWxsICFjIFwibG9nXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIGxldCB0cmFjZSBtc2cgPSBjYWxsICFjIFwidHJhY2VcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcbiAgbGV0IGVycm9yIG1zZyA9IGNhbGwgIWMgXCJlcnJvclwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgd2FybiBtc2cgPSBjYWxsICFjIFwid2FyblwiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgaW5mbyBtc2cgPSBjYWxsICFjIFwiaW5mb1wiIChtc2dfdG9fanZfYXJyYXkgbXNnKVxuICBsZXQgZGVidWcgbXNnID0gY2FsbCAhYyBcImRlYnVnXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG5cbiAgKCogQXNzZXJ0aW5nIGFuZCBkdW1waW5nICopXG5cbiAgbGV0IGFzc2VydCcgYiBtc2cgPSBjYWxsICFjIFwiYXNzZXJ0XCIgKG1zZ190b19qdl9hcnJheSAoSnYub2ZfYm9vbCBiIDo6IG1zZykpXG4gIGxldCBkaXIgbyA9IGNhbGwgIWMgXCJkaXJcIiBbfEp2LnJlcHIgb3xdXG4gIGxldCB0YWJsZSA/Y29scyB2ID1cbiAgICBsZXQgbXNnID0gbWF0Y2ggY29scyB3aXRoXG4gICAgfCBOb25lIC0+IFt8SnYucmVwciB2fF0gfCBTb21lIGwgLT4gW3xKdi5yZXByIHY7IEp2Lm9mX2pzdHJfbGlzdCBsfF1cbiAgICBpblxuICAgIGNhbGwgIWMgXCJ0YWJsZVwiIG1zZ1xuXG4gICgqIEdyb3VwaW5nICopXG5cbiAgbGV0IGdyb3VwX2VuZCAoKSA9IGNhbGwgIWMgXCJncm91cEVuZFwiIFt8fF1cbiAgbGV0IGdyb3VwID8oY2xvc2VkID0gZmFsc2UpIG1zZyA9IG1hdGNoIGNsb3NlZCB3aXRoXG4gIHwgZmFsc2UgLT4gY2FsbCAhYyBcImdyb3VwXCIgKG1zZ190b19qdl9hcnJheSBtc2cpXG4gIHwgdHJ1ZSAtPiBjYWxsICFjIFwiZ3JvdXBDb2xsYXBzZWRcIiAobXNnX3RvX2p2X2FycmF5IG1zZylcblxuICAoKiBDb3VudGluZyAqKVxuXG4gIGxldCBjb3VudCBsYWJlbCA9IGNhbGwgIWMgXCJjb3VudFwiIFt8SnYub2ZfanN0ciBsYWJlbHxdXG4gIGxldCBjb3VudF9yZXNldCBsYWJlbCA9IGNhbGwgIWMgXCJjb3VudFJlc2V0XCIgW3xKdi5vZl9qc3RyIGxhYmVsfF1cblxuICAoKiBUaW1pbmcgKilcblxuICBsZXQgdGltZSBsYWJlbCA9IGNhbGwgIWMgXCJ0aW1lXCIgW3wgSnYub2ZfanN0ciBsYWJlbCB8XVxuICBsZXQgdGltZV9sb2cgbGFiZWwgbXNnID0gY2FsbCAhYyBcInRpbWVMb2dcIiAobXNnX3RvX2p2X2FycmF5IChsYWJlbCA6OiBtc2cpKVxuICBsZXQgdGltZV9lbmQgbGFiZWwgPSBjYWxsICFjIFwidGltZUVuZFwiIFt8IEp2Lm9mX2pzdHIgbGFiZWwgfF1cblxuICAoKiBQcm9maWxpbmcgKilcblxuICBsZXQgcHJvZmlsZSBsYWJlbCA9IGNhbGwgIWMgXCJwcm9maWxlXCIgW3xKdi5yZXByIGxhYmVsfF1cbiAgbGV0IHByb2ZpbGVfZW5kIGxhYmVsID0gY2FsbCAhYyBcInByb2ZpbGVFbmRcIiBbfEp2LnJlcHIgbGFiZWx8XVxuICBsZXQgdGltZV9zdGFtcCBsYWJlbCA9IGNhbGwgIWMgXCJ0aW1lU3RhbXBcIiBbfCBKdi5vZl9qc3RyIGxhYmVsIHxdXG5cbiAgKCogUmVzdWx0IGxvZ2dpbmcgKilcblxuICBsZXQgbG9nX3Jlc3VsdCA/KG9rID0gZnVuIHYgLT4gW3ZdKSA/ZXJyb3I6KGVyciA9IGZ1biBlIC0+IFtzdHIgZV0pIHIgPVxuICAgIChtYXRjaCByIHdpdGggT2sgdiAtPiBsb2cgKG9rIHYpIHwgRXJyb3IgZSAtPiBlcnJvciAoZXJyIGUpKTtcbiAgICByXG5cbiAgbGV0IGxvZ19pZl9lcnJvciA/KGwgPSBlcnJvcikgPyhlcnJvcl9tc2cgPSBmdW4gZSAtPiBbc3RyIGVdKSB+dXNlID0gZnVuY3Rpb25cbiAgfCBPayB2IC0+IHYgfCBFcnJvciBlIC0+IGwgKGVycm9yX21zZyBlKTsgdXNlXG5cbiAgbGV0IGxvZ19pZl9lcnJvcicgP2wgP2Vycm9yX21zZyB+dXNlIHIgPVxuICAgIE9rIChsb2dfaWZfZXJyb3IgP2wgP2Vycm9yX21zZyB+dXNlIHIpXG5lbmRcblxubW9kdWxlIFdpbmRvdyA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbC53aW5kb3dcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFzX3RhcmdldCB3ID0gRXYudGFyZ2V0X29mX2p2IHdcblxuICBsZXQgY2xvc2VkIHcgPSBKdi5Cb29sLmdldCB3IFwiY2xvc2VkXCJcbiAgbGV0IHNjcm9sbF94IHcgPSBKdi5GbG9hdC5nZXQgdyBcInNjcm9sbFhcIlxuICBsZXQgc2Nyb2xsX3kgdyA9IEp2LkZsb2F0LmdldCB3IFwic2Nyb2xsWVwiXG5cbiAgbGV0IGlubmVyX3dpZHRoIHcgPSBKdi5JbnQuZ2V0IHcgXCJpbm5lcldpZHRoXCJcbiAgbGV0IGlubmVyX2hlaWdodCB3ID0gSnYuSW50LmdldCB3IFwiaW5uZXJIZWlnaHRcIlxuXG4gIGxldCBwYXJlbnQgdyA9XG4gICAgbGV0IHAgPSBKdi5nZXQgdyBcInBhcmVudFwiIGluXG4gICAgaWYgcCA9PSB3IHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuXG4gICgqIE1lZGlhIHByb3BlcnRpZXMgKilcblxuICBsZXQgZGV2aWNlX3BpeGVsX3JhdGlvIHcgPSBKdi5GbG9hdC5nZXQgdyBcImRldmljZVBpeGVsUmF0aW9cIlxuICBsZXQgbWF0Y2hlc19tZWRpYSB3IHMgPVxuICAgIGxldCBvID0gSnYuY2FsbCB3IFwibWF0Y2hNZWRpYVwiIFt8SnYub2ZfanN0ciBzfF0gaW5cbiAgICBKdi5Cb29sLmdldCBvIFwibWF0Y2hlc1wiXG5cbiAgbGV0IHByZWZlcnNfZGFya19jb2xvcl9zY2hlbWUgdyA9XG4gICAgbWF0Y2hlc19tZWRpYSB3IChKc3RyLnYgXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpXG5cbiAgKCogT3BlcmF0aW9ucyAqKVxuXG4gIGxldCBvcGVuJyA/KGZlYXR1cmVzID0gSnN0ci5lbXB0eSkgPyhuYW1lID0gSnN0ci5lbXB0eSkgdyB1ID1cbiAgICBKdi50b19vcHRpb24gb2ZfanYgQEBcbiAgICAgIEp2LmNhbGwgdyBcIm9wZW5cIiBbfEp2Lm9mX2pzdHIgdTsgSnYub2ZfanN0ciBuYW1lOyBKdi5vZl9qc3RyIGZlYXR1cmVzfF1cblxuICBsZXQgY2xvc2UgdyA9IGlnbm9yZSAoSnYuY2FsbCB3IFwiY2xvc2VcIiBbfHxdKVxuICBsZXQgcHJpbnQgdyA9IGlnbm9yZSAoSnYuY2FsbCB3IFwicHJpbnRcIiBbfHxdKVxuICBsZXQgcmVsb2FkIHcgPSBpZ25vcmUgKEp2LmNhbGwgKEp2LmdldCB3IFwibG9jYXRpb25cIikgXCJyZWxvYWRcIiBbfHxdKVxuXG4gICgqIExvY2F0aW9uIGFuZCBoaXN0b3J5ICopXG5cbiAgbGV0IGxvY2F0aW9uIHcgPSBKdi5uZXcnIFVyaS51cmwgW3wgSnYuZ2V0IHcgXCJsb2NhdGlvblwiIHxdXG4gIGxldCBzZXRfbG9jYXRpb24gdyB1ID0gSnYuc2V0IHcgXCJsb2NhdGlvblwiIChVcmkudG9fanYgdSlcblxuICBtb2R1bGUgSGlzdG9yeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTY3JvbGxfcmVzdG9yYXRpb24gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgbGV0IGF1dG8gPSBKc3RyLnYgXCJhdXRvXCJcbiAgICAgIGxldCBtYW51YWwgPSBKc3RyLnYgXCJtYW51YWxcIlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgbGVuZ3RoIGggPSBKdi5JbnQuZ2V0IGggXCJsZW5ndGhcIlxuICAgIGxldCBzY3JvbGxfcmVzdG9yYXRpb24gaCA9IEp2LkpzdHIuZ2V0IGggXCJzY3JvbGxSZXN0b3JhdGlvblwiXG4gICAgbGV0IHNldF9zY3JvbGxfcmVzdG9yYXRpb24gaCByID0gSnYuSnN0ci5zZXQgaCBcInNjcm9sbFJlc3RvcmF0aW9uXCIgclxuXG4gICAgKCogTW92aW5nIGluIGhpc3RvcnkgKilcblxuICAgIGxldCBiYWNrIGggPSBpZ25vcmUgQEAgSnYuY2FsbCBoIFwiYmFja1wiIFt8fF1cbiAgICBsZXQgZm9yd2FyZCBoID0gaWdub3JlIEBAIEp2LmNhbGwgaCBcImZvcndhcmRcIiBbfHxdXG4gICAgbGV0IGdvIGggZCA9IGlnbm9yZSBAQCBKdi5jYWxsIGggXCJnb1wiIEp2Llt8IG9mX2ludCBkIHxdXG5cbiAgICAoKiBNYWtpbmcgaGlzdG9yeSAqKVxuXG4gICAgdHlwZSBzdGF0ZSA9IEp2LnRcbiAgICBsZXQgc3RhdGUgaCA9IEp2LmdldCBoIFwic3RhdGVcIlxuICAgIGxldCBwdXNoX3N0YXRlID8oc3RhdGUgPSBKdi5udWxsKSA/KHRpdGxlID0gSnN0ci5lbXB0eSkgPyh1cmkgPSBKdi5udWxsKSBoID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGggXCJwdXNoU3RhdGVcIiBbfHN0YXRlOyBKdi5vZl9qc3RyIHRpdGxlOyB1cml8XVxuXG4gICAgbGV0IHJlcGxhY2Vfc3RhdGVcbiAgICAgICAgPyhzdGF0ZSA9IEp2Lm51bGwpID8odGl0bGUgPSBKc3RyLmVtcHR5KSA/KHVyaSA9IEp2Lm51bGwpIGhcbiAgICAgID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGggXCJyZXBsYWNlU3RhdGVcIiBbfHN0YXRlOyBKdi5vZl9qc3RyIHRpdGxlOyB1cml8XVxuXG4gICAgKCogRXZlbnQgKilcblxuICAgIG1vZHVsZSBFdiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFBvcHN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgICAgbGV0IHN0YXRlIGUgPSBKdi5nZXQgZSBcInN0YXRlXCJcbiAgICAgIGVuZFxuICAgICAgbGV0IHBvcHN0YXRlID0gRXYuVHlwZS5jcmVhdGUgKEpzdHIudiBcInBvcHN0YXRlXCIpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBoaXN0b3J5IHcgPSBIaXN0b3J5Lm9mX2p2IEBAIEp2LmdldCB3IFwiaGlzdG9yeVwiXG5lbmRcblxubW9kdWxlIE5hdmlnYXRvciA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBsYW5ndWFnZXMgbiA9IG1hdGNoIEp2LmZpbmQgbiBcImxhbmd1YWdlc1wiIHdpdGhcbiAgfCBTb21lIGEgLT4gSnYudG9fanN0cl9saXN0IGFcbiAgfCBOb25lIC0+XG4gICAgICBtYXRjaCBKdi5Kc3RyLmZpbmQgbiBcImxhbmd1YWdlXCIgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gW3ZdIHwgTm9uZSAtPiBbXVxuXG4gIGxldCBtYXhfdG91Y2hfcG9pbnRzIG4gPVxuICAgIGxldCB0ID0gSnYuZ2V0IG4gXCJtYXhUb3VjaFBvaW50c1wiIGluXG4gICAgaWYgSnYuaXNfbm9uZSB0IHRoZW4gMCBlbHNlIEp2LnRvX2ludCB0XG5cbiAgbGV0IG9ubGluZSBuID0gSnYuQm9vbC5nZXQgbiBcIm9uTGluZVwiXG5lbmRcblxubW9kdWxlIFBlcmZvcm1hbmNlID0gc3RydWN0XG4gIG1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICAgIGxldCBmcmFtZSA9IEpzdHIudiBcImZyYW1lXCJcbiAgICAgIGxldCBuYXZpZ2F0aW9uID0gSnN0ci52IFwibmF2aWdhdGlvblwiXG4gICAgICBsZXQgcmVzb3VyY2UgPSBKc3RyLnYgXCJyZXNvdXJjZVwiXG4gICAgICBsZXQgbWFyayA9IEpzdHIudiBcIm1hcmtcIlxuICAgICAgbGV0IG1lYXN1cmUgPSBKc3RyLnYgXCJtZWFzdXJlXCJcbiAgICAgIGxldCBwYWludCA9IEpzdHIudiBcInBhaW50XCJcbiAgICAgIGxldCBsb25ndGFzayA9IEpzdHIudiBcImxvbmd0YXNrXCJcbiAgICBlbmRcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgdHlwZSBlbnRyeSA9IHRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgbmFtZSBlID0gSnYuSnN0ci5nZXQgZSBcIm5hbWVcIlxuICAgIGxldCB0eXBlJyBlID0gSnYuSnN0ci5nZXQgZSBcImVudHJ5VHlwZVwiXG4gICAgbGV0IHN0YXJ0X3RpbWUgZSA9IEp2LkZsb2F0LmdldCBlIFwic3RhcnRUaW1lXCJcbiAgICBsZXQgZW5kX3RpbWUgZSA9IEp2LkZsb2F0LmdldCBlIFwiZW5kVGltZVwiXG4gICAgbGV0IGR1cmF0aW9uIGUgPSBKdi5GbG9hdC5nZXQgZSBcImR1cmF0aW9uXCJcbiAgICBsZXQgdG9fanNvbiBlID0gSnYuY2FsbCBlIFwidG9KU09OXCIgW3x8XVxuXG4gICAgbW9kdWxlIFJlc291cmNlX3RpbWluZyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnYudFxuICAgICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBsZXQgYXNfZW50cnkgPSBGdW4uaWRcbiAgICAgIGxldCBpbml0aWF0b3JfdHlwZSBlID0gSnYuSnN0ci5nZXQgZSBcImluaXRpYXRvclR5cGVcIlxuICAgICAgbGV0IG5leHRfaG9wX3Byb3RvY29sIGUgPSBKdi5Kc3RyLmdldCBlIFwibmV4dEhvcFByb3RvY29sXCJcbiAgICAgIGxldCB3b3JrZXJfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwid29ya2VyU3RhcnRcIlxuICAgICAgbGV0IHJlZGlyZWN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlZGlyZWN0U3RhcnRcIlxuICAgICAgbGV0IHJlZGlyZWN0X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJyZWRpcmVjdEVuZFwiXG4gICAgICBsZXQgZmV0Y2hfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZmV0Y2hTdGFydFwiXG4gICAgICBsZXQgZG9tYWluX2xvb2t1cF9zdGFydCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJkb21haW5Mb29rdXBTdGFydFwiXG4gICAgICBsZXQgZG9tYWluX2xvb2t1cF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwiZG9tYWluTG9va3VwRW5kXCJcbiAgICAgIGxldCBjb25uZWN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImNvbm5lY3RTdGFydFwiXG4gICAgICBsZXQgY29ubmVjdF9lbmQgZSA9IEp2LkZsb2F0LmdldCBlIFwiY29ubmVjdEVuZFwiXG4gICAgICBsZXQgc2VjdXJlX2Nvbm5lY3Rpb25fc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwic2VjdXJlQ29ubmVjdGlvblN0YXJ0XCJcbiAgICAgIGxldCByZXF1ZXN0X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlcXVlc3RTdGFydFwiXG4gICAgICBsZXQgcmVzcG9uc2Vfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwicmVzcG9uc2VTdGFydFwiXG4gICAgICBsZXQgcmVzcG9uc2VfZW5kIGUgPSBKdi5GbG9hdC5nZXQgZSBcInJlc3BvbnNlRW5kXCJcbiAgICAgIGxldCB0cmFuc2Zlcl9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJ0cmFuc2ZlclNpemVcIlxuICAgICAgbGV0IGVuY29kZWRfYm9keV9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJlbmNvZGVkQm9keVNpemVcIlxuICAgICAgbGV0IGRlY29kZWRfYm9keV9zaXplIGUgPSBKdi5JbnQuZ2V0IGUgXCJkZWNvZGVkQm9keVNpemVcIlxuICAgIGVuZFxuICAgIG1vZHVsZSBOYXZpZ2F0aW9uX3RpbWluZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFR5cGUgPSAgc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEpzdHIudFxuICAgICAgICBsZXQgbmF2aWdhdGUgPSBKc3RyLnYgXCJuYXZpZ2F0ZVwiXG4gICAgICAgIGxldCByZWxvYWQgPSBKc3RyLnYgXCJyZWxvYWRcIlxuICAgICAgICBsZXQgYmFja19mb3J3YXJkID0gSnN0ci52IFwiYmFja19mb3J3YXJkXCJcbiAgICAgICAgbGV0IHByZXJlbmRlciA9IEpzdHIudiBcInByZXJlbmRlclwiXG4gICAgICBlbmRcbiAgICAgIHR5cGUgdCA9IEp2LnRcbiAgICAgIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgICBsZXQgYXNfcmVzb3VyY2VfdGltaW5nID0gRnVuLmlkXG4gICAgICBsZXQgYXNfZW50cnkgPSBGdW4uaWRcbiAgICAgIGxldCB1bmxvYWRfZXZlbnRfc3RhcnQgZSA9IEp2LkZsb2F0LmdldCBlIFwidW5sb2FkRXZlbnRTdGFydFwiXG4gICAgICBsZXQgdW5sb2FkX2V2ZW50X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJ1bmxvYWRFdmVudEVuZFwiXG4gICAgICBsZXQgZG9tX2ludGVyYWN0aXZlIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbUludGVyYWN0aXZlXCJcbiAgICAgIGxldCBkb21fY29udGVudF9sb2FkZWRfZXZlbnRfc3RhcnQgZSA9XG4gICAgICAgIEp2LkZsb2F0LmdldCBlIFwiZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnRcIlxuXG4gICAgICBsZXQgZG9tX2NvbnRlbnRfbG9hZGVkX2V2ZW50X2VuZCBlID1cbiAgICAgICAgSnYuRmxvYXQuZ2V0IGUgXCJkb21Db250ZW50TG9hZGVkRXZlbnRFbmRcIlxuXG4gICAgICBsZXQgZG9tX2NvbXBsZXRlIGUgPSBKdi5GbG9hdC5nZXQgZSBcImRvbUNvbXBsZXRlXCJcbiAgICAgIGxldCBsb2FkX2V2ZW50X3N0YXJ0IGUgPSBKdi5GbG9hdC5nZXQgZSBcImxvYWRFdmVudFN0YXJ0XCJcbiAgICAgIGxldCBsb2FkX2V2ZW50X2VuZCBlID0gSnYuRmxvYXQuZ2V0IGUgXCJsb2FkRXZlbnRFbmRcIlxuICAgICAgbGV0IHR5cGUnIGUgPSBKdi5Kc3RyLmdldCBlIFwidHlwZSdcIlxuICAgICAgbGV0IHJlZGlyZWN0X2NvdW50IGUgPSBKdi5JbnQuZ2V0IGUgXCJyZWRpcmVjdENvdW50XCJcbiAgICBlbmRcbiAgICBsZXQgYXNfcmVzb3VyY2VfdGltaW5nID0gRnVuLmlkXG4gICAgbGV0IGFzX25hdmlnYXRpb25fdGltaW5nID0gRnVuLmlkXG4gIGVuZFxuXG4gIHR5cGUgdCA9IEp2LnRcbiAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IHRpbWVfb3JpZ2luX21zIHAgPSBKdi5GbG9hdC5nZXQgcCBcInRpbWVPcmlnaW5cIlxuICBsZXQgY2xlYXJfbWFya3MgcCBuID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG4gd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIG4gLT4gSnYuW3xvZl9qc3RyIG4gfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiY2xlYXJNYXJrc1wiIGFyZ3NcblxuICBsZXQgY2xlYXJfbWVhc3VyZXMgcCBuID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG4gd2l0aCBOb25lIC0+IFt8fF0gfCBTb21lIG4gLT4gSnYuW3xvZl9qc3RyIG4gfF0gaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiY2xlYXJNZWFzdXJlc1wiIGFyZ3NcblxuICBsZXQgY2xlYXJfcmVzb3VyY2VfdGltaW5ncyBwID0gaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsZWFyUmVzb3VyY2VUaW1pbmdzXCIgW3x8XVxuICBsZXQgZ2V0X2VudHJpZXMgP3R5cGUnID9uYW1lIHAgPSBtYXRjaCBuYW1lLCB0eXBlJyB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzXCIgW3x8XVxuICB8IE5vbmUsIFNvbWUgdCAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlUeXBlXCIgSnYuW3wgb2ZfanN0ciB0IHxdXG4gIHwgU29tZSBuLCBOb25lIC0+XG4gICAgICBKdi50b19saXN0IEVudHJ5Lm9mX2p2IEBAIEp2LmNhbGwgcCBcImdldEVudHJpZXNCeU5hbWVcIiBKdi5bfCBvZl9qc3RyIG4gfF1cbiAgfCBTb21lIG4sIFNvbWUgdCAtPlxuICAgICAgSnYudG9fbGlzdCBFbnRyeS5vZl9qdiBAQCBKdi5jYWxsIHAgXCJnZXRFbnRyaWVzQnlOYW1lXCJcbiAgICAgICAgSnYuW3wgb2ZfanN0ciBuOyBvZl9qc3RyIHQgfF1cblxuICBsZXQgbWFyayBwIG4gPSBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWFya1wiIEp2Llt8IG9mX2pzdHIgbiB8XVxuICBsZXQgbWVhc3VyZSA/c3RhcnQgP3N0b3AgcCBuID0gbWF0Y2ggc3RhcnQsIHN0b3Agd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBbfHxdXG4gIHwgU29tZSBzLCBOb25lIC0+IGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJtZWFzdXJlXCIgSnYuW3wgb2ZfanN0ciBzfF1cbiAgfCBTb21lIHMsIFNvbWUgZSAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwibWVhc3VyZVwiIEp2Llt8IG9mX2pzdHIgczsgb2ZfanN0ciBlfF1cbiAgfCBOb25lLCBTb21lIGUgLT4gaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1lYXN1cmVcIiBKdi5bfCB1bmRlZmluZWQ7IG9mX2pzdHIgZXxdXG5cbiAgbGV0IG5vd19tcyBwID0gSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBwIFwibm93XCIgW3x8XVxuICBsZXQgdG9fanNvbiBwID0gSnYuY2FsbCBwIFwidG9KU09OXCIgW3x8XVxuZW5kXG5cbm1vZHVsZSBHID0gc3RydWN0XG5cbiAgKCogR2xvYmFsIG9iamVjdHMgKilcblxuICBsZXQgY29uc29sZSA9IEp2LmdldCBKdi5nbG9iYWwgXCJjb25zb2xlXCJcbiAgbGV0IGRvY3VtZW50ID0gRWwuZ2xvYmFsX2RvY3VtZW50XG4gIGxldCBuYXZpZ2F0b3IgPSBKdi5nZXQgSnYuZ2xvYmFsIFwibmF2aWdhdG9yXCJcbiAgbGV0IHBlcmZvcm1hbmNlID0gSnYuZ2V0IEp2Lmdsb2JhbCBcInBlcmZvcm1hbmNlXCJcbiAgbGV0IHdpbmRvdyA9IEp2LmdldCBKdi5nbG9iYWwgXCJ3aW5kb3dcIlxuXG4gICgqIEdsb2JhbCBwcm9wZXJ0aWVzICopXG5cbiAgbGV0IGlzX3NlY3VyZV9jb250ZXh0ID0gSnYuQm9vbC5nZXQgSnYuZ2xvYmFsIFwiaXNTZWN1cmVDb250ZXh0XCJcblxuICAoKiBFdmVudCB0YXJnZXQgKilcblxuICBsZXQgdGFyZ2V0ID0gSnYuZ2xvYmFsXG5cbiAgKCogVGltZXJzICopXG5cbiAgdHlwZSB0aW1lcl9pZCA9IGludFxuXG4gIGxldCBzZXRfdGltZW91dCB+bXMgZiA9XG4gICAgSnYudG9faW50IEBAXG4gICAgSnYuY2FsbCBKdi5nbG9iYWwgXCJzZXRUaW1lb3V0XCIgW3wgSnYuY2FsbGJhY2sgfmFyaXR5OjEgZjsgSnYub2ZfaW50IG1zIHxdXG5cbiAgbGV0IHNldF9pbnRlcnZhbCB+bXMgZiA9XG4gICAgSnYudG9faW50IEBAXG4gICAgSnYuY2FsbCBKdi5nbG9iYWwgXCJzZXRJbnRlcnZhbFwiIFt8IEp2LmNhbGxiYWNrIH5hcml0eToxIGY7IEp2Lm9mX2ludCBtcyB8XVxuXG4gIGxldCBzdG9wX3RpbWVyIHRpZCA9XG4gICAgKCogYWNjb3JkaW5nIHRvIHNwZWMgaW50ZXJ2YWwgYW5kIHRpbWVvdXQgc2hhcmUgdGhlIHNhbWUgaW50cyAqKVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIEp2Lmdsb2JhbCBcImNsZWFyVGltZW91dFwiIFt8IEp2Lm9mX2ludCB0aWQgfF1cblxuICAoKiBBbmltYXRpb24gdGltaW5nICopXG5cbiAgdHlwZSBhbmltYXRpb25fZnJhbWVfaWQgPSBpbnRcblxuICBsZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgSnYuZ2xvYmFsIFwicmVxdWVzdEFuaW1hdGlvbkZyYW1lXCJcbiAgICAgIFt8SnYuY2FsbGJhY2sgfmFyaXR5OjEgZnxdXG5cbiAgbGV0IGNhbmNlbF9hbmltYXRpb25fZnJhbWUgZmlkID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBKdi5nbG9iYWwgXCJjYW5jZWxBbmltYXRpb25GcmFtZVwiIFt8IEp2Lm9mX2ludCBmaWR8XVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiY2FtbF9saXN0X29mX2pzX2FycmF5IiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp2IiwiSnN0ciIsIkZ1dCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYl9CaWdhcnJheSIsIlN0ZGxpYl9TeXMiLCJjc3RfYnViYmxlcyIsImNzdF9jYW5jZWxhYmxlIiwiY3N0X2NvbXBvc2VkIiwiaW5pdCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiY29tcG9zZWQiLCJwYXJhbSIsIm8iLCJldmVudCIsImNyZWF0ZSIsIm9wdCIsInQiLCJjc3RfdHlwZSIsInR5cGUiLCJlIiwidGFyZ2V0IiwiY3VycmVudF90YXJnZXQiLCJjb21wb3NlZF9wYXRoIiwiZXZlbnRfcGhhc2UiLCJzd2l0Y2hlciIsInN0b3BfcHJvcGFnYXRpb24iLCJzdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbiIsInByZXZlbnRfZGVmYXVsdCIsImRlZmF1bHRfcHJldmVudGVkIiwiaXNfdHJ1c3RlZCIsImNzdF90aW1lU3RhbXAiLCJ0aW1lc3RhbXBfbXMiLCJkaXNwYXRjaCIsImxpc3Rlbl9vcHRzIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwibGlzdGVuIiwib3B0cyIsInVubGlzdGVuIiwibmV4dCIsIm1hdGNoIiwic2V0IiwiZnV0Iiwia2luZCIsImkiLCJnZXRfZmlsZSIsImdldF9qc3RyIiwic2V0X3N0ciIsInN0ciIsImNzdF9sZW5ndGgiLCJsZW5ndGgiLCJsIiwiYWRkX2pzdHIiLCJhZGRfZmlsZSIsImZpbGUiLCJyZW1vdmUiLCJjbGVhciIsIml0ZW1zIiwiYWNjIiwiY3N0X2Ryb3BFZmZlY3QiLCJkcm9wX2VmZmVjdCIsImQiLCJzZXRfZHJvcF9lZmZlY3QiLCJjc3RfZWZmZWN0QWxsb3dlZCIsImVmZmVjdF9hbGxvd2VkIiwic2V0X2VmZmVjdF9hbGxvd2VkIiwiZGF0YSIsImMiLCJjc3RfZGF0YSIsIm1lc3NhZ2UiLCJmaWxlbmFtZSIsImxpbmVubyIsImNvbG5vIiwiZXJyb3IiLCJ3YWl0X3VudGlsIiwiY3N0X3JlbGF0ZWRUYXJnZXQiLCJyZWxhdGVkX3RhcmdldCIsIm0iLCJvbGRfdXJsIiwibmV3X3VybCIsImNzdF9kYXRhVHJhbnNmZXIiLCJkYXRhX3RyYW5zZmVyIiwiaW5wdXRfdHlwZSIsImNzdF9pc0NvbXBvc2luZyIsImlzX2NvbXBvc2luZyIsImtleSIsImsiLCJjc3RfY29kZSIsImNvZGUiLCJsb2NhdGlvbiIsInJlcGVhdCIsImNzdF9hbHRLZXkiLCJhbHRfa2V5IiwiY3N0X2N0cmxLZXkiLCJjdHJsX2tleSIsImNzdF9zaGlmdEtleSIsInNoaWZ0X2tleSIsImNzdF9tZXRhS2V5IiwibWV0YV9rZXkiLCJnZXRfbW9kaWZpZXJfc3RhdGUiLCJvZmZzZXRfeCIsIm9mZnNldF95IiwiY2xpZW50X3giLCJjbGllbnRfeSIsInBhZ2VfeCIsInBhZ2VfeSIsInNjcmVlbl94Iiwic2NyZWVuX3kiLCJtb3ZlbWVudF94IiwibW92ZW1lbnRfeSIsImNzdF9idXR0b24iLCJidXR0b24iLCJidXR0b25zIiwiaWQiLCJwIiwiY3N0X3dpZHRoIiwid2lkdGgiLCJjc3RfaGVpZ2h0IiwiaGVpZ2h0IiwicHJlc3N1cmUiLCJ0YW5nZW50aWFsX3ByZXNzdXJlIiwidGlsdF94IiwidGlsdF95IiwidHdpc3QiLCJhbHRpdHVkZV9hbmdsZSIsImF6aW11dGhfYW5nbGUiLCJpc19wcmltYXJ5IiwiZ2V0X2NvYWxlc2NlZF9ldmVudHMiLCJnZXRfcHJlZGljdGVkX2V2ZW50cyIsImRlbHRhX3giLCJ3IiwiZGVsdGFfeSIsImRlbHRhX3oiLCJkZWx0YV9tb2RlIiwiYXJyYXlfYnVmZmVyIiwibiIsImNzdF9ieXRlTGVuZ3RoIiwiYnl0ZV9sZW5ndGgiLCJhIiwic2xpY2UiLCJzdG9wIiwic3RhcnQiLCJidWZmZXIiLCJieXRlX29mZnNldCIsImRhdGF2aWV3Iiwib2ZfYnVmZmVyIiwiYiIsImdldF9pbnQ4IiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X3VpbnQ4IiwiZ2V0X3VpbnQxNl9iZSIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQzMl9sZSIsImdldF9mbG9hdDMyX2JlIiwiZ2V0X2Zsb2F0MzJfbGUiLCJnZXRfZmxvYXQ2NF9iZSIsImdldF9mbG9hdDY0X2xlIiwic2V0X2ludDgiLCJ2Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X3VpbnQ4Iiwic2V0X3VpbnQxNl9iZSIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF9mbG9hdDMyX2JlIiwic2V0X2Zsb2F0MzJfbGUiLCJzZXRfZmxvYXQ2NF9iZSIsInNldF9mbG9hdDY0X2xlIiwidHlwZV9zaXplX2luX2J5dGVzIiwiY29uc19vZl90eXBlIiwiYXJncyIsImNzdF9uYW1lIiwicyIsImVsdF90b19qdiIsImVsdF9vZl9qdiIsImNzdF9hdXRvIiwiY3N0X2RpciIsImNzdF9lcnJvciIsImNzdF9pbnB1dCIsImNzdF9zb3VyY2UiLCJjc3RfdGFibGUiLCJjc3RfdGltZSIsImNzdF90aXRsZSIsImNzdF90aW1lT3JpZ2luIiwiY3N0X3JlZGlyZWN0Q291bnQiLCJjc3RfbG9hZEV2ZW50RW5kIiwiY3N0X2xvYWRFdmVudFN0YXJ0IiwiY3N0X2RvbUNvbXBsZXRlIiwiY3N0X2RvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCIsImNzdF9kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCIsImNzdF9kb21JbnRlcmFjdGl2ZSIsImNzdF91bmxvYWRFdmVudEVuZCIsImNzdF91bmxvYWRFdmVudFN0YXJ0IiwiY3N0X2RlY29kZWRCb2R5U2l6ZSIsImNzdF9lbmNvZGVkQm9keVNpemUiLCJjc3RfdHJhbnNmZXJTaXplIiwiY3N0X3Jlc3BvbnNlRW5kIiwiY3N0X3Jlc3BvbnNlU3RhcnQiLCJjc3RfcmVxdWVzdFN0YXJ0IiwiY3N0X3NlY3VyZUNvbm5lY3Rpb25TdGFydCIsImNzdF9jb25uZWN0RW5kIiwiY3N0X2Nvbm5lY3RTdGFydCIsImNzdF9kb21haW5Mb29rdXBFbmQiLCJjc3RfZG9tYWluTG9va3VwU3RhcnQiLCJjc3RfZmV0Y2hTdGFydCIsImNzdF9yZWRpcmVjdEVuZCIsImNzdF9yZWRpcmVjdFN0YXJ0IiwiY3N0X3dvcmtlclN0YXJ0IiwiY3N0X25leHRIb3BQcm90b2NvbCIsImNzdF9pbml0aWF0b3JUeXBlIiwiY3N0X2R1cmF0aW9uIiwiY3N0X2VuZFRpbWUiLCJjc3Rfc3RhcnRUaW1lIiwiY3N0X2VudHJ5VHlwZSIsImNzdF9vbkxpbmUiLCJjc3RfbGFuZ3VhZ2VzIiwiY3N0X2xhbmd1YWdlIiwiY3N0X3Njcm9sbFJlc3RvcmF0aW9uIiwiY3N0X21hdGNoZXMiLCJjc3RfZGV2aWNlUGl4ZWxSYXRpbyIsImNzdF9pbm5lckhlaWdodCIsImNzdF9pbm5lcldpZHRoIiwiY3N0X3Njcm9sbFkiLCJjc3Rfc2Nyb2xsWCIsImNzdF9jbG9zZWQiLCJjc3RfcHJvZmlsZUVuZCIsImNzdF9wcm9maWxlIiwiY3N0X3RpbWVFbmQiLCJjc3RfdGltZUxvZyIsImNzdF9jb3VudFJlc2V0IiwiY3N0X2NvdW50IiwiY3N0X2dyb3VwQ29sbGFwc2VkIiwiY3N0X2dyb3VwIiwiY3N0X2dyb3VwRW5kIiwiY3N0X2Fzc2VydCIsImNzdF9kZWJ1ZyIsImNzdF9pbmZvIiwiY3N0X3dhcm4iLCJjc3RfdHJhY2UiLCJjc3RfbG9nIiwiY3N0X2NsZWFyIiwiY3N0X2Fib3J0ZWQiLCJjc3RfZnVsbHNjcmVlbkVuYWJsZWQiLCJjc3RfdmlzaWJpbGl0eVN0YXRlIiwiY3N0X3JlZmVycmVyIiwiY3N0X3NhcnRPZmZzZXQiLCJjc3RfZW5kT2Zmc2V0IiwiY3N0X2NvbGxhcHNlZCIsImNzdF9maWxlcyIsImNzdF9uYXZpZ2F0aW9uVUkiLCJjc3Rfc21vb3RoIiwiY3N0X2luc3RhbnQiLCJjc3RfY2VudGVyIiwiY3N0X25lYXJlc3QiLCJjc3Rfc3RhcnQiLCJjc3RfZW5kIiwiY3N0X3Njcm9sbEhlaWdodCIsImNzdF9zY3JvbGxXaWR0aCIsImNzdF9zY3JvbGxUb3AiLCJjc3Rfc2Nyb2xsTGVmdCIsImNzdF9vZmZzZXRUb3AiLCJjc3Rfb2Zmc2V0TGVmdCIsImNzdF9vZmZzZXRIZWlnaHQiLCJjc3Rfb2Zmc2V0V2lkdGgiLCJjc3RfeSIsImNzdF94IiwiY3N0X2NsaWVudEhlaWdodCIsImNzdF9jbGllbnRXaWR0aCIsImNzdF9jbGllbnRUb3AiLCJjc3RfY2xpZW50TGVmdCIsImNzdF9uZXh0RWxlbWVudFNpYmxpbmciLCJjc3RfcHJldmlvdXNFbGVtZW50U2libGluZyIsImNzdF9wYXJlbnROb2RlIiwiY3N0X3RleHRDb250ZW50IiwiY3N0X25vZGVWYWx1ZSIsImNzdF9ub2RlTmFtZSIsImNzdF9ub2RlVHlwZSIsImNzdF91bmljb2RlU2V0cyIsImNzdF91bmljb2RlIiwiY3N0X3N0aWNreSIsImNzdF9tdWx0aWxpbmUiLCJjc3RfaWdub3JlQ2FzZSIsImNzdF9oYXNJbmRpY2VzIiwiY3N0X2dsb2JhbCIsImNzdF9mbGFncyIsImNzdF9kb3RBbGwiLCJjc3RfbGFzdEluZGV4IiwiY3N0X2luZGljZXMiLCJjc3RfZ3JvdXBzIiwiY3N0X2luZGV4IiwiY3N0X2hhc2giLCJjc3Rfc2VhcmNoIiwiY3N0X3BhdGhuYW1lIiwiY3N0X3BvcnQiLCJjc3RfaG9zdG5hbWUiLCJjc3RfcHJvdG9jb2wiLCJjc3RfbGFzdE1vZGlmaWVkIiwiY3N0X3dlYmtpdFJlbGF0aXZlUGF0aCIsImNzdF9sZW5ndGhDb21wdXRhYmxlIiwiY3N0X2xvYWRlZCIsImNzdF90b3RhbCIsImNzdF9zaXplIiwiY3N0X2VuZGluZ3MiLCJjc3RfdXRmXzgiLCJjc3RfUmFuZ2VfRU5EX1RPX0VORCIsImNzdF9SYW5nZV9FTkRfVE9fU1RBUlQiLCJjc3RfUmFuZ2VfU1RBUlRfVE9fRU5EIiwiY3N0X1JhbmdlX1NUQVJUX1RPX1NUQVJUIiwiY3N0X2lzU2VjdXJlQ29udGV4dCIsImNvbXBpbGVkX3RvX3dhc20iLCJnZXQiLCJzZXRfdGFycmF5IiwiZHN0IiwiZmlsbCIsImNvcHlfd2l0aGluIiwic3ViIiwiZmluZCIsInNhdCIsIm9mX2p2IiwiZmluZF9pbmRleCIsImZvcl9hbGwiLCJleGlzdHMiLCJmaWx0ZXIiLCJpdGVyIiwibWFwIiwiZm9sZF9sZWZ0IiwiZm9sZF9yaWdodCIsInJldmVyc2UiLCJvZl90YXJyYXkiLCJvZl9pbnRfYXJyYXkiLCJvZl9mbG9hdF9hcnJheSIsInRvX2ludF9qc3RyIiwic2VwIiwidG9faGV4X2pzdHIiLCJoZXgiLCJ1aW50OF9vZl9idWZmZXIiLCJvZl9qc3RyIiwiZW5jIiwidG9fanN0ciIsImRlYyIsImV4biIsIm9mX2JpbmFyeV9qc3RyIiwidG9fYmluYXJ5X2pzdHIiLCJ0eXBlX3RvX2JpZ2FycmF5X2tpbmQiLCJ0eXBlX29mX2JpZ2FycmF5X2tpbmQiLCJlbmRpbmdzIiwiYmxvYiIsIm9mX2FycmF5X2J1ZmZlciIsInN0cmVhbSIsImNzdF9wcm9ncmVzcyIsImxvYWQiLCJwcm9ncmVzcyIsImZpbGVfcmVhZGVyIiwiY29udiIsInByb2dyZXNzX2RhdGEiLCJsb2FkZWQiLCJ0b3RhbCIsInJlYWRlciIsInNldF9mdXQiLCJvayIsInRleHQiLCJkYXRhX3VyaSIsImJsb2JfaW5pdCIsImxhc3RfbW9kaWZpZWRfbXMiLCJvZl9ibG9iIiwibmFtZSIsInJlbGF0aXZlX3BhdGgiLCJkYXRhX3V0Zl84X29mX2pzdHIiLCJkYXRhX3V0Zl84X3RvX2pzdHIiLCJkYXRhX29mX2JpbmFyeV9qc3RyIiwiZGF0YV90b19iaW5hcnlfanN0ciIsImVuY29kZSIsImJzIiwiZGVjb2RlIiwianNvbiIsImVuY29kZV9jb21wb25lbnQiLCJkZWNvZGVfY29tcG9uZW50IiwidXJsIiwiYmFzZSIsIndpdGhfdXJpIiwic2NoZW1lIiwiaG9zdCIsInBvcnQiLCJwYXRoIiwicXVlcnkiLCJmcmFnbWVudCIsInUiLCJhcmciLCJldGEiLCJxIiwicHJlZml4IiwicGF0aF9zZWdtZW50cyIsImRlY29kZV9zZWciLCJ3aXRoX3BhdGhfc2VnbWVudHMiLCJzZWdzIiwiZW5jb2RlX3NlZyIsInVzcCIsImlzX2VtcHR5IiwibWVtIiwiZmluZF9hbGwiLCJmb2xkIiwidmFsdWUiLCJvZl9hc3NvYyIsInRvX2Fzc29jIiwib2Zfb2JqIiwicXVlcnlfcGFyYW1zIiwid2l0aF9xdWVyeV9wYXJhbXMiLCJwcyIsImZyYWdtZW50X3BhcmFtcyIsIndpdGhfZnJhZ21lbnRfcGFyYW1zIiwiaW5wdXQiLCJyIiwic3RhcnRfaW5kZXgiLCJzdG9wX2luZGV4IiwiZm9sZF9ncm91cHMiLCJmb2xkX2dyb3VwX2luZGljZXMiLCJyYW5nZSIsIm9ial9lbnRyaWVzIiwianYiLCJmb2xkX25hbWVkX2dyb3VwcyIsImdyb3VwcyIsImVudHJpZXMiLCJlbnRyeSIsImZvbGRfbmFtZWRfZ3JvdXBfaW5kaWNlcyIsInJlZ2V4cCIsImVzY2FwZSIsImZsYWdzIiwiZXhlYyIsImZvbGRfbWF0Y2hlcyIsInJlcGxhY2UiLCJieSIsInJlcGxhY2VfYWxsIiwic2VhcmNoIiwic3BsaXQiLCJsaW1pdCIsInRlc3QiLCJsYXN0X2luZGV4Iiwic2V0X2xhc3RfaW5kZXgiLCJkb3RfYWxsIiwiZ2xvYmFsIiwiaGFzX2luZGljZXMiLCJpZ25vcmVfY2FzZSIsIm11bHRpbGluZSIsInNvdXJjZSIsInN0aWNreSIsInVuaWNvZGUiLCJ1bmljb2RlX3NldHMiLCJ2b2lkJCIsImlzX3ZvaWQiLCJpZiQiLCJhdCIsImlmX3NvbWUiLCJ0cnVlJCIsImludCIsImZsb2F0IiwidG9fcGFpciIsImFkZF9pZiIsImFkZF9pZl9zb21lIiwiYWNjZXNza2V5IiwiYWN0aW9uIiwiYXV0b2NvbXBsZXRlIiwiYXV0b2ZvY3VzIiwiY2hhcnNldCIsImNzdF9jaGVja2VkIiwiY2hlY2tlZCIsImNzdF9jbGFzcyIsImNsYXNzJCIsImNvbHMiLCJjb250ZW50IiwiY29udGVudGVkaXRhYmxlIiwiZGVmZXIiLCJkaXIiLCJkaXNhYmxlZCIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZm9yJCIsImNzdF9oaWRkZW4iLCJoaWRkZW4iLCJocmVmIiwiY3N0X2lkIiwibGFuZyIsImxpc3QiLCJtZWRpYSIsIm1ldGhvZCIsInBsYWNlaG9sZGVyIiwicmVsIiwicmVxdWlyZWQiLCJyb3dzIiwic2VsZWN0ZWQiLCJzcGVsbGNoZWNrIiwic3JjIiwiY3N0X3N0eWxlIiwic3R5bGUiLCJ0YWJpbmRleCIsInRpdGxlIiwiY3N0X3ZhbHVlIiwid3JhcCIsImdsb2JhbF9kb2N1bWVudCIsImRvY3VtZW50IiwiZ2xvYmFsX3Jvb3QiLCJlbF9saXN0X29mX25vZGVfbGlzdCIsIm5sIiwibGVuIiwiY3N0IiwiY3MiLCJzcyIsImNsc3MiLCJ0eHQiLCJzcCIsIm5ic3AiLCJpc190eHQiLCJpc19lbCIsInRhZ19uYW1lIiwiaGFzX3RhZ19uYW1lIiwidHh0X3RleHQiLCJ0ZXh0X2NvbnRlbnQiLCJmaW5kX2J5X2NsYXNzIiwicm9vdCIsImZpbmRfYnlfdGFnX25hbWUiLCJmaW5kX2ZpcnN0X2J5X3NlbGVjdG9yIiwic2VsIiwiZm9sZF9maW5kX2J5X3NlbGVjdG9yIiwicGFyZW50IiwiY2hpbGRyZW4iLCJvbmx5X2VscyIsInNldF9jaGlsZHJlbiIsInByZXBlbmRfY2hpbGRyZW4iLCJhcHBlbmRfY2hpbGRyZW4iLCJwcmV2aW91c19zaWJsaW5nIiwibmV4dF9zaWJsaW5nIiwiaW5zZXJ0X3NpYmxpbmdzIiwibG9jIiwic2V0X2F0IiwianZfdG9fYm9vbCIsImp2X3RvX2ludCIsImp2X3RvX2Zsb2F0IiwianZfdG9fanN0ciIsImJvb2wiLCJqc3RyIiwicHJvcCIsInNldF9wcm9wIiwic2V0X2NsYXNzIiwiY29tcHV0ZWRfc3R5bGUiLCJpbmxpbmVfc3R5bGUiLCJzZXRfaW5saW5lX3N0eWxlIiwiaW1wb3J0YW50IiwicHJpb3JpdHkiLCJyZW1vdmVfaW5saW5lX3N0eWxlIiwiaW5uZXJfeCIsImlubmVyX3kiLCJpbm5lcl93IiwiaW5uZXJfaCIsImJvdW5kX3giLCJib3VuZF95IiwiYm91bmRfdyIsImJvdW5kX2giLCJvZmZzZXRfdyIsIm9mZnNldF9oIiwib2Zmc2V0X2xlZnQiLCJvZmZzZXRfdG9wIiwib2Zmc2V0X3BhcmVudCIsInNjcm9sbF94Iiwic2Nyb2xsX3kiLCJzY3JvbGxfdyIsInNjcm9sbF9oIiwic2Nyb2xsX2ludG9fdmlldyIsImJlaGF2aW9yIiwiYWxpZ25fdiIsImFsaWduIiwib3B0aW9ucyIsImhhc19mb2N1cyIsInNldF9oYXNfZm9jdXMiLCJpc19sb2NraW5nX3BvaW50ZXIiLCJwb2ludGVybG9ja2NoYW5nZSIsInBvaW50ZXJsb2NrZXJyb3IiLCJyZXF1ZXN0X3BvaW50ZXJfbG9jayIsImxvY2tlZCIsImV2IiwiZXJyIiwiY2xpY2siLCJzZWxlY3RfdGV4dCIsImZ1bGxzY3JlZW5fb3B0cyIsIm5hdmlnYXRpb25fdWkiLCJyZXF1ZXN0X2Z1bGxzY3JlZW4iLCJmaWxlcyIsInZvaWRfY29ucyIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYmRpIiwiYmRvIiwiYmxvY2txdW90ZSIsImJvZHkiLCJiciIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29sIiwiY29sZ3JvdXAiLCJjb21tYW5kIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJlbWJlZCIsImZpZWxkc2V0IiwiZmlnY2FwdGlvbiIsImZpZ3VyZSIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5zIiwia2JkIiwia2V5Z2VuIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsImNzdF9saW5rIiwibGluayIsImNzdF9tYXJrIiwibWFyayIsIm1lbnUiLCJtZXRhIiwibWV0ZXIiLCJuYXYiLCJub3NjcmlwdCIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwcmUiLCJycCIsInJ0IiwicnVieSIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwiY3N0X3NlbGVjdCIsInNlbGVjdCIsInNtYWxsIiwic3BhbiIsInN0cm9uZyIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidWwiLCJ2YXIkIiwidmlkZW8iLCJ3YnIiLCJlbmRfdG9fZW5kIiwiZW5kX3RvX3N0YXJ0Iiwic3RhcnRfdG9fZW5kIiwic3RhcnRfdG9fc3RhcnQiLCJjbG9uZV9yYW5nZSIsImNvbGxhcHNlIiwiY29sbGFwc2VfdG9fc3RhcnQiLCJjb2xsYXBzZV90b19lbmQiLCJjb21wYXJlX2JvdW5kYXJ5X3BvaW50cyIsImhvdyIsImNvbXBhcmVfcG9pbnQiLCJlbCIsIm9mZnNldCIsImRlbGV0ZV9jb250ZW50cyIsImluc2VydF9ub2RlIiwiaW50ZXJzZWN0c19ub2RlIiwiaXNfcG9pbnRfaW5fcmFuZ2UiLCJzZWxlY3Rfbm9kZSIsInNlbGVjdF9ub2RlX2NvbnRlbnRzIiwic2V0X2VuZCIsInNldF9lbmRfYWZ0ZXIiLCJzZXRfZW5kX2JlZm9yZSIsInNldF9zdGFydCIsInNldF9zdGFydF9hZnRlciIsInNldF9zdGFydF9iZWZvcmUiLCJzdXJyb3VuZF9jb250ZW50cyIsInRvX3N0cmluZyIsImNvbGxhcHNlZCIsImNvbW1vbl9hbmNlc3Rvcl9jb250YWluZXIiLCJlbmRfY29udGFpbmVyIiwiZW5kX29mZnNldCIsInN0YXJ0X2NvbnRhaW5lciIsInN0YXJ0X29mZnNldCIsImFzX3RhcmdldCIsImFjdGl2ZV9lbCIsImZpbmRfZWxfYnlfaWQiLCJmaW5kX2Vsc19ieV9uYW1lIiwicmVmZXJyZXIiLCJzZXRfdGl0bGUiLCJ2aXNpYmlsaXR5X3N0YXRlIiwicG9pbnRlcl9sb2NrX2VsZW1lbnQiLCJleGl0X3BvaW50ZXJfbG9jayIsImZ1bGxzY3JlZW5fYXZhaWxhYmxlIiwiZnVsbHNjcmVlbl9lbGVtZW50IiwiZXhpdF9mdWxsc2NyZWVuIiwiYWJvcnRlZCIsImNvbnRyb2xsZXIiLCJzaWduYWwiLCJhYm9ydCIsImNhbGwiLCJtZXRoIiwibXNnIiwibXNnX3RvX2p2X2FycmF5IiwidnMiLCJsb2ciLCJ0cmFjZSIsIndhcm4iLCJpbmZvIiwiZGVidWciLCJhc3NlcnQiLCJncm91cF9lbmQiLCJncm91cCIsImNsb3NlZCIsImNvdW50IiwiY291bnRfcmVzZXQiLCJ0aW1lX2xvZyIsInRpbWVfZW5kIiwicHJvZmlsZSIsInByb2ZpbGVfZW5kIiwidGltZV9zdGFtcCIsImxvZ19yZXN1bHQiLCJsb2dfaWZfZXJyb3IiLCJ1c2UiLCJlcnJvcl9tc2ciLCJpbm5lcl93aWR0aCIsImlubmVyX2hlaWdodCIsImRldmljZV9waXhlbF9yYXRpbyIsIm1hdGNoZXNfbWVkaWEiLCJwcmVmZXJzX2RhcmtfY29sb3Jfc2NoZW1lIiwib3BlbiIsImZlYXR1cmVzIiwiY2xvc2UiLCJwcmludCIsInJlbG9hZCIsInNldF9sb2NhdGlvbiIsImgiLCJzY3JvbGxfcmVzdG9yYXRpb24iLCJzZXRfc2Nyb2xsX3Jlc3RvcmF0aW9uIiwiYmFjayIsImZvcndhcmQiLCJnbyIsInN0YXRlIiwicHVzaF9zdGF0ZSIsInVyaSIsInJlcGxhY2Vfc3RhdGUiLCJoaXN0b3J5IiwibGFuZ3VhZ2VzIiwibWF4X3RvdWNoX3BvaW50cyIsIm9ubGluZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsImR1cmF0aW9uIiwidG9fanNvbiIsImFzX2VudHJ5IiwiaW5pdGlhdG9yX3R5cGUiLCJuZXh0X2hvcF9wcm90b2NvbCIsIndvcmtlcl9zdGFydCIsInJlZGlyZWN0X3N0YXJ0IiwicmVkaXJlY3RfZW5kIiwiZmV0Y2hfc3RhcnQiLCJkb21haW5fbG9va3VwX3N0YXJ0IiwiZG9tYWluX2xvb2t1cF9lbmQiLCJjb25uZWN0X3N0YXJ0IiwiY29ubmVjdF9lbmQiLCJzZWN1cmVfY29ubmVjdGlvbl9zdGFydCIsInJlcXVlc3Rfc3RhcnQiLCJyZXNwb25zZV9zdGFydCIsInJlc3BvbnNlX2VuZCIsInRyYW5zZmVyX3NpemUiLCJlbmNvZGVkX2JvZHlfc2l6ZSIsImRlY29kZWRfYm9keV9zaXplIiwiYXNfcmVzb3VyY2VfdGltaW5nIiwidW5sb2FkX2V2ZW50X3N0YXJ0IiwidW5sb2FkX2V2ZW50X2VuZCIsImRvbV9pbnRlcmFjdGl2ZSIsImRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9zdGFydCIsImRvbV9jb250ZW50X2xvYWRlZF9ldmVudF9lbmQiLCJkb21fY29tcGxldGUiLCJsb2FkX2V2ZW50X3N0YXJ0IiwibG9hZF9ldmVudF9lbmQiLCJyZWRpcmVjdF9jb3VudCIsImFzX25hdmlnYXRpb25fdGltaW5nIiwidGltZV9vcmlnaW5fbXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY2xlYXJfcmVzb3VyY2VfdGltaW5ncyIsImdldF9lbnRyaWVzIiwibWVhc3VyZSIsIm5vd19tcyIsImNvbnNvbGUiLCJuYXZpZ2F0b3IiLCJwZXJmb3JtYW5jZSIsIndpbmRvdyIsImlzX3NlY3VyZV9jb250ZXh0Iiwic2V0X3RpbWVvdXQiLCJtcyIsInNldF9pbnRlcnZhbCIsInN0b3BfdGltZXIiLCJ0aWQiLCJyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSIsImNhbmNlbF9hbmltYXRpb25fZnJhbWUiLCJmaWQiLCJjc3Rf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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkF4Zm5EO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQXdmbUQ7QUFBQTtBQUFBLEVEdndFakUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjozNzY1NCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJicnIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2Jyci9icnJfY2FudmFzLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDb3B5cmlnaHQgKGMpIDIwMjAgVGhlIGJyciBwcm9ncmFtbWVycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxub3BlbiBCcnJcblxubW9kdWxlIE1hdHJpeDQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgaXNfMmQgbSA9IEp2LkJvb2wuZ2V0IG0gXCJpczJEXCJcbiAgbGV0IGlzX2lkZW50aXR5IG0gPSBKdi5Cb29sLmdldCBtIFwiaXNJZGVudGl0eVwiXG4gIGxldCBpbnZlcnNlIG0gPSBKdi5jYWxsIG0gXCJpbnZlcnNlXCIgW3x8XVxuICBsZXQgbXVsdGlwbHkgbSBtJyA9IEp2LmNhbGwgbSBcIm11bHRpcGx5XCIgW3xtJ3xdXG5cbiAgbGV0IG0xMSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTFcIlxuICBsZXQgbTEyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0xMlwiXG4gIGxldCBtMTMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTEzXCJcbiAgbGV0IG0xNCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMTRcIlxuICBsZXQgbTIxIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yMVwiXG4gIGxldCBtMjIgbSA9IEp2LkZsb2F0LmdldCBtIFwibTIyXCJcbiAgbGV0IG0yMyBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMjNcIlxuICBsZXQgbTI0IG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0yNFwiXG4gIGxldCBtMzEgbSA9IEp2LkZsb2F0LmdldCBtIFwibTMxXCJcbiAgbGV0IG0zMiBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtMzJcIlxuICBsZXQgbTMzIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm0zM1wiXG4gIGxldCBtMzQgbSA9IEp2LkZsb2F0LmdldCBtIFwibTM0XCJcbiAgbGV0IG00MSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDFcIlxuICBsZXQgbTQyIG0gPSBKdi5GbG9hdC5nZXQgbSBcIm00MlwiXG4gIGxldCBtNDMgbSA9IEp2LkZsb2F0LmdldCBtIFwibTQzXCJcbiAgbGV0IG00NCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJtNDRcIlxuICBsZXQgYSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhXCJcbiAgbGV0IGIgbSA9IEp2LkZsb2F0LmdldCBtIFwiYlwiXG4gIGxldCBjIG0gPSBKdi5GbG9hdC5nZXQgbSBcImNcIlxuICBsZXQgZCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJkXCJcbiAgbGV0IGUgbSA9IEp2LkZsb2F0LmdldCBtIFwiZVwiXG4gIGxldCBmIG0gPSBKdi5GbG9hdC5nZXQgbSBcImZcIlxuXG4gIGxldCBkb21tYXRyaXhybyA9IEp2LmdldCBKdi5nbG9iYWwgXCJET01NYXRyaXhSZWFkT25seVwiXG5cbiAgbGV0IHRvX2Zsb2F0MzJfYXJyYXkgbSA9IFRhcnJheS5vZl9qdiBAQCBKdi5jYWxsIG0gXCJ0b0Zsb2F0MzJBcnJheVwiIFt8fF1cbiAgbGV0IG9mX2Zsb2F0MzJfYXJyYXkgYSA9XG4gICAgSnYuY2FsbCBkb21tYXRyaXhybyBcImZyb21GbG9hdDMyQXJyYXlcIiBbfCBUYXJyYXkudG9fanYgYSB8XVxuXG4gIGxldCB0b19mbG9hdDY0X2FycmF5IG0gPSBUYXJyYXkub2ZfanYgQEAgSnYuY2FsbCBtIFwidG9GbG9hdDY0QXJyYXlcIiBbfHxdXG4gIGxldCBvZl9mbG9hdDY0X2FycmF5IGEgPVxuICAgIEp2LmNhbGwgZG9tbWF0cml4cm8gXCJmcm9tRmxvYXQ2NEFycmF5XCIgW3wgVGFycmF5LnRvX2p2IGEgfF1cbmVuZFxuXG5tb2R1bGUgVmVjNCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuICBsZXQgdjQgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiRE9NUG9pbnRSZWFkT25seVwiXG4gIGxldCB2IH54IH55IH56IH53ID1cbiAgICBKdi5uZXcnIHY0IEp2Llt8b2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgejsgb2ZfZmxvYXQgdzt8XVxuXG4gIGxldCB0ciBtIHYgPSBKdi5jYWxsIHYgXCJtYXRyaXhUcmFuc2Zvcm1cIiBbfCBNYXRyaXg0LnRvX2p2IG0gfF1cbiAgbGV0IHRvX2pzb24gdiA9IEp2LmNhbGwgdiBcInRvSlNPTlwiIFt8fF1cbiAgbGV0IHggdiA9IEp2LkZsb2F0LmdldCB2IFwieFwiXG4gIGxldCB5IHYgPSBKdi5GbG9hdC5nZXQgdiBcInlcIlxuICBsZXQgeiB2ID0gSnYuRmxvYXQuZ2V0IHYgXCJ6XCJcbiAgbGV0IHcgdiA9IEp2LkZsb2F0LmdldCB2IFwid1wiXG5lbmRcblxubW9kdWxlIENhbnZhcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBKdi50XG4gIGluY2x1ZGUgKEp2LklkIDogSnYuQ09OViB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBjcmVhdGUgP2QgP2F0ID8odyA9IDApID8oaCA9IDApIGNzID1cbiAgICBsZXQgYyA9IEVsLnRvX2p2IEBAIEVsLmNhbnZhcyA/ZCA/YXQgY3MgaW5cbiAgICBKdi5JbnQuc2V0IGMgXCJ3aWR0aFwiIHc7IEp2LkludC5zZXQgYyBcImhlaWdodFwiIGg7XG4gICAgY1xuXG4gIGxldCBvZl9lbCBlID1cbiAgICBpZiBFbC5oYXNfdGFnX25hbWUgRWwuTmFtZS5jYW52YXMgZSB0aGVuIChFbC50b19qdiBlKSBlbHNlXG4gICAgbGV0IGV4cCA9IEpzdHIudiBcIkV4cGVjdGVkIGNhbnZhcyBlbGVtZW50IGJ1dCBmb3VuZDogXCIgaW5cbiAgICBKdi50aHJvdyAoSnN0ci5hcHBlbmQgZXhwIChFbC50YWdfbmFtZSBlKSlcblxuICBsZXQgdG9fZWwgPSBFbC5vZl9qdlxuXG4gICgqIERpbWVuc2lvbnMgKilcblxuICBsZXQgdyBjID0gSnYuSW50LmdldCBjIFwid2lkdGhcIlxuICBsZXQgaCBjID0gSnYuSW50LmdldCBjIFwiaGVpZ2h0XCJcbiAgbGV0IHNldF93IGMgdyA9IEp2LkludC5zZXQgYyBcIndpZHRoXCIgd1xuICBsZXQgc2V0X2ggYyBoID0gSnYuSW50LnNldCBjIFwiaGVpZ2h0XCIgaFxuICBsZXQgc2V0X3NpemVfdG9fbGF5b3V0X3NpemUgPyhoaWRwaSA9IHRydWUpIGMgPVxuICAgIGxldCBkcHIgPSBpZiBoaWRwaSB0aGVuIFdpbmRvdy5kZXZpY2VfcGl4ZWxfcmF0aW8gRy53aW5kb3cgZWxzZSAxLjAgaW5cbiAgICBsZXQgY3cgPSBGbG9hdC50b19pbnQgQEAgRmxvYXQuY2VpbCAoZHByICouIEVsLmlubmVyX3cgKEVsLm9mX2p2IGMpKSBpblxuICAgIGxldCBjaCA9IEZsb2F0LnRvX2ludCBAQCBGbG9hdC5jZWlsIChkcHIgKi4gRWwuaW5uZXJfaCAoRWwub2ZfanYgYykpIGluXG4gICAgaWYgdyBjIDw+IGN3IHx8IGggYyA8PiBjaFxuICAgIHRoZW4gKHNldF93IGMgY3c7IHNldF9oIGMgY2gpXG5cbiAgKCogQ29udmVydGluZyAqKVxuXG4gIHR5cGUgaW1hZ2VfZW5jb2RlID0gSnYudCAoKiBJbWFnZUVuY29kZU9wdGlvbnMgb2JqZWN0LiAqKVxuICBsZXQgaW1hZ2VfZW5jb2RlID8odHlwZScgPSBKc3RyLnYgXCJpbWFnZS9wbmdcIikgP3F1YWxpdHkgKCkgPVxuICAgIGxldCBvID0gSnYub2JqIFt8fF0gaW5cbiAgICBKdi5Kc3RyLnNldCBvIFwidHlwZVwiIHR5cGUnO1xuICAgIEp2LkZsb2F0LnNldF9pZl9zb21lIG8gXCJxdWFsaXR5XCIgcXVhbGl0eTtcbiAgICBvXG5cbiAgbGV0IGVuYyA/ZW5jb2RlIGMgbWV0aCBhcmcgPVxuICAgIGxldCBlbmNvZGUgPSBtYXRjaCBlbmNvZGUgd2l0aCBOb25lIC0+IGltYWdlX2VuY29kZSAoKSB8IFNvbWUgZSAtPiBlIGluXG4gICAgbGV0IHQgPSBKdi5nZXQgZW5jb2RlIFwidHlwZVwiIGluXG4gICAgbGV0IHEgPSBKdi5maW5kIGVuY29kZSBcInF1YWxpdHlcIiBpblxuICAgIGxldCBhcmdzID0gbWF0Y2ggYXJnIHdpdGhcbiAgICB8IE5vbmUgLT4gKG1hdGNoIHEgd2l0aCBOb25lIC0+IFt8dHxdIHwgU29tZSBxIC0+IFt8dDsgcXxdKVxuICAgIHwgU29tZSBhIC0+IChtYXRjaCBxIHdpdGggTm9uZSAtPiBbfGE7IHR8XSB8IFNvbWUgcSAtPiBbfCBhOyB0OyBxfF0pXG4gICAgaW5cbiAgICBKdi5jYWxsIGMgbWV0aCBhcmdzXG5cbiAgbGV0IHRvX2RhdGFfdXJsID9lbmNvZGUgYyA9IG1hdGNoIGVuYyBjIFwidG9EYXRhVVJMXCIgTm9uZSB3aXRoXG4gIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gRXJyb3IgZVxuICB8IHYgLT4gT2sgKEp2LnRvX2pzdHIgdilcblxuICBsZXQgdG9fYmxvYiA/ZW5jb2RlIGMgPVxuICAgIGxldCBmdXQsIHNldCA9IEZ1dC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgY2IgYmxvYiA9IHNldCAoT2sgKEp2LnRvX29wdGlvbiBCbG9iLm9mX2p2IGJsb2IpKSBpblxuICAgIG1hdGNoIGVuYyBjIFwidG9CbG9iXCIgKFNvbWUgKEp2LmNhbGxiYWNrIH5hcml0eToxIGNiKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEp2LkVycm9yIGUgLT4gc2V0IChFcnJvciBlKTsgZnV0XG4gICAgfCBfIC0+IGZ1dFxuXG4gIGxldCBjYXB0dXJlX3N0cmVhbSB+aHogYyA9XG4gICAgbGV0IGFyZ3MgPSBtYXRjaCBoeiB3aXRoIE5vbmUgLT4gW3x8XSB8IFNvbWUgaHogLT4gW3xKdi5vZl9pbnQgaHp8XSBpblxuICAgIEJycl9pby5NZWRpYS5TdHJlYW0ub2ZfanYgQEAgSnYuY2FsbCBjIFwiY2FwdHVyZVN0cnNlYW1cIiBhcmdzXG5lbmRcblxubW9kdWxlIEMyZCA9IHN0cnVjdFxuXG4gICgqIEVudW1lcmF0aW9ucyAqKVxuXG4gIG1vZHVsZSBGaWxsX3J1bGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbm9uemVybyA9IEpzdHIudiBcIm5vbnplcm9cIlxuICAgIGxldCBldmVub2RkID0gSnN0ci52IFwiZXZlbm9kZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBsb3cgPSBKc3RyLnYgXCJsb3dcIlxuICAgIGxldCBtZWRpdW0gPSBKc3RyLnYgXCJtZWRpdW1cIlxuICAgIGxldCBoaWdoID0gSnN0ci52IFwiaGlnaFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBMaW5lX2NhcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuICAgIGxldCBidXR0ID0gSnN0ci52IFwiYnV0dFwiXG4gICAgbGV0IHJvdW5kID0gSnN0ci52IFwicm91bmRcIlxuICAgIGxldCBzcXVhcmUgPSBKc3RyLnYgXCJzcXVhcmVcIlxuICBlbmRcblxuICBtb2R1bGUgTGluZV9qb2luID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHJvdW5kID0gSnN0ci52IFwicm91bmRcIlxuICAgIGxldCBiZXZlbCA9IEpzdHIudiBcImJldmVsXCJcbiAgICBsZXQgbWl0ZXIgPSBKc3RyLnYgXCJtaXRlclwiXG4gIGVuZFxuXG4gIG1vZHVsZSBUZXh0X2FsaWduID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHN0YXJ0ID0gSnN0ci52IFwic3RhcnRcIlxuICAgIGxldCBlbmQnID0gSnN0ci52IFwiZW5kXCJcbiAgICBsZXQgbGVmdCA9IEpzdHIudiBcImxlZnRcIlxuICAgIGxldCByaWdodCA9IEpzdHIudiBcInJpZ2h0XCJcbiAgICBsZXQgY2VudGVyID0gSnN0ci52IFwiY2VudGVyXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFRleHRfYmFzZWxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgdG9wID0gSnN0ci52IFwidG9wXCJcbiAgICBsZXQgaGFuZ2luZyA9IEpzdHIudiBcImhhbmdpbmdcIlxuICAgIGxldCBtaWRkbGUgPSBKc3RyLnYgXCJtaWRkbGVcIlxuICAgIGxldCBhbHBoYWJldGljID0gSnN0ci52IFwiYWxwaGFiZXRpY1wiXG4gICAgbGV0IGlkZW9ncmFwaGljID0gSnN0ci52IFwiaWRlb2dyYXBoaWNcIlxuICAgIGxldCBib3R0b20gPSBKc3RyLnYgXCJib3R0b21cIlxuICBlbmRcblxuICBtb2R1bGUgVGV4dF9kaXJlY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKc3RyLnRcbiAgICBsZXQgbHRyID0gSnN0ci52IFwibHRyXCJcbiAgICBsZXQgcnRsID0gSnN0ci52IFwicnRsXCJcbiAgICBsZXQgaW5oZXJpdCcgPSBKc3RyLnYgXCJpbmhlcml0XCJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbXBvc2l0ZV9vcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEpzdHIudFxuXG4gICAgbGV0IG5vcm1hbCA9IEpzdHIudiBcIm5vcm1hbFwiXG4gICAgbGV0IG11bHRpcGx5ID0gSnN0ci52IFwibXVsdGlwbHlcIlxuICAgIGxldCBzY3JlZW4gPSBKc3RyLnYgXCJzY3JlZW5cIlxuICAgIGxldCBvdmVybGF5ID0gSnN0ci52IFwib3ZlcmxheVwiXG4gICAgbGV0IGRhcmtlbiA9IEpzdHIudiBcImRhcmtlblwiXG4gICAgbGV0IGxpZ2h0ZW4gPSBKc3RyLnYgXCJsaWdodGVuXCJcbiAgICBsZXQgY29sb3JfZG9kZ2UgPSBKc3RyLnYgXCJjb2xvci1kb2RnZVwiXG4gICAgbGV0IGNvbG9yX2J1cm4gPSBKc3RyLnYgXCJjb2xvci1idXJuXCJcbiAgICBsZXQgaGFyZF9saWdodCA9IEpzdHIudiBcImhhcmQtbGlnaHRcIlxuICAgIGxldCBzb2Z0X2xpZ2h0ID0gSnN0ci52IFwic29mdC1saWdodFwiXG4gICAgbGV0IGRpZmZlcmVuY2UgPSBKc3RyLnYgXCJkaWZmZXJlbmNlXCJcbiAgICBsZXQgZXhjbHVzaW9uID0gSnN0ci52IFwiZXhjbHVzaW9uXCJcbiAgICBsZXQgaHVlID0gSnN0ci52IFwiaHVlXCJcbiAgICBsZXQgc2F0dXJhdGlvbiA9IEpzdHIudiBcInNhdHVyYXRpb25cIlxuICAgIGxldCBjb2xvciA9IEpzdHIudiBcImNvbG9yXCJcbiAgICBsZXQgbHVtaW5vc2l0eSA9IEpzdHIudiBcImx1bWlub3NpdHlcIlxuICAgIGxldCBjbGVhciA9IEpzdHIudiBcImNsZWFyXCJcbiAgICBsZXQgY29weSA9IEpzdHIudiBcImNvcHlcIlxuICAgIGxldCBzb3VyY2Vfb3ZlciA9IEpzdHIudiBcInNvdXJjZS1vdmVyXCJcbiAgICBsZXQgZGVzdGluYXRpb25fb3ZlciA9IEpzdHIudiBcImRlc3RpbmF0aW9uLW92ZXJcIlxuICAgIGxldCBzb3VyY2VfaW4gPSBKc3RyLnYgXCJzb3VyY2UtaW5cIlxuICAgIGxldCBkZXN0aW5hdGlvbl9pbiA9IEpzdHIudiBcImRlc3RpbmF0aW9uLWluXCJcbiAgICBsZXQgc291cmNlX291dCA9IEpzdHIudiBcInNvdXJjZS1vdXRcIlxuICAgIGxldCBkZXN0aW5hdGlvbl9vdXQgPSBKc3RyLnYgXCJkZXN0aW5hdGlvbi1vdXRcIlxuICAgIGxldCBzb3VyY2VfYXRvcCA9IEpzdHIudiBcInNvdXJjZS1hdG9wXCJcbiAgICBsZXQgZGVzdGluYXRpb25fYXRvcCA9IEpzdHIudiBcImRlc3RpbmF0aW9uLWF0b3BcIlxuICAgIGxldCB4b3IgPSBKc3RyLnYgXCJ4b3JcIlxuICAgIGxldCBsaWdodGVyID0gSnN0ci52IFwibGlnaHRlclwiXG4gICAgbGV0IHBsdXNfZGFya2VyID0gSnN0ci52IFwicGx1cy1kYXJrZXJcIlxuICAgIGxldCBwbHVzX2xpZ2h0ZXIgPSBKc3RyLnYgXCJwbHVzLWxpZ2h0ZXJcIlxuICBlbmRcblxuICBtb2R1bGUgUmVwZWF0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSnN0ci50XG4gICAgbGV0IHh5ID0gSnN0ci52IFwicmVwZWF0XCJcbiAgICBsZXQgeCA9IEpzdHIudiBcInJlcGVhdC14XCJcbiAgICBsZXQgeSA9IEpzdHIudiBcInJlcGVhdC15XCJcbiAgICBsZXQgbm8gPSBKc3RyLnYgXCJuby1yZXBlYXRcIlxuICBlbmRcblxuICBtb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgcGF0aCA9IEp2LmdldCBKdi5nbG9iYWwgXCJQYXRoMkRcIlxuICAgIGxldCBjcmVhdGUgKCkgPSBKdi5uZXcnIHBhdGggW3x8XVxuICAgIGxldCBvZl9zdmcgc3ZnID0gSnYubmV3JyBwYXRoIFt8IEp2Lm9mX2pzdHIgc3ZnIHxdXG4gICAgbGV0IG9mX3BhdGggcCA9IEp2Lm5ldycgcGF0aCBbfCBwIHxdXG4gICAgbGV0IGFkZCA/dHIgcCBwJyA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiYWRkUGF0aFwiXG4gICAgICAgIChtYXRjaCB0ciB3aXRoIE5vbmUgLT4gW3xwJ3xdIHwgU29tZSB0IC0+IFt8cCc7IE1hdHJpeDQudG9fanYgdHxdKVxuXG4gICAgbGV0IGNsb3NlIHAgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImNsb3NlUGF0aFwiIFt8fF1cblxuICAgIGxldCBtb3ZlX3RvIHAgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcIm1vdmVUb1wiIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICAgIGxldCBsaW5lX3RvIHAgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImxpbmVUb1wiIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cblxuICAgIGxldCBxY3VydmVfdG8gcCB+Y3ggfmN5IH54IH55ID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIHAgXCJxdWFkcmF0aWNDdXJ2ZVRvXCJcbiAgICAgICAgSnYuW3wgb2ZfZmxvYXQgY3g7IG9mX2Zsb2F0IGN5OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgICBsZXQgY2N1cnZlX3RvIHAgfmN4IH5jeSB+Y3gnIH5jeScgfnggfnkgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImJlemllckN1cnZlVG9cIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IGN4Jzsgb2ZfZmxvYXQgY3knO1xuICAgICAgICAgICAgICBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICAgIGxldCBhcmNfdG8gcCB+Y3ggfmN5IH5jeCcgfmN5JyB+ciA9XG4gICAgICBpZ25vcmUgQEAgSnYuY2FsbCBwIFwiYXJjVG9cIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IGN4Jzsgb2ZfZmxvYXQgY3knOyBvZl9mbG9hdCByfF1cblxuICAgIGxldCBhcmMgPyhhbnRpY2xvY2t3aXNlID0gZmFsc2UpIHAgfmN4IH5jeSB+ciB+c3RhcnQgfnN0b3AgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImFyY1wiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IGN4OyBvZl9mbG9hdCBjeTsgb2ZfZmxvYXQgcjsgb2ZfZmxvYXQgc3RhcnQ7XG4gICAgICAgICAgICAgIG9mX2Zsb2F0IHN0b3A7IG9mX2Jvb2wgYW50aWNsb2Nrd2lzZSB8XVxuXG4gICAgbGV0IHJlY3QgcCB+eCB+eSB+dyB+aCA9XG4gICAgICBpZ25vcmUgQEAgIEp2LmNhbGwgcCBcInJlY3RcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB3OyBvZl9mbG9hdCBoIHxdXG5cbiAgICBsZXQgZWxsaXBzZSA/KGFudGljbG9ja3dpc2UgPSBmYWxzZSkgcCB+Y3ggfmN5IH5yeCB+cnkgfnJvdCB+c3RhcnQgfnN0b3AgPVxuICAgICAgaWdub3JlIEBAIEp2LmNhbGwgcCBcImVsbGlwc2VcIlxuICAgICAgICBKdi5bfCBvZl9mbG9hdCBjeDsgb2ZfZmxvYXQgY3k7IG9mX2Zsb2F0IHJ4OyBvZl9mbG9hdCByeTsgb2ZfZmxvYXQgcm90O1xuICAgICAgICAgICAgICBvZl9mbG9hdCBzdGFydDsgb2ZfZmxvYXQgc3RvcDsgb2ZfYm9vbCBhbnRpY2xvY2t3aXNlIHxdXG5cbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgKCogSW1hZ2Ugc291cmNlcyAqKVxuXG4gIHR5cGUgaW1hZ2Vfc3JjID0gSnYudFxuICBsZXQgaW1hZ2Vfc3JjX29mX2VsID0gRWwudG9fanZcbiAgbGV0IGltYWdlX3NyY19vZl9qdiA9IEZ1bi5pZFxuXG4gICgqIEF0dHJpYnV0ZXMgKilcblxuICB0eXBlIGF0dHJzID0gSnYudFxuXG4gIGxldCBjcmVhdGVfYXR0cnNcbiAgICAgID9hbHBoYSA/Y29sb3Jfc3BhY2UgP2Rlc3luY2hyb25pemVkID93aWxsX3JlYWRfZnJlcXVlbnRseSAoKVxuICAgID1cbiAgICBsZXQgbyA9IEp2Lm9iaiBbfHxdIGluXG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiYWxwaGFcIiBhbHBoYTtcbiAgICBKdi5Kc3RyLnNldF9pZl9zb21lIG8gXCJjb2xvclNwYWNlXCIgY29sb3Jfc3BhY2U7XG4gICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiZGVzeW5jaHJvbml6ZWRcIiBkZXN5bmNocm9uaXplZDtcbiAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJ3aWxsUmVhZEZyZXF1ZW50bHlcIiB3aWxsX3JlYWRfZnJlcXVlbnRseTtcbiAgICBvXG5cbiAgbGV0IGF0dHJzX2FscGhhIG8gPSBKdi5Cb29sLmdldCBvIFwiYWxwaGFcIlxuICBsZXQgYXR0cnNfY29sb3Jfc3BhY2UgbyA9XG4gICAgKCogVGhpcyBjYW4gYmUgZ2V0IG9uY2UgRkYgc3VwcG9ydHMgdGhlIHByb3BlcnR5LiAqKVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpKc3RyLmVtcHR5IChKdi5Kc3RyLmZpbmQgbyBcImNvbG9yU3BhY2VcIilcblxuICBsZXQgYXR0cnNfZGVzeW5jaHJvbml6ZWQgbyA9IEp2LkJvb2wuZ2V0IG8gXCJkZXN5bmNocm9uaXplZFwiXG4gIGxldCBhdHRyc193aWxsX3JlYWRfZnJlcXVlbnRseSBvID0gSnYuQm9vbC5nZXQgbyBcIndpbGxSZWFkRnJlcXVlbnRseVwiXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgbGV0IGdldF9jb250ZXh0ID8oYXR0cnMgPSBKdi51bmRlZmluZWQpIGNudiA9XG4gICAgSnYuY2FsbCBjbnYgXCJnZXRDb250ZXh0XCIgSnYuW3wgb2Zfc3RyaW5nIFwiMmRcIjsgYXR0cnMgfF1cblxuICBsZXQgY3JlYXRlID0gZ2V0X2NvbnRleHRcblxuICBsZXQgY2FudmFzIGMgPSBKdi5maW5kX21hcCBDYW52YXMub2ZfanYgYyBcImNhbnZhc1wiXG4gIGxldCBhdHRycyBjID0gSnYuY2FsbCBjIFwiZ2V0Q29udGV4dEF0dHJpYnV0ZXNcIiBbfHxdXG4gIGxldCBzYXZlIGMgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2F2ZVwiIFt8fF1cbiAgbGV0IHJlc3RvcmUgYyA9IGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXN0b3JlXCIgW3x8XVxuXG4gICgqIEFudGlhbGlhc2luZyAqKVxuXG4gIGxldCBpbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCBjID0gSnYuQm9vbC5nZXQgYyBcImltYWdlU21vb3RoaW5nRW5hYmxlZFwiXG4gIGxldCBzZXRfaW1hZ2Vfc21vb3RoaW5nX2VuYWJsZWQgYyBiID0gSnYuQm9vbC5zZXQgYyBcImltYWdlU21vb3RoaW5nRW5hYmxlZFwiIGJcbiAgbGV0IGltYWdlX3Ntb290aGluZ19xdWFsaXR5IGMgPSBKdi5Kc3RyLmdldCBjIFwiaW1hZ2VTbW9vdGhpbmdRdWFsaXR5XCJcbiAgbGV0IHNldF9pbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSBjIHYgPSBKdi5Kc3RyLnNldCBjIFwiaW1hZ2VTbW9vdGhpbmdRdWFsaXR5XCIgdlxuXG4gICgqIENvbXBvc2l0aW5nICopXG5cbiAgbGV0IGdsb2JhbF9hbHBoYSBjID0gSnYuRmxvYXQuZ2V0IGMgXCJnbG9iYWxBbHBoYVwiXG4gIGxldCBzZXRfZ2xvYmFsX2FscGhhIGMgYSA9IEp2LkZsb2F0LnNldCBjIFwiZ2xvYmFsQWxwaGFcIiBhXG4gIGxldCBnbG9iYWxfY29tcG9zaXRlX29wIGMgPSBKdi5Kc3RyLmdldCBjIFwiZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uXCJcbiAgbGV0IHNldF9nbG9iYWxfY29tcG9zaXRlX29wIGMgbyA9IEp2LkpzdHIuc2V0IGMgXCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb25cIiBvXG4gIGxldCBmaWx0ZXIgYyA9IEp2LkpzdHIuZ2V0IGMgXCJmaWx0ZXJcIlxuICBsZXQgc2V0X2ZpbHRlciBjIGYgPSBKdi5Kc3RyLnNldCBjIFwiZmlsdGVyXCIgZlxuXG4gICgqIFRyYW5zZm9ybXMgKilcblxuICBsZXQgZ2V0X3RyYW5zZm9ybSBjID0gTWF0cml4NC5vZl9qdiBAQCBKdi5jYWxsIGMgXCJnZXRUcmFuc2Zvcm1cIiBbfHxdXG4gIGxldCBzZXRfdHJhbnNmb3JtIGMgbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNldFRyYW5zZm9ybVwiIFt8IE1hdHJpeDQudG9fanYgbSB8XVxuXG4gIGxldCBzZXRfdHJhbnNmb3JtJyBjdHggfmEgfmIgfmMgfmQgfmUgfmYgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGN0eCBcInNldFRyYW5zZm9ybVwiXG4gICAgICBKdi5bfCBvZl9mbG9hdCBhOyBvZl9mbG9hdCBiOyBvZl9mbG9hdCBjOyBvZl9mbG9hdCBkO1xuICAgICAgICAgICAgb2ZfZmxvYXQgZTsgb2ZfZmxvYXQgZiB8XVxuXG4gIGxldCByZXNldF90cmFuc2Zvcm0gYyA9IGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJyZXNldFRyYW5zZm9ybVwiIFt8fF1cbiAgbGV0IHRyYW5zZm9ybSBjIG0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgKE1hdHJpeDQuYSBtKTsgb2ZfZmxvYXQgKE1hdHJpeDQuYiBtKTtcbiAgICAgICAgICAgIG9mX2Zsb2F0IChNYXRyaXg0LmMgbSk7IG9mX2Zsb2F0IChNYXRyaXg0LmQgbSk7XG4gICAgICAgICAgICBvZl9mbG9hdCAoTWF0cml4NC5lIG0pOyBvZl9mbG9hdCAoTWF0cml4NC5mIG0pIHxdXG5cbiAgbGV0IHRyYW5zZm9ybScgY3R4IH5hIH5iIH5jIH5kIH5lIH5mID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjdHggXCJ0cmFuc2Zvcm1cIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgYTsgb2ZfZmxvYXQgYjsgb2ZfZmxvYXQgYzsgb2ZfZmxvYXQgZDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IGU7IG9mX2Zsb2F0IGYgfF1cblxuICBsZXQgdHJhbnNsYXRlIGMgfnggfnkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2xhdGVcIiBKdi5bfCBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5IHxdXG5cbiAgbGV0IHJvdGF0ZSBjIHIgPSBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicm90YXRlXCIgSnYuW3wgb2ZfZmxvYXQgciB8XVxuICBsZXQgc2NhbGUgYyB+c3ggfnN5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2NhbGVcIiBKdi5bfCBvZl9mbG9hdCBzeDsgb2ZfZmxvYXQgc3kgfF1cblxuICAoKiBTdHlsZSBmaWxscyBhbmQgc3Ryb2tlcyAqKVxuXG4gIHR5cGUgc3R5bGUgPSBKdi50XG4gIGxldCBzZXRfc3Ryb2tlX3N0eWxlIGMgcyA9IEp2LnNldCBjIFwic3Ryb2tlU3R5bGVcIiBzXG4gIGxldCBzZXRfZmlsbF9zdHlsZSBjIHMgPSBKdi5zZXQgYyBcImZpbGxTdHlsZVwiIHNcbiAgbGV0IGNvbG9yID0gSnYub2ZfanN0clxuXG4gIHR5cGUgZ3JhZGllbnQgPSBKdi50XG4gIGxldCBncmFkaWVudF9zdHlsZSA9IEZ1bi5pZFxuXG4gIGxldCBtYWtlX3N0b3BzIGcgc3RvcHMgPVxuICAgIGxldCBhZGRfc3RvcCBnIChvZmYsIGMpID1cbiAgICAgIGlnbm9yZSBAQCBKdi5jYWxsIGcgXCJhZGRDb2xvclN0b3BcIiBKdi5bfCBvZl9mbG9hdCBvZmY7IG9mX2pzdHIgYyB8XVxuICAgIGluXG4gICAgTGlzdC5pdGVyIChhZGRfc3RvcCBnKSBzdG9wc1xuXG4gIGxldCBsaW5lYXJfZ3JhZGllbnQgYyB+eDAgfnkwIH54MSB+eTEgfnN0b3BzID1cbiAgICBsZXQgZyA9XG4gICAgICBKdi5jYWxsIGMgXCJjcmVhdGVMaW5lYXJHcmFkaWVudFwiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IHgwOyBvZl9mbG9hdCB5MDsgb2ZfZmxvYXQgeDE7IG9mX2Zsb2F0IHkxIHxdXG4gICAgaW5cbiAgICBtYWtlX3N0b3BzIGcgc3RvcHM7IGdcblxuICBsZXQgcmFkaWFsX2dyYWRpZW50IGMgfngwIH55MCB+cjAgfngxIH55MSB+cjEgfnN0b3BzID1cbiAgICBsZXQgZyA9XG4gICAgICBKdi5jYWxsIGMgXCJjcmVhdGVSYWRpYWxHcmFkaWVudFwiXG4gICAgICAgIEp2Llt8IG9mX2Zsb2F0IHgwOyBvZl9mbG9hdCB5MDsgb2ZfZmxvYXQgcjA7XG4gICAgICAgICAgICAgIG9mX2Zsb2F0IHgxOyBvZl9mbG9hdCB5MTsgb2ZfZmxvYXQgcjE7IHxdXG4gICAgaW5cbiAgICBtYWtlX3N0b3BzIGcgc3RvcHM7IGdcblxuICB0eXBlIHBhdHRlcm4gPSBKdi50XG4gIGxldCBwYXR0ZXJuIGMgaW1nIHIgfnRyID1cbiAgICBsZXQgcCA9IEp2LmNhbGwgYyBcImNyZWF0ZVBhdHRlcm5cIiBbfGltZzsgSnYub2ZfanN0ciByfF0gaW5cbiAgICBtYXRjaCB0ciB3aXRoXG4gICAgfCBOb25lIC0+IHBcbiAgICB8IFNvbWUgdCAtPiBpZ25vcmUgQEAgSnYuY2FsbCBwIFwic2V0VHJhbnNmb3JtXCIgW3wgTWF0cml4NC50b19qdiB0IHxdOyBwXG5cbiAgbGV0IHBhdHRlcm5fc3R5bGUgPSBGdW4uaWRcblxuICAoKiBTdHlsZSBsaW5lcyAqKVxuXG4gIGxldCBsaW5lX3dpZHRoIGMgPSBKdi5GbG9hdC5nZXQgYyBcImxpbmVXaWR0aFwiXG4gIGxldCBzZXRfbGluZV93aWR0aCBjIHcgPSBKdi5GbG9hdC5zZXQgYyBcImxpbmVXaWR0aFwiIHdcbiAgbGV0IGxpbmVfY2FwIGMgPSBKdi5Kc3RyLmdldCBjIFwibGluZUNhcFwiXG4gIGxldCBzZXRfbGluZV9jYXAgYyBjYXAgPSBKdi5Kc3RyLnNldCBjIFwibGluZUNhcFwiIGNhcFxuICBsZXQgbGluZV9qb2luIGMgPSBKdi5Kc3RyLmdldCBjIFwibGluZUpvaW5cIlxuICBsZXQgc2V0X2xpbmVfam9pbiBjIGpvaW4gPSBKdi5Kc3RyLnNldCBjIFwibGluZUpvaW5cIiBqb2luXG4gIGxldCBtaXRlcl9saW1pdCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJtaXRlckxpbWl0XCJcbiAgbGV0IHNldF9taXRlcl9saW1pdCBjIGwgPSBKdi5GbG9hdC5zZXQgYyBcIm1pdGVyTGltaXRcIiBsXG4gIGxldCBsaW5lX2Rhc2ggYyA9IEp2LnRvX2xpc3QgSnYudG9fZmxvYXQgQEAgSnYuY2FsbCBjIFwiZ2V0TGluZURhc2hcIiBbfHxdXG4gIGxldCBzZXRfbGluZV9kYXNoIGMgZHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzZXRMaW5lRGFzaFwiIFt8SnYub2ZfbGlzdCBKdi5vZl9mbG9hdCBkc3xdXG5cbiAgbGV0IGxpbmVfZGFzaF9vZmZzZXQgYyA9IEp2LkZsb2F0LmdldCBjIFwibGluZURhc2hPZmZzZXRcIlxuICBsZXQgc2V0X2xpbmVfZGFzaF9vZmZzZXQgYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJsaW5lRGFzaE9mZnNldFwiIG9cblxuICAoKiBTdHlsZSBzaGFkb3dzICopXG5cbiAgbGV0IHNoYWRvd19ibHVyIGMgPSBKdi5GbG9hdC5nZXQgYyBcInNoYWRvd0JsdXJcIlxuICBsZXQgc2V0X3NoYWRvd19ibHVyIGMgYiA9IEp2LkZsb2F0LnNldCBjIFwic2hhZG93Qmx1clwiIGJcbiAgbGV0IHNoYWRvd19vZmZzZXRfeCBjID0gSnYuRmxvYXQuZ2V0IGMgXCJzaGFkb3dPZmZzZXRYXCJcbiAgbGV0IHNldF9zaGFkb3dfb2Zmc2V0X3ggYyBvID0gSnYuRmxvYXQuc2V0IGMgXCJzaGFkb3dPZmZzZXRYXCIgb1xuICBsZXQgc2hhZG93X29mZnNldF95IGMgPSBKdi5GbG9hdC5nZXQgYyBcInNoYWRvd09mZnNldFlcIlxuICBsZXQgc2V0X3NoYWRvd19vZmZzZXRfeSBjIG8gPSBKdi5GbG9hdC5zZXQgYyBcInNoYWRvd09mZnNldFlcIiBvXG4gIGxldCBzaGFkb3dfY29sb3IgYyA9IEp2LkpzdHIuZ2V0IGMgXCJzaGFkb3dDb2xvclwiXG4gIGxldCBzZXRfc2hhZG93X2NvbG9yIGMgY29sID0gSnYuSnN0ci5zZXQgYyBcInNoYWRvd0NvbG9yXCIgY29sXG5cbiAgKCogU3R5bGUgdGV4dCAqKVxuXG4gIGxldCBmb250IGMgPSBKdi5Kc3RyLmdldCBjIFwiZm9udFwiXG4gIGxldCBzZXRfZm9udCBjIGYgPSBKdi5Kc3RyLnNldCBjIFwiZm9udFwiIGZcbiAgbGV0IHRleHRfYWxpZ24gYyA9IEp2LkpzdHIuZ2V0IGMgXCJ0ZXh0QWxpZ25cIlxuICBsZXQgc2V0X3RleHRfYWxpZ24gYyBhID0gSnYuSnN0ci5zZXQgYyBcInRleHRBbGlnblwiIGFcbiAgbGV0IHRleHRfYmFzZWxpbmUgYyA9IEp2LkpzdHIuZ2V0IGMgXCJ0ZXh0QmFzZWxpbmVcIlxuICBsZXQgc2V0X3RleHRfYmFzZWxpbmUgYyBiID0gSnYuSnN0ci5zZXQgYyBcInRleHRCYXNlbGluZVwiIGJcbiAgbGV0IHRleHRfZGlyZWN0aW9uIGMgPSBKdi5Kc3RyLmdldCBjIFwiZGlyZWN0aW9uXCJcbiAgbGV0IHNldF90ZXh0X2RpcmVjdGlvbiBjIGQgPSBKdi5Kc3RyLnNldCBjIFwiZGlyZWN0aW9uXCIgZFxuXG4gICgqIERyYXcgcmVjdGFuZ2xlcyAqKVxuXG4gIGxldCBjbGVhcl9yZWN0IGMgfnggfnkgfncgfmggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhclJlY3RcIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gIGxldCBmaWxsX3JlY3QgYyB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZpbGxSZWN0XCJcbiAgICAgIEp2Llt8IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgc3Ryb2tlX3JlY3QgYyB+eCB+eSB+dyB+aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0cm9rZVJlY3RcIlxuICAgICAgSnYuW3wgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeTsgb2ZfZmxvYXQgdzsgb2ZfZmxvYXQgaCB8XVxuXG4gICgqIERyYXcgcGF0aHMgKilcblxuICBsZXQgZmlsbCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmaWxsXCIgW3wgcDsgSnYub2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgc3Ryb2tlIGMgcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0cm9rZVwiIFt8IHAgfF1cblxuICBsZXQgY2xpcCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGlwXCIgW3wgcDsgSnYub2ZfanN0ciBmaWxsX3J1bGUgfF1cblxuICBsZXQgZHJhd19mb2N1c19pZl9uZWVkZWQgYyBwIGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3Rm9jdXNJZk5lZWRlZFwiIFt8IHA7IEVsLnRvX2p2IGUgfF1cblxuICBsZXQgc2Nyb2xsX3BhdGhfaW50b192aWV3IGMgcCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNjcm9sbFBhdGhJbnRvVmlld1wiIFt8IHAgfF1cblxuICBsZXQgaXNfcG9pbnRfaW5fZmlsbCA/KGZpbGxfcnVsZSA9IEZpbGxfcnVsZS5ub256ZXJvKSBjIHAgfnggfnkgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNQb2ludEluUGF0aFwiXG4gICAgICBKdi5bfCBwOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9qc3RyIGZpbGxfcnVsZSB8XVxuXG4gIGxldCBpc19wb2ludF9pbl9zdHJva2UgYyBwIH54IH55ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUG9pbnRJblN0cm9rZVwiXG4gICAgICBKdi5bfCBwOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyB8XVxuXG4gICgqIERyYXcgdGV4dCAqKVxuXG4gIGxldCBjYWxsX3RleHQgYyBtZXRoID9tYXhfd2lkdGggdHh0IH54IH55ID1cbiAgICBsZXQgYXJncyA9IG1hdGNoIG1heF93aWR0aCB3aXRoXG4gICAgfCBOb25lIC0+IEp2Llt8b2ZfanN0ciB0eHQ7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHkgfF1cbiAgICB8IFNvbWUgbSAtPiBKdi5bfG9mX2pzdHIgdHh0OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCBtIHxdXG4gICAgaW5cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIG1ldGggYXJnc1xuXG4gIGxldCBmaWxsX3RleHQgP21heF93aWR0aCBjIHR4dCB+eCB+eSA9XG4gICAgY2FsbF90ZXh0IGMgXCJmaWxsVGV4dFwiID9tYXhfd2lkdGggdHh0IH54IH55XG5cbiAgbGV0IHN0cm9rZV90ZXh0ID9tYXhfd2lkdGggYyB0eHQgfnggfnkgPVxuICAgIGNhbGxfdGV4dCBjIFwic3Ryb2tlVGV4dFwiID9tYXhfd2lkdGggdHh0IH54IH55XG5cbiAgbW9kdWxlIFRleHRfbWV0cmljcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgd2lkdGggbSA9IEp2LkZsb2F0LmdldCBtIFwid2lkdGhcIlxuICAgIGxldCBhY3R1YWxfYm91bmRpbmdfYm94X2xlZnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiYWN0dWFsQm91bmRpbmdCb3hMZWZ0XCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9yaWdodCBtID0gSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveFJpZ2h0XCJcbiAgICBsZXQgZm9udF9ib3VuZGluZ19ib3hfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImZvbnRCb3VuZGluZ0JveEFzY2VudFwiXG4gICAgbGV0IGZvbnRfYm91bmRpbmdfYm94X2Rlc2NlbnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZm9udEJvdW5kaW5nQm94RGVzY2VudFwiXG4gICAgbGV0IGFjdHVhbF9ib3VuZGluZ19ib3hfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImFjdHVhbEJvdW5kaW5nQm94QXNjZW50XCJcbiAgICBsZXQgYWN0dWFsX2JvdW5kaW5nX2JveF9kZXNjZW50IG0gPVxuICAgICAgSnYuRmxvYXQuZ2V0IG0gXCJhY3R1YWxCb3VuZGluZ0JveERlc2NlbnRcIlxuICAgIGxldCBlbV9oZWlnaHRfYXNjZW50IG0gPSBKdi5GbG9hdC5nZXQgbSBcImVtSGVpZ2h0QXNjZW50XCJcbiAgICBsZXQgZW1faGVpZ2h0X2Rlc2NlbnQgbSA9IEp2LkZsb2F0LmdldCBtIFwiZW1IZWlnaHREZXNjZW50XCJcbiAgICBsZXQgaGFuZ2luZ19iYXNlbGluZSBtID0gSnYuRmxvYXQuZ2V0IG0gXCJoYW5naW5nQmFzZWxpbmVcIlxuICAgIGxldCBhbHBoYWJldGljX2Jhc2VsaW5lIG0gPSBKdi5GbG9hdC5nZXQgbSBcImFscGhhYmV0aWNCYXNlbGluZVwiXG4gICAgbGV0IGlkZW9ncmFwaGljX2Jhc2VsaW5lIG0gPSBKdi5GbG9hdC5nZXQgbSBcImlkZW9ncmFwaGljQmFzZWxpbmVcIlxuICBlbmRcblxuICBsZXQgbWVhc3VyZV90ZXh0IGMgdHh0ID1cbiAgICBUZXh0X21ldHJpY3Mub2ZfanYgQEAgSnYuY2FsbCBjIFwibWVhc3VyZVRleHRcIiBbfCBKdi5vZl9qc3RyIHR4dCB8XVxuXG4gICgqIERyYXcgaW1hZ2VzICopXG5cbiAgbGV0IGRyYXdfaW1hZ2UgYyBpIH54IH55ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCIgSnYuW3wgaTsgb2ZfZmxvYXQgeDsgb2ZfZmxvYXQgeSB8XVxuXG4gIGxldCBkcmF3X2ltYWdlX2luX3JlY3QgYyBpIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCJcbiAgICAgIEp2Llt8IGk7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICBsZXQgZHJhd19zdWJfaW1hZ2VfaW5fcmVjdCBjIGkgfnN4IH5zeSB+c3cgfnNoIH54IH55IH53IH5oID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0ltYWdlXCJcbiAgICAgIEp2Llt8IGk7XG4gICAgICAgICAgICBvZl9mbG9hdCBzeDsgb2ZfZmxvYXQgc3k7IG9mX2Zsb2F0IHN3OyBvZl9mbG9hdCBzaDtcbiAgICAgICAgICAgIG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHc7IG9mX2Zsb2F0IGggfF1cblxuICAoKiBQaXhlbCBtYW5pcHVsYXRpb25zICopXG5cbiAgbW9kdWxlIEltYWdlX2RhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgaW5jbHVkZSAoSnYuSWQgOiBKdi5DT05WIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpID0gbWF0Y2ggY29sb3Jfc3BhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBKdi51bmRlZmluZWRcbiAgICB8IFNvbWUgY3MgLT5cbiAgICAgICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgICAgICBKdi5Kc3RyLnNldCBvIFwiY29sb3JTcGFjZVwiIGNzOyBvXG5cbiAgICBsZXQgaW1hZ2VfZGF0YSA9IEp2LmdldCBKdi5nbG9iYWwgXCJJbWFnZURhdGFcIlxuICAgIGxldCBjcmVhdGUgP2NvbG9yX3NwYWNlID9kYXRhIH53IH5oICgpID1cbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzID9jb2xvcl9zcGFjZSAoKSBpblxuICAgICAgbGV0IGFyZ3MgPSBtYXRjaCBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBKdi5bfG9mX2ludCB3OyBvZl9pbnQgaDsgc2V0dGluZ3N8XVxuICAgICAgfCBTb21lIGRhdGEgLT4gSnYuW3xUYXJyYXkudG9fanYgZGF0YTsgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5nc3xdXG4gICAgICBpblxuICAgICAgSnYubmV3JyBpbWFnZV9kYXRhIGFyZ3NcblxuICAgIGxldCB3IGQgPSBKdi5JbnQuZ2V0IGQgXCJ3aWR0aFwiXG4gICAgbGV0IGggZCA9IEp2LkludC5nZXQgZCBcImhlaWdodFwiXG4gICAgbGV0IGNvbG9yX3NwYWNlIGQgPVxuICAgICAgKCogQ2FuIGJlY29tZSBKdi5Kc3RyLmdldCBvbmNlIGZpcmVmb3ggc3VwcG9ydHMgdGhlIHByb3BlcnR5LiAqKVxuICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkpzdHIuZW1wdHkgKEp2LkpzdHIuZmluZCBkIFwiY29sb3JTcGFjZVwiKVxuXG4gICAgbGV0IGRhdGEgZCA9IFRhcnJheS5vZl9qdiBAQCBKdi5nZXQgZCBcImRhdGFcIlxuICBlbmRcblxuICBsZXQgY3JlYXRlX2ltYWdlX2RhdGEgP2NvbG9yX3NwYWNlIGMgfncgfmggPVxuICAgIGxldCBzZXR0aW5ncyA9IEltYWdlX2RhdGEuc2V0dGluZ3MgP2NvbG9yX3NwYWNlICgpIGluXG4gICAgSW1hZ2VfZGF0YS5vZl9qdiBAQCBKdi5jYWxsIGMgXCJjcmVhdGVJbWFnZURhdGFcIlxuICAgICAgSnYuW3wgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5ncyB8XVxuXG4gIGxldCBnZXRfaW1hZ2VfZGF0YSA/Y29sb3Jfc3BhY2UgYyB+eCB+eSB+dyB+aCA9XG4gICAgbGV0IHNldHRpbmdzID0gSW1hZ2VfZGF0YS5zZXR0aW5ncyA/Y29sb3Jfc3BhY2UgKCkgaW5cbiAgICBJbWFnZV9kYXRhLm9mX2p2IEBAIEp2LmNhbGwgYyBcImdldEltYWdlRGF0YVwiXG4gICAgICBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHc7IG9mX2ludCBoOyBzZXR0aW5nc3xdXG5cbiAgbGV0IHB1dF9pbWFnZV9kYXRhIGMgZCB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInB1dEltYWdlRGF0YVwiXG4gICAgICBKdi5bfCBJbWFnZV9kYXRhLnRvX2p2IGQ7IG9mX2ludCB4OyBvZl9pbnQgeSB8XVxuXG4gIGxldCBwdXRfc3ViX2ltYWdlX2RhdGEgYyBkIH5zeCB+c3kgfnN3IH5zaCB+eCB+eSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInB1dEltYWdlRGF0YVwiXG4gICAgICBKdi5bfCBJbWFnZV9kYXRhLnRvX2p2IGQ7IG9mX2ludCB4OyBvZl9pbnQgeTtcbiAgICAgICAgICAgIG9mX2ludCBzeDsgb2ZfaW50IHN5OyBvZl9pbnQgc3c7IG9mX2ludCBzaCB8XVxuZW5kXG5cbm1vZHVsZSBHbCA9IHN0cnVjdFxuXG4gICgqIENvbnRleHQgY3JlYXRpb24gKilcblxuICBtb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUG93ZXJfcHJlZmVyZW5jZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSnN0ci50XG4gICAgICBsZXQgZGVmYXVsdCA9IEpzdHIudiBcImRlZmF1bHRcIlxuICAgICAgbGV0IGhpZ2hfcGVyZm9ybWFuY2UgPSBKc3RyLnYgXCJoaWdoLXBlcmZvcm1hbmNlXCJcbiAgICAgIGxldCBsb3dfcG93ZXIgPSBKc3RyLnYgXCJsb3ctcG93ZXJcIlxuICAgIGVuZFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBsZXQgdlxuICAgICAgICA/YWxwaGEgP2RlcHRoID9zdGVuY2lsID9hbnRpYWxpYXMgP3ByZW11bHRpcGxpZWRfYWxwaGFcbiAgICAgICAgP3ByZXNlcnZlX2RyYXdpbmdfYnVmZmVyID9wb3dlcl9wcmVmZXJlbmNlXG4gICAgICAgID9mYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmVhdCA/ZGVzeW5jaHJvbml6ZWQgKCkgPVxuICAgICAgbGV0IG8gPSBKdi5vYmogW3x8XSBpblxuICAgICAgSnYuQm9vbC5zZXRfaWZfc29tZSBvIFwiYWxwaGFcIiBhbHBoYTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlcHRoXCIgZGVwdGg7XG4gICAgICBKdi5Cb29sLnNldF9pZl9zb21lIG8gXCJzdGVuY2lsXCIgc3RlbmNpbDtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImFudGlhbGlhc1wiIGFudGlhbGlhcztcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInByZW11bHRpcGxpZWRBcGhhXCIgcHJlbXVsdGlwbGllZF9hbHBoYTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiIHByZXNlcnZlX2RyYXdpbmdfYnVmZmVyO1xuICAgICAgSnYuSnN0ci5zZXRfaWZfc29tZSBvIFwicG93ZXJQcmVmZXJlbmNlXCIgcG93ZXJfcHJlZmVyZW5jZTtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIlxuICAgICAgICBmYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmVhdDtcbiAgICAgIEp2LkJvb2wuc2V0X2lmX3NvbWUgbyBcImRlc3luY2hyb25pemVkXCIgZGVzeW5jaHJvbml6ZWQ7XG4gICAgICBvXG5cbiAgICBsZXQgYWxwaGEgYSA9IEp2LkJvb2wuZ2V0IGEgXCJhbHBoYVwiXG4gICAgbGV0IGRlcHRoIGEgPSBKdi5Cb29sLmdldCBhIFwiZGVwdGhcIlxuICAgIGxldCBzdGVuY2lsIGEgPSBKdi5Cb29sLmdldCBhIFwic3RlbmNpbFwiXG4gICAgbGV0IGFudGlhbGlhcyBhID0gSnYuQm9vbC5nZXQgYSBcImFudGlhbGlhc1wiXG4gICAgbGV0IHByZW11bHRpcGxpZWRfYWxwaGEgYSA9IEp2LkJvb2wuZ2V0IGEgXCJwcmVtdWx0aXBsaWVkQXBoYVwiXG4gICAgbGV0IHByZXNlcnZlX2RyYXdpbmdfYnVmZmVyIGEgPSBKdi5Cb29sLmdldCBhIFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCJcbiAgICBsZXQgZmFpbF9pZl9tYWpvcl9wZXJmb3JtYW5jZV9jYXZlYXQgYSA9XG4gICAgICBKdi5Cb29sLmdldCBhIFwiZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdFwiXG4gICAgbGV0IHBvd2VyX3ByZWZlcmVuY2UgYSA9IEp2LkpzdHIuZ2V0IGEgXCJwb3dlclByZWZlcmVuY2VcIlxuICAgIGxldCBkZXN5bmNocm9uaXplZCBhID0gSnYuQm9vbC5nZXQgYSBcImRlc3luY2hyb25pemVkXCJcbiAgZW5kXG5cbiAgdHlwZSB0ID0gSnYudFxuICBpbmNsdWRlIChKdi5JZCA6IEp2LkNPTlYgd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgZ2V0X2NvbnRleHQgPyhhdHRycyA9IEp2LnVuZGVmaW5lZCkgPyh2MSA9IGZhbHNlKSBjbnYgPVxuICAgIGxldCB3ZWJnbCA9IEp2Lm9mX3N0cmluZyAoaWYgdjEgdGhlbiBcIndlYmdsXCIgZWxzZSBcIndlYmdsMlwiKSBpblxuICAgIEp2LnRvX29wdGlvbiBGdW4uaWQgQEBcbiAgICBKdi5jYWxsIChDYW52YXMudG9fanYgY252KSBcImdldENvbnRleHRcIiBKdi5bfCB3ZWJnbDsgYXR0cnMgfF1cblxuICBsZXQgY3JlYXRlID0gZ2V0X2NvbnRleHRcblxuICBsZXQgY2FudmFzIGMgPSBKdi5maW5kX21hcCBDYW52YXMub2ZfanYgYyBcImNhbnZhc1wiXG4gIGxldCBhdHRycyBjID0gSnYuY2FsbCBjIFwiZ2V0Q29udGV4dEF0dHJpYnV0ZXNcIiBbfHxdXG5cbiAgbGV0IGRyYXdpbmdfYnVmZmVyX3dpZHRoIGMgPSBKdi5JbnQuZ2V0IGMgXCJkcmF3aW5nQnVmZmVyV2lkdGhcIlxuICBsZXQgZHJhd2luZ19idWZmZXJfaGVpZ2h0IGMgPSBKdi5JbnQuZ2V0IGMgXCJkcmF3aW5nQnVmZmVySGVpZ2h0XCJcbiAgbGV0IGlzX2NvbnRleHRfbG9zdCBjID0gSnYuQm9vbC5nZXQgYyBcImlzQ29udGV4dExvc3RcIlxuXG4gIGxldCBnZXRfc3VwcG9ydGVkX2V4dGVuc2lvbnMgYyA9XG4gICAgSnYudG9fanN0cl9saXN0IEBAIEp2LmNhbGwgYyBcImdldFN1cHBvcnRlZEV4dGVuc2lvbnNcIiBbfHxdXG5cbiAgbGV0IGdldF9leHRlbnNpb24gYyBleHQgPSBKdi5jYWxsIGMgXCJnZXRFeHRlbnNpb25cIiBKdi5bfCBvZl9qc3RyIGV4dCB8XVxuXG4gICgqIFR5cGVzICopXG5cbiAgdHlwZSBlbnVtID0gaW50XG4gIHR5cGUgYnVmZmVyID0gSnYudFxuICB0eXBlIGZyYW1lYnVmZmVyID0gSnYudFxuICB0eXBlIHByb2dyYW0gPSBKdi50XG4gIHR5cGUgcXVlcnkgPSBKdi50XG4gIHR5cGUgcmVuZGVyYnVmZmVyID0gSnYudFxuICB0eXBlIHNhbXBsZXIgPSBKdi50XG4gIHR5cGUgc2hhZGVyID0gSnYudFxuICB0eXBlIHN5bmMgPSBKdi50XG4gIHR5cGUgdGV4dHVyZSA9IEp2LnRcbiAgdHlwZSB0cmFuc2Zvcm1fZmVlZGJhY2sgPSBKdi50XG4gIHR5cGUgdW5pZm9ybV9sb2NhdGlvbiA9IEp2LnRcbiAgdHlwZSB2ZXJ0ZXhfYXJyYXlfb2JqZWN0ID0gSnYudFxuXG4gIG1vZHVsZSBBY3RpdmVfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgc2l6ZSBpID0gSnYuSW50LmdldCBpIFwic2l6ZVwiXG4gICAgbGV0IHR5cGUnIGkgPSBKdi5JbnQuZ2V0IGkgXCJ0eXBlXCJcbiAgICBsZXQgbmFtZSBpID0gSnYuSnN0ci5nZXQgaSBcIm5hbWVcIlxuICBlbmRcblxuICBtb2R1bGUgU2hhZGVyX3ByZWNpc2lvbl9mb3JtYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBKdi50XG4gICAgbGV0IHJhbmdlX21pbiBmID0gSnYuSW50LmdldCBmIFwicmFuZ2VNaW5cIlxuICAgIGxldCByYW5nZV9tYXggZiA9IEp2LkludC5nZXQgZiBcInJhbmdlTWF4XCJcbiAgICBsZXQgcHJlY2lzaW9uIGYgPSBKdi5JbnQuZ2V0IGYgXCJwcmVjaXNpb25cIlxuICBlbmRcblxuICBtb2R1bGUgVGV4X2ltYWdlX3NvdXJjZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp2LnRcbiAgICBsZXQgb2ZfaW1hZ2VfZGF0YSA9IEMyZC5JbWFnZV9kYXRhLnRvX2p2XG4gICAgbGV0IG9mX2ltZ19lbCA9IEJyci5FbC50b19qdlxuICAgIGxldCBvZl9jYW52YXNfZWwgPSBDYW52YXMudG9fanZcbiAgICBsZXQgb2ZfdmlkZW9fZWwgPSBCcnJfaW8uTWVkaWEuRWwudG9fanZcbiAgICBsZXQgb2Zfb2Zmc2NyZWVuX2NhbnZhcyA9IEZ1bi5pZFxuICBlbmRcblxuICAoKiBGdW5jdGlvbnMgKilcblxuICBsZXQgYWN0aXZlX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYWN0aXZlVGV4dHVyZVwiIEp2Llt8b2ZfaW50IHRleHR1cmV8XVxuXG4gIGxldCBhdHRhY2hfc2hhZGVyIGMgcHJvZ3JhbSBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJhdHRhY2hTaGFkZXJcIiBKdi5bfHByb2dyYW07IHNoYWRlcnxdXG5cbiAgbGV0IGJlZ2luX3F1ZXJ5IGMgdGFyZ2V0IHF1ZXJ5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmVnaW5RdWVyeVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgcXVlcnl8XVxuXG4gIGxldCBiZWdpbl90cmFuc2Zvcm1fZmVlZGJhY2sgYyBwcmltaXRpdmVNb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmVnaW5UcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8b2ZfaW50IHByaW1pdGl2ZU1vZGV8XVxuXG4gIGxldCBiaW5kX2F0dHJpYl9sb2NhdGlvbiBjIHByb2dyYW0gaW5kZXggbmFtZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRBdHRyaWJMb2NhdGlvblwiIEp2Llt8cHJvZ3JhbTsgb2ZfaW50IGluZGV4OyBvZl9qc3RyIG5hbWV8XVxuXG4gIGxldCBiaW5kX2J1ZmZlciBjIHRhcmdldCBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9vcHRpb24gfm5vbmU6bnVsbCBGdW4uaWQgYnVmZmVyfF1cblxuICBsZXQgYmluZF9idWZmZXJfYmFzZSBjIHRhcmdldCBpbmRleCBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyQmFzZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGluZGV4OyBidWZmZXJ8XVxuXG4gIGxldCBiaW5kX2J1ZmZlcl9yYW5nZSBjIHRhcmdldCBpbmRleCBidWZmZXIgb2Zmc2V0IHNpemUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kQnVmZmVyUmFuZ2VcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbmRleDsgYnVmZmVyOyBvZl9pbnQgb2Zmc2V0OyBvZl9pbnQgc2l6ZXxdXG5cbiAgbGV0IGJpbmRfZnJhbWVidWZmZXIgYyB0YXJnZXQgZnJhbWVidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBmcmFtZWJ1ZmZlcnxdXG5cbiAgbGV0IGJpbmRfcmVuZGVyYnVmZmVyIGMgdGFyZ2V0IHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRSZW5kZXJidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCByZW5kZXJidWZmZXJ8XVxuXG4gIGxldCBiaW5kX3NhbXBsZXIgYyB1bml0IHNhbXBsZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kU2FtcGxlclwiIEp2Llt8b2ZfaW50IHVuaXQ7IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBzYW1wbGVyfF1cblxuICBsZXQgYmluZF90ZXh0dXJlIGMgdGFyZ2V0IHRleHR1cmUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJiaW5kVGV4dHVyZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIHRleHR1cmV8XVxuXG4gIGxldCBiaW5kX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRhcmdldCB0ZiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2Zfb3B0aW9uIH5ub25lOm51bGwgRnVuLmlkIHRmfF1cblxuICBsZXQgYmluZF92ZXJ0ZXhfYXJyYXkgYyBhcnJheSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJpbmRWZXJ0ZXhBcnJheVwiIEp2Llt8IG9mX29wdGlvbiB+bm9uZTpudWxsIEZ1bi5pZCBhcnJheXxdXG5cbiAgbGV0IGJsZW5kX2NvbG9yIGMgcmVkIGdyZWVuIGJsdWUgYWxwaGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJibGVuZENvbG9yXCIgSnYuW3xvZl9mbG9hdCByZWQ7IG9mX2Zsb2F0IGdyZWVuOyBvZl9mbG9hdCBibHVlOyBvZl9mbG9hdCBhbHBoYXxdXG5cbiAgbGV0IGJsZW5kX2VxdWF0aW9uIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRXF1YXRpb25cIiBKdi5bfG9mX2ludCBtb2RlfF1cblxuICBsZXQgYmxlbmRfZXF1YXRpb25fc2VwYXJhdGUgYyBtb2RlUkdCIG1vZGVBbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRXF1YXRpb25TZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IG1vZGVSR0I7IG9mX2ludCBtb2RlQWxwaGF8XVxuXG4gIGxldCBibGVuZF9mdW5jIGMgc2ZhY3RvciBkZmFjdG9yID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiYmxlbmRGdW5jXCIgSnYuW3xvZl9pbnQgc2ZhY3Rvcjsgb2ZfaW50IGRmYWN0b3J8XVxuXG4gIGxldCBibGVuZF9mdW5jX3NlcGFyYXRlIGMgc3JjUkdCIGRzdFJHQiBzcmNBbHBoYSBkc3RBbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsZW5kRnVuY1NlcGFyYXRlXCIgSnYuW3xvZl9pbnQgc3JjUkdCOyBvZl9pbnQgZHN0UkdCOyBvZl9pbnQgc3JjQWxwaGE7IG9mX2ludCBkc3RBbHBoYXxdXG5cbiAgbGV0IGJsaXRfZnJhbWVidWZmZXIgYyBzcmNYMCBzcmNZMCBzcmNYMSBzcmNZMSBkc3RYMCBkc3RZMCBkc3RYMSBkc3RZMSBtYXNrIGZpbHRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJsaXRGcmFtZWJ1ZmZlclwiIEp2Llt8b2ZfaW50IHNyY1gwOyBvZl9pbnQgc3JjWTA7IG9mX2ludCBzcmNYMTsgb2ZfaW50IHNyY1kxOyBvZl9pbnQgZHN0WDA7IG9mX2ludCBkc3RZMDsgb2ZfaW50IGRzdFgxOyBvZl9pbnQgZHN0WTE7IG9mX2ludCBtYXNrOyBvZl9pbnQgZmlsdGVyfF1cblxuICBsZXQgYnVmZmVyX2RhdGEgYyB0YXJnZXQgc3JjRGF0YSB1c2FnZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJ1ZmZlckRhdGFcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgdXNhZ2V8XVxuXG4gIGxldCBidWZmZXJfZGF0YV9zaXplIGMgdGFyZ2V0IHNpemUgdXNhZ2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJidWZmZXJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgc2l6ZTsgb2ZfaW50IHVzYWdlfF1cblxuICBsZXQgYnVmZmVyX3N1Yl9kYXRhIGMgdGFyZ2V0IGRzdEJ5dGVPZmZzZXQgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImJ1ZmZlclN1YkRhdGFcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBkc3RCeXRlT2Zmc2V0OyBUYXJyYXkudG9fanYgc3JjRGF0YSB8XVxuXG4gIGxldCBjaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgYyB0YXJnZXQgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJjaGVja0ZyYW1lYnVmZmVyU3RhdHVzXCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgY2xlYXIgYyBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJcIiBKdi5bfG9mX2ludCBtYXNrfF1cblxuICBsZXQgY2xlYXJfYnVmZmVyZmkgYyBidWZmZXIgZHJhd2J1ZmZlciBkZXB0aCBzdGVuY2lsID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJmaVwiIEp2Llt8b2ZfaW50IGJ1ZmZlcjsgb2ZfaW50IGRyYXdidWZmZXI7IG9mX2Zsb2F0IGRlcHRoOyBvZl9pbnQgc3RlbmNpbHxdXG5cbiAgbGV0IGNsZWFyX2J1ZmZlcmZ2IGMgYnVmZmVyIGRyYXdidWZmZXIgdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJmdlwiIEp2Llt8b2ZfaW50IGJ1ZmZlcjsgb2ZfaW50IGRyYXdidWZmZXI7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCBjbGVhcl9idWZmZXJpdiBjIGJ1ZmZlciBkcmF3YnVmZmVyIHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQnVmZmVyaXZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfYnVmZmVydWl2IGMgYnVmZmVyIGRyYXdidWZmZXIgdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY2xlYXJCdWZmZXJ1aXZcIiBKdi5bfG9mX2ludCBidWZmZXI7IG9mX2ludCBkcmF3YnVmZmVyOyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgY2xlYXJfY29sb3IgYyByZWQgZ3JlZW4gYmx1ZSBhbHBoYSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyQ29sb3JcIiBKdi5bfG9mX2Zsb2F0IHJlZDsgb2ZfZmxvYXQgZ3JlZW47IG9mX2Zsb2F0IGJsdWU7IG9mX2Zsb2F0IGFscGhhfF1cblxuICBsZXQgY2xlYXJfZGVwdGggYyBkZXB0aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNsZWFyRGVwdGhcIiBKdi5bfG9mX2Zsb2F0IGRlcHRofF1cblxuICBsZXQgY2xlYXJfc3RlbmNpbCBjIHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjbGVhclN0ZW5jaWxcIiBKdi5bfG9mX2ludCBzfF1cblxuICBsZXQgY2xpZW50X3dhaXRfc3luYyBjIHN5bmMgZmxhZ3MgdGltZW91dCA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImNsaWVudFdhaXRTeW5jXCIgSnYuW3xzeW5jOyBvZl9pbnQgZmxhZ3M7IG9mX2ludCB0aW1lb3V0fF1cblxuICBsZXQgY29sb3JfbWFzayBjIHJlZCBncmVlbiBibHVlIGFscGhhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29sb3JNYXNrXCIgSnYuW3xKdi5vZl9ib29sIHJlZDsgSnYub2ZfYm9vbCBncmVlbjsgSnYub2ZfYm9vbCBibHVlOyBKdi5vZl9ib29sIGFscGhhfF1cblxuICBsZXQgY29tcGlsZV9zaGFkZXIgYyBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21waWxlU2hhZGVyXCIgSnYuW3xzaGFkZXJ8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X2ltYWdlMmRfc2l6ZSBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB3aWR0aCBoZWlnaHQgYm9yZGVyIGltYWdlU2l6ZSBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4SW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9pbWFnZTNkX3NpemUgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTJkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IHNyY0RhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgVGFycmF5LnRvX2p2IHNyY0RhdGF8XVxuXG4gIGxldCBjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZF9zaXplIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IGltYWdlU2l6ZSBvZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IGltYWdlU2l6ZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB6b2Zmc2V0IHdpZHRoIGhlaWdodCBkZXB0aCBmb3JtYXQgc3JjRGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvbXByZXNzZWRUZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IGNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTNkX3NpemUgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCBpbWFnZVNpemUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29tcHJlc3NlZFRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZGVwdGg7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCBpbWFnZVNpemU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBjb3B5X2J1ZmZlcl9zdWJfZGF0YSBjIHJlYWRUYXJnZXQgd3JpdGVUYXJnZXQgcmVhZE9mZnNldCB3cml0ZU9mZnNldCBzaXplID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29weUJ1ZmZlclN1YkRhdGFcIiBKdi5bfG9mX2ludCByZWFkVGFyZ2V0OyBvZl9pbnQgd3JpdGVUYXJnZXQ7IG9mX2ludCByZWFkT2Zmc2V0OyBvZl9pbnQgd3JpdGVPZmZzZXQ7IG9mX2ludCBzaXplfF1cblxuICBsZXQgY29weV90ZXhfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCBpbnRlcm5hbGZvcm1hdCB4IHkgd2lkdGggaGVpZ2h0IGJvcmRlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXJ8XVxuXG4gIGxldCBjb3B5X3RleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImNvcHlUZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBjb3B5X3RleF9zdWJfaW1hZ2UzZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgem9mZnNldCB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiY29weVRleFN1YkltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgem9mZnNldDsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBjcmVhdGVfYnVmZmVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVCdWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9mcmFtZWJ1ZmZlciBjICA9XG4gICAgSnYuY2FsbCBjIFwiY3JlYXRlRnJhbWVidWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9wcm9ncmFtIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVQcm9ncmFtXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcXVlcnkgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVF1ZXJ5XCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfcmVuZGVyYnVmZmVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVSZW5kZXJidWZmZXJcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV9zYW1wbGVyIGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVTYW1wbGVyXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfc2hhZGVyIGMgdHlwZScgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVNoYWRlclwiIEp2Llt8b2ZfaW50IHR5cGUnfF1cblxuICBsZXQgY3JlYXRlX3RleHR1cmUgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVRleHR1cmVcIiBKdi5bfHxdXG5cbiAgbGV0IGNyZWF0ZV90cmFuc2Zvcm1fZmVlZGJhY2sgYyAgPVxuICAgIEp2LmNhbGwgYyBcImNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBjcmVhdGVfdmVydGV4X2FycmF5IGMgID1cbiAgICBKdi5jYWxsIGMgXCJjcmVhdGVWZXJ0ZXhBcnJheVwiIEp2Llt8fF1cblxuICBsZXQgY3VsbF9mYWNlIGMgbW9kZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImN1bGxGYWNlXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGRlbGV0ZV9idWZmZXIgYyBidWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVCdWZmZXJcIiBKdi5bfGJ1ZmZlcnxdXG5cbiAgbGV0IGRlbGV0ZV9mcmFtZWJ1ZmZlciBjIGZyYW1lYnVmZmVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlRnJhbWVidWZmZXJcIiBKdi5bfGZyYW1lYnVmZmVyfF1cblxuICBsZXQgZGVsZXRlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IGRlbGV0ZV9xdWVyeSBjIHF1ZXJ5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlUXVlcnlcIiBKdi5bfHF1ZXJ5fF1cblxuICBsZXQgZGVsZXRlX3JlbmRlcmJ1ZmZlciBjIHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVJlbmRlcmJ1ZmZlclwiIEp2Llt8cmVuZGVyYnVmZmVyfF1cblxuICBsZXQgZGVsZXRlX3NhbXBsZXIgYyBzYW1wbGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlU2FtcGxlclwiIEp2Llt8c2FtcGxlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zaGFkZXIgYyBzaGFkZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVTaGFkZXJcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGRlbGV0ZV9zeW5jIGMgc3luYyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlbGV0ZVN5bmNcIiBKdi5bfHN5bmN8XVxuXG4gIGxldCBkZWxldGVfdGV4dHVyZSBjIHRleHR1cmUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZWxldGVUZXh0dXJlXCIgSnYuW3x0ZXh0dXJlfF1cblxuICBsZXQgZGVsZXRlX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRmID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHRmfF1cblxuICBsZXQgZGVsZXRlX3ZlcnRleF9hcnJheSBjIHZlcnRleEFycmF5ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGVsZXRlVmVydGV4QXJyYXlcIiBKdi5bfHZlcnRleEFycmF5fF1cblxuICBsZXQgZGVwdGhfZnVuYyBjIGZ1bmMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aEZ1bmNcIiBKdi5bfG9mX2ludCBmdW5jfF1cblxuICBsZXQgZGVwdGhfbWFzayBjIGZsYWcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkZXB0aE1hc2tcIiBKdi5bfEp2Lm9mX2Jvb2wgZmxhZ3xdXG5cbiAgbGV0IGRlcHRoX3JhbmdlIGMgek5lYXIgekZhciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRlcHRoUmFuZ2VcIiBKdi5bfG9mX2Zsb2F0IHpOZWFyOyBvZl9mbG9hdCB6RmFyfF1cblxuICBsZXQgZGV0YWNoX3NoYWRlciBjIHByb2dyYW0gc2hhZGVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGV0YWNoU2hhZGVyXCIgSnYuW3xwcm9ncmFtOyBzaGFkZXJ8XVxuXG4gIGxldCBkaXNhYmxlIGMgY2FwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGlzYWJsZVwiIEp2Llt8b2ZfaW50IGNhcHxdXG5cbiAgbGV0IGRpc2FibGVfdmVydGV4X2F0dHJpYl9hcnJheSBjIGluZGV4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5XCIgSnYuW3xvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBkcmF3X2FycmF5cyBjIG1vZGUgZmlyc3QgY291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QXJyYXlzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGZpcnN0OyBvZl9pbnQgY291bnR8XVxuXG4gIGxldCBkcmF3X2FycmF5c19pbnN0YW5jZWQgYyBtb2RlIGZpcnN0IGNvdW50IGluc3RhbmNlQ291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3QXJyYXlzSW5zdGFuY2VkXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGZpcnN0OyBvZl9pbnQgY291bnQ7IG9mX2ludCBpbnN0YW5jZUNvdW50fF1cblxuICBsZXQgZHJhd19idWZmZXJzIGMgYnVmZmVycyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdCdWZmZXJzXCIgSnYuW3xvZl9saXN0IG9mX2ludCBidWZmZXJzfF1cblxuICBsZXQgZHJhd19lbGVtZW50cyBjIG1vZGUgY291bnQgdHlwZScgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZHJhd0VsZW1lbnRzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBkcmF3X2VsZW1lbnRzX2luc3RhbmNlZCBjIG1vZGUgY291bnQgdHlwZScgb2Zmc2V0IGluc3RhbmNlQ291bnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJkcmF3RWxlbWVudHNJbnN0YW5jZWRcIiBKdi5bfG9mX2ludCBtb2RlOyBvZl9pbnQgY291bnQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IG9mZnNldDsgb2ZfaW50IGluc3RhbmNlQ291bnR8XVxuXG4gIGxldCBkcmF3X3JhbmdlX2VsZW1lbnRzIGMgbW9kZSBzdGFydCBlbmQnIGNvdW50IHR5cGUnIG9mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImRyYXdSYW5nZUVsZW1lbnRzXCIgSnYuW3xvZl9pbnQgbW9kZTsgb2ZfaW50IHN0YXJ0OyBvZl9pbnQgZW5kJzsgb2ZfaW50IGNvdW50OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCBlbmFibGUgYyBjYXAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJlbmFibGVcIiBKdi5bfG9mX2ludCBjYXB8XVxuXG4gIGxldCBlbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBjIGluZGV4ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZW5hYmxlVmVydGV4QXR0cmliQXJyYXlcIiBKdi5bfG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGVuZF9xdWVyeSBjIHRhcmdldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuZFF1ZXJ5XCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgZW5kX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImVuZFRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBmZW5jZV9zeW5jIGMgY29uZGl0aW9uIGZsYWdzID1cbiAgICBKdi5jYWxsIGMgXCJmZW5jZVN5bmNcIiBKdi5bfG9mX2ludCBjb25kaXRpb247IG9mX2ludCBmbGFnc3xdXG5cbiAgbGV0IGZpbmlzaCBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZpbmlzaFwiIEp2Llt8fF1cblxuICBsZXQgZmx1c2ggYyAgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmbHVzaFwiIEp2Llt8fF1cblxuICBsZXQgZnJhbWVidWZmZXJfcmVuZGVyYnVmZmVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgcmVuZGVyYnVmZmVydGFyZ2V0IHJlbmRlcmJ1ZmZlciA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgYXR0YWNobWVudDsgb2ZfaW50IHJlbmRlcmJ1ZmZlcnRhcmdldDsgcmVuZGVyYnVmZmVyfF1cblxuICBsZXQgZnJhbWVidWZmZXJfdGV4dHVyZTJkIGMgdGFyZ2V0IGF0dGFjaG1lbnQgdGV4dGFyZ2V0IHRleHR1cmUgbGV2ZWwgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJmcmFtZWJ1ZmZlclRleHR1cmUyRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCB0ZXh0YXJnZXQ7IHRleHR1cmU7IG9mX2ludCBsZXZlbHxdXG5cbiAgbGV0IGZyYW1lYnVmZmVyX3RleHR1cmVfbGF5ZXIgYyB0YXJnZXQgYXR0YWNobWVudCB0ZXh0dXJlIGxldmVsIGxheWVyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBhdHRhY2htZW50OyB0ZXh0dXJlOyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBsYXllcnxdXG5cbiAgbGV0IGZyb250X2ZhY2UgYyBtb2RlID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwiZnJvbnRGYWNlXCIgSnYuW3xvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGdlbmVyYXRlX21pcG1hcCBjIHRhcmdldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImdlbmVyYXRlTWlwbWFwXCIgSnYuW3xvZl9pbnQgdGFyZ2V0fF1cblxuICBsZXQgZ2V0X2FjdGl2ZV9hdHRyaWIgYyBwcm9ncmFtIGluZGV4ID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVBdHRyaWJcIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybSBjIHByb2dyYW0gaW5kZXggPVxuICAgIEp2LmNhbGwgYyBcImdldEFjdGl2ZVVuaWZvcm1cIiBKdi5bfHByb2dyYW07IG9mX2ludCBpbmRleHxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19uYW1lIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXh8XVxuXG4gIGxldCBnZXRfYWN0aXZlX3VuaWZvcm1fYmxvY2tfcGFyYW1ldGVyIGMgcHJvZ3JhbSB1bmlmb3JtQmxvY2tJbmRleCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0QWN0aXZlVW5pZm9ybUJsb2NrUGFyYW1ldGVyXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXg7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9hY3RpdmVfdW5pZm9ybXMgYyBwcm9ncmFtIHVuaWZvcm1JbmRpY2VzIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRBY3RpdmVVbmlmb3Jtc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfbGlzdCBvZl9pbnQgdW5pZm9ybUluZGljZXM7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9hdHRhY2hlZF9zaGFkZXJzIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fanZfbGlzdCBAQCBKdi5jYWxsIGMgXCJnZXRBdHRhY2hlZFNoYWRlcnNcIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBnZXRfYXR0cmliX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0QXR0cmliTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF9idWZmZXJfcGFyYW1ldGVyIGMgdGFyZ2V0IHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRCdWZmZXJQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9idWZmZXJfc3ViX2RhdGEgYyB0YXJnZXQgc3JjQnl0ZU9mZnNldCBkc3RCdWZmZXIgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJnZXRCdWZmZXJTdWJEYXRhXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgc3JjQnl0ZU9mZnNldDsgVGFycmF5LnRvX2p2IGRzdEJ1ZmZlcnxdXG5cbiAgbGV0IGdldF9lcnJvciBjICA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldEVycm9yXCIgSnYuW3x8XVxuXG4gIGxldCBnZXRfZnJhZ19kYXRhX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi50b19pbnQgQEAgSnYuY2FsbCBjIFwiZ2V0RnJhZ0RhdGFMb2NhdGlvblwiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0ciBuYW1lfF1cblxuICBsZXQgZ2V0X2ZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcGFyYW1ldGVyIGMgdGFyZ2V0IGF0dGFjaG1lbnQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGF0dGFjaG1lbnQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9pbmRleGVkX3BhcmFtZXRlciBjIHRhcmdldCBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0SW5kZXhlZFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGluZGV4fF1cblxuICBsZXQgZ2V0X2ludGVybmFsZm9ybWF0X3BhcmFtZXRlciBjIHRhcmdldCBpbnRlcm5hbGZvcm1hdCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0SW50ZXJuYWxmb3JtYXRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3BhcmFtZXRlciBjIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRQYXJhbWV0ZXJcIiBKdi5bfG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9wcm9ncmFtX2luZm9fbG9nIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fanN0ciBAQCBKdi5jYWxsIGMgXCJnZXRQcm9ncmFtSW5mb0xvZ1wiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IGdldF9wcm9ncmFtX3BhcmFtZXRlciBjIHByb2dyYW0gcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFByb2dyYW1QYXJhbWV0ZXJcIiBKdi5bfHByb2dyYW07IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9xdWVyeSBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UXVlcnlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZXxdXG5cbiAgbGV0IGdldF9xdWVyeV9wYXJhbWV0ZXIgYyBxdWVyeSBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UXVlcnlQYXJhbWV0ZXJcIiBKdi5bfHF1ZXJ5OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfcmVuZGVyYnVmZmVyX3BhcmFtZXRlciBjIHRhcmdldCBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfc2FtcGxlcl9wYXJhbWV0ZXIgYyBzYW1wbGVyIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTYW1wbGVyUGFyYW1ldGVyXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfc2hhZGVyX2luZm9fbG9nIGMgc2hhZGVyID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgYyBcImdldFNoYWRlckluZm9Mb2dcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGdldF9zaGFkZXJfcGFyYW1ldGVyIGMgc2hhZGVyIHBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTaGFkZXJQYXJhbWV0ZXJcIiBKdi5bfHNoYWRlcjsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3NoYWRlcl9wcmVjaXNpb25fZm9ybWF0IGMgc2hhZGVydHlwZSBwcmVjaXNpb250eXBlID1cbiAgICBKdi5jYWxsIGMgXCJnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRcIiBKdi5bfG9mX2ludCBzaGFkZXJ0eXBlOyBvZl9pbnQgcHJlY2lzaW9udHlwZXxdXG5cbiAgbGV0IGdldF9zaGFkZXJfc291cmNlIGMgc2hhZGVyID1cbiAgICBKdi50b19qc3RyIEBAIEp2LmNhbGwgYyBcImdldFNoYWRlclNvdXJjZVwiIEp2Llt8c2hhZGVyfF1cblxuICBsZXQgZ2V0X3N5bmNfcGFyYW1ldGVyIGMgc3luYyBwbmFtZSA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0U3luY1BhcmFtZXRlclwiIEp2Llt8c3luYzsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3RleF9wYXJhbWV0ZXIgYyB0YXJnZXQgcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFRleFBhcmFtZXRlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHBuYW1lfF1cblxuICBsZXQgZ2V0X3RyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5nIGMgcHJvZ3JhbSBpbmRleCA9XG4gICAgSnYuY2FsbCBjIFwiZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgaW5kZXh8XVxuXG4gIGxldCBnZXRfdW5pZm9ybSBjIHByb2dyYW0gbG9jYXRpb24gPVxuICAgIEp2LmNhbGwgYyBcImdldFVuaWZvcm1cIiBKdi5bfHByb2dyYW07IGxvY2F0aW9ufF1cblxuICBsZXQgZ2V0X3VuaWZvcm1fYmxvY2tfaW5kZXggYyBwcm9ncmFtIHVuaWZvcm1CbG9ja05hbWUgPVxuICAgIEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtQmxvY2tJbmRleFwiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0ciB1bmlmb3JtQmxvY2tOYW1lfF1cblxuICBsZXQgZ2V0X3VuaWZvcm1faW5kaWNlcyBjIHByb2dyYW0gdW5pZm9ybU5hbWVzID1cbiAgICBKdi50b19saXN0IEp2LnRvX2ludCBAQCBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtSW5kaWNlc1wiIEp2Llt8cHJvZ3JhbTsgb2ZfanN0cl9saXN0IHVuaWZvcm1OYW1lc3xdXG5cbiAgbGV0IGdldF91bmlmb3JtX2xvY2F0aW9uIGMgcHJvZ3JhbSBuYW1lID1cbiAgICBKdi5jYWxsIGMgXCJnZXRVbmlmb3JtTG9jYXRpb25cIiBKdi5bfHByb2dyYW07IG9mX2pzdHIgbmFtZXxdXG5cbiAgbGV0IGdldF92ZXJ0ZXhfYXR0cmliIGMgaW5kZXggcG5hbWUgPVxuICAgIEp2LmNhbGwgYyBcImdldFZlcnRleEF0dHJpYlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBnZXRfdmVydGV4X2F0dHJpYl9vZmZzZXQgYyBpbmRleCBwbmFtZSA9XG4gICAgSnYudG9faW50IEBAIEp2LmNhbGwgYyBcImdldFZlcnRleEF0dHJpYk9mZnNldFwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgcG5hbWV8XVxuXG4gIGxldCBoaW50IGMgdGFyZ2V0IG1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJoaW50XCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbW9kZXxdXG5cbiAgbGV0IGludmFsaWRhdGVfZnJhbWVidWZmZXIgYyB0YXJnZXQgYXR0YWNobWVudHMgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJpbnZhbGlkYXRlRnJhbWVidWZmZXJcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2xpc3Qgb2ZfaW50IGF0dGFjaG1lbnRzfF1cblxuICBsZXQgaW52YWxpZGF0ZV9zdWJfZnJhbWVidWZmZXIgYyB0YXJnZXQgYXR0YWNobWVudHMgeCB5IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlclwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfbGlzdCBvZl9pbnQgYXR0YWNobWVudHM7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgaXNfYnVmZmVyIGMgYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzQnVmZmVyXCIgSnYuW3xidWZmZXJ8XVxuXG4gIGxldCBpc19lbmFibGVkIGMgY2FwID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzRW5hYmxlZFwiIEp2Llt8b2ZfaW50IGNhcHxdXG5cbiAgbGV0IGlzX2ZyYW1lYnVmZmVyIGMgZnJhbWVidWZmZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNGcmFtZWJ1ZmZlclwiIEp2Llt8ZnJhbWVidWZmZXJ8XVxuXG4gIGxldCBpc19wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1Byb2dyYW1cIiBKdi5bfHByb2dyYW18XVxuXG4gIGxldCBpc19xdWVyeSBjIHF1ZXJ5ID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUXVlcnlcIiBKdi5bfHF1ZXJ5fF1cblxuICBsZXQgaXNfcmVuZGVyYnVmZmVyIGMgcmVuZGVyYnVmZmVyID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzUmVuZGVyYnVmZmVyXCIgSnYuW3xyZW5kZXJidWZmZXJ8XVxuXG4gIGxldCBpc19zYW1wbGVyIGMgc2FtcGxlciA9XG4gICAgSnYudG9fYm9vbCBAQCBKdi5jYWxsIGMgXCJpc1NhbXBsZXJcIiBKdi5bfHNhbXBsZXJ8XVxuXG4gIGxldCBpc19zaGFkZXIgYyBzaGFkZXIgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNTaGFkZXJcIiBKdi5bfHNoYWRlcnxdXG5cbiAgbGV0IGlzX3RleHR1cmUgYyB0ZXh0dXJlID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVGV4dHVyZVwiIEp2Llt8dGV4dHVyZXxdXG5cbiAgbGV0IGlzX3RyYW5zZm9ybV9mZWVkYmFjayBjIHRmID1cbiAgICBKdi50b19ib29sIEBAIEp2LmNhbGwgYyBcImlzVHJhbnNmb3JtRmVlZGJhY2tcIiBKdi5bfHRmfF1cblxuICBsZXQgaXNfdmVydGV4X2FycmF5IGMgdmVydGV4QXJyYXkgPVxuICAgIEp2LnRvX2Jvb2wgQEAgSnYuY2FsbCBjIFwiaXNWZXJ0ZXhBcnJheVwiIEp2Llt8dmVydGV4QXJyYXl8XVxuXG4gIGxldCBsaW5lX3dpZHRoIGMgd2lkdGggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJsaW5lV2lkdGhcIiBKdi5bfG9mX2Zsb2F0IHdpZHRofF1cblxuICBsZXQgbGlua19wcm9ncmFtIGMgcHJvZ3JhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcImxpbmtQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgcGF1c2VfdHJhbnNmb3JtX2ZlZWRiYWNrIGMgID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicGF1c2VUcmFuc2Zvcm1GZWVkYmFja1wiIEp2Llt8fF1cblxuICBsZXQgcGl4ZWxfc3RvcmVpIGMgcG5hbWUgcGFyYW0gPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJwaXhlbFN0b3JlaVwiIEp2Llt8b2ZfaW50IHBuYW1lOyBvZl9pbnQgcGFyYW18XVxuXG4gIGxldCBwb2x5Z29uX29mZnNldCBjIGZhY3RvciB1bml0cyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInBvbHlnb25PZmZzZXRcIiBKdi5bfG9mX2Zsb2F0IGZhY3Rvcjsgb2ZfZmxvYXQgdW5pdHN8XVxuXG4gIGxldCByZWFkX2J1ZmZlciBjIHNyYyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRCdWZmZXJcIiBKdi5bfG9mX2ludCBzcmN8XVxuXG4gIGxldCByZWFkX3BpeGVsc190b19waXhlbF9wYWNrIGMgeCB5IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVhZFBpeGVsc1wiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHJlYWRfcGl4ZWxzIGMgeCB5IHdpZHRoIGhlaWdodCBmb3JtYXQgdHlwZScgZHN0RGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlYWRQaXhlbHNcIiBKdi5bfG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBkc3REYXRhfF1cblxuICBsZXQgcmVuZGVyYnVmZmVyX3N0b3JhZ2UgYyB0YXJnZXQgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwicmVuZGVyYnVmZmVyU3RvcmFnZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCByZW5kZXJidWZmZXJfc3RvcmFnZV9tdWx0aXNhbXBsZSBjIHRhcmdldCBzYW1wbGVzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZVwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IHNhbXBsZXM7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0fF1cblxuICBsZXQgcmVzdW1lX3RyYW5zZm9ybV9mZWVkYmFjayBjICA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrXCIgSnYuW3x8XVxuXG4gIGxldCBzYW1wbGVfY292ZXJhZ2UgYyB2YWx1ZSBpbnZlcnQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzYW1wbGVDb3ZlcmFnZVwiIEp2Llt8b2ZfZmxvYXQgdmFsdWU7IEp2Lm9mX2Jvb2wgaW52ZXJ0fF1cblxuICBsZXQgc2FtcGxlcl9wYXJhbWV0ZXJmIGMgc2FtcGxlciBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhbXBsZXJQYXJhbWV0ZXJmXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWU7IG9mX2Zsb2F0IHBhcmFtfF1cblxuICBsZXQgc2FtcGxlcl9wYXJhbWV0ZXJpIGMgc2FtcGxlciBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNhbXBsZXJQYXJhbWV0ZXJpXCIgSnYuW3xzYW1wbGVyOyBvZl9pbnQgcG5hbWU7IG9mX2ludCBwYXJhbXxdXG5cbiAgbGV0IHNjaXNzb3IgYyB4IHkgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic2Npc3NvclwiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCBzaGFkZXJfc291cmNlIGMgc2hhZGVyIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInNoYWRlclNvdXJjZVwiIEp2Llt8c2hhZGVyOyBvZl9qc3RyIHNvdXJjZXxdXG5cbiAgbGV0IHN0ZW5jaWxfZnVuYyBjIGZ1bmMgcmVmIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsRnVuY1wiIEp2Llt8b2ZfaW50IGZ1bmM7IG9mX2ludCByZWY7IG9mX2ludCBtYXNrfF1cblxuICBsZXQgc3RlbmNpbF9mdW5jX3NlcGFyYXRlIGMgZmFjZSBmdW5jIHJlZiBtYXNrID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwic3RlbmNpbEZ1bmNTZXBhcmF0ZVwiIEp2Llt8b2ZfaW50IGZhY2U7IG9mX2ludCBmdW5jOyBvZl9pbnQgcmVmOyBvZl9pbnQgbWFza3xdXG5cbiAgbGV0IHN0ZW5jaWxfbWFzayBjIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsTWFza1wiIEp2Llt8b2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX21hc2tfc2VwYXJhdGUgYyBmYWNlIG1hc2sgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJzdGVuY2lsTWFza1NlcGFyYXRlXCIgSnYuW3xvZl9pbnQgZmFjZTsgb2ZfaW50IG1hc2t8XVxuXG4gIGxldCBzdGVuY2lsX29wIGMgZmFpbCB6ZmFpbCB6cGFzcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxPcFwiIEp2Llt8b2ZfaW50IGZhaWw7IG9mX2ludCB6ZmFpbDsgb2ZfaW50IHpwYXNzfF1cblxuICBsZXQgc3RlbmNpbF9vcF9zZXBhcmF0ZSBjIGZhY2UgZmFpbCB6ZmFpbCB6cGFzcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInN0ZW5jaWxPcFNlcGFyYXRlXCIgSnYuW3xvZl9pbnQgZmFjZTsgb2ZfaW50IGZhaWw7IG9mX2ludCB6ZmFpbDsgb2ZfaW50IHpwYXNzfF1cblxuICBsZXQgdGV4X2ltYWdlMmQgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGJvcmRlciBmb3JtYXQgdHlwZScgc3JjRGF0YSBzcmNPZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCBpbnRlcm5hbGZvcm1hdDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X2ltYWdlMmRfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X2ltYWdlMmRfb2ZfcGl4ZWxfdW5wYWNrIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBib3JkZXIgZm9ybWF0IHR5cGUnIHBib09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBib3JkZXI7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgb2ZfaW50IHBib09mZnNldHxdXG5cbiAgbGV0IHRleF9pbWFnZTNkIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHNyY0RhdGEgc3JjT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IFRhcnJheS50b19qdiBzcmNEYXRhOyBvZl9pbnQgc3JjT2Zmc2V0fF1cblxuICBsZXQgdGV4X2ltYWdlM2Rfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCBib3JkZXIgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleEltYWdlM0RcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGJvcmRlcjsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBzb3VyY2V8XVxuXG4gIGxldCB0ZXhfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0IGRlcHRoIGJvcmRlciBmb3JtYXQgdHlwZScgcGJvT2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4SW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgYm9yZGVyOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfcGFyYW1ldGVyZiBjIHRhcmdldCBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFBhcmFtZXRlcmZcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZTsgb2ZfZmxvYXQgcGFyYW18XVxuXG4gIGxldCB0ZXhfcGFyYW1ldGVyaSBjIHRhcmdldCBwbmFtZSBwYXJhbSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFBhcmFtZXRlcmlcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBwbmFtZTsgb2ZfaW50IHBhcmFtfF1cblxuICBsZXQgdGV4X3N0b3JhZ2UyZCBjIHRhcmdldCBsZXZlbHMgaW50ZXJuYWxmb3JtYXQgd2lkdGggaGVpZ2h0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3RvcmFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWxzOyBvZl9pbnQgaW50ZXJuYWxmb3JtYXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodHxdXG5cbiAgbGV0IHRleF9zdG9yYWdlM2QgYyB0YXJnZXQgbGV2ZWxzIGludGVybmFsZm9ybWF0IHdpZHRoIGhlaWdodCBkZXB0aCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN0b3JhZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsczsgb2ZfaW50IGludGVybmFsZm9ybWF0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aHxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UyZCBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBzcmNEYXRhIHNyY09mZnNldCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgVGFycmF5LnRvX2p2IHNyY0RhdGE7IG9mX2ludCBzcmNPZmZzZXR8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlMmRfb2Zfc291cmNlIGMgdGFyZ2V0IGxldmVsIHhvZmZzZXQgeW9mZnNldCB3aWR0aCBoZWlnaHQgZm9ybWF0IHR5cGUnIHNvdXJjZSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInRleFN1YkltYWdlMkRcIiBKdi5bfG9mX2ludCB0YXJnZXQ7IG9mX2ludCBsZXZlbDsgb2ZfaW50IHhvZmZzZXQ7IG9mX2ludCB5b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBmb3JtYXQ7IG9mX2ludCB0eXBlJzsgc291cmNlfF1cblxuICBsZXQgdGV4X3N1Yl9pbWFnZTJkX29mX3BpeGVsX3VucGFjayBjIHRhcmdldCBsZXZlbCB4b2Zmc2V0IHlvZmZzZXQgd2lkdGggaGVpZ2h0IGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTJEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHdpZHRoOyBvZl9pbnQgaGVpZ2h0OyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0ZXhfc3ViX2ltYWdlM2QgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBzcmNEYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidGV4U3ViSW1hZ2UzRFwiIEp2Llt8b2ZfaW50IHRhcmdldDsgb2ZfaW50IGxldmVsOyBvZl9pbnQgeG9mZnNldDsgb2ZfaW50IHlvZmZzZXQ7IG9mX2ludCB6b2Zmc2V0OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHQ7IG9mX2ludCBkZXB0aDsgb2ZfaW50IGZvcm1hdDsgb2ZfaW50IHR5cGUnOyBUYXJyYXkudG9fanYgc3JjRGF0YXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UzZF9vZl9zb3VyY2UgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBzb3VyY2UgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IHNvdXJjZXxdXG5cbiAgbGV0IHRleF9zdWJfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2sgYyB0YXJnZXQgbGV2ZWwgeG9mZnNldCB5b2Zmc2V0IHpvZmZzZXQgd2lkdGggaGVpZ2h0IGRlcHRoIGZvcm1hdCB0eXBlJyBwYm9PZmZzZXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0ZXhTdWJJbWFnZTNEXCIgSnYuW3xvZl9pbnQgdGFyZ2V0OyBvZl9pbnQgbGV2ZWw7IG9mX2ludCB4b2Zmc2V0OyBvZl9pbnQgeW9mZnNldDsgb2ZfaW50IHpvZmZzZXQ7IG9mX2ludCB3aWR0aDsgb2ZfaW50IGhlaWdodDsgb2ZfaW50IGRlcHRoOyBvZl9pbnQgZm9ybWF0OyBvZl9pbnQgdHlwZSc7IG9mX2ludCBwYm9PZmZzZXR8XVxuXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZ3MgYyBwcm9ncmFtIHZhcnlpbmdzIGJ1ZmZlck1vZGUgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzXCIgSnYuW3xwcm9ncmFtOyBvZl9qc3RyX2xpc3QgdmFyeWluZ3M7IG9mX2ludCBidWZmZXJNb2RlfF1cblxuICBsZXQgdW5pZm9ybTFmIGMgbG9jYXRpb24geCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHh8XVxuXG4gIGxldCB1bmlmb3JtMWZ2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0xaSBjIGxvY2F0aW9uIHggPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeHxdXG5cbiAgbGV0IHVuaWZvcm0xaXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTFpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTF1aSBjIGxvY2F0aW9uIHYwID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTF1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MHxdXG5cbiAgbGV0IHVuaWZvcm0xdWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0xdWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMmYgYyBsb2NhdGlvbiB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmZcIiBKdi5bfGxvY2F0aW9uOyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICBsZXQgdW5pZm9ybTJmdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmZ2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtMmkgYyBsb2NhdGlvbiB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtMmlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeDsgb2ZfaW50IHl8XVxuXG4gIGxldCB1bmlmb3JtMml2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0yaXZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0ydWkgYyBsb2NhdGlvbiB2MCB2MSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0ydWlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgdjA7IG9mX2ludCB2MXxdXG5cbiAgbGV0IHVuaWZvcm0ydWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0ydWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtM2YgYyBsb2NhdGlvbiB4IHkgeiA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHp8XVxuXG4gIGxldCB1bmlmb3JtM2Z2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm0zZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm0zaSBjIGxvY2F0aW9uIHggeSB6ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTNpXCIgSnYuW3xsb2NhdGlvbjsgb2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgenxdXG5cbiAgbGV0IHVuaWZvcm0zaXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTNpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTN1aSBjIGxvY2F0aW9uIHYwIHYxIHYyID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTN1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MDsgb2ZfaW50IHYxOyBvZl9pbnQgdjJ8XVxuXG4gIGxldCB1bmlmb3JtM3VpdiBjIGxvY2F0aW9uIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtM3VpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTRmIGMgbG9jYXRpb24geCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00ZlwiIEp2Llt8bG9jYXRpb247IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHd8XVxuXG4gIGxldCB1bmlmb3JtNGZ2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00ZnZcIiBKdi5bfGxvY2F0aW9uOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm00aSBjIGxvY2F0aW9uIHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtNGlcIiBKdi5bfGxvY2F0aW9uOyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHVuaWZvcm00aXYgYyBsb2NhdGlvbiBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTRpdlwiIEp2Llt8bG9jYXRpb247IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybTR1aSBjIGxvY2F0aW9uIHYwIHYxIHYyIHYzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybTR1aVwiIEp2Llt8bG9jYXRpb247IG9mX2ludCB2MDsgb2ZfaW50IHYxOyBvZl9pbnQgdjI7IG9mX2ludCB2M3xdXG5cbiAgbGV0IHVuaWZvcm00dWl2IGMgbG9jYXRpb24gZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm00dWl2XCIgSnYuW3xsb2NhdGlvbjsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2JpbmRpbmcgYyBwcm9ncmFtIHVuaWZvcm1CbG9ja0luZGV4IHVuaWZvcm1CbG9ja0JpbmRpbmcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtQmxvY2tCaW5kaW5nXCIgSnYuW3xwcm9ncmFtOyBvZl9pbnQgdW5pZm9ybUJsb2NrSW5kZXg7IG9mX2ludCB1bmlmb3JtQmxvY2tCaW5kaW5nfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXgyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgyZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDJ4M2Z2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4MngzZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDJ4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4Mng0ZnZcIiBKdi5bfGxvY2F0aW9uOyBKdi5vZl9ib29sIHRyYW5zcG9zZTsgVGFycmF5LnRvX2p2IGRhdGF8XVxuXG4gIGxldCB1bmlmb3JtX21hdHJpeDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDNmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4M3gyZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzeDJmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4M3g0ZnYgYyBsb2NhdGlvbiB0cmFuc3Bvc2UgZGF0YSA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInVuaWZvcm1NYXRyaXgzeDRmdlwiIEp2Llt8bG9jYXRpb247IEp2Lm9mX2Jvb2wgdHJhbnNwb3NlOyBUYXJyYXkudG9fanYgZGF0YXxdXG5cbiAgbGV0IHVuaWZvcm1fbWF0cml4NGZ2IGMgbG9jYXRpb24gdHJhbnNwb3NlIGRhdGEgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ1bmlmb3JtTWF0cml4NGZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXg0eDJmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDR4MmZ2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdW5pZm9ybV9tYXRyaXg0eDNmdiBjIGxvY2F0aW9uIHRyYW5zcG9zZSBkYXRhID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidW5pZm9ybU1hdHJpeDR4M2Z2XCIgSnYuW3xsb2NhdGlvbjsgSnYub2ZfYm9vbCB0cmFuc3Bvc2U7IFRhcnJheS50b19qdiBkYXRhfF1cblxuICBsZXQgdXNlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidXNlUHJvZ3JhbVwiIEp2Llt8cHJvZ3JhbXxdXG5cbiAgbGV0IHZhbGlkYXRlX3Byb2dyYW0gYyBwcm9ncmFtID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmFsaWRhdGVQcm9ncmFtXCIgSnYuW3xwcm9ncmFtfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjFmIGMgaW5kZXggeCA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjFmXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2Zsb2F0IHh8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliMWZ2IGMgaW5kZXggdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliMWZ2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliMmYgYyBpbmRleCB4IHkgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIyZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjJmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjJmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjNmIGMgaW5kZXggeCB5IHogPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWIzZlwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9mbG9hdCB4OyBvZl9mbG9hdCB5OyBvZl9mbG9hdCB6fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjNmdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjNmdlwiIEp2Llt8b2ZfaW50IGluZGV4OyBUYXJyYXkudG9fanYgdmFsdWVzfF1cblxuICBsZXQgdmVydGV4X2F0dHJpYjRmIGMgaW5kZXggeCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYjRmXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2Zsb2F0IHg7IG9mX2Zsb2F0IHk7IG9mX2Zsb2F0IHo7IG9mX2Zsb2F0IHd8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliNGZ2IGMgaW5kZXggdmFsdWVzID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliNGZ2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2Rpdmlzb3IgYyBpbmRleCBkaXZpc29yID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliRGl2aXNvclwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgZGl2aXNvcnxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTRpIGMgaW5kZXggeCB5IHogdyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0aVwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgeDsgb2ZfaW50IHk7IG9mX2ludCB6OyBvZl9pbnQgd3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTRpdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0aXZcIiBKdi5bfG9mX2ludCBpbmRleDsgVGFycmF5LnRvX2p2IHZhbHVlc3xdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfaTR1aSBjIGluZGV4IHggeSB6IHcgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2ZXJ0ZXhBdHRyaWJJNHVpXCIgSnYuW3xvZl9pbnQgaW5kZXg7IG9mX2ludCB4OyBvZl9pbnQgeTsgb2ZfaW50IHo7IG9mX2ludCB3fF1cblxuICBsZXQgdmVydGV4X2F0dHJpYl9pNHVpdiBjIGluZGV4IHZhbHVlcyA9XG4gICAgaWdub3JlIEBAIEp2LmNhbGwgYyBcInZlcnRleEF0dHJpYkk0dWl2XCIgSnYuW3xvZl9pbnQgaW5kZXg7IFRhcnJheS50b19qdiB2YWx1ZXN8XVxuXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2lwb2ludGVyIGMgaW5kZXggc2l6ZSB0eXBlJyBzdHJpZGUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliSVBvaW50ZXJcIiBKdi5bfG9mX2ludCBpbmRleDsgb2ZfaW50IHNpemU7IG9mX2ludCB0eXBlJzsgb2ZfaW50IHN0cmlkZTsgb2ZfaW50IG9mZnNldHxdXG5cbiAgbGV0IHZlcnRleF9hdHRyaWJfcG9pbnRlciBjIGluZGV4IHNpemUgdHlwZScgbm9ybWFsaXplZCBzdHJpZGUgb2Zmc2V0ID1cbiAgICBpZ25vcmUgQEAgSnYuY2FsbCBjIFwidmVydGV4QXR0cmliUG9pbnRlclwiIEp2Llt8b2ZfaW50IGluZGV4OyBvZl9pbnQgc2l6ZTsgb2ZfaW50IHR5cGUnOyBKdi5vZl9ib29sIG5vcm1hbGl6ZWQ7IG9mX2ludCBzdHJpZGU7IG9mX2ludCBvZmZzZXR8XVxuXG4gIGxldCB2aWV3cG9ydCBjIHggeSB3aWR0aCBoZWlnaHQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ2aWV3cG9ydFwiIEp2Llt8b2ZfaW50IHg7IG9mX2ludCB5OyBvZl9pbnQgd2lkdGg7IG9mX2ludCBoZWlnaHR8XVxuXG4gIGxldCB3YWl0X3N5bmMgYyBzeW5jIGZsYWdzIHRpbWVvdXQgPVxuICAgIGlnbm9yZSBAQCBKdi5jYWxsIGMgXCJ3YWl0U3luY1wiIEp2Llt8c3luYzsgb2ZfaW50IGZsYWdzOyBvZl9pbnQgdGltZW91dHxdXG5cbiAgKCogRW51bXMgKilcblxuICBsZXQgZ2V0X2ludCBjdHggZiA9IGlmIEp2LmlzX25vbmUgY3R4IHRoZW4gMCBlbHNlIEp2LkludC5nZXQgY3R4IGZcblxuICBsZXQgZ2wxY3R4ID0gSnYuZ2V0IEp2Lmdsb2JhbCBcIldlYkdMUmVuZGVyaW5nQ29udGV4dFwiXG4gIGxldCBkZXB0aF9idWZmZXJfYml0ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9CVUZGRVJfQklUXCJcbiAgbGV0IHN0ZW5jaWxfYnVmZmVyX2JpdCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CVUZGRVJfQklUXCJcbiAgbGV0IGNvbG9yX2J1ZmZlcl9iaXQgPSBnZXRfaW50IGdsMWN0eCBcIkNPTE9SX0JVRkZFUl9CSVRcIlxuICBsZXQgcG9pbnRzID0gZ2V0X2ludCBnbDFjdHggXCJQT0lOVFNcIlxuICBsZXQgbGluZXMgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVTXCJcbiAgbGV0IGxpbmVfbG9vcCA9IGdldF9pbnQgZ2wxY3R4IFwiTElORV9MT09QXCJcbiAgbGV0IGxpbmVfc3RyaXAgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVfU1RSSVBcIlxuICBsZXQgdHJpYW5nbGVzID0gZ2V0X2ludCBnbDFjdHggXCJUUklBTkdMRVNcIlxuICBsZXQgdHJpYW5nbGVfc3RyaXAgPSBnZXRfaW50IGdsMWN0eCBcIlRSSUFOR0xFX1NUUklQXCJcbiAgbGV0IHRyaWFuZ2xlX2ZhbiA9IGdldF9pbnQgZ2wxY3R4IFwiVFJJQU5HTEVfRkFOXCJcbiAgbGV0IHplcm8gPSBnZXRfaW50IGdsMWN0eCBcIlpFUk9cIlxuICBsZXQgb25lID0gZ2V0X2ludCBnbDFjdHggXCJPTkVcIlxuICBsZXQgc3JjX2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJTUkNfQ09MT1JcIlxuICBsZXQgb25lX21pbnVzX3NyY19jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX1NSQ19DT0xPUlwiXG4gIGxldCBzcmNfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIlNSQ19BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJPTkVfTUlOVVNfU1JDX0FMUEhBXCJcbiAgbGV0IGRzdF9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiRFNUX0FMUEhBXCJcbiAgbGV0IG9uZV9taW51c19kc3RfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19EU1RfQUxQSEFcIlxuICBsZXQgZHN0X2NvbG9yID0gZ2V0X2ludCBnbDFjdHggXCJEU1RfQ09MT1JcIlxuICBsZXQgb25lX21pbnVzX2RzdF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX0RTVF9DT0xPUlwiXG4gIGxldCBzcmNfYWxwaGFfc2F0dXJhdGUgPSBnZXRfaW50IGdsMWN0eCBcIlNSQ19BTFBIQV9TQVRVUkFURVwiXG4gIGxldCBmdW5jX2FkZCA9IGdldF9pbnQgZ2wxY3R4IFwiRlVOQ19BRERcIlxuICBsZXQgYmxlbmRfZXF1YXRpb24nID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9FUVVBVElPTlwiXG4gIGxldCBibGVuZF9lcXVhdGlvbl9yZ2IgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0VRVUFUSU9OX1JHQlwiXG4gIGxldCBibGVuZF9lcXVhdGlvbl9hbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQkxFTkRfRVFVQVRJT05fQUxQSEFcIlxuICBsZXQgZnVuY19zdWJ0cmFjdCA9IGdldF9pbnQgZ2wxY3R4IFwiRlVOQ19TVUJUUkFDVFwiXG4gIGxldCBmdW5jX3JldmVyc2Vfc3VidHJhY3QgPSBnZXRfaW50IGdsMWN0eCBcIkZVTkNfUkVWRVJTRV9TVUJUUkFDVFwiXG4gIGxldCBibGVuZF9kc3RfcmdiID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9EU1RfUkdCXCJcbiAgbGV0IGJsZW5kX3NyY19yZ2IgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX1NSQ19SR0JcIlxuICBsZXQgYmxlbmRfZHN0X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9EU1RfQUxQSEFcIlxuICBsZXQgYmxlbmRfc3JjX2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORF9TUkNfQUxQSEFcIlxuICBsZXQgY29uc3RhbnRfY29sb3IgPSBnZXRfaW50IGdsMWN0eCBcIkNPTlNUQU5UX0NPTE9SXCJcbiAgbGV0IG9uZV9taW51c19jb25zdGFudF9jb2xvciA9IGdldF9pbnQgZ2wxY3R4IFwiT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SXCJcbiAgbGV0IGNvbnN0YW50X2FscGhhID0gZ2V0X2ludCBnbDFjdHggXCJDT05TVEFOVF9BTFBIQVwiXG4gIGxldCBvbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQVwiXG4gIGxldCBibGVuZF9jb2xvcicgPSBnZXRfaW50IGdsMWN0eCBcIkJMRU5EX0NPTE9SXCJcbiAgbGV0IGFycmF5X2J1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiQVJSQVlfQlVGRkVSXCJcbiAgbGV0IGVsZW1lbnRfYXJyYXlfYnVmZmVyID0gZ2V0X2ludCBnbDFjdHggXCJFTEVNRU5UX0FSUkFZX0JVRkZFUlwiXG4gIGxldCBhcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiQVJSQVlfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgZWxlbWVudF9hcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR1wiXG4gIGxldCBzdHJlYW1fZHJhdyA9IGdldF9pbnQgZ2wxY3R4IFwiU1RSRUFNX0RSQVdcIlxuICBsZXQgc3RhdGljX2RyYXcgPSBnZXRfaW50IGdsMWN0eCBcIlNUQVRJQ19EUkFXXCJcbiAgbGV0IGR5bmFtaWNfZHJhdyA9IGdldF9pbnQgZ2wxY3R4IFwiRFlOQU1JQ19EUkFXXCJcbiAgbGV0IGJ1ZmZlcl9zaXplID0gZ2V0X2ludCBnbDFjdHggXCJCVUZGRVJfU0laRVwiXG4gIGxldCBidWZmZXJfdXNhZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkJVRkZFUl9VU0FHRVwiXG4gIGxldCBjdXJyZW50X3ZlcnRleF9hdHRyaWIgPSBnZXRfaW50IGdsMWN0eCBcIkNVUlJFTlRfVkVSVEVYX0FUVFJJQlwiXG4gIGxldCBmcm9udCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJPTlRcIlxuICBsZXQgYmFjayA9IGdldF9pbnQgZ2wxY3R4IFwiQkFDS1wiXG4gIGxldCBmcm9udF9hbmRfYmFjayA9IGdldF9pbnQgZ2wxY3R4IFwiRlJPTlRfQU5EX0JBQ0tcIlxuICBsZXQgY3VsbF9mYWNlJyA9IGdldF9pbnQgZ2wxY3R4IFwiQ1VMTF9GQUNFXCJcbiAgbGV0IGJsZW5kID0gZ2V0X2ludCBnbDFjdHggXCJCTEVORFwiXG4gIGxldCBkaXRoZXIgPSBnZXRfaW50IGdsMWN0eCBcIkRJVEhFUlwiXG4gIGxldCBzdGVuY2lsX3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfVEVTVFwiXG4gIGxldCBkZXB0aF90ZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9URVNUXCJcbiAgbGV0IHNjaXNzb3JfdGVzdCA9IGdldF9pbnQgZ2wxY3R4IFwiU0NJU1NPUl9URVNUXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X2ZpbGwgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX0ZJTExcIlxuICBsZXQgc2FtcGxlX2FscGhhX3RvX2NvdmVyYWdlID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VcIlxuICBsZXQgc2FtcGxlX2NvdmVyYWdlJyA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0NPVkVSQUdFXCJcbiAgbGV0IG5vX2Vycm9yID0gZ2V0X2ludCBnbDFjdHggXCJOT19FUlJPUlwiXG4gIGxldCBpbnZhbGlkX2VudW0gPSBnZXRfaW50IGdsMWN0eCBcIklOVkFMSURfRU5VTVwiXG4gIGxldCBpbnZhbGlkX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX1ZBTFVFXCJcbiAgbGV0IGludmFsaWRfb3BlcmF0aW9uID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX09QRVJBVElPTlwiXG4gIGxldCBvdXRfb2ZfbWVtb3J5ID0gZ2V0X2ludCBnbDFjdHggXCJPVVRfT0ZfTUVNT1JZXCJcbiAgbGV0IGN3ID0gZ2V0X2ludCBnbDFjdHggXCJDV1wiXG4gIGxldCBjY3cgPSBnZXRfaW50IGdsMWN0eCBcIkNDV1wiXG4gIGxldCBsaW5lX3dpZHRoJyA9IGdldF9pbnQgZ2wxY3R4IFwiTElORV9XSURUSFwiXG4gIGxldCBhbGlhc2VkX3BvaW50X3NpemVfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRVwiXG4gIGxldCBhbGlhc2VkX2xpbmVfd2lkdGhfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkFMSUFTRURfTElORV9XSURUSF9SQU5HRVwiXG4gIGxldCBjdWxsX2ZhY2VfbW9kZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ1VMTF9GQUNFX01PREVcIlxuICBsZXQgZnJvbnRfZmFjZScgPSBnZXRfaW50IGdsMWN0eCBcIkZST05UX0ZBQ0VcIlxuICBsZXQgZGVwdGhfcmFuZ2UgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1JBTkdFXCJcbiAgbGV0IGRlcHRoX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfV1JJVEVNQVNLXCJcbiAgbGV0IGRlcHRoX2NsZWFyX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9DTEVBUl9WQUxVRVwiXG4gIGxldCBkZXB0aF9mdW5jJyA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2NsZWFyX3ZhbHVlID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0NMRUFSX1ZBTFVFXCJcbiAgbGV0IHN0ZW5jaWxfZnVuYycgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfRlVOQ1wiXG4gIGxldCBzdGVuY2lsX2ZhaWwgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfRkFJTFwiXG4gIGxldCBzdGVuY2lsX3Bhc3NfZGVwdGhfZmFpbCA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxcIlxuICBsZXQgc3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfUEFTU19ERVBUSF9QQVNTXCJcbiAgbGV0IHN0ZW5jaWxfcmVmID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX1JFRlwiXG4gIGxldCBzdGVuY2lsX3ZhbHVlX21hc2sgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfVkFMVUVfTUFTS1wiXG4gIGxldCBzdGVuY2lsX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9XUklURU1BU0tcIlxuICBsZXQgc3RlbmNpbF9iYWNrX2Z1bmMgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19GVU5DXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfRkFJTFwiXG4gIGxldCBzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9mYWlsID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMXCJcbiAgbGV0IHN0ZW5jaWxfYmFja19wYXNzX2RlcHRoX3Bhc3MgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3JlZiA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1JFRlwiXG4gIGxldCBzdGVuY2lsX2JhY2tfdmFsdWVfbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tcIlxuICBsZXQgc3RlbmNpbF9iYWNrX3dyaXRlbWFzayA9IGdldF9pbnQgZ2wxY3R4IFwiU1RFTkNJTF9CQUNLX1dSSVRFTUFTS1wiXG4gIGxldCB2aWV3cG9ydCcgPSBnZXRfaW50IGdsMWN0eCBcIlZJRVdQT1JUXCJcbiAgbGV0IHNjaXNzb3JfYm94ID0gZ2V0X2ludCBnbDFjdHggXCJTQ0lTU09SX0JPWFwiXG4gIGxldCBjb2xvcl9jbGVhcl92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfQ0xFQVJfVkFMVUVcIlxuICBsZXQgY29sb3Jfd3JpdGVtYXNrID0gZ2V0X2ludCBnbDFjdHggXCJDT0xPUl9XUklURU1BU0tcIlxuICBsZXQgdW5wYWNrX2FsaWdubWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX0FMSUdOTUVOVFwiXG4gIGxldCBwYWNrX2FsaWdubWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiUEFDS19BTElHTk1FTlRcIlxuICBsZXQgbWF4X3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1RFWFRVUkVfU0laRVwiXG4gIGxldCBtYXhfdmlld3BvcnRfZGltcyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZJRVdQT1JUX0RJTVNcIlxuICBsZXQgc3VicGl4ZWxfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiU1VCUElYRUxfQklUU1wiXG4gIGxldCByZWRfYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiUkVEX0JJVFNcIlxuICBsZXQgZ3JlZW5fYml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiR1JFRU5fQklUU1wiXG4gIGxldCBibHVlX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkJMVUVfQklUU1wiXG4gIGxldCBhbHBoYV9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJBTFBIQV9CSVRTXCJcbiAgbGV0IGRlcHRoX2JpdHMgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0JJVFNcIlxuICBsZXQgc3RlbmNpbF9iaXRzID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0JJVFNcIlxuICBsZXQgcG9seWdvbl9vZmZzZXRfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIlBPTFlHT05fT0ZGU0VUX1VOSVRTXCJcbiAgbGV0IHBvbHlnb25fb2Zmc2V0X2ZhY3RvciA9IGdldF9pbnQgZ2wxY3R4IFwiUE9MWUdPTl9PRkZTRVRfRkFDVE9SXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18yZCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzJEXCJcbiAgbGV0IHNhbXBsZV9idWZmZXJzID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVfQlVGRkVSU1wiXG4gIGxldCBzYW1wbGVzID0gZ2V0X2ludCBnbDFjdHggXCJTQU1QTEVTXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZV92YWx1ZSA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFX0NPVkVSQUdFX1ZBTFVFXCJcbiAgbGV0IHNhbXBsZV9jb3ZlcmFnZV9pbnZlcnQgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlRcIlxuICBsZXQgY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHMgPSBnZXRfaW50IGdsMWN0eCBcIkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXCJcbiAgbGV0IGRvbnRfY2FyZSA9IGdldF9pbnQgZ2wxY3R4IFwiRE9OVF9DQVJFXCJcbiAgbGV0IGZhc3Rlc3QgPSBnZXRfaW50IGdsMWN0eCBcIkZBU1RFU1RcIlxuICBsZXQgbmljZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJOSUNFU1RcIlxuICBsZXQgZ2VuZXJhdGVfbWlwbWFwX2hpbnQgPSBnZXRfaW50IGdsMWN0eCBcIkdFTkVSQVRFX01JUE1BUF9ISU5UXCJcbiAgbGV0IGJ5dGUgPSBnZXRfaW50IGdsMWN0eCBcIkJZVEVcIlxuICBsZXQgdW5zaWduZWRfYnl0ZSA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfQllURVwiXG4gIGxldCBzaG9ydCA9IGdldF9pbnQgZ2wxY3R4IFwiU0hPUlRcIlxuICBsZXQgdW5zaWduZWRfc2hvcnQgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXCJcbiAgbGV0IGludCA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UXCJcbiAgbGV0IHVuc2lnbmVkX2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5TSUdORURfSU5UXCJcbiAgbGV0IGZsb2F0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVFwiXG4gIGxldCBkZXB0aF9jb21wb25lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0NPTVBPTkVOVFwiXG4gIGxldCBhbHBoYSA9IGdldF9pbnQgZ2wxY3R4IFwiQUxQSEFcIlxuICBsZXQgcmdiID0gZ2V0X2ludCBnbDFjdHggXCJSR0JcIlxuICBsZXQgcmdiYSA9IGdldF9pbnQgZ2wxY3R4IFwiUkdCQVwiXG4gIGxldCBsdW1pbmFuY2UgPSBnZXRfaW50IGdsMWN0eCBcIkxVTUlOQU5DRVwiXG4gIGxldCBsdW1pbmFuY2VfYWxwaGEgPSBnZXRfaW50IGdsMWN0eCBcIkxVTUlOQU5DRV9BTFBIQVwiXG4gIGxldCB1bnNpZ25lZF9zaG9ydF80XzRfNF80ID0gZ2V0X2ludCBnbDFjdHggXCJVTlNJR05FRF9TSE9SVF80XzRfNF80XCJcbiAgbGV0IHVuc2lnbmVkX3Nob3J0XzVfNV81XzEgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXzVfNV81XzFcIlxuICBsZXQgdW5zaWduZWRfc2hvcnRfNV82XzUgPSBnZXRfaW50IGdsMWN0eCBcIlVOU0lHTkVEX1NIT1JUXzVfNl81XCJcbiAgbGV0IGZyYWdtZW50X3NoYWRlciA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBR01FTlRfU0hBREVSXCJcbiAgbGV0IHZlcnRleF9zaGFkZXIgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9TSEFERVJcIlxuICBsZXQgbWF4X3ZlcnRleF9hdHRyaWJzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVkVSVEVYX0FUVFJJQlNcIlxuICBsZXQgbWF4X3ZlcnRleF91bmlmb3JtX3ZlY3RvcnMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXCJcbiAgbGV0IG1heF92YXJ5aW5nX3ZlY3RvcnMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9WQVJZSU5HX1ZFQ1RPUlNcIlxuICBsZXQgbWF4X2NvbWJpbmVkX3RleHR1cmVfaW1hZ2VfdW5pdHMgPSBnZXRfaW50IGdsMWN0eCBcIk1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdGV4dHVyZV9pbWFnZV91bml0cyA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXCJcbiAgbGV0IG1heF90ZXh0dXJlX2ltYWdlX3VuaXRzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfVEVYVFVSRV9JTUFHRV9VTklUU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV92ZWN0b3JzID0gZ2V0X2ludCBnbDFjdHggXCJNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXCJcbiAgbGV0IHNoYWRlcl90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJTSEFERVJfVFlQRVwiXG4gIGxldCBkZWxldGVfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJERUxFVEVfU1RBVFVTXCJcbiAgbGV0IGxpbmtfc3RhdHVzID0gZ2V0X2ludCBnbDFjdHggXCJMSU5LX1NUQVRVU1wiXG4gIGxldCB2YWxpZGF0ZV9zdGF0dXMgPSBnZXRfaW50IGdsMWN0eCBcIlZBTElEQVRFX1NUQVRVU1wiXG4gIGxldCBhdHRhY2hlZF9zaGFkZXJzID0gZ2V0X2ludCBnbDFjdHggXCJBVFRBQ0hFRF9TSEFERVJTXCJcbiAgbGV0IGFjdGl2ZV91bmlmb3JtcyA9IGdldF9pbnQgZ2wxY3R4IFwiQUNUSVZFX1VOSUZPUk1TXCJcbiAgbGV0IGFjdGl2ZV9hdHRyaWJ1dGVzID0gZ2V0X2ludCBnbDFjdHggXCJBQ1RJVkVfQVRUUklCVVRFU1wiXG4gIGxldCBzaGFkaW5nX2xhbmd1YWdlX3ZlcnNpb24gPSBnZXRfaW50IGdsMWN0eCBcIlNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTlwiXG4gIGxldCBjdXJyZW50X3Byb2dyYW0gPSBnZXRfaW50IGdsMWN0eCBcIkNVUlJFTlRfUFJPR1JBTVwiXG4gIGxldCBuZXZlciA9IGdldF9pbnQgZ2wxY3R4IFwiTkVWRVJcIlxuICBsZXQgbGVzcyA9IGdldF9pbnQgZ2wxY3R4IFwiTEVTU1wiXG4gIGxldCBlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiRVFVQUxcIlxuICBsZXQgbGVxdWFsID0gZ2V0X2ludCBnbDFjdHggXCJMRVFVQUxcIlxuICBsZXQgZ3JlYXRlciA9IGdldF9pbnQgZ2wxY3R4IFwiR1JFQVRFUlwiXG4gIGxldCBub3RlcXVhbCA9IGdldF9pbnQgZ2wxY3R4IFwiTk9URVFVQUxcIlxuICBsZXQgZ2VxdWFsID0gZ2V0X2ludCBnbDFjdHggXCJHRVFVQUxcIlxuICBsZXQgYWx3YXlzID0gZ2V0X2ludCBnbDFjdHggXCJBTFdBWVNcIlxuICBsZXQga2VlcCA9IGdldF9pbnQgZ2wxY3R4IFwiS0VFUFwiXG4gIGxldCByZXBsYWNlID0gZ2V0X2ludCBnbDFjdHggXCJSRVBMQUNFXCJcbiAgbGV0IGluY3IgPSBnZXRfaW50IGdsMWN0eCBcIklOQ1JcIlxuICBsZXQgZGVjciA9IGdldF9pbnQgZ2wxY3R4IFwiREVDUlwiXG4gIGxldCBpbnZlcnQgPSBnZXRfaW50IGdsMWN0eCBcIklOVkVSVFwiXG4gIGxldCBpbmNyX3dyYXAgPSBnZXRfaW50IGdsMWN0eCBcIklOQ1JfV1JBUFwiXG4gIGxldCBkZWNyX3dyYXAgPSBnZXRfaW50IGdsMWN0eCBcIkRFQ1JfV1JBUFwiXG4gIGxldCB2ZW5kb3IgPSBnZXRfaW50IGdsMWN0eCBcIlZFTkRPUlwiXG4gIGxldCByZW5kZXJlciA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSRVJcIlxuICBsZXQgdmVyc2lvbiA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSU0lPTlwiXG4gIGxldCBuZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUXCJcbiAgbGV0IGxpbmVhciA9IGdldF9pbnQgZ2wxY3R4IFwiTElORUFSXCJcbiAgbGV0IG5lYXJlc3RfbWlwbWFwX25lYXJlc3QgPSBnZXRfaW50IGdsMWN0eCBcIk5FQVJFU1RfTUlQTUFQX05FQVJFU1RcIlxuICBsZXQgbGluZWFyX21pcG1hcF9uZWFyZXN0ID0gZ2V0X2ludCBnbDFjdHggXCJMSU5FQVJfTUlQTUFQX05FQVJFU1RcIlxuICBsZXQgbmVhcmVzdF9taXBtYXBfbGluZWFyID0gZ2V0X2ludCBnbDFjdHggXCJORUFSRVNUX01JUE1BUF9MSU5FQVJcIlxuICBsZXQgbGluZWFyX21pcG1hcF9saW5lYXIgPSBnZXRfaW50IGdsMWN0eCBcIkxJTkVBUl9NSVBNQVBfTElORUFSXCJcbiAgbGV0IHRleHR1cmVfbWFnX2ZpbHRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9NQUdfRklMVEVSXCJcbiAgbGV0IHRleHR1cmVfbWluX2ZpbHRlciA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9NSU5fRklMVEVSXCJcbiAgbGV0IHRleHR1cmVfd3JhcF9zID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX1dSQVBfU1wiXG4gIGxldCB0ZXh0dXJlX3dyYXBfdCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV9XUkFQX1RcIlxuICBsZXQgdGV4dHVyZV8yZCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRV8yRFwiXG4gIGxldCB0ZXh0dXJlID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFXCJcbiAgbGV0IHRleHR1cmVfY3ViZV9tYXAgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkVfQ1VCRV9NQVBcIlxuICBsZXQgdGV4dHVyZV9iaW5kaW5nX2N1YmVfbWFwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV94ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV94ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV95ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV95ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9wb3NpdGl2ZV96ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pcIlxuICBsZXQgdGV4dHVyZV9jdWJlX21hcF9uZWdhdGl2ZV96ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pcIlxuICBsZXQgbWF4X2N1YmVfbWFwX3RleHR1cmVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRVwiXG4gIGxldCB0ZXh0dXJlMCA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTBcIlxuICBsZXQgdGV4dHVyZTEgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkUxXCJcbiAgbGV0IHRleHR1cmUyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMlwiXG4gIGxldCB0ZXh0dXJlMyA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTNcIlxuICBsZXQgdGV4dHVyZTQgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU0XCJcbiAgbGV0IHRleHR1cmU1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFNVwiXG4gIGxldCB0ZXh0dXJlNiA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTZcIlxuICBsZXQgdGV4dHVyZTcgPSBnZXRfaW50IGdsMWN0eCBcIlRFWFRVUkU3XCJcbiAgbGV0IHRleHR1cmU4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFOFwiXG4gIGxldCB0ZXh0dXJlOSA9IGdldF9pbnQgZ2wxY3R4IFwiVEVYVFVSRTlcIlxuICBsZXQgdGV4dHVyZTEwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTBcIlxuICBsZXQgdGV4dHVyZTExID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTFcIlxuICBsZXQgdGV4dHVyZTEyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTJcIlxuICBsZXQgdGV4dHVyZTEzID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTNcIlxuICBsZXQgdGV4dHVyZTE0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTRcIlxuICBsZXQgdGV4dHVyZTE1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTVcIlxuICBsZXQgdGV4dHVyZTE2ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTZcIlxuICBsZXQgdGV4dHVyZTE3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTdcIlxuICBsZXQgdGV4dHVyZTE4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMThcIlxuICBsZXQgdGV4dHVyZTE5ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMTlcIlxuICBsZXQgdGV4dHVyZTIwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjBcIlxuICBsZXQgdGV4dHVyZTIxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjFcIlxuICBsZXQgdGV4dHVyZTIyID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjJcIlxuICBsZXQgdGV4dHVyZTIzID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjNcIlxuICBsZXQgdGV4dHVyZTI0ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjRcIlxuICBsZXQgdGV4dHVyZTI1ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjVcIlxuICBsZXQgdGV4dHVyZTI2ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjZcIlxuICBsZXQgdGV4dHVyZTI3ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjdcIlxuICBsZXQgdGV4dHVyZTI4ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjhcIlxuICBsZXQgdGV4dHVyZTI5ID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMjlcIlxuICBsZXQgdGV4dHVyZTMwID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMzBcIlxuICBsZXQgdGV4dHVyZTMxID0gZ2V0X2ludCBnbDFjdHggXCJURVhUVVJFMzFcIlxuICBsZXQgYWN0aXZlX3RleHR1cmUnID0gZ2V0X2ludCBnbDFjdHggXCJBQ1RJVkVfVEVYVFVSRVwiXG4gIGxldCByZXBlYXQgPSBnZXRfaW50IGdsMWN0eCBcIlJFUEVBVFwiXG4gIGxldCBjbGFtcF90b19lZGdlID0gZ2V0X2ludCBnbDFjdHggXCJDTEFNUF9UT19FREdFXCJcbiAgbGV0IG1pcnJvcmVkX3JlcGVhdCA9IGdldF9pbnQgZ2wxY3R4IFwiTUlSUk9SRURfUkVQRUFUXCJcbiAgbGV0IGZsb2F0X3ZlYzIgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX1ZFQzJcIlxuICBsZXQgZmxvYXRfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfVkVDM1wiXG4gIGxldCBmbG9hdF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9WRUM0XCJcbiAgbGV0IGludF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJJTlRfVkVDMlwiXG4gIGxldCBpbnRfdmVjMyA9IGdldF9pbnQgZ2wxY3R4IFwiSU5UX1ZFQzNcIlxuICBsZXQgaW50X3ZlYzQgPSBnZXRfaW50IGdsMWN0eCBcIklOVF9WRUM0XCJcbiAgbGV0IGJvb2wgPSBnZXRfaW50IGdsMWN0eCBcIkJPT0xcIlxuICBsZXQgYm9vbF92ZWMyID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzJcIlxuICBsZXQgYm9vbF92ZWMzID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzNcIlxuICBsZXQgYm9vbF92ZWM0ID0gZ2V0X2ludCBnbDFjdHggXCJCT09MX1ZFQzRcIlxuICBsZXQgZmxvYXRfbWF0MiA9IGdldF9pbnQgZ2wxY3R4IFwiRkxPQVRfTUFUMlwiXG4gIGxldCBmbG9hdF9tYXQzID0gZ2V0X2ludCBnbDFjdHggXCJGTE9BVF9NQVQzXCJcbiAgbGV0IGZsb2F0X21hdDQgPSBnZXRfaW50IGdsMWN0eCBcIkZMT0FUX01BVDRcIlxuICBsZXQgc2FtcGxlcl8yZCA9IGdldF9pbnQgZ2wxY3R4IFwiU0FNUExFUl8yRFwiXG4gIGxldCBzYW1wbGVyX2N1YmUgPSBnZXRfaW50IGdsMWN0eCBcIlNBTVBMRVJfQ1VCRVwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X2VuYWJsZWQgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRFwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRVwiXG4gIGxldCB2ZXJ0ZXhfYXR0cmliX2FycmF5X3N0cmlkZSA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV90eXBlID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1RZUEVcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9ub3JtYWxpemVkID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9wb2ludGVyID0gZ2V0X2ludCBnbDFjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVJcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wxY3R4IFwiVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR1wiXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX3R5cGUgPSBnZXRfaW50IGdsMWN0eCBcIklNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRVwiXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9jb2xvcl9yZWFkX2Zvcm1hdCA9IGdldF9pbnQgZ2wxY3R4IFwiSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVRcIlxuICBsZXQgY29tcGlsZV9zdGF0dXMgPSBnZXRfaW50IGdsMWN0eCBcIkNPTVBJTEVfU1RBVFVTXCJcbiAgbGV0IGxvd19mbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiTE9XX0ZMT0FUXCJcbiAgbGV0IG1lZGl1bV9mbG9hdCA9IGdldF9pbnQgZ2wxY3R4IFwiTUVESVVNX0ZMT0FUXCJcbiAgbGV0IGhpZ2hfZmxvYXQgPSBnZXRfaW50IGdsMWN0eCBcIkhJR0hfRkxPQVRcIlxuICBsZXQgbG93X2ludCA9IGdldF9pbnQgZ2wxY3R4IFwiTE9XX0lOVFwiXG4gIGxldCBtZWRpdW1faW50ID0gZ2V0X2ludCBnbDFjdHggXCJNRURJVU1fSU5UXCJcbiAgbGV0IGhpZ2hfaW50ID0gZ2V0X2ludCBnbDFjdHggXCJISUdIX0lOVFwiXG4gIGxldCBmcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJcIlxuICBsZXQgcmVuZGVyYnVmZmVyID0gZ2V0X2ludCBnbDFjdHggXCJSRU5ERVJCVUZGRVJcIlxuICBsZXQgcmdiYTQgPSBnZXRfaW50IGdsMWN0eCBcIlJHQkE0XCJcbiAgbGV0IHJnYjVfYTEgPSBnZXRfaW50IGdsMWN0eCBcIlJHQjVfQTFcIlxuICBsZXQgcmdiNTY1ID0gZ2V0X2ludCBnbDFjdHggXCJSR0I1NjVcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MTYgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX0NPTVBPTkVOVDE2XCJcbiAgbGV0IHN0ZW5jaWxfaW5kZXg4ID0gZ2V0X2ludCBnbDFjdHggXCJTVEVOQ0lMX0lOREVYOFwiXG4gIGxldCBkZXB0aF9zdGVuY2lsID0gZ2V0X2ludCBnbDFjdHggXCJERVBUSF9TVEVOQ0lMXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl93aWR0aCA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX1dJRFRIXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9oZWlnaHQgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9IRUlHSFRcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2ludGVybmFsX2Zvcm1hdCA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVFwiXG4gIGxldCByZW5kZXJidWZmZXJfcmVkX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9SRURfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfZ3JlZW5fc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2JsdWVfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0JMVUVfU0laRVwiXG4gIGxldCByZW5kZXJidWZmZXJfYWxwaGFfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2RlcHRoX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zdGVuY2lsX3NpemUgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9vYmplY3RfdHlwZSA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdF9uYW1lID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfdGV4dHVyZV9sZXZlbCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfdGV4dHVyZV9jdWJlX21hcF9mYWNlID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MCA9IGdldF9pbnQgZ2wxY3R4IFwiQ09MT1JfQVRUQUNITUVOVDBcIlxuICBsZXQgZGVwdGhfYXR0YWNobWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiREVQVEhfQVRUQUNITUVOVFwiXG4gIGxldCBzdGVuY2lsX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIlNURU5DSUxfQVRUQUNITUVOVFwiXG4gIGxldCBkZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVFwiXG4gIGxldCBub25lID0gZ2V0X2ludCBnbDFjdHggXCJOT05FXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2NvbXBsZXRlID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9DT01QTEVURVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2F0dGFjaG1lbnQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVFwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX21pc3NpbmdfYXR0YWNobWVudCA9IGdldF9pbnQgZ2wxY3R4IFwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRcIlxuICBsZXQgZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9kaW1lbnNpb25zID0gZ2V0X2ludCBnbDFjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlNcIlxuICBsZXQgZnJhbWVidWZmZXJfdW5zdXBwb3J0ZWQgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIkZSQU1FQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmVuZGVyYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMWN0eCBcIlJFTkRFUkJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IG1heF9yZW5kZXJidWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wxY3R4IFwiTUFYX1JFTkRFUkJVRkZFUl9TSVpFXCJcbiAgbGV0IGludmFsaWRfZnJhbWVidWZmZXJfb3BlcmF0aW9uID0gZ2V0X2ludCBnbDFjdHggXCJJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTlwiXG4gIGxldCB1bnBhY2tfZmxpcF95X3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJVTlBBQ0tfRkxJUF9ZX1dFQkdMXCJcbiAgbGV0IHVucGFja19wcmVtdWx0aXBseV9hbHBoYV93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXCJcbiAgbGV0IGNvbnRleHRfbG9zdF93ZWJnbCA9IGdldF9pbnQgZ2wxY3R4IFwiQ09OVEVYVF9MT1NUX1dFQkdMXCJcbiAgbGV0IHVucGFja19jb2xvcnNwYWNlX2NvbnZlcnNpb25fd2ViZ2wgPSBnZXRfaW50IGdsMWN0eCBcIlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xcIlxuICBsZXQgYnJvd3Nlcl9kZWZhdWx0X3dlYmdsID0gZ2V0X2ludCBnbDFjdHggXCJCUk9XU0VSX0RFRkFVTFRfV0VCR0xcIlxuXG4gIGxldCBnbDJjdHggPSBKdi5nZXQgSnYuZ2xvYmFsIFwiV2ViR0wyUmVuZGVyaW5nQ29udGV4dFwiXG4gIGxldCByZWFkX2J1ZmZlcicgPSBnZXRfaW50IGdsMmN0eCBcIlJFQURfQlVGRkVSXCJcbiAgbGV0IHVucGFja19yb3dfbGVuZ3RoID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfUk9XX0xFTkdUSFwiXG4gIGxldCB1bnBhY2tfc2tpcF9yb3dzID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfU0tJUF9ST1dTXCJcbiAgbGV0IHVucGFja19za2lwX3BpeGVscyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX1NLSVBfUElYRUxTXCJcbiAgbGV0IHBhY2tfcm93X2xlbmd0aCA9IGdldF9pbnQgZ2wyY3R4IFwiUEFDS19ST1dfTEVOR1RIXCJcbiAgbGV0IHBhY2tfc2tpcF9yb3dzID0gZ2V0X2ludCBnbDJjdHggXCJQQUNLX1NLSVBfUk9XU1wiXG4gIGxldCBwYWNrX3NraXBfcGl4ZWxzID0gZ2V0X2ludCBnbDJjdHggXCJQQUNLX1NLSVBfUElYRUxTXCJcbiAgbGV0IGNvbG9yID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUlwiXG4gIGxldCBkZXB0aCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEhcIlxuICBsZXQgc3RlbmNpbCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RFTkNJTFwiXG4gIGxldCByZWQgPSBnZXRfaW50IGdsMmN0eCBcIlJFRFwiXG4gIGxldCByZ2I4ID0gZ2V0X2ludCBnbDJjdHggXCJSR0I4XCJcbiAgbGV0IHJnYmE4ID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOFwiXG4gIGxldCByZ2IxMF9hMiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTBfQTJcIlxuICBsZXQgdGV4dHVyZV9iaW5kaW5nXzNkID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0JJTkRJTkdfM0RcIlxuICBsZXQgdW5wYWNrX3NraXBfaW1hZ2VzID0gZ2V0X2ludCBnbDJjdHggXCJVTlBBQ0tfU0tJUF9JTUFHRVNcIlxuICBsZXQgdW5wYWNrX2ltYWdlX2hlaWdodCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5QQUNLX0lNQUdFX0hFSUdIVFwiXG4gIGxldCB0ZXh0dXJlXzNkID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFXzNEXCJcbiAgbGV0IHRleHR1cmVfd3JhcF9yID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX1dSQVBfUlwiXG4gIGxldCBtYXhfM2RfdGV4dHVyZV9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfM0RfVEVYVFVSRV9TSVpFXCJcbiAgbGV0IHVuc2lnbmVkX2ludF8yXzEwXzEwXzEwX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWXCJcbiAgbGV0IG1heF9lbGVtZW50c192ZXJ0aWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTXCJcbiAgbGV0IG1heF9lbGVtZW50c19pbmRpY2VzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRUxFTUVOVFNfSU5ESUNFU1wiXG4gIGxldCB0ZXh0dXJlX21pbl9sb2QgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUlOX0xPRFwiXG4gIGxldCB0ZXh0dXJlX21heF9sb2QgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfTUFYX0xPRFwiXG4gIGxldCB0ZXh0dXJlX2Jhc2VfbGV2ZWwgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQkFTRV9MRVZFTFwiXG4gIGxldCB0ZXh0dXJlX21heF9sZXZlbCA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9NQVhfTEVWRUxcIlxuICBsZXQgbWluID0gZ2V0X2ludCBnbDJjdHggXCJNSU5cIlxuICBsZXQgbWF4ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhcIlxuICBsZXQgZGVwdGhfY29tcG9uZW50MjQgPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIX0NPTVBPTkVOVDI0XCJcbiAgbGV0IG1heF90ZXh0dXJlX2xvZF9iaWFzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVEVYVFVSRV9MT0RfQklBU1wiXG4gIGxldCB0ZXh0dXJlX2NvbXBhcmVfbW9kZSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9DT01QQVJFX01PREVcIlxuICBsZXQgdGV4dHVyZV9jb21wYXJlX2Z1bmMgPSBnZXRfaW50IGdsMmN0eCBcIlRFWFRVUkVfQ09NUEFSRV9GVU5DXCJcbiAgbGV0IGN1cnJlbnRfcXVlcnkgPSBnZXRfaW50IGdsMmN0eCBcIkNVUlJFTlRfUVVFUllcIlxuICBsZXQgcXVlcnlfcmVzdWx0ID0gZ2V0X2ludCBnbDJjdHggXCJRVUVSWV9SRVNVTFRcIlxuICBsZXQgcXVlcnlfcmVzdWx0X2F2YWlsYWJsZSA9IGdldF9pbnQgZ2wyY3R4IFwiUVVFUllfUkVTVUxUX0FWQUlMQUJMRVwiXG4gIGxldCBzdHJlYW1fcmVhZCA9IGdldF9pbnQgZ2wyY3R4IFwiU1RSRUFNX1JFQURcIlxuICBsZXQgc3RyZWFtX2NvcHkgPSBnZXRfaW50IGdsMmN0eCBcIlNUUkVBTV9DT1BZXCJcbiAgbGV0IHN0YXRpY19yZWFkID0gZ2V0X2ludCBnbDJjdHggXCJTVEFUSUNfUkVBRFwiXG4gIGxldCBzdGF0aWNfY29weSA9IGdldF9pbnQgZ2wyY3R4IFwiU1RBVElDX0NPUFlcIlxuICBsZXQgZHluYW1pY19yZWFkID0gZ2V0X2ludCBnbDJjdHggXCJEWU5BTUlDX1JFQURcIlxuICBsZXQgZHluYW1pY19jb3B5ID0gZ2V0X2ludCBnbDJjdHggXCJEWU5BTUlDX0NPUFlcIlxuICBsZXQgbWF4X2RyYXdfYnVmZmVycyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0RSQVdfQlVGRkVSU1wiXG4gIGxldCBkcmF3X2J1ZmZlcjAgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMFwiXG4gIGxldCBkcmF3X2J1ZmZlcjEgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMVwiXG4gIGxldCBkcmF3X2J1ZmZlcjIgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMlwiXG4gIGxldCBkcmF3X2J1ZmZlcjMgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSM1wiXG4gIGxldCBkcmF3X2J1ZmZlcjQgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNFwiXG4gIGxldCBkcmF3X2J1ZmZlcjUgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNVwiXG4gIGxldCBkcmF3X2J1ZmZlcjYgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSNlwiXG4gIGxldCBkcmF3X2J1ZmZlcjcgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSN1wiXG4gIGxldCBkcmF3X2J1ZmZlcjggPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSOFwiXG4gIGxldCBkcmF3X2J1ZmZlcjkgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSOVwiXG4gIGxldCBkcmF3X2J1ZmZlcjEwID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjEwXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTEgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTFcIlxuICBsZXQgZHJhd19idWZmZXIxMiA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxMlwiXG4gIGxldCBkcmF3X2J1ZmZlcjEzID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0JVRkZFUjEzXCJcbiAgbGV0IGRyYXdfYnVmZmVyMTQgPSBnZXRfaW50IGdsMmN0eCBcIkRSQVdfQlVGRkVSMTRcIlxuICBsZXQgZHJhd19idWZmZXIxNSA9IGdldF9pbnQgZ2wyY3R4IFwiRFJBV19CVUZGRVIxNVwiXG4gIGxldCBtYXhfZnJhZ21lbnRfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IG1heF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UU1wiXG4gIGxldCBzYW1wbGVyXzNkID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzNEXCJcbiAgbGV0IHNhbXBsZXJfMmRfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX1NIQURPV1wiXG4gIGxldCBmcmFnbWVudF9zaGFkZXJfZGVyaXZhdGl2ZV9oaW50ID0gZ2V0X2ludCBnbDJjdHggXCJGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UXCJcbiAgbGV0IHBpeGVsX3BhY2tfYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9QQUNLX0JVRkZFUlwiXG4gIGxldCBwaXhlbF91bnBhY2tfYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9VTlBBQ0tfQlVGRkVSXCJcbiAgbGV0IHBpeGVsX3BhY2tfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlBJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcGl4ZWxfdW5wYWNrX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgZmxvYXRfbWF0MngzID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQyeDNcIlxuICBsZXQgZmxvYXRfbWF0Mng0ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQyeDRcIlxuICBsZXQgZmxvYXRfbWF0M3gyID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQzeDJcIlxuICBsZXQgZmxvYXRfbWF0M3g0ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQzeDRcIlxuICBsZXQgZmxvYXRfbWF0NHgyID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQ0eDJcIlxuICBsZXQgZmxvYXRfbWF0NHgzID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF9NQVQ0eDNcIlxuICBsZXQgc3JnYiA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQlwiXG4gIGxldCBzcmdiOCA9IGdldF9pbnQgZ2wyY3R4IFwiU1JHQjhcIlxuICBsZXQgc3JnYjhfYWxwaGE4ID0gZ2V0X2ludCBnbDJjdHggXCJTUkdCOF9BTFBIQThcIlxuICBsZXQgY29tcGFyZV9yZWZfdG9fdGV4dHVyZSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09NUEFSRV9SRUZfVE9fVEVYVFVSRVwiXG4gIGxldCByZ2JhMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBMzJGXCJcbiAgbGV0IHJnYjMyZiA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJGXCJcbiAgbGV0IHJnYmExNmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkExNkZcIlxuICBsZXQgcmdiMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxNkZcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVJcIlxuICBsZXQgbWF4X2FycmF5X3RleHR1cmVfbGF5ZXJzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlNcIlxuICBsZXQgbWluX3Byb2dyYW1fdGV4ZWxfb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJNSU5fUFJPR1JBTV9URVhFTF9PRkZTRVRcIlxuICBsZXQgbWF4X3Byb2dyYW1fdGV4ZWxfb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVRcIlxuICBsZXQgbWF4X3ZhcnlpbmdfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZBUllJTkdfQ09NUE9ORU5UU1wiXG4gIGxldCB0ZXh0dXJlXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFXzJEX0FSUkFZXCJcbiAgbGV0IHRleHR1cmVfYmluZGluZ18yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZXCJcbiAgbGV0IHIxMWZfZzExZl9iMTBmID0gZ2V0X2ludCBnbDJjdHggXCJSMTFGX0cxMUZfQjEwRlwiXG4gIGxldCB1bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWXCJcbiAgbGV0IHJnYjlfZTUgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjlfRTVcIlxuICBsZXQgdW5zaWduZWRfaW50XzVfOV85XzlfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfNV85XzlfOV9SRVZcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9tb2RlID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREVcIlxuICBsZXQgbWF4X3RyYW5zZm9ybV9mZWVkYmFja19zZXBhcmF0ZV9jb21wb25lbnRzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFNcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmdzJyA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc3RhcnQgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlRcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlcl9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkVcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX3ByaW1pdGl2ZXNfd3JpdHRlbiA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTlwiXG4gIGxldCByYXN0ZXJpemVyX2Rpc2NhcmQgPSBnZXRfaW50IGdsMmN0eCBcIlJBU1RFUklaRVJfRElTQ0FSRFwiXG4gIGxldCBtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX2ludGVybGVhdmVkX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfdHJhbnNmb3JtX2ZlZWRiYWNrX3NlcGFyYXRlX2F0dHJpYnMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCU1wiXG4gIGxldCBpbnRlcmxlYXZlZF9hdHRyaWJzID0gZ2V0X2ludCBnbDJjdHggXCJJTlRFUkxFQVZFRF9BVFRSSUJTXCJcbiAgbGV0IHNlcGFyYXRlX2F0dHJpYnMgPSBnZXRfaW50IGdsMmN0eCBcIlNFUEFSQVRFX0FUVFJJQlNcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUlwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYnVmZmVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElOR1wiXG4gIGxldCByZ2JhMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTMyVUlcIlxuICBsZXQgcmdiMzJ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMzJVSVwiXG4gIGxldCByZ2JhMTZ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTE2VUlcIlxuICBsZXQgcmdiMTZ1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCMTZVSVwiXG4gIGxldCByZ2JhOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOFVJXCJcbiAgbGV0IHJnYjh1aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOFVJXCJcbiAgbGV0IHJnYmEzMmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkEzMklcIlxuICBsZXQgcmdiMzJpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IzMklcIlxuICBsZXQgcmdiYTE2aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCQTE2SVwiXG4gIGxldCByZ2IxNmkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQjE2SVwiXG4gIGxldCByZ2JhOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkE4SVwiXG4gIGxldCByZ2I4aSA9IGdldF9pbnQgZ2wyY3R4IFwiUkdCOElcIlxuICBsZXQgcmVkX2ludGVnZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJFRF9JTlRFR0VSXCJcbiAgbGV0IHJnYl9pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR0JfSU5URUdFUlwiXG4gIGxldCByZ2JhX2ludGVnZXIgPSBnZXRfaW50IGdsMmN0eCBcIlJHQkFfSU5URUdFUlwiXG4gIGxldCBzYW1wbGVyXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX0FSUkFZXCJcbiAgbGV0IHNhbXBsZXJfMmRfYXJyYXlfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSXzJEX0FSUkFZX1NIQURPV1wiXG4gIGxldCBzYW1wbGVyX2N1YmVfc2hhZG93ID0gZ2V0X2ludCBnbDJjdHggXCJTQU1QTEVSX0NVQkVfU0hBRE9XXCJcbiAgbGV0IHVuc2lnbmVkX2ludF92ZWMyID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfVkVDMlwiXG4gIGxldCB1bnNpZ25lZF9pbnRfdmVjMyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdORURfSU5UX1ZFQzNcIlxuICBsZXQgdW5zaWduZWRfaW50X3ZlYzQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9WRUM0XCJcbiAgbGV0IGludF9zYW1wbGVyXzJkID0gZ2V0X2ludCBnbDJjdHggXCJJTlRfU0FNUExFUl8yRFwiXG4gIGxldCBpbnRfc2FtcGxlcl8zZCA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfM0RcIlxuICBsZXQgaW50X3NhbXBsZXJfY3ViZSA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfQ1VCRVwiXG4gIGxldCBpbnRfc2FtcGxlcl8yZF9hcnJheSA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UX1NBTVBMRVJfMkRfQVJSQVlcIlxuICBsZXQgdW5zaWduZWRfaW50X3NhbXBsZXJfMmQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzNkID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8zRFwiXG4gIGxldCB1bnNpZ25lZF9pbnRfc2FtcGxlcl9jdWJlID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFXCJcbiAgbGV0IHVuc2lnbmVkX2ludF9zYW1wbGVyXzJkX2FycmF5ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWVwiXG4gIGxldCBkZXB0aF9jb21wb25lbnQzMmYgPSBnZXRfaW50IGdsMmN0eCBcIkRFUFRIX0NPTVBPTkVOVDMyRlwiXG4gIGxldCBkZXB0aDMyZl9zdGVuY2lsOCA9IGdldF9pbnQgZ2wyY3R4IFwiREVQVEgzMkZfU1RFTkNJTDhcIlxuICBsZXQgZmxvYXRfMzJfdW5zaWduZWRfaW50XzI0XzhfcmV2ID0gZ2V0X2ludCBnbDJjdHggXCJGTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVZcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb2xvcl9lbmNvZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR1wiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X2NvbXBvbmVudF90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTVBPTkVOVF9UWVBFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfcmVkX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9ncmVlbl9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkVcIlxuICBsZXQgZnJhbWVidWZmZXJfYXR0YWNobWVudF9ibHVlX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQkxVRV9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfYWxwaGFfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfZGVwdGhfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFXCJcbiAgbGV0IGZyYW1lYnVmZmVyX2F0dGFjaG1lbnRfc3RlbmNpbF9zaXplID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9kZWZhdWx0ID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9ERUZBVUxUXCJcbiAgbGV0IHVuc2lnbmVkX2ludF8yNF84ID0gZ2V0X2ludCBnbDJjdHggXCJVTlNJR05FRF9JTlRfMjRfOFwiXG4gIGxldCBkZXB0aDI0X3N0ZW5jaWw4ID0gZ2V0X2ludCBnbDJjdHggXCJERVBUSDI0X1NURU5DSUw4XCJcbiAgbGV0IHVuc2lnbmVkX25vcm1hbGl6ZWQgPSBnZXRfaW50IGdsMmN0eCBcIlVOU0lHTkVEX05PUk1BTElaRURcIlxuICBsZXQgZHJhd19mcmFtZWJ1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgcmVhZF9mcmFtZWJ1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiUkVBRF9GUkFNRUJVRkZFUlwiXG4gIGxldCBkcmF3X2ZyYW1lYnVmZmVyID0gZ2V0X2ludCBnbDJjdHggXCJEUkFXX0ZSQU1FQlVGRkVSXCJcbiAgbGV0IHJlYWRfZnJhbWVidWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HXCJcbiAgbGV0IHJlbmRlcmJ1ZmZlcl9zYW1wbGVzID0gZ2V0X2ludCBnbDJjdHggXCJSRU5ERVJCVUZGRVJfU0FNUExFU1wiXG4gIGxldCBmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmVfbGF5ZXIgPSBnZXRfaW50IGdsMmN0eCBcIkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUlwiXG4gIGxldCBtYXhfY29sb3JfYXR0YWNobWVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT0xPUl9BVFRBQ0hNRU5UU1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MSA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDFcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDIgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQyXCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQzID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UM1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NCA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDRcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ1XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ2ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UNlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50NyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09MT1JfQVRUQUNITUVOVDdcIlxuICBsZXQgY29sb3JfYXR0YWNobWVudDggPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQ4XCJcbiAgbGV0IGNvbG9yX2F0dGFjaG1lbnQ5ID0gZ2V0X2ludCBnbDJjdHggXCJDT0xPUl9BVFRBQ0hNRU5UOVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTAgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTEgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMVwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTIgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxMlwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTMgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxM1wiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTQgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxNFwiXG4gIGxldCBjb2xvcl9hdHRhY2htZW50MTUgPSBnZXRfaW50IGdsMmN0eCBcIkNPTE9SX0FUVEFDSE1FTlQxNVwiXG4gIGxldCBmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX211bHRpc2FtcGxlID0gZ2V0X2ludCBnbDJjdHggXCJGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFXCJcbiAgbGV0IG1heF9zYW1wbGVzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfU0FNUExFU1wiXG4gIGxldCBoYWxmX2Zsb2F0ID0gZ2V0X2ludCBnbDJjdHggXCJIQUxGX0ZMT0FUXCJcbiAgbGV0IHJnID0gZ2V0X2ludCBnbDJjdHggXCJSR1wiXG4gIGxldCByZ19pbnRlZ2VyID0gZ2V0X2ludCBnbDJjdHggXCJSR19JTlRFR0VSXCJcbiAgbGV0IHI4ID0gZ2V0X2ludCBnbDJjdHggXCJSOFwiXG4gIGxldCByZzggPSBnZXRfaW50IGdsMmN0eCBcIlJHOFwiXG4gIGxldCByMTZmID0gZ2V0X2ludCBnbDJjdHggXCJSMTZGXCJcbiAgbGV0IHIzMmYgPSBnZXRfaW50IGdsMmN0eCBcIlIzMkZcIlxuICBsZXQgcmcxNmYgPSBnZXRfaW50IGdsMmN0eCBcIlJHMTZGXCJcbiAgbGV0IHJnMzJmID0gZ2V0X2ludCBnbDJjdHggXCJSRzMyRlwiXG4gIGxldCByOGkgPSBnZXRfaW50IGdsMmN0eCBcIlI4SVwiXG4gIGxldCByOHVpID0gZ2V0X2ludCBnbDJjdHggXCJSOFVJXCJcbiAgbGV0IHIxNmkgPSBnZXRfaW50IGdsMmN0eCBcIlIxNklcIlxuICBsZXQgcjE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlIxNlVJXCJcbiAgbGV0IHIzMmkgPSBnZXRfaW50IGdsMmN0eCBcIlIzMklcIlxuICBsZXQgcjMydWkgPSBnZXRfaW50IGdsMmN0eCBcIlIzMlVJXCJcbiAgbGV0IHJnOGkgPSBnZXRfaW50IGdsMmN0eCBcIlJHOElcIlxuICBsZXQgcmc4dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHOFVJXCJcbiAgbGV0IHJnMTZpID0gZ2V0X2ludCBnbDJjdHggXCJSRzE2SVwiXG4gIGxldCByZzE2dWkgPSBnZXRfaW50IGdsMmN0eCBcIlJHMTZVSVwiXG4gIGxldCByZzMyaSA9IGdldF9pbnQgZ2wyY3R4IFwiUkczMklcIlxuICBsZXQgcmczMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSRzMyVUlcIlxuICBsZXQgdmVydGV4X2FycmF5X2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlZFUlRFWF9BUlJBWV9CSU5ESU5HXCJcbiAgbGV0IHI4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSOF9TTk9STVwiXG4gIGxldCByZzhfc25vcm0gPSBnZXRfaW50IGdsMmN0eCBcIlJHOF9TTk9STVwiXG4gIGxldCByZ2I4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSR0I4X1NOT1JNXCJcbiAgbGV0IHJnYmE4X3Nub3JtID0gZ2V0X2ludCBnbDJjdHggXCJSR0JBOF9TTk9STVwiXG4gIGxldCBzaWduZWRfbm9ybWFsaXplZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0lHTkVEX05PUk1BTElaRURcIlxuICBsZXQgY29weV9yZWFkX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9SRUFEX0JVRkZFUlwiXG4gIGxldCBjb3B5X3dyaXRlX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9XUklURV9CVUZGRVJcIlxuICBsZXQgY29weV9yZWFkX2J1ZmZlcl9iaW5kaW5nID0gZ2V0X2ludCBnbDJjdHggXCJDT1BZX1JFQURfQlVGRkVSX0JJTkRJTkdcIlxuICBsZXQgY29weV93cml0ZV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiQ09QWV9XUklURV9CVUZGRVJfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2J1ZmZlciA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2J1ZmZlcl9zdGFydCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfU1RBUlRcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfU0laRVwiXG4gIGxldCBtYXhfdmVydGV4X3VuaWZvcm1fYmxvY2tzID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF9mcmFnbWVudF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF9jb21iaW5lZF91bmlmb3JtX2Jsb2NrcyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTXCJcbiAgbGV0IG1heF91bmlmb3JtX2J1ZmZlcl9iaW5kaW5ncyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTXCJcbiAgbGV0IG1heF91bmlmb3JtX2Jsb2NrX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9VTklGT1JNX0JMT0NLX1NJWkVcIlxuICBsZXQgbWF4X2NvbWJpbmVkX3ZlcnRleF91bmlmb3JtX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTXCJcbiAgbGV0IG1heF9jb21iaW5lZF9mcmFnbWVudF91bmlmb3JtX2NvbXBvbmVudHMgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFNcIlxuICBsZXQgdW5pZm9ybV9idWZmZXJfb2Zmc2V0X2FsaWdubWVudCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVFwiXG4gIGxldCBhY3RpdmVfdW5pZm9ybV9ibG9ja3MgPSBnZXRfaW50IGdsMmN0eCBcIkFDVElWRV9VTklGT1JNX0JMT0NLU1wiXG4gIGxldCB1bmlmb3JtX3R5cGUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fVFlQRVwiXG4gIGxldCB1bmlmb3JtX3NpemUgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fU0laRVwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2luZGV4ID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX0lOREVYXCJcbiAgbGV0IHVuaWZvcm1fb2Zmc2V0ID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX09GRlNFVFwiXG4gIGxldCB1bmlmb3JtX2FycmF5X3N0cmlkZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9BUlJBWV9TVFJJREVcIlxuICBsZXQgdW5pZm9ybV9tYXRyaXhfc3RyaWRlID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX01BVFJJWF9TVFJJREVcIlxuICBsZXQgdW5pZm9ybV9pc19yb3dfbWFqb3IgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fSVNfUk9XX01BSk9SXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYmluZGluZycgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQklORElOR1wiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX2RhdGFfc2l6ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19EQVRBX1NJWkVcIlxuICBsZXQgdW5pZm9ybV9ibG9ja19hY3RpdmVfdW5pZm9ybXMgPSBnZXRfaW50IGdsMmN0eCBcIlVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1faW5kaWNlcyA9IGdldF9pbnQgZ2wyY3R4IFwiVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTXCJcbiAgbGV0IHVuaWZvcm1fYmxvY2tfcmVmZXJlbmNlZF9ieV92ZXJ0ZXhfc2hhZGVyID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUlwiXG4gIGxldCB1bmlmb3JtX2Jsb2NrX3JlZmVyZW5jZWRfYnlfZnJhZ21lbnRfc2hhZGVyID0gZ2V0X2ludCBnbDJjdHggXCJVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSXCJcbiAgbGV0IGludmFsaWRfaW5kZXggPSBnZXRfaW50IGdsMmN0eCBcIklOVkFMSURfSU5ERVhcIlxuICBsZXQgbWF4X3ZlcnRleF9vdXRwdXRfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UU1wiXG4gIGxldCBtYXhfZnJhZ21lbnRfaW5wdXRfY29tcG9uZW50cyA9IGdldF9pbnQgZ2wyY3R4IFwiTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFNcIlxuICBsZXQgbWF4X3NlcnZlcl93YWl0X3RpbWVvdXQgPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9TRVJWRVJfV0FJVF9USU1FT1VUXCJcbiAgbGV0IG9iamVjdF90eXBlID0gZ2V0X2ludCBnbDJjdHggXCJPQkpFQ1RfVFlQRVwiXG4gIGxldCBzeW5jX2NvbmRpdGlvbiA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19DT05ESVRJT05cIlxuICBsZXQgc3luY19zdGF0dXMgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfU1RBVFVTXCJcbiAgbGV0IHN5bmNfZmxhZ3MgPSBnZXRfaW50IGdsMmN0eCBcIlNZTkNfRkxBR1NcIlxuICBsZXQgc3luY19mZW5jZSA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19GRU5DRVwiXG4gIGxldCBzeW5jX2dwdV9jb21tYW5kc19jb21wbGV0ZSA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEVcIlxuICBsZXQgdW5zaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiVU5TSUdOQUxFRFwiXG4gIGxldCBzaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiU0lHTkFMRURcIlxuICBsZXQgYWxyZWFkeV9zaWduYWxlZCA9IGdldF9pbnQgZ2wyY3R4IFwiQUxSRUFEWV9TSUdOQUxFRFwiXG4gIGxldCB0aW1lb3V0X2V4cGlyZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRJTUVPVVRfRVhQSVJFRFwiXG4gIGxldCBjb25kaXRpb25fc2F0aXNmaWVkID0gZ2V0X2ludCBnbDJjdHggXCJDT05ESVRJT05fU0FUSVNGSUVEXCJcbiAgbGV0IHdhaXRfZmFpbGVkID0gZ2V0X2ludCBnbDJjdHggXCJXQUlUX0ZBSUxFRFwiXG4gIGxldCBzeW5jX2ZsdXNoX2NvbW1hbmRzX2JpdCA9IGdldF9pbnQgZ2wyY3R4IFwiU1lOQ19GTFVTSF9DT01NQU5EU19CSVRcIlxuICBsZXQgdmVydGV4X2F0dHJpYl9hcnJheV9kaXZpc29yID0gZ2V0X2ludCBnbDJjdHggXCJWRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1JcIlxuICBsZXQgYW55X3NhbXBsZXNfcGFzc2VkID0gZ2V0X2ludCBnbDJjdHggXCJBTllfU0FNUExFU19QQVNTRURcIlxuICBsZXQgYW55X3NhbXBsZXNfcGFzc2VkX2NvbnNlcnZhdGl2ZSA9IGdldF9pbnQgZ2wyY3R4IFwiQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRVwiXG4gIGxldCBzYW1wbGVyX2JpbmRpbmcgPSBnZXRfaW50IGdsMmN0eCBcIlNBTVBMRVJfQklORElOR1wiXG4gIGxldCByZ2IxMF9hMnVpID0gZ2V0X2ludCBnbDJjdHggXCJSR0IxMF9BMlVJXCJcbiAgbGV0IGludF8yXzEwXzEwXzEwX3JldiA9IGdldF9pbnQgZ2wyY3R4IFwiSU5UXzJfMTBfMTBfMTBfUkVWXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFjayA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLXCJcbiAgbGV0IHRyYW5zZm9ybV9mZWVkYmFja19wYXVzZWQgPSBnZXRfaW50IGdsMmN0eCBcIlRSQU5TRk9STV9GRUVEQkFDS19QQVVTRURcIlxuICBsZXQgdHJhbnNmb3JtX2ZlZWRiYWNrX2FjdGl2ZSA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRVwiXG4gIGxldCB0cmFuc2Zvcm1fZmVlZGJhY2tfYmluZGluZyA9IGdldF9pbnQgZ2wyY3R4IFwiVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkdcIlxuICBsZXQgdGV4dHVyZV9pbW11dGFibGVfZm9ybWF0ID0gZ2V0X2ludCBnbDJjdHggXCJURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRcIlxuICBsZXQgbWF4X2VsZW1lbnRfaW5kZXggPSBnZXRfaW50IGdsMmN0eCBcIk1BWF9FTEVNRU5UX0lOREVYXCJcbiAgbGV0IHRleHR1cmVfaW1tdXRhYmxlX2xldmVscyA9IGdldF9pbnQgZ2wyY3R4IFwiVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTXCJcbiAgbGV0IHRpbWVvdXRfaWdub3JlZCA9IGdldF9pbnQgZ2wyY3R4IFwiVElNRU9VVF9JR05PUkVEXCJcbiAgbGV0IG1heF9jbGllbnRfd2FpdF90aW1lb3V0X3dlYmdsID0gZ2V0X2ludCBnbDJjdHggXCJNQVhfQ0xJRU5UX1dBSVRfVElNRU9VVF9XRUJHTFwiXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiSnYiLCJKc3RyIiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9MaXN0IiwiRnV0IiwiQnJyIiwiaXNfMmQiLCJtIiwiaXNfaWRlbnRpdHkiLCJpbnZlcnNlIiwibXVsdGlwbHkiLCJtMTEiLCJtMTIiLCJtMTMiLCJtMTQiLCJtMjEiLCJtMjIiLCJtMjMiLCJtMjQiLCJtMzEiLCJtMzIiLCJtMzMiLCJtMzQiLCJtNDEiLCJtNDIiLCJtNDMiLCJtNDQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImRvbW1hdHJpeHJvIiwidG9fZmxvYXQzMl9hcnJheSIsIm9mX2Zsb2F0MzJfYXJyYXkiLCJ0b19mbG9hdDY0X2FycmF5Iiwib2ZfZmxvYXQ2NF9hcnJheSIsInY0IiwidiIsIngiLCJ5IiwieiIsInciLCJ0ciIsInRvX2pzb24iLCJjc3RfaGVpZ2h0IiwiY3N0X3dpZHRoIiwiY3JlYXRlIiwiYXQiLCJvcHQiLCJjcyIsImgiLCJvZl9lbCIsInRvX2VsIiwic2V0X3ciLCJzZXRfaCIsInNldF9zaXplX3RvX2xheW91dF9zaXplIiwiaGlkcGkiLCJkcHIiLCJjdyIsImNoIiwiY3N0X3F1YWxpdHkiLCJjc3RfdHlwZSIsImltYWdlX2VuY29kZSIsInF1YWxpdHkiLCJwYXJhbSIsInR5cGUiLCJvIiwiZW5jIiwiZW5jb2RlIiwibWV0aCIsImFyZyIsInQiLCJxIiwiYXJncyIsInRvX2RhdGFfdXJsIiwiZXhuIiwidG9fYmxvYiIsIm1hdGNoIiwic2V0IiwiZnV0IiwiY2IiLCJibG9iIiwiY2FwdHVyZV9zdHJlYW0iLCJoeiIsInBhdGgiLCJvZl9zdmciLCJzdmciLCJvZl9wYXRoIiwicCIsImFkZCIsImNsb3NlIiwibW92ZV90byIsImxpbmVfdG8iLCJxY3VydmVfdG8iLCJjeCIsImN5IiwiY2N1cnZlX3RvIiwiYXJjX3RvIiwiciIsImFyYyIsInN0YXJ0Iiwic3RvcCIsImFudGljbG9ja3dpc2UiLCJyZWN0IiwiZWxsaXBzZSIsInJ4IiwicnkiLCJyb3QiLCJpbWFnZV9zcmNfb2ZfZWwiLCJpbWFnZV9zcmNfb2ZfanYiLCJjc3RfYWxwaGEiLCJjc3RfY29sb3JTcGFjZSIsImNzdF9kZXN5bmNocm9uaXplZCIsImNzdF93aWxsUmVhZEZyZXF1ZW50bHkiLCJjcmVhdGVfYXR0cnMiLCJhbHBoYSIsImNvbG9yX3NwYWNlIiwiZGVzeW5jaHJvbml6ZWQiLCJ3aWxsX3JlYWRfZnJlcXVlbnRseSIsImF0dHJzX2FscGhhIiwiYXR0cnNfY29sb3Jfc3BhY2UiLCJhdHRyc19kZXN5bmNocm9uaXplZCIsImF0dHJzX3dpbGxfcmVhZF9mcmVxdWVudGx5IiwiZ2V0X2NvbnRleHQiLCJjbnYiLCJhdHRycyIsImNzdF9jYW52YXMiLCJjYW52YXMiLCJzYXZlIiwicmVzdG9yZSIsImNzdF9pbWFnZVNtb290aGluZ0VuYWJsZWQiLCJpbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCIsInNldF9pbWFnZV9zbW9vdGhpbmdfZW5hYmxlZCIsImNzdF9pbWFnZVNtb290aGluZ1F1YWxpdHkiLCJpbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSIsInNldF9pbWFnZV9zbW9vdGhpbmdfcXVhbGl0eSIsImNzdF9nbG9iYWxBbHBoYSIsImdsb2JhbF9hbHBoYSIsInNldF9nbG9iYWxfYWxwaGEiLCJjc3RfZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIiwiZ2xvYmFsX2NvbXBvc2l0ZV9vcCIsInNldF9nbG9iYWxfY29tcG9zaXRlX29wIiwiY3N0X2ZpbHRlciIsImZpbHRlciIsInNldF9maWx0ZXIiLCJnZXRfdHJhbnNmb3JtIiwic2V0X3RyYW5zZm9ybSIsImN0eCIsInJlc2V0X3RyYW5zZm9ybSIsInRyYW5zZm9ybSIsInRyYW5zbGF0ZSIsInJvdGF0ZSIsInNjYWxlIiwic3giLCJzeSIsInNldF9zdHJva2Vfc3R5bGUiLCJzIiwic2V0X2ZpbGxfc3R5bGUiLCJjb2xvciIsImdyYWRpZW50X3N0eWxlIiwibWFrZV9zdG9wcyIsImciLCJzdG9wcyIsIm9mZiIsImxpbmVhcl9ncmFkaWVudCIsIngwIiwieTAiLCJ4MSIsInkxIiwicmFkaWFsX2dyYWRpZW50IiwicjAiLCJyMSIsInBhdHRlcm4iLCJpbWciLCJwYXR0ZXJuX3N0eWxlIiwiY3N0X2xpbmVXaWR0aCIsImxpbmVfd2lkdGgiLCJzZXRfbGluZV93aWR0aCIsImNzdF9saW5lQ2FwIiwibGluZV9jYXAiLCJzZXRfbGluZV9jYXAiLCJjYXAiLCJjc3RfbGluZUpvaW4iLCJsaW5lX2pvaW4iLCJzZXRfbGluZV9qb2luIiwiam9pbiIsImNzdF9taXRlckxpbWl0IiwibWl0ZXJfbGltaXQiLCJzZXRfbWl0ZXJfbGltaXQiLCJsIiwibGluZV9kYXNoIiwic2V0X2xpbmVfZGFzaCIsImRzIiwiY3N0X2xpbmVEYXNoT2Zmc2V0IiwibGluZV9kYXNoX29mZnNldCIsInNldF9saW5lX2Rhc2hfb2Zmc2V0IiwiY3N0X3NoYWRvd0JsdXIiLCJzaGFkb3dfYmx1ciIsInNldF9zaGFkb3dfYmx1ciIsImNzdF9zaGFkb3dPZmZzZXRYIiwic2hhZG93X29mZnNldF94Iiwic2V0X3NoYWRvd19vZmZzZXRfeCIsImNzdF9zaGFkb3dPZmZzZXRZIiwic2hhZG93X29mZnNldF95Iiwic2V0X3NoYWRvd19vZmZzZXRfeSIsImNzdF9zaGFkb3dDb2xvciIsInNoYWRvd19jb2xvciIsInNldF9zaGFkb3dfY29sb3IiLCJjb2wiLCJjc3RfZm9udCIsImZvbnQiLCJzZXRfZm9udCIsImNzdF90ZXh0QWxpZ24iLCJ0ZXh0X2FsaWduIiwic2V0X3RleHRfYWxpZ24iLCJjc3RfdGV4dEJhc2VsaW5lIiwidGV4dF9iYXNlbGluZSIsInNldF90ZXh0X2Jhc2VsaW5lIiwiY3N0X2RpcmVjdGlvbiIsInRleHRfZGlyZWN0aW9uIiwic2V0X3RleHRfZGlyZWN0aW9uIiwiY2xlYXJfcmVjdCIsImZpbGxfcmVjdCIsInN0cm9rZV9yZWN0Iiwibm9uemVybyIsImZpbGwiLCJmaWxsX3J1bGUiLCJzdHJva2UiLCJjbGlwIiwiZHJhd19mb2N1c19pZl9uZWVkZWQiLCJzY3JvbGxfcGF0aF9pbnRvX3ZpZXciLCJpc19wb2ludF9pbl9maWxsIiwiaXNfcG9pbnRfaW5fc3Ryb2tlIiwiY2FsbF90ZXh0IiwibWF4X3dpZHRoIiwidHh0IiwiZmlsbF90ZXh0Iiwic3Ryb2tlX3RleHQiLCJ3aWR0aCIsImFjdHVhbF9ib3VuZGluZ19ib3hfbGVmdCIsImFjdHVhbF9ib3VuZGluZ19ib3hfcmlnaHQiLCJmb250X2JvdW5kaW5nX2JveF9hc2NlbnQiLCJmb250X2JvdW5kaW5nX2JveF9kZXNjZW50IiwiYWN0dWFsX2JvdW5kaW5nX2JveF9hc2NlbnQiLCJhY3R1YWxfYm91bmRpbmdfYm94X2Rlc2NlbnQiLCJlbV9oZWlnaHRfYXNjZW50IiwiZW1faGVpZ2h0X2Rlc2NlbnQiLCJoYW5naW5nX2Jhc2VsaW5lIiwiYWxwaGFiZXRpY19iYXNlbGluZSIsImlkZW9ncmFwaGljX2Jhc2VsaW5lIiwibWVhc3VyZV90ZXh0IiwiZHJhd19pbWFnZSIsImkiLCJkcmF3X2ltYWdlX2luX3JlY3QiLCJkcmF3X3N1Yl9pbWFnZV9pbl9yZWN0Iiwic3ciLCJzaCIsInNldHRpbmdzIiwiaW1hZ2VfZGF0YSIsImRhdGEiLCJjcmVhdGVfaW1hZ2VfZGF0YSIsImdldF9pbWFnZV9kYXRhIiwicHV0X2ltYWdlX2RhdGEiLCJwdXRfc3ViX2ltYWdlX2RhdGEiLCJjc3RfYW50aWFsaWFzIiwiY3N0X2RlcHRoIiwiY3N0X3Bvd2VyUHJlZmVyZW5jZSIsImNzdF9wcmVtdWx0aXBsaWVkQXBoYSIsImNzdF9wcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJjc3Rfc3RlbmNpbCIsImRlcHRoIiwic3RlbmNpbCIsImFudGlhbGlhcyIsInByZW11bHRpcGxpZWRfYWxwaGEiLCJwcmVzZXJ2ZV9kcmF3aW5nX2J1ZmZlciIsInBvd2VyX3ByZWZlcmVuY2UiLCJmYWlsX2lmX21ham9yX3BlcmZvcm1hbmNlX2NhdmUiLCJ2MSIsIndlYmdsIiwiZHJhd2luZ19idWZmZXJfd2lkdGgiLCJkcmF3aW5nX2J1ZmZlcl9oZWlnaHQiLCJpc19jb250ZXh0X2xvc3QiLCJnZXRfc3VwcG9ydGVkX2V4dGVuc2lvbnMiLCJnZXRfZXh0ZW5zaW9uIiwiZXh0Iiwic2l6ZSIsIm5hbWUiLCJyYW5nZV9taW4iLCJyYW5nZV9tYXgiLCJwcmVjaXNpb24iLCJvZl9pbWFnZV9kYXRhIiwib2ZfaW1nX2VsIiwib2ZfY2FudmFzX2VsIiwib2ZfdmlkZW9fZWwiLCJvZl9vZmZzY3JlZW5fY2FudmFzIiwiYWN0aXZlX3RleHR1cmUiLCJ0ZXh0dXJlIiwiYXR0YWNoX3NoYWRlciIsInByb2dyYW0iLCJzaGFkZXIiLCJiZWdpbl9xdWVyeSIsInRhcmdldCIsInF1ZXJ5IiwiYmVnaW5fdHJhbnNmb3JtX2ZlZWRiYWNrIiwicHJpbWl0aXZlTW9kZSIsImJpbmRfYXR0cmliX2xvY2F0aW9uIiwiaW5kZXgiLCJiaW5kX2J1ZmZlciIsImJ1ZmZlciIsImJpbmRfYnVmZmVyX2Jhc2UiLCJiaW5kX2J1ZmZlcl9yYW5nZSIsIm9mZnNldCIsImJpbmRfZnJhbWVidWZmZXIiLCJmcmFtZWJ1ZmZlciIsImJpbmRfcmVuZGVyYnVmZmVyIiwicmVuZGVyYnVmZmVyIiwiYmluZF9zYW1wbGVyIiwidW5pdCIsInNhbXBsZXIiLCJiaW5kX3RleHR1cmUiLCJiaW5kX3RyYW5zZm9ybV9mZWVkYmFjayIsInRmIiwiYmluZF92ZXJ0ZXhfYXJyYXkiLCJhcnJheSIsImJsZW5kX2NvbG9yIiwicmVkIiwiZ3JlZW4iLCJibHVlIiwiYmxlbmRfZXF1YXRpb24iLCJtb2RlIiwiYmxlbmRfZXF1YXRpb25fc2VwYXJhdGUiLCJtb2RlUkdCIiwibW9kZUFscGhhIiwiYmxlbmRfZnVuYyIsInNmYWN0b3IiLCJkZmFjdG9yIiwiYmxlbmRfZnVuY19zZXBhcmF0ZSIsInNyY1JHQiIsImRzdFJHQiIsInNyY0FscGhhIiwiZHN0QWxwaGEiLCJibGl0X2ZyYW1lYnVmZmVyIiwic3JjWDAiLCJzcmNZMCIsInNyY1gxIiwic3JjWTEiLCJkc3RYMCIsImRzdFkwIiwiZHN0WDEiLCJkc3RZMSIsIm1hc2siLCJidWZmZXJfZGF0YSIsInNyY0RhdGEiLCJ1c2FnZSIsImJ1ZmZlcl9kYXRhX3NpemUiLCJidWZmZXJfc3ViX2RhdGEiLCJkc3RCeXRlT2Zmc2V0IiwiY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzIiwiY2xlYXIiLCJjbGVhcl9idWZmZXJmaSIsImRyYXdidWZmZXIiLCJjbGVhcl9idWZmZXJmdiIsInZhbHVlcyIsImNsZWFyX2J1ZmZlcml2IiwiY2xlYXJfYnVmZmVydWl2IiwiY2xlYXJfY29sb3IiLCJjbGVhcl9kZXB0aCIsImNsZWFyX3N0ZW5jaWwiLCJjbGllbnRfd2FpdF9zeW5jIiwic3luYyIsImZsYWdzIiwidGltZW91dCIsImNvbG9yX21hc2siLCJjb21waWxlX3NoYWRlciIsImNvbXByZXNzZWRfdGV4X2ltYWdlMmQiLCJsZXZlbCIsImludGVybmFsZm9ybWF0IiwiaGVpZ2h0IiwiYm9yZGVyIiwiY29tcHJlc3NlZF90ZXhfaW1hZ2UyZF9zaXplIiwiaW1hZ2VTaXplIiwiY29tcHJlc3NlZF90ZXhfaW1hZ2UzZCIsImNvbXByZXNzZWRfdGV4X2ltYWdlM2Rfc2l6ZSIsImNvbXByZXNzZWRfdGV4X3N1Yl9pbWFnZTJkIiwieG9mZnNldCIsInlvZmZzZXQiLCJmb3JtYXQiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UyZF9zaXoiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZCIsInpvZmZzZXQiLCJjb21wcmVzc2VkX3RleF9zdWJfaW1hZ2UzZF9zaXoiLCJjb3B5X2J1ZmZlcl9zdWJfZGF0YSIsInJlYWRUYXJnZXQiLCJ3cml0ZVRhcmdldCIsInJlYWRPZmZzZXQiLCJ3cml0ZU9mZnNldCIsImNvcHlfdGV4X2ltYWdlMmQiLCJjb3B5X3RleF9zdWJfaW1hZ2UyZCIsImNvcHlfdGV4X3N1Yl9pbWFnZTNkIiwiY3JlYXRlX2J1ZmZlciIsImNyZWF0ZV9mcmFtZWJ1ZmZlciIsImNyZWF0ZV9wcm9ncmFtIiwiY3JlYXRlX3F1ZXJ5IiwiY3JlYXRlX3JlbmRlcmJ1ZmZlciIsImNyZWF0ZV9zYW1wbGVyIiwiY3JlYXRlX3NoYWRlciIsImNyZWF0ZV90ZXh0dXJlIiwiY3JlYXRlX3RyYW5zZm9ybV9mZWVkYmFjayIsImNyZWF0ZV92ZXJ0ZXhfYXJyYXkiLCJjdWxsX2ZhY2UiLCJkZWxldGVfYnVmZmVyIiwiZGVsZXRlX2ZyYW1lYnVmZmVyIiwiZGVsZXRlX3Byb2dyYW0iLCJkZWxldGVfcXVlcnkiLCJkZWxldGVfcmVuZGVyYnVmZmVyIiwiZGVsZXRlX3NhbXBsZXIiLCJkZWxldGVfc2hhZGVyIiwiZGVsZXRlX3N5bmMiLCJkZWxldGVfdGV4dHVyZSIsImRlbGV0ZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJkZWxldGVfdmVydGV4X2FycmF5IiwidmVydGV4QXJyYXkiLCJkZXB0aF9mdW5jIiwiZnVuYyIsImRlcHRoX21hc2siLCJmbGFnIiwiZGV0YWNoX3NoYWRlciIsImRpc2FibGUiLCJkaXNhYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkiLCJkcmF3X2FycmF5cyIsImZpcnN0IiwiY291bnQiLCJkcmF3X2FycmF5c19pbnN0YW5jZWQiLCJpbnN0YW5jZUNvdW50IiwiZHJhd19idWZmZXJzIiwiYnVmZmVycyIsImRyYXdfZWxlbWVudHMiLCJkcmF3X2VsZW1lbnRzX2luc3RhbmNlZCIsImRyYXdfcmFuZ2VfZWxlbWVudHMiLCJlbmQiLCJlbmFibGUiLCJlbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSIsImVuZF9xdWVyeSIsImVuZF90cmFuc2Zvcm1fZmVlZGJhY2siLCJmZW5jZV9zeW5jIiwiY29uZGl0aW9uIiwiZmluaXNoIiwiZmx1c2giLCJmcmFtZWJ1ZmZlcl9yZW5kZXJidWZmZXIiLCJhdHRhY2htZW50IiwicmVuZGVyYnVmZmVydGFyZ2V0IiwiZnJhbWVidWZmZXJfdGV4dHVyZTJkIiwidGV4dGFyZ2V0IiwiZnJhbWVidWZmZXJfdGV4dHVyZV9sYXllciIsImxheWVyIiwiZnJvbnRfZmFjZSIsImdlbmVyYXRlX21pcG1hcCIsImdldF9hY3RpdmVfYXR0cmliIiwiZ2V0X2FjdGl2ZV91bmlmb3JtIiwiZ2V0X2FjdGl2ZV91bmlmb3JtX2Jsb2NrX25hbWUiLCJ1bmlmb3JtQmxvY2tJbmRleCIsImdldF9hY3RpdmVfdW5pZm9ybV9ibG9ja19wYXJhbSIsInBuYW1lIiwiZ2V0X2FjdGl2ZV91bmlmb3JtcyIsInVuaWZvcm1JbmRpY2VzIiwiZ2V0X2F0dGFjaGVkX3NoYWRlcnMiLCJnZXRfYXR0cmliX2xvY2F0aW9uIiwiZ2V0X2J1ZmZlcl9wYXJhbWV0ZXIiLCJnZXRfYnVmZmVyX3N1Yl9kYXRhIiwic3JjQnl0ZU9mZnNldCIsImRzdEJ1ZmZlciIsImdldF9lcnJvciIsImdldF9mcmFnX2RhdGFfbG9jYXRpb24iLCJnZXRfZnJhbWVidWZmZXJfYXR0YWNobWVudF9wYXIiLCJnZXRfaW5kZXhlZF9wYXJhbWV0ZXIiLCJnZXRfaW50ZXJuYWxmb3JtYXRfcGFyYW1ldGVyIiwiZ2V0X3BhcmFtZXRlciIsImdldF9wcm9ncmFtX2luZm9fbG9nIiwiZ2V0X3Byb2dyYW1fcGFyYW1ldGVyIiwiZ2V0X3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtZXRlciIsImdldF9yZW5kZXJidWZmZXJfcGFyYW1ldGVyIiwiZ2V0X3NhbXBsZXJfcGFyYW1ldGVyIiwiZ2V0X3NoYWRlcl9pbmZvX2xvZyIsImdldF9zaGFkZXJfcGFyYW1ldGVyIiwiZ2V0X3NoYWRlcl9wcmVjaXNpb25fZm9ybWF0Iiwic2hhZGVydHlwZSIsInByZWNpc2lvbnR5cGUiLCJnZXRfc2hhZGVyX3NvdXJjZSIsImdldF9zeW5jX3BhcmFtZXRlciIsImdldF90ZXhfcGFyYW1ldGVyIiwiZ2V0X3RyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5nIiwiZ2V0X3VuaWZvcm0iLCJsb2NhdGlvbiIsImdldF91bmlmb3JtX2Jsb2NrX2luZGV4IiwidW5pZm9ybUJsb2NrTmFtZSIsImdldF91bmlmb3JtX2luZGljZXMiLCJ1bmlmb3JtTmFtZXMiLCJnZXRfdW5pZm9ybV9sb2NhdGlvbiIsImdldF92ZXJ0ZXhfYXR0cmliIiwiZ2V0X3ZlcnRleF9hdHRyaWJfb2Zmc2V0IiwiaGludCIsImludmFsaWRhdGVfZnJhbWVidWZmZXIiLCJhdHRhY2htZW50cyIsImludmFsaWRhdGVfc3ViX2ZyYW1lYnVmZmVyIiwiaXNfYnVmZmVyIiwiaXNfZW5hYmxlZCIsImlzX2ZyYW1lYnVmZmVyIiwiaXNfcHJvZ3JhbSIsImlzX3F1ZXJ5IiwiaXNfcmVuZGVyYnVmZmVyIiwiaXNfc2FtcGxlciIsImlzX3NoYWRlciIsImlzX3RleHR1cmUiLCJpc190cmFuc2Zvcm1fZmVlZGJhY2siLCJpc192ZXJ0ZXhfYXJyYXkiLCJsaW5rX3Byb2dyYW0iLCJwYXVzZV90cmFuc2Zvcm1fZmVlZGJhY2siLCJwaXhlbF9zdG9yZWkiLCJwb2x5Z29uX29mZnNldCIsImZhY3RvciIsInVuaXRzIiwicmVhZF9idWZmZXIiLCJzcmMiLCJyZWFkX3BpeGVsc190b19waXhlbF9wYWNrIiwicmVhZF9waXhlbHMiLCJkc3REYXRhIiwicmVuZGVyYnVmZmVyX3N0b3JhZ2UiLCJyZW5kZXJidWZmZXJfc3RvcmFnZV9tdWx0aXNhbXAiLCJzYW1wbGVzIiwicmVzdW1lX3RyYW5zZm9ybV9mZWVkYmFjayIsInNhbXBsZV9jb3ZlcmFnZSIsInZhbHVlIiwiaW52ZXJ0Iiwic2FtcGxlcl9wYXJhbWV0ZXJmIiwic2FtcGxlcl9wYXJhbWV0ZXJpIiwic2Npc3NvciIsInNoYWRlcl9zb3VyY2UiLCJzb3VyY2UiLCJzdGVuY2lsX2Z1bmMiLCJyZWYiLCJzdGVuY2lsX2Z1bmNfc2VwYXJhdGUiLCJmYWNlIiwic3RlbmNpbF9tYXNrIiwic3RlbmNpbF9tYXNrX3NlcGFyYXRlIiwic3RlbmNpbF9vcCIsImZhaWwiLCJ6ZmFpbCIsInpwYXNzIiwic3RlbmNpbF9vcF9zZXBhcmF0ZSIsInRleF9pbWFnZTJkIiwic3JjT2Zmc2V0IiwidGV4X2ltYWdlMmRfb2Zfc291cmNlIiwidGV4X2ltYWdlMmRfb2ZfcGl4ZWxfdW5wYWNrIiwicGJvT2Zmc2V0IiwidGV4X2ltYWdlM2QiLCJ0ZXhfaW1hZ2UzZF9vZl9zb3VyY2UiLCJ0ZXhfaW1hZ2UzZF9vZl9waXhlbF91bnBhY2siLCJ0ZXhfcGFyYW1ldGVyZiIsInRleF9wYXJhbWV0ZXJpIiwidGV4X3N0b3JhZ2UyZCIsImxldmVscyIsInRleF9zdG9yYWdlM2QiLCJ0ZXhfc3ViX2ltYWdlMmQiLCJ0ZXhfc3ViX2ltYWdlMmRfb2Zfc291cmNlIiwidGV4X3N1Yl9pbWFnZTJkX29mX3BpeGVsX3VucGFjIiwidGV4X3N1Yl9pbWFnZTNkIiwidGV4X3N1Yl9pbWFnZTNkX29mX3NvdXJjZSIsInRleF9zdWJfaW1hZ2UzZF9vZl9waXhlbF91bnBhYyIsInRyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5ncyIsInZhcnlpbmdzIiwiYnVmZmVyTW9kZSIsInVuaWZvcm0xZiIsInVuaWZvcm0xZnYiLCJ1bmlmb3JtMWkiLCJ1bmlmb3JtMWl2IiwidW5pZm9ybTF1aSIsInYwIiwidW5pZm9ybTF1aXYiLCJ1bmlmb3JtMmYiLCJ1bmlmb3JtMmZ2IiwidW5pZm9ybTJpIiwidW5pZm9ybTJpdiIsInVuaWZvcm0ydWkiLCJ1bmlmb3JtMnVpdiIsInVuaWZvcm0zZiIsInVuaWZvcm0zZnYiLCJ1bmlmb3JtM2kiLCJ1bmlmb3JtM2l2IiwidW5pZm9ybTN1aSIsInYyIiwidW5pZm9ybTN1aXYiLCJ1bmlmb3JtNGYiLCJ1bmlmb3JtNGZ2IiwidW5pZm9ybTRpIiwidW5pZm9ybTRpdiIsInVuaWZvcm00dWkiLCJ2MyIsInVuaWZvcm00dWl2IiwidW5pZm9ybV9ibG9ja19iaW5kaW5nIiwidW5pZm9ybUJsb2NrQmluZGluZyIsInVuaWZvcm1fbWF0cml4MmZ2IiwidHJhbnNwb3NlIiwidW5pZm9ybV9tYXRyaXgyeDNmdiIsInVuaWZvcm1fbWF0cml4Mng0ZnYiLCJ1bmlmb3JtX21hdHJpeDNmdiIsInVuaWZvcm1fbWF0cml4M3gyZnYiLCJ1bmlmb3JtX21hdHJpeDN4NGZ2IiwidW5pZm9ybV9tYXRyaXg0ZnYiLCJ1bmlmb3JtX21hdHJpeDR4MmZ2IiwidW5pZm9ybV9tYXRyaXg0eDNmdiIsInVzZV9wcm9ncmFtIiwidmFsaWRhdGVfcHJvZ3JhbSIsInZlcnRleF9hdHRyaWIxZiIsInZlcnRleF9hdHRyaWIxZnYiLCJ2ZXJ0ZXhfYXR0cmliMmYiLCJ2ZXJ0ZXhfYXR0cmliMmZ2IiwidmVydGV4X2F0dHJpYjNmIiwidmVydGV4X2F0dHJpYjNmdiIsInZlcnRleF9hdHRyaWI0ZiIsInZlcnRleF9hdHRyaWI0ZnYiLCJ2ZXJ0ZXhfYXR0cmliX2Rpdmlzb3IiLCJkaXZpc29yIiwidmVydGV4X2F0dHJpYl9pNGkiLCJ2ZXJ0ZXhfYXR0cmliX2k0aXYiLCJ2ZXJ0ZXhfYXR0cmliX2k0dWkiLCJ2ZXJ0ZXhfYXR0cmliX2k0dWl2IiwidmVydGV4X2F0dHJpYl9pcG9pbnRlciIsInN0cmlkZSIsInZlcnRleF9hdHRyaWJfcG9pbnRlciIsIm5vcm1hbGl6ZWQiLCJ2aWV3cG9ydCIsIndhaXRfc3luYyIsImdldF9pbnQiLCJnbDFjdHgiLCJkZXB0aF9idWZmZXJfYml0Iiwic3RlbmNpbF9idWZmZXJfYml0IiwiY29sb3JfYnVmZmVyX2JpdCIsInBvaW50cyIsImxpbmVzIiwibGluZV9sb29wIiwibGluZV9zdHJpcCIsInRyaWFuZ2xlcyIsInRyaWFuZ2xlX3N0cmlwIiwidHJpYW5nbGVfZmFuIiwiemVybyIsIm9uZSIsInNyY19jb2xvciIsIm9uZV9taW51c19zcmNfY29sb3IiLCJzcmNfYWxwaGEiLCJvbmVfbWludXNfc3JjX2FscGhhIiwiZHN0X2FscGhhIiwib25lX21pbnVzX2RzdF9hbHBoYSIsImRzdF9jb2xvciIsIm9uZV9taW51c19kc3RfY29sb3IiLCJzcmNfYWxwaGFfc2F0dXJhdGUiLCJmdW5jX2FkZCIsImJsZW5kX2VxdWF0aW9uX3JnYiIsImJsZW5kX2VxdWF0aW9uX2FscGhhIiwiZnVuY19zdWJ0cmFjdCIsImZ1bmNfcmV2ZXJzZV9zdWJ0cmFjdCIsImJsZW5kX2RzdF9yZ2IiLCJibGVuZF9zcmNfcmdiIiwiYmxlbmRfZHN0X2FscGhhIiwiYmxlbmRfc3JjX2FscGhhIiwiY29uc3RhbnRfY29sb3IiLCJvbmVfbWludXNfY29uc3RhbnRfY29sb3IiLCJjb25zdGFudF9hbHBoYSIsIm9uZV9taW51c19jb25zdGFudF9hbHBoYSIsImFycmF5X2J1ZmZlciIsImVsZW1lbnRfYXJyYXlfYnVmZmVyIiwiYXJyYXlfYnVmZmVyX2JpbmRpbmciLCJlbGVtZW50X2FycmF5X2J1ZmZlcl9iaW5kaW5nIiwic3RyZWFtX2RyYXciLCJzdGF0aWNfZHJhdyIsImR5bmFtaWNfZHJhdyIsImJ1ZmZlcl9zaXplIiwiYnVmZmVyX3VzYWdlIiwiY3VycmVudF92ZXJ0ZXhfYXR0cmliIiwiZnJvbnQiLCJiYWNrIiwiZnJvbnRfYW5kX2JhY2siLCJibGVuZCIsImRpdGhlciIsInN0ZW5jaWxfdGVzdCIsImRlcHRoX3Rlc3QiLCJzY2lzc29yX3Rlc3QiLCJwb2x5Z29uX29mZnNldF9maWxsIiwic2FtcGxlX2FscGhhX3RvX2NvdmVyYWdlIiwibm9fZXJyb3IiLCJpbnZhbGlkX2VudW0iLCJpbnZhbGlkX3ZhbHVlIiwiaW52YWxpZF9vcGVyYXRpb24iLCJvdXRfb2ZfbWVtb3J5IiwiY2N3IiwiYWxpYXNlZF9wb2ludF9zaXplX3JhbmdlIiwiYWxpYXNlZF9saW5lX3dpZHRoX3JhbmdlIiwiY3VsbF9mYWNlX21vZGUiLCJkZXB0aF9yYW5nZSIsImRlcHRoX3dyaXRlbWFzayIsImRlcHRoX2NsZWFyX3ZhbHVlIiwic3RlbmNpbF9jbGVhcl92YWx1ZSIsInN0ZW5jaWxfZmFpbCIsInN0ZW5jaWxfcGFzc19kZXB0aF9mYWlsIiwic3RlbmNpbF9wYXNzX2RlcHRoX3Bhc3MiLCJzdGVuY2lsX3JlZiIsInN0ZW5jaWxfdmFsdWVfbWFzayIsInN0ZW5jaWxfd3JpdGVtYXNrIiwic3RlbmNpbF9iYWNrX2Z1bmMiLCJzdGVuY2lsX2JhY2tfZmFpbCIsInN0ZW5jaWxfYmFja19wYXNzX2RlcHRoX2ZhaWwiLCJzdGVuY2lsX2JhY2tfcGFzc19kZXB0aF9wYXNzIiwic3RlbmNpbF9iYWNrX3JlZiIsInN0ZW5jaWxfYmFja192YWx1ZV9tYXNrIiwic3RlbmNpbF9iYWNrX3dyaXRlbWFzayIsInNjaXNzb3JfYm94IiwiY29sb3JfY2xlYXJfdmFsdWUiLCJjb2xvcl93cml0ZW1hc2siLCJ1bnBhY2tfYWxpZ25tZW50IiwicGFja19hbGlnbm1lbnQiLCJtYXhfdGV4dHVyZV9zaXplIiwibWF4X3ZpZXdwb3J0X2RpbXMiLCJzdWJwaXhlbF9iaXRzIiwicmVkX2JpdHMiLCJncmVlbl9iaXRzIiwiYmx1ZV9iaXRzIiwiYWxwaGFfYml0cyIsImRlcHRoX2JpdHMiLCJzdGVuY2lsX2JpdHMiLCJwb2x5Z29uX29mZnNldF91bml0cyIsInBvbHlnb25fb2Zmc2V0X2ZhY3RvciIsInRleHR1cmVfYmluZGluZ18yZCIsInNhbXBsZV9idWZmZXJzIiwic2FtcGxlX2NvdmVyYWdlX3ZhbHVlIiwic2FtcGxlX2NvdmVyYWdlX2ludmVydCIsImNvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRzIiwiZG9udF9jYXJlIiwiZmFzdGVzdCIsIm5pY2VzdCIsImdlbmVyYXRlX21pcG1hcF9oaW50IiwiYnl0ZSIsInVuc2lnbmVkX2J5dGUiLCJzaG9ydCIsInVuc2lnbmVkX3Nob3J0IiwiaW50IiwidW5zaWduZWRfaW50IiwiZmxvYXQiLCJkZXB0aF9jb21wb25lbnQiLCJyZ2IiLCJyZ2JhIiwibHVtaW5hbmNlIiwibHVtaW5hbmNlX2FscGhhIiwidW5zaWduZWRfc2hvcnRfNF80XzRfNCIsInVuc2lnbmVkX3Nob3J0XzVfNV81XzEiLCJ1bnNpZ25lZF9zaG9ydF81XzZfNSIsImZyYWdtZW50X3NoYWRlciIsInZlcnRleF9zaGFkZXIiLCJtYXhfdmVydGV4X2F0dHJpYnMiLCJtYXhfdmVydGV4X3VuaWZvcm1fdmVjdG9ycyIsIm1heF92YXJ5aW5nX3ZlY3RvcnMiLCJtYXhfY29tYmluZWRfdGV4dHVyZV9pbWFnZV91bmkiLCJtYXhfdmVydGV4X3RleHR1cmVfaW1hZ2VfdW5pdHMiLCJtYXhfdGV4dHVyZV9pbWFnZV91bml0cyIsIm1heF9mcmFnbWVudF91bmlmb3JtX3ZlY3RvcnMiLCJzaGFkZXJfdHlwZSIsImRlbGV0ZV9zdGF0dXMiLCJsaW5rX3N0YXR1cyIsInZhbGlkYXRlX3N0YXR1cyIsImF0dGFjaGVkX3NoYWRlcnMiLCJhY3RpdmVfdW5pZm9ybXMiLCJhY3RpdmVfYXR0cmlidXRlcyIsInNoYWRpbmdfbGFuZ3VhZ2VfdmVyc2lvbiIsImN1cnJlbnRfcHJvZ3JhbSIsIm5ldmVyIiwibGVzcyIsImVxdWFsIiwibGVxdWFsIiwiZ3JlYXRlciIsIm5vdGVxdWFsIiwiZ2VxdWFsIiwiYWx3YXlzIiwia2VlcCIsInJlcGxhY2UiLCJpbmNyIiwiZGVjciIsImluY3Jfd3JhcCIsImRlY3Jfd3JhcCIsInZlbmRvciIsInJlbmRlcmVyIiwidmVyc2lvbiIsIm5lYXJlc3QiLCJsaW5lYXIiLCJuZWFyZXN0X21pcG1hcF9uZWFyZXN0IiwibGluZWFyX21pcG1hcF9uZWFyZXN0IiwibmVhcmVzdF9taXBtYXBfbGluZWFyIiwibGluZWFyX21pcG1hcF9saW5lYXIiLCJ0ZXh0dXJlX21hZ19maWx0ZXIiLCJ0ZXh0dXJlX21pbl9maWx0ZXIiLCJ0ZXh0dXJlX3dyYXBfcyIsInRleHR1cmVfd3JhcF90IiwidGV4dHVyZV8yZCIsInRleHR1cmVfY3ViZV9tYXAiLCJ0ZXh0dXJlX2JpbmRpbmdfY3ViZV9tYXAiLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3giLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3giLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3kiLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3kiLCJ0ZXh0dXJlX2N1YmVfbWFwX3Bvc2l0aXZlX3oiLCJ0ZXh0dXJlX2N1YmVfbWFwX25lZ2F0aXZlX3oiLCJtYXhfY3ViZV9tYXBfdGV4dHVyZV9zaXplIiwidGV4dHVyZTAiLCJ0ZXh0dXJlMSIsInRleHR1cmUyIiwidGV4dHVyZTMiLCJ0ZXh0dXJlNCIsInRleHR1cmU1IiwidGV4dHVyZTYiLCJ0ZXh0dXJlNyIsInRleHR1cmU4IiwidGV4dHVyZTkiLCJ0ZXh0dXJlMTAiLCJ0ZXh0dXJlMTEiLCJ0ZXh0dXJlMTIiLCJ0ZXh0dXJlMTMiLCJ0ZXh0dXJlMTQiLCJ0ZXh0dXJlMTUiLCJ0ZXh0dXJlMTYiLCJ0ZXh0dXJlMTciLCJ0ZXh0dXJlMTgiLCJ0ZXh0dXJlMTkiLCJ0ZXh0dXJlMjAiLCJ0ZXh0dXJlMjEiLCJ0ZXh0dXJlMjIiLCJ0ZXh0dXJlMjMiLCJ0ZXh0dXJlMjQiLCJ0ZXh0dXJlMjUiLCJ0ZXh0dXJlMjYiLCJ0ZXh0dXJlMjciLCJ0ZXh0dXJlMjgiLCJ0ZXh0dXJlMjkiLCJ0ZXh0dXJlMzAiLCJ0ZXh0dXJlMzEiLCJyZXBlYXQiLCJjbGFtcF90b19lZGdlIiwibWlycm9yZWRfcmVwZWF0IiwiZmxvYXRfdmVjMiIsImZsb2F0X3ZlYzMiLCJmbG9hdF92ZWM0IiwiaW50X3ZlYzIiLCJpbnRfdmVjMyIsImludF92ZWM0IiwiYm9vbCIsImJvb2xfdmVjMiIsImJvb2xfdmVjMyIsImJvb2xfdmVjNCIsImZsb2F0X21hdDIiLCJmbG9hdF9tYXQzIiwiZmxvYXRfbWF0NCIsInNhbXBsZXJfMmQiLCJzYW1wbGVyX2N1YmUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X2VuYWJsZWQiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3NpemUiLCJ2ZXJ0ZXhfYXR0cmliX2FycmF5X3N0cmlkZSIsInZlcnRleF9hdHRyaWJfYXJyYXlfdHlwZSIsInZlcnRleF9hdHRyaWJfYXJyYXlfbm9ybWFsaXplZCIsInZlcnRleF9hdHRyaWJfYXJyYXlfcG9pbnRlciIsInZlcnRleF9hdHRyaWJfYXJyYXlfYnVmZmVyX2JpbiIsImltcGxlbWVudGF0aW9uX2NvbG9yX3JlYWRfdHlwZSIsImltcGxlbWVudGF0aW9uX2NvbG9yX3JlYWRfZm9ybSIsImNvbXBpbGVfc3RhdHVzIiwibG93X2Zsb2F0IiwibWVkaXVtX2Zsb2F0IiwiaGlnaF9mbG9hdCIsImxvd19pbnQiLCJtZWRpdW1faW50IiwiaGlnaF9pbnQiLCJyZ2JhNCIsInJnYjVfYTEiLCJyZ2I1NjUiLCJkZXB0aF9jb21wb25lbnQxNiIsInN0ZW5jaWxfaW5kZXg4IiwiZGVwdGhfc3RlbmNpbCIsInJlbmRlcmJ1ZmZlcl93aWR0aCIsInJlbmRlcmJ1ZmZlcl9oZWlnaHQiLCJyZW5kZXJidWZmZXJfaW50ZXJuYWxfZm9ybWF0IiwicmVuZGVyYnVmZmVyX3JlZF9zaXplIiwicmVuZGVyYnVmZmVyX2dyZWVuX3NpemUiLCJyZW5kZXJidWZmZXJfYmx1ZV9zaXplIiwicmVuZGVyYnVmZmVyX2FscGhhX3NpemUiLCJyZW5kZXJidWZmZXJfZGVwdGhfc2l6ZSIsInJlbmRlcmJ1ZmZlcl9zdGVuY2lsX3NpemUiLCJmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X29iamVjdF8iLCJmcmFtZWJ1ZmZlcl9hdHRhY2htZW50X3RleHR1cmUiLCJjb2xvcl9hdHRhY2htZW50MCIsImRlcHRoX2F0dGFjaG1lbnQiLCJzdGVuY2lsX2F0dGFjaG1lbnQiLCJkZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnQiLCJub25lIiwiZnJhbWVidWZmZXJfY29tcGxldGUiLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2F0dGFjaG0iLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX21pc3NpbmciLCJmcmFtZWJ1ZmZlcl9pbmNvbXBsZXRlX2RpbWVuc2kiLCJmcmFtZWJ1ZmZlcl91bnN1cHBvcnRlZCIsImZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZW5kZXJidWZmZXJfYmluZGluZyIsIm1heF9yZW5kZXJidWZmZXJfc2l6ZSIsImludmFsaWRfZnJhbWVidWZmZXJfb3BlcmF0aW9uIiwidW5wYWNrX2ZsaXBfeV93ZWJnbCIsInVucGFja19wcmVtdWx0aXBseV9hbHBoYV93ZWJnbCIsImNvbnRleHRfbG9zdF93ZWJnbCIsInVucGFja19jb2xvcnNwYWNlX2NvbnZlcnNpb25fdyIsImJyb3dzZXJfZGVmYXVsdF93ZWJnbCIsImdsMmN0eCIsInVucGFja19yb3dfbGVuZ3RoIiwidW5wYWNrX3NraXBfcm93cyIsInVucGFja19za2lwX3BpeGVscyIsInBhY2tfcm93X2xlbmd0aCIsInBhY2tfc2tpcF9yb3dzIiwicGFja19za2lwX3BpeGVscyIsInJnYjgiLCJyZ2JhOCIsInJnYjEwX2EyIiwidGV4dHVyZV9iaW5kaW5nXzNkIiwidW5wYWNrX3NraXBfaW1hZ2VzIiwidW5wYWNrX2ltYWdlX2hlaWdodCIsInRleHR1cmVfM2QiLCJ0ZXh0dXJlX3dyYXBfciIsIm1heF8zZF90ZXh0dXJlX3NpemUiLCJ1bnNpZ25lZF9pbnRfMl8xMF8xMF8xMF9yZXYiLCJtYXhfZWxlbWVudHNfdmVydGljZXMiLCJtYXhfZWxlbWVudHNfaW5kaWNlcyIsInRleHR1cmVfbWluX2xvZCIsInRleHR1cmVfbWF4X2xvZCIsInRleHR1cmVfYmFzZV9sZXZlbCIsInRleHR1cmVfbWF4X2xldmVsIiwibWluIiwibWF4IiwiZGVwdGhfY29tcG9uZW50MjQiLCJtYXhfdGV4dHVyZV9sb2RfYmlhcyIsInRleHR1cmVfY29tcGFyZV9tb2RlIiwidGV4dHVyZV9jb21wYXJlX2Z1bmMiLCJjdXJyZW50X3F1ZXJ5IiwicXVlcnlfcmVzdWx0IiwicXVlcnlfcmVzdWx0X2F2YWlsYWJsZSIsInN0cmVhbV9yZWFkIiwic3RyZWFtX2NvcHkiLCJzdGF0aWNfcmVhZCIsInN0YXRpY19jb3B5IiwiZHluYW1pY19yZWFkIiwiZHluYW1pY19jb3B5IiwibWF4X2RyYXdfYnVmZmVycyIsImRyYXdfYnVmZmVyMCIsImRyYXdfYnVmZmVyMSIsImRyYXdfYnVmZmVyMiIsImRyYXdfYnVmZmVyMyIsImRyYXdfYnVmZmVyNCIsImRyYXdfYnVmZmVyNSIsImRyYXdfYnVmZmVyNiIsImRyYXdfYnVmZmVyNyIsImRyYXdfYnVmZmVyOCIsImRyYXdfYnVmZmVyOSIsImRyYXdfYnVmZmVyMTAiLCJkcmF3X2J1ZmZlcjExIiwiZHJhd19idWZmZXIxMiIsImRyYXdfYnVmZmVyMTMiLCJkcmF3X2J1ZmZlcjE0IiwiZHJhd19idWZmZXIxNSIsIm1heF9mcmFnbWVudF91bmlmb3JtX2NvbXBvbmVudCIsIm1heF92ZXJ0ZXhfdW5pZm9ybV9jb21wb25lbnRzIiwic2FtcGxlcl8zZCIsInNhbXBsZXJfMmRfc2hhZG93IiwiZnJhZ21lbnRfc2hhZGVyX2Rlcml2YXRpdmVfaGluIiwicGl4ZWxfcGFja19idWZmZXIiLCJwaXhlbF91bnBhY2tfYnVmZmVyIiwicGl4ZWxfcGFja19idWZmZXJfYmluZGluZyIsInBpeGVsX3VucGFja19idWZmZXJfYmluZGluZyIsImZsb2F0X21hdDJ4MyIsImZsb2F0X21hdDJ4NCIsImZsb2F0X21hdDN4MiIsImZsb2F0X21hdDN4NCIsImZsb2F0X21hdDR4MiIsImZsb2F0X21hdDR4MyIsInNyZ2IiLCJzcmdiOCIsInNyZ2I4X2FscGhhOCIsImNvbXBhcmVfcmVmX3RvX3RleHR1cmUiLCJyZ2JhMzJmIiwicmdiMzJmIiwicmdiYTE2ZiIsInJnYjE2ZiIsInZlcnRleF9hdHRyaWJfYXJyYXlfaW50ZWdlciIsIm1heF9hcnJheV90ZXh0dXJlX2xheWVycyIsIm1pbl9wcm9ncmFtX3RleGVsX29mZnNldCIsIm1heF9wcm9ncmFtX3RleGVsX29mZnNldCIsIm1heF92YXJ5aW5nX2NvbXBvbmVudHMiLCJ0ZXh0dXJlXzJkX2FycmF5IiwidGV4dHVyZV9iaW5kaW5nXzJkX2FycmF5IiwicjExZl9nMTFmX2IxMGYiLCJ1bnNpZ25lZF9pbnRfMTBmXzExZl8xMWZfcmV2IiwicmdiOV9lNSIsInVuc2lnbmVkX2ludF81XzlfOV85X3JldiIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfbW9kZSIsIm1heF90cmFuc2Zvcm1fZmVlZGJhY2tfc2VwYXJhdCIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc3RhciIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfc2l6ZSIsInRyYW5zZm9ybV9mZWVkYmFja19wcmltaXRpdmVzXyIsInJhc3Rlcml6ZXJfZGlzY2FyZCIsIm1heF90cmFuc2Zvcm1fZmVlZGJhY2tfaW50ZXJsZSIsImludGVybGVhdmVkX2F0dHJpYnMiLCJzZXBhcmF0ZV9hdHRyaWJzIiwidHJhbnNmb3JtX2ZlZWRiYWNrX2J1ZmZlciIsInRyYW5zZm9ybV9mZWVkYmFja19idWZmZXJfYmluZCIsInJnYmEzMnVpIiwicmdiMzJ1aSIsInJnYmExNnVpIiwicmdiMTZ1aSIsInJnYmE4dWkiLCJyZ2I4dWkiLCJyZ2JhMzJpIiwicmdiMzJpIiwicmdiYTE2aSIsInJnYjE2aSIsInJnYmE4aSIsInJnYjhpIiwicmVkX2ludGVnZXIiLCJyZ2JfaW50ZWdlciIsInJnYmFfaW50ZWdlciIsInNhbXBsZXJfMmRfYXJyYXkiLCJzYW1wbGVyXzJkX2FycmF5X3NoYWRvdyIsInNhbXBsZXJfY3ViZV9zaGFkb3ciLCJ1bnNpZ25lZF9pbnRfdmVjMiIsInVuc2lnbmVkX2ludF92ZWMzIiwidW5zaWduZWRfaW50X3ZlYzQiLCJpbnRfc2FtcGxlcl8yZCIsImludF9zYW1wbGVyXzNkIiwiaW50X3NhbXBsZXJfY3ViZSIsImludF9zYW1wbGVyXzJkX2FycmF5IiwidW5zaWduZWRfaW50X3NhbXBsZXJfMmQiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl8zZCIsInVuc2lnbmVkX2ludF9zYW1wbGVyX2N1YmUiLCJ1bnNpZ25lZF9pbnRfc2FtcGxlcl8yZF9hcnJheSIsImRlcHRoX2NvbXBvbmVudDMyZiIsImRlcHRoMzJmX3N0ZW5jaWw4IiwiZmxvYXRfMzJfdW5zaWduZWRfaW50XzI0XzhfcmV2IiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb2xvcl9lIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9jb21wb25lIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9yZWRfc2l6IiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9ncmVlbl9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9ibHVlX3NpIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9hbHBoYV9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9kZXB0aF9zIiwiZnJhbWVidWZmZXJfYXR0YWNobWVudF9zdGVuY2lsIiwiZnJhbWVidWZmZXJfZGVmYXVsdCIsInVuc2lnbmVkX2ludF8yNF84IiwiZGVwdGgyNF9zdGVuY2lsOCIsInVuc2lnbmVkX25vcm1hbGl6ZWQiLCJkcmF3X2ZyYW1lYnVmZmVyX2JpbmRpbmciLCJyZWFkX2ZyYW1lYnVmZmVyIiwiZHJhd19mcmFtZWJ1ZmZlciIsInJlYWRfZnJhbWVidWZmZXJfYmluZGluZyIsInJlbmRlcmJ1ZmZlcl9zYW1wbGVzIiwibWF4X2NvbG9yX2F0dGFjaG1lbnRzIiwiY29sb3JfYXR0YWNobWVudDEiLCJjb2xvcl9hdHRhY2htZW50MiIsImNvbG9yX2F0dGFjaG1lbnQzIiwiY29sb3JfYXR0YWNobWVudDQiLCJjb2xvcl9hdHRhY2htZW50NSIsImNvbG9yX2F0dGFjaG1lbnQ2IiwiY29sb3JfYXR0YWNobWVudDciLCJjb2xvcl9hdHRhY2htZW50OCIsImNvbG9yX2F0dGFjaG1lbnQ5IiwiY29sb3JfYXR0YWNobWVudDEwIiwiY29sb3JfYXR0YWNobWVudDExIiwiY29sb3JfYXR0YWNobWVudDEyIiwiY29sb3JfYXR0YWNobWVudDEzIiwiY29sb3JfYXR0YWNobWVudDE0IiwiY29sb3JfYXR0YWNobWVudDE1IiwiZnJhbWVidWZmZXJfaW5jb21wbGV0ZV9tdWx0aXNhIiwibWF4X3NhbXBsZXMiLCJoYWxmX2Zsb2F0IiwicmciLCJyZ19pbnRlZ2VyIiwicjgiLCJyZzgiLCJyMTZmIiwicjMyZiIsInJnMTZmIiwicmczMmYiLCJyOGkiLCJyOHVpIiwicjE2aSIsInIxNnVpIiwicjMyaSIsInIzMnVpIiwicmc4aSIsInJnOHVpIiwicmcxNmkiLCJyZzE2dWkiLCJyZzMyaSIsInJnMzJ1aSIsInZlcnRleF9hcnJheV9iaW5kaW5nIiwicjhfc25vcm0iLCJyZzhfc25vcm0iLCJyZ2I4X3Nub3JtIiwicmdiYThfc25vcm0iLCJzaWduZWRfbm9ybWFsaXplZCIsImNvcHlfcmVhZF9idWZmZXIiLCJjb3B5X3dyaXRlX2J1ZmZlciIsImNvcHlfcmVhZF9idWZmZXJfYmluZGluZyIsImNvcHlfd3JpdGVfYnVmZmVyX2JpbmRpbmciLCJ1bmlmb3JtX2J1ZmZlciIsInVuaWZvcm1fYnVmZmVyX2JpbmRpbmciLCJ1bmlmb3JtX2J1ZmZlcl9zdGFydCIsInVuaWZvcm1fYnVmZmVyX3NpemUiLCJtYXhfdmVydGV4X3VuaWZvcm1fYmxvY2tzIiwibWF4X2ZyYWdtZW50X3VuaWZvcm1fYmxvY2tzIiwibWF4X2NvbWJpbmVkX3VuaWZvcm1fYmxvY2tzIiwibWF4X3VuaWZvcm1fYnVmZmVyX2JpbmRpbmdzIiwibWF4X3VuaWZvcm1fYmxvY2tfc2l6ZSIsIm1heF9jb21iaW5lZF92ZXJ0ZXhfdW5pZm9ybV9jbyIsIm1heF9jb21iaW5lZF9mcmFnbWVudF91bmlmb3JtXyIsInVuaWZvcm1fYnVmZmVyX29mZnNldF9hbGlnbm1lbiIsImFjdGl2ZV91bmlmb3JtX2Jsb2NrcyIsInVuaWZvcm1fdHlwZSIsInVuaWZvcm1fc2l6ZSIsInVuaWZvcm1fYmxvY2tfaW5kZXgiLCJ1bmlmb3JtX29mZnNldCIsInVuaWZvcm1fYXJyYXlfc3RyaWRlIiwidW5pZm9ybV9tYXRyaXhfc3RyaWRlIiwidW5pZm9ybV9pc19yb3dfbWFqb3IiLCJ1bmlmb3JtX2Jsb2NrX2RhdGFfc2l6ZSIsInVuaWZvcm1fYmxvY2tfYWN0aXZlX3VuaWZvcm1zIiwidW5pZm9ybV9ibG9ja19hY3RpdmVfdW5pZm9ybV9pIiwidW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X3ZlIiwidW5pZm9ybV9ibG9ja19yZWZlcmVuY2VkX2J5X2ZyIiwiaW52YWxpZF9pbmRleCIsIm1heF92ZXJ0ZXhfb3V0cHV0X2NvbXBvbmVudHMiLCJtYXhfZnJhZ21lbnRfaW5wdXRfY29tcG9uZW50cyIsIm1heF9zZXJ2ZXJfd2FpdF90aW1lb3V0Iiwib2JqZWN0X3R5cGUiLCJzeW5jX2NvbmRpdGlvbiIsInN5bmNfc3RhdHVzIiwic3luY19mbGFncyIsInN5bmNfZmVuY2UiLCJzeW5jX2dwdV9jb21tYW5kc19jb21wbGV0ZSIsInVuc2lnbmFsZWQiLCJzaWduYWxlZCIsImFscmVhZHlfc2lnbmFsZWQiLCJ0aW1lb3V0X2V4cGlyZWQiLCJjb25kaXRpb25fc2F0aXNmaWVkIiwid2FpdF9mYWlsZWQiLCJzeW5jX2ZsdXNoX2NvbW1hbmRzX2JpdCIsInZlcnRleF9hdHRyaWJfYXJyYXlfZGl2aXNvciIsImFueV9zYW1wbGVzX3Bhc3NlZCIsImFueV9zYW1wbGVzX3Bhc3NlZF9jb25zZXJ2YXRpdiIsInNhbXBsZXJfYmluZGluZyIsInJnYjEwX2EydWkiLCJpbnRfMl8xMF8xMF8xMF9yZXYiLCJ0cmFuc2Zvcm1fZmVlZGJhY2siLCJ0cmFuc2Zvcm1fZmVlZGJhY2tfcGF1c2VkIiwidHJhbnNmb3JtX2ZlZWRiYWNrX2FjdGl2ZSIsInRyYW5zZm9ybV9mZWVkYmFja19iaW5kaW5nIiwidGV4dHVyZV9pbW11dGFibGVfZm9ybWF0IiwibWF4X2VsZW1lbnRfaW5kZXgiLCJ0ZXh0dXJlX2ltbXV0YWJsZV9sZXZlbHMiLCJ0aW1lb3V0X2lnbm9yZWQiLCJtYXhfY2xpZW50X3dhaXRfdGltZW91dF93ZWJnbCIsImNzdF9yb3VuZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLHNCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLFlBQUFDLE1BQUFDLEdDV2dCLHNDQUFvQjtBQUFBLFlBQUFDLFlBQUFELEdBQ2QsNENBQTBCO0FBQUEsWUFBQUUsUUFBQUYsR0FDOUIsa0JBQXdCO0FBQUEsWUFBQUcsU0FBQUgsS0FBQUEsR0FDcEIsc0JBQTJCO0FBQUEsWUFBQUksSUFBQUosR0FFbkMscUNBQW9CO0FBQUEsWUFBQUssSUFBQUwsR0FDcEIscUNBQW9CO0FBQUEsWUFBQU0sSUFBQU4sR0FDcEIscUNBQW9CO0FBQUEsWUFBQU8sSUFBQVAsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVEsSUFBQVIsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVMsSUFBQVQsR0FDcEIscUNBQW9CO0FBQUEsWUFBQVUsSUFBQVYsR0FDcEIs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QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEaDZEcEYiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MDkxOCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvc2hhZGVyLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIEdMU0wgc2hhZGVyIGNvbXBpbGF0aW9uIHV0aWxpdGllcyBhbmQgZ2xvYmUgc2hhZGVyIHNvdXJjZXMuICopXG5cbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgY29tcGlsZSBnbCB0eXAgc3JjID1cbiAgbGV0IHNoYWRlciA9IEdsLmNyZWF0ZV9zaGFkZXIgZ2wgdHlwIGluXG4gIEdsLnNoYWRlcl9zb3VyY2UgZ2wgc2hhZGVyIChKc3RyLm9mX3N0cmluZyBzcmMpO1xuICBHbC5jb21waWxlX3NoYWRlciBnbCBzaGFkZXI7XG4gIHNoYWRlclxuXG5sZXQgcHJvZ3JhbSBnbCB+dmVydCB+ZnJhZyA9XG4gIGxldCB2cyA9IGNvbXBpbGUgZ2wgR2wudmVydGV4X3NoYWRlciB2ZXJ0IGluXG4gIGxldCBmcyA9IGNvbXBpbGUgZ2wgR2wuZnJhZ21lbnRfc2hhZGVyIGZyYWcgaW5cbiAgbGV0IHByb2cgPSBHbC5jcmVhdGVfcHJvZ3JhbSBnbCBpblxuICBHbC5hdHRhY2hfc2hhZGVyIGdsIHByb2cgdnM7XG4gIEdsLmF0dGFjaF9zaGFkZXIgZ2wgcHJvZyBmcztcbiAgR2wubGlua19wcm9ncmFtIGdsIHByb2c7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgdnM7XG4gIEdsLmRlbGV0ZV9zaGFkZXIgZ2wgZnM7XG4gIHByb2dcblxuKCogLS0tIEdsb2JlIGRvdCBjbG91ZCBzaGFkZXJzIC0tLSAqKVxuXG5sZXQgZWFydGhfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbnVuaWZvcm0gZmxvYXQgdV9wb2ludF9zaXplO1xuXG5vdXQgZmxvYXQgdl9icmlnaHRuZXNzO1xuXG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemUgKiAoMC4zICsgYV9icmlnaHRuZXNzICogMC43KTtcbiAgdl9icmlnaHRuZXNzID0gYV9icmlnaHRuZXNzO1xufVxufH1cblxubGV0IGVhcnRoX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxuaW4gZmxvYXQgdl9icmlnaHRuZXNzO1xudW5pZm9ybSBmbG9hdCB1X2RpbTtcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcCgwLjUsIDAuMSwgZCk7XG4gIHZlYzMgY29sb3IgPSBtaXgodmVjMygwLjAzLCAwLjEwLCAwLjI1KSwgdmVjMygwLjM1LCAwLjkwLCAxLjApLCB2X2JyaWdodG5lc3MpO1xuICAvLyB1X2RpbTogMS4wID0gZnVsbCBicmlnaHRuZXNzLCAwLjAgPSBjb21wbGV0ZWx5IGRhcmtcbiAgZnJhZ0NvbG9yID0gdmVjNChjb2xvciAqIHVfZGltLCBhbHBoYSAqICgwLjMgKyB2X2JyaWdodG5lc3MgKiAwLjcpICogdV9kaW0pO1xufVxufH1cblxuKCogLS0tIFN0YXIgZmllbGQgc2hhZGVycyAtLS0gKilcblxubGV0IHN0YXJfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxubGF5b3V0KGxvY2F0aW9uID0gMCkgaW4gdmVjMyBhX3Bvc2l0aW9uO1xubGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gZmxvYXQgYV9icmlnaHRuZXNzO1xuXG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcblxub3V0IGZsb2F0IHZfYnJpZ2h0bmVzcztcblxudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgZ2xfUG9pbnRTaXplID0gMS4wICsgYV9icmlnaHRuZXNzO1xuICB2X2JyaWdodG5lc3MgPSBhX2JyaWdodG5lc3M7XG59XG58fVxuXG5sZXQgc3Rhcl9mcmFnbWVudCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5cbmluIGZsb2F0IHZfYnJpZ2h0bmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcblxudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZyYWdDb2xvciA9IHZlYzQodmVjMygxLjApLCB2X2JyaWdodG5lc3MgKiBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKSk7XG59XG58fVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiQnJyX2NhbnZhcyIsImNvbXBpbGUiLCJnbCIsInR5cCIsInNyYyIsInNoYWRlciIsInByb2dyYW0iLCJ2ZXJ0IiwiZnJhZyIsInZzIiwiZnMiLCJwcm9nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLGFBQUE7QUFBQSxZQUFBQyxRQUFBQyxJQUFBQyxLQUFBQztBQUFBQSxRQUFBQyxTQ1VlO0FBQUEsSUFDYjtBQUFBLHNDQUEyQjtBQUFBLElBQzNCO0FBQUEsSUFBMkI7QUFBQSxHQUNyQjtBQUFBLFlBQUFDLFFBQUFKLElBQUFLLE1BQUFDO0FBQUFBO0FBQUFBLEtBQUFDLEtBR0c7QUFBQSxLQUFBQyxLQUNBO0FBQUEsS0FBQUMsT0FDRTtBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFBc0I7QUFBQSxHQUNsQjtBQUFBLEdEeEJOIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDA5NzQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL3N0YXJzLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIFN0YXIgZmllbGQgYmFja2dyb3VuZDogcmFuZG9tIHNtYWxsIHdoaXRlIHBvaW50cyBvbiBhIGZhciBzcGhlcmUuICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxudHlwZSB0ID0ge1xuICBwcm9nIDogR2wucHJvZ3JhbTtcbiAgdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgY291bnQgOiBpbnQ7XG4gIHVfcHJvamVjdGlvbiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG59XG5cbmxldCB2ID8oY291bnQgPSAyMDAwKSA/KGRpc3RhbmNlID0gNTAuMCkgZ2wgPVxuICBsZXQgZGF0YSA9IEFycmF5Lm1ha2UgKGNvdW50ICogNCkgMC4gaW5cbiAgbGV0IHNlZWQgPSByZWYgMTIzNDUgaW5cbiAgbGV0IHJhbmQgKCkgPVxuICAgIHNlZWQgOj0gKCFzZWVkICogMTEwMzUxNTI0NSkgKyAxMjM0NTtcbiAgICBGbG9hdC5vZl9pbnQgKGFicyAoIXNlZWQgLyA2NTUzNiBtb2QgMzI3NjgpKSAvLiAzMjc2OC5cbiAgaW5cbiAgZm9yIGkgPSAwIHRvIGNvdW50IC0gMSBkb1xuICAgIGxldCB0aGV0YSA9IGFjb3MgKDEuIC0uICgyLiAqLiByYW5kICgpKSkgaW5cbiAgICBsZXQgcGhpID0gMi4gKi4gRmxvYXQucGkgKi4gcmFuZCAoKSBpblxuICAgIGxldCBvZmYgPSBpICogNCBpblxuICAgIGRhdGEuKG9mZikgPC0gZGlzdGFuY2UgKi4gc2luIHRoZXRhICouIGNvcyBwaGk7XG4gICAgZGF0YS4ob2ZmICsgMSkgPC0gZGlzdGFuY2UgKi4gY29zIHRoZXRhO1xuICAgIGRhdGEuKG9mZiArIDIpIDwtIGRpc3RhbmNlICouIHNpbiB0aGV0YSAqLiBzaW4gcGhpO1xuICAgIGRhdGEuKG9mZiArIDMpIDwtIDAuMyArLiAoMC43ICouIHJhbmQgKCkpXG4gIGRvbmU7XG4gIGxldCBidWZfZGF0YSA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID1cbiAgICBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpTaGFkZXIuc3Rhcl92ZXJ0ZXggfmZyYWc6U2hhZGVyLnN0YXJfZnJhZ21lbnRcbiAgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWZfZGF0YSBHbC5zdGF0aWNfZHJhdztcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAxNiAwO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMSAxIEdsLmZsb2F0IGZhbHNlIDE2IDEyO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICB7XG4gICAgcHJvZztcbiAgICB2YW87XG4gICAgY291bnQ7XG4gICAgdV9wcm9qZWN0aW9uID1cbiAgICAgIEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIFwidV9wcm9qZWN0aW9uXCIpO1xuICAgIHVfdmlldyA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIFwidV92aWV3XCIpO1xuICB9XG5cbmxldCBkcmF3IGdsIHQgfnByb2plY3Rpb24gfnZpZXcgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIGxldCBwcm9qX2FyciA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uIGluXG4gIGxldCB2aWV3X2FyciA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3IGluXG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qZWN0aW9uIGZhbHNlIHByb2pfYXJyO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfdmlldyBmYWxzZSB2aWV3X2FycjtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC52YW8pO1xuICBHbC5kcmF3X2FycmF5cyBnbCBHbC5wb2ludHMgMCB0LmNvdW50O1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2hlY2tfYm91bmQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNyIsImE0IiwiYTUiLCJhNiIsImdsb2JhbF9kYXRhIiwiQnJyX2NhbnZhcyIsIkJyciIsIlN0ZGxpYiIsIlN0ZGxpYl9GbG9hdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsImNvdW50IiwiZGlzdGFuY2UiLCJkYXRhIiwic2VlZCIsInJhbmQiLCJwYXJhbSIsImkiLCJ0aGV0YSIsInBoaSIsIm9mZiIsImJ1Zl9kYXRhIiwicHJvZyIsInZhbyIsInZibyIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwcm9qX2FyciIsInZpZXdfYXJyIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxZQUFBQyxFQUFBLEdBQUFDLEtBQUFDO0FBQUFBO0FBQUFBLEtBQUFDLFFDa0JNO0FBQUEsS0FBQUMsV0FBQTtBQUFBLEtBQUFDLE9BQ087QUFBQSxLQUFBQyxPQUNYO0FBQUEsYUFBQUMsS0FBQUM7QUFBQUEsS0FFRTtBQUFBLEtBQ2Esd0VBQXlDO0FBQUE7QUFBQSxZQUV4RDtBQUFBO0FBQUEsU0FBQUMsSUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxRQUNjLG9CQUFtQjtBQUFBLFdBQ0g7QUFBQSxPQUFBQyxNQUFsQjtBQUFBLE9BQUFDLE1BQ1Y7QUFBQSxNQUNBO0FBQUEsa0JBQTBCLGtCQUFhO0FBQUEsY0FDQTtBQUFBLE1BQXZDLDhDQUE4QjtBQUFBLGNBQ29CO0FBQUEsTUFBbEQ7QUFBQSxrQkFBOEIsa0JBQWE7QUFBQSxjQUNGLGlCQUFSO0FBQUEsTUFBakM7QUFBQSxjQUF5QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUU1QjtBQUFBLEtBQUFDO0FBQUFBLE9BRWI7QUFBQTtBQUFBLEtBQUFDLE1BRVE7QUFBQSxJQUNWO0FBQUEsUUFBQUMsTUFDVTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLFlBT1c7QUFBQSxJQURQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQUErRDtBQUFBLEdBRWxFO0FBQUEsWUFBQUMsS0FBQWYsSUFBQWdCLEdBQUFDLFlBQUFDO0FBQUFBLElBR0Q7QUFBQTtBQUFBLEtBQUFDLFdBQ2U7QUFBQSxLQUFBQyxXQUNBO0FBQUEsSUFDZjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQXFDLDJDQUNUO0FBQUE7QUFBQSxHRGpFOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTA4NiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvY2FtZXJhLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIE9yYml0IGNhbWVyYSB3aXRoIGRyYWcgcm90YXRpb24gYW5kIHNjcm9sbCB6b29tLiAqKVxuXG5vcGVuIEJyclxuXG50eXBlIHRhcmdldCA9IHsgdGhldGEgOiBmbG9hdDsgcGhpIDogZmxvYXQ7IGRpc3RhbmNlIDogZmxvYXQgfVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgdGhldGEgOiBmbG9hdDtcbiAgbXV0YWJsZSBwaGkgOiBmbG9hdDtcbiAgbXV0YWJsZSBkaXN0YW5jZSA6IGZsb2F0O1xuICBtdXRhYmxlIGRyYWdnaW5nIDogYm9vbDtcbiAgbXV0YWJsZSBsYXN0X3ggOiBmbG9hdDtcbiAgbXV0YWJsZSBsYXN0X3kgOiBmbG9hdDtcbiAgbXV0YWJsZSBhdXRvX3JvdGF0ZSA6IGJvb2w7XG4gIG11dGFibGUgdGFyZ2V0IDogdGFyZ2V0IG9wdGlvbjtcbiAgbXV0YWJsZSB0d2Vlbl9zcGVlZCA6IGZsb2F0O1xufVxuXG5sZXQgdiAoKSA9XG4gIHtcbiAgICB0aGV0YSA9IDAuO1xuICAgIHBoaSA9IDAuMztcbiAgICBkaXN0YW5jZSA9IDMuNTtcbiAgICBkcmFnZ2luZyA9IGZhbHNlO1xuICAgIGxhc3RfeCA9IDAuO1xuICAgIHRhcmdldCA9IE5vbmU7XG4gICAgdHdlZW5fc3BlZWQgPSA1LjtcbiAgICBsYXN0X3kgPSAwLjtcbiAgICBhdXRvX3JvdGF0ZSA9IHRydWU7XG4gIH1cblxubGV0IHZpZXdfbWF0cml4IGNhbSA9XG4gIGxldCBvcGVuIEdsb2JlLk1hdGggaW5cbiAgbGV0IHggPSBjYW0uZGlzdGFuY2UgKi4gY29zIGNhbS5waGkgKi4gc2luIGNhbS50aGV0YSBpblxuICBsZXQgeSA9IGNhbS5kaXN0YW5jZSAqLiBzaW4gY2FtLnBoaSBpblxuICBsZXQgeiA9IGNhbS5kaXN0YW5jZSAqLiBjb3MgY2FtLnBoaSAqLiBjb3MgY2FtLnRoZXRhIGluXG4gIGxldCBleWUgPSBWZWMzLmNyZWF0ZSB4IHkgeiBpblxuICBsZXQgY2VudGVyID0gVmVjMy56ZXJvIGluXG4gIGxldCB1cCA9IFZlYzMuY3JlYXRlIDAuIDEuIDAuIGluXG4gIE1hdDQubG9va19hdCB+ZXllIH5jZW50ZXIgfnVwXG5cbmxldCBsb29rX2F0X3Bvc2l0aW9uIGNhbSAocG9zIDogR2xvYmUuTWF0aC5WZWMzLnQpID1cbiAgbGV0IHIgPSBHbG9iZS5NYXRoLlZlYzMubGVuZ3RoIHBvcyBpblxuICBpZiByID4gMWUtNiB0aGVuIGJlZ2luXG4gICAgbGV0IHRhcmdldF90aGV0YSA9IGF0YW4yIHBvcy54IHBvcy56IGluXG4gICAgbGV0IHRhcmdldF9waGkgPSBhc2luIChwb3MueSAvLiByKSBpblxuICAgIGNhbS50YXJnZXQgPC1cbiAgICAgIFNvbWUgeyB0aGV0YSA9IHRhcmdldF90aGV0YTsgcGhpID0gdGFyZ2V0X3BoaTsgZGlzdGFuY2UgPSBjYW0uZGlzdGFuY2UgfTtcbiAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcbiAgZW5kXG5cbmxldCBhbmltYXRlX3RvIGNhbSB+dGhldGEgfnBoaSB+ZGlzdGFuY2UgPVxuICBjYW0udGFyZ2V0IDwtIFNvbWUgeyB0aGV0YTsgcGhpOyBkaXN0YW5jZSB9O1xuICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2VcblxubGV0IHNuYXBfdG8gY2FtIChwb3MgOiBHbG9iZS5NYXRoLlZlYzMudCkgPVxuICBsZXQgciA9IEdsb2JlLk1hdGguVmVjMy5sZW5ndGggcG9zIGluXG4gIGlmIHIgPiAxZS02IHRoZW4gYmVnaW5cbiAgICBjYW0ucGhpIDwtIGFzaW4gKHBvcy55IC8uIHIpO1xuICAgIGNhbS50aGV0YSA8LSBhdGFuMiBwb3MueCBwb3MuejtcbiAgICBjYW0udGFyZ2V0IDwtIE5vbmU7XG4gICAgY2FtLmF1dG9fcm90YXRlIDwtIGZhbHNlXG4gIGVuZFxuXG5sZXQgaXNfYW5pbWF0aW5nIGNhbSA9IE9wdGlvbi5pc19zb21lIGNhbS50YXJnZXRcblxuKCoqIExlcnAgd2l0aCBleHBvbmVudGlhbCBkZWNheTogc21vb3RoIGFwcHJvYWNoLCBuZXZlciBvdmVyc2hvb3RzLiAqKVxubGV0IGxlcnAgY3VycmVudCB0YXJnZXQgc3BlZWQgZHQgPVxuICBsZXQgdCA9IDEuIC0uIGV4cCAoLS5zcGVlZCAqLiBkdCkgaW5cbiAgY3VycmVudCArLiAodCAqLiAodGFyZ2V0IC0uIGN1cnJlbnQpKVxuXG5sZXQgdXBkYXRlIGNhbSBkdCA9XG4gICgqIFR3ZWVuIHRvd2FyZCB0YXJnZXQgKilcbiAgbWF0Y2ggY2FtLnRhcmdldCB3aXRoXG4gIHwgU29tZSB0Z3QgLT5cbiAgICAgIGNhbS50aGV0YSA8LSBsZXJwIGNhbS50aGV0YSB0Z3QudGhldGEgY2FtLnR3ZWVuX3NwZWVkIGR0O1xuICAgICAgY2FtLnBoaSA8LSBsZXJwIGNhbS5waGkgdGd0LnBoaSBjYW0udHdlZW5fc3BlZWQgZHQ7XG4gICAgICBjYW0uZGlzdGFuY2UgPC0gbGVycCBjYW0uZGlzdGFuY2UgdGd0LmRpc3RhbmNlIGNhbS50d2Vlbl9zcGVlZCBkdDtcbiAgICAgICgqIFN0b3Agd2hlbiBjbG9zZSBlbm91Z2ggKilcbiAgICAgIGxldCBkX3RoZXRhID0gYWJzX2Zsb2F0IChjYW0udGhldGEgLS4gdGd0LnRoZXRhKSBpblxuICAgICAgbGV0IGRfcGhpID0gYWJzX2Zsb2F0IChjYW0ucGhpIC0uIHRndC5waGkpIGluXG4gICAgICBsZXQgZF9kaXN0ID0gYWJzX2Zsb2F0IChjYW0uZGlzdGFuY2UgLS4gdGd0LmRpc3RhbmNlKSBpblxuICAgICAgaWYgZF90aGV0YSA8IDAuMDAxICYmIGRfcGhpIDwgMC4wMDEgJiYgZF9kaXN0IDwgMC4wMSB0aGVuXG4gICAgICAgIGNhbS50YXJnZXQgPC0gTm9uZVxuICB8IE5vbmUgLT5cbiAgICAgIGlmIGNhbS5hdXRvX3JvdGF0ZSAmJiBub3QgY2FtLmRyYWdnaW5nIHRoZW5cbiAgICAgICAgY2FtLnRoZXRhIDwtIGNhbS50aGV0YSArLiAwLjAwMlxuXG5sZXQgYXR0YWNoX2V2ZW50cyBjYW0gZWwgPVxuICBsZXQgX2wxID1cbiAgICBFdi5saXN0ZW4gRXYucG9pbnRlcmRvd25cbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHBldiA9IEV2LmFzX3R5cGUgZXYgaW5cbiAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgIGNhbS5kcmFnZ2luZyA8LSB0cnVlO1xuICAgICAgICBjYW0uYXV0b19yb3RhdGUgPC0gZmFsc2U7XG4gICAgICAgIGNhbS5sYXN0X3ggPC0gRXYuTW91c2UuY2xpZW50X3ggbWV2O1xuICAgICAgICBjYW0ubGFzdF95IDwtIEV2Lk1vdXNlLmNsaWVudF95IG1ldilcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDIgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVybW92ZVxuICAgICAgKGZ1biBldiAtPlxuICAgICAgICBpZiBjYW0uZHJhZ2dpbmcgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBwZXYgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgICAgbGV0IG1ldiA9IEV2LlBvaW50ZXIuYXNfbW91c2UgcGV2IGluXG4gICAgICAgICAgbGV0IHggPSBFdi5Nb3VzZS5jbGllbnRfeCBtZXYgaW5cbiAgICAgICAgICBsZXQgeSA9IEV2Lk1vdXNlLmNsaWVudF95IG1ldiBpblxuICAgICAgICAgIGxldCBkeCA9IHggLS4gY2FtLmxhc3RfeCBpblxuICAgICAgICAgIGxldCBkeSA9IHkgLS4gY2FtLmxhc3RfeSBpblxuICAgICAgICAgIGNhbS50aGV0YSA8LSBjYW0udGhldGEgLS4gKGR4ICouIDAuMDA1KTtcbiAgICAgICAgICBjYW0ucGhpIDwtIGNhbS5waGkgKy4gKGR5ICouIDAuMDA1KTtcbiAgICAgICAgICBsZXQgbWF4X3BoaSA9IChGbG9hdC5waSAvLiAyLikgLS4gMC4wMSBpblxuICAgICAgICAgIGNhbS5waGkgPC0gRmxvYXQubWF4ICgtLm1heF9waGkpIChGbG9hdC5taW4gbWF4X3BoaSBjYW0ucGhpKTtcbiAgICAgICAgICBjYW0ubGFzdF94IDwtIHg7XG4gICAgICAgICAgY2FtLmxhc3RfeSA8LSB5XG4gICAgICAgIGVuZClcbiAgICAgIChFbC5hc190YXJnZXQgZWwpXG4gIGluXG4gIGxldCBfbDMgPVxuICAgIEV2Lmxpc3RlbiBFdi5wb2ludGVydXAgKGZ1biBfZXYgLT4gY2FtLmRyYWdnaW5nIDwtIGZhbHNlKSAoRWwuYXNfdGFyZ2V0IGVsKVxuICBpblxuICBsZXQgX2w0ID1cbiAgICBFdi5saXN0ZW4gRXYud2hlZWxcbiAgICAgIChmdW4gZXYgLT5cbiAgICAgICAgbGV0IHdldiA6IEV2LldoZWVsLnQgPSBFdi5hc190eXBlIGV2IGluXG4gICAgICAgIEV2LnByZXZlbnRfZGVmYXVsdCBldjtcbiAgICAgICAgbGV0IGR5ID0gRXYuV2hlZWwuZGVsdGFfeSB3ZXYgaW5cbiAgICAgICAgY2FtLmRpc3RhbmNlIDwtIGNhbS5kaXN0YW5jZSArLiAoZHkgKi4gMC4wMDIpO1xuICAgICAgICBjYW0uZGlzdGFuY2UgPC0gRmxvYXQubWF4IDEuNSAoRmxvYXQubWluIDEwLiBjYW0uZGlzdGFuY2UpKVxuICAgICAgKEVsLmFzX3RhcmdldCBlbClcbiAgaW5cbiAgKClcblxubGV0IHBwIHBwZiBjYW0gPVxuICBGbXQucGYgcHBmIFwidGhldGE9JS4zZiBwaGk9JS4zZiBkaXN0PSUuMmZcIiBjYW0udGhldGEgY2FtLnBoaSBjYW0uZGlzdGFuY2VcblxubGV0IHBvc2l0aW9uIGNhbSA9XG4gIEdsb2JlLk1hdGguVmVjMy5jcmVhdGVcbiAgICAoY2FtLmRpc3RhbmNlICouIGNvcyBjYW0ucGhpICouIHNpbiBjYW0udGhldGEpXG4gICAgKGNhbS5kaXN0YW5jZSAqLiBzaW4gY2FtLnBoaSlcbiAgICAoY2FtLmRpc3RhbmNlICouIGNvcyBjYW0ucGhpICouIGNvcyBjYW0udGhldGEpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImdsb2JhbF9kYXRhIiwiR2xvYmVfTWF0aCIsIkZtdCIsIkJyciIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYl9PcHRpb24iLCJ2IiwicGFyYW0iLCJ2aWV3X21hdHJpeCIsImNhbSIsIngiLCJ5IiwieiIsImV5ZSIsImNlbnRlciIsInVwIiwibG9va19hdF9wb3NpdGlvbiIsInBvcyIsInIiLCJ0YXJnZXRfdGhldGEiLCJ0YXJnZXRfcGhpIiwiYW5pbWF0ZV90byIsInRoZXRhIiwicGhpIiwiZGlzdGFuY2UiLCJzbmFwX3RvIiwiaXNfYW5pbWF0aW5nIiwibGVycCIsImN1cnJlbnQiLCJ0YXJnZXQiLCJzcGVlZCIsImR0IiwidCIsInVwZGF0ZSIsIm1hdGNoIiwidGd0IiwiZF90aGV0YSIsImRfcGhpIiwiZF9kaXN0IiwiYXR0YWNoX2V2ZW50cyIsImVsIiwiZXYiLCJkeCIsImR5IiwibWF4X3BoaSIsInBwIiwicHBmIiwicG9zaXRpb24iXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxNQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsWUFBQUMsRUFBQUMsT0N3QkUsOENBVUM7QUFBQSxZQUFBQyxZQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxJQUlPLFNBQWdCLG1CQUFlO0FBQUEsS0FBQUMsSUFDL0IsU0FBZ0I7QUFBQSxLQUFBQyxJQUNoQixTQUFnQixtQkFBZTtBQUFBLEtBQUFDLE1BQzdCO0FBQUEsS0FBQUMsU0FDVjtBQUFBLEtBQUFDLEtBQ1M7QUFBQSxJQUNULG1EQUE2QjtBQUFBO0FBQUEsWUFBQUMsaUJBQUFQLEtBQUFRO0FBQUFBLFFBQUFDLElBR3JCLHNDQUNSO0FBQUE7QUFBQTtBQUFBLE1BQUFDLGVBQ3FCO0FBQUEsTUFBQUMsYUFDRjtBQUFBLEtBQ2pCO0FBQUEsS0FFQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBTEY7QUFBQTtBQUFBLEdBTUc7QUFBQSxZQUFBQyxXQUFBWixLQUFBYSxPQUFBQyxLQUFBQztBQUFBQSxJQUdIO0FBQUEsSUFDQTtBQUFBO0FBQUEsR0FBd0I7QUFBQSxZQUFBQyxRQUFBaEIsS0FBQVE7QUFBQUE7QUFBQUEsS0FBQUMsSUFHaEI7QUFBQSxTQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUNhO0FBQUEsbUJBQ0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBRmY7QUFBQSxHQUtHO0FBQUEsWUFBQVEsYUFBQWpCLEtBRWtCLDJDQUF5QjtBQUFBLFlBQUFrQixLQUFBQyxTQUFBQyxRQUFBQyxPQUFBQztBQUFBQSxRQUFBQyxJQUl0QyxLQUFNO0FBQUEsSUFDdUI7QUFBQTtBQUFBLFlBQUFDLE9BQUF4QixLQUFBc0I7QUFBQUEsUUFBQUcsUUFJckM7QUFBQTtBQUFBO0FBQUEsVUFZSTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFBQUMsTUFaSjtBQUFBLElBRWlCO0FBQUEsSUFDRjtBQUFBLElBQ0s7QUFBQTtBQUFBLEtBQUFDLFVBRUY7QUFBQSxLQUFBQyxRQUNGO0FBQUEsS0FBQUMsU0FDQztBQUFBLFNBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQUlpQztBQUFBLFlBQUFDLGNBQUE5QixLQUFBK0I7QUFBQUEsSUFJbkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBQztBQUFBQSxPQUlJO0FBQUEsT0FDQTtBQUFBLE9BQ2M7QUFBQSxPQUNBO0FBQUEsT0FBcUI7QUFBQTtBQUFBO0FBQUEsSUFJdkM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUFBQTtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBO0FBQUEsU0FBQS9CLElBR1U7QUFBQSxTQUFBQyxJQUNBO0FBQUEsU0FBQStCLEtBQ0M7QUFBQSxTQUFBQyxLQUNBO0FBQUEsUUFDOEI7QUFBQSxRQUNKO0FBQUE7QUFBQSxTQUFBQyxVQUNyQjtBQUFBLGFBQ21CO0FBQUEsUUFBdEI7QUFBQSxRQUNYO0FBQUEsUUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGdCQVpGO0FBQUE7QUFBQSxNQWFHO0FBQUE7QUFBQSxJQUlQO0FBQUEsMkNBQUFILElBQW1DLHFCQUFxQjtBQUFBLElBR3hEO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBQUE7QUFBQUEsT0FHSTtBQUFBLFdBQUFFLEtBQ1M7QUFBQSxPQUNvQztBQUFBLGVBQ2Y7QUFBQSxPQUFkO0FBQUEsT0FBMEM7QUFBQTtBQUFBO0FBQUEsSUFHaEU7QUFBQSxHQUFFO0FBQUE7QUFBQTtBQUFBLE1EeklKO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFFLEdBQUFDLEtBQUFyQztBQUFBQSxRQUFBLElDNElFO0FBQUEseURBQXlFO0FBQUE7QUFBQSxZQUFBc0MsU0FBQXRDO0FBQUFBLElBSXpCO0FBQUE7QUFBQSxzQkFBN0IsbUJBQWU7QUFBQSxzQkFDZjtBQUFBLHNCQUNBLG1CQUFlLGlCQUFjO0FBQUE7QUFBQSxHRGxKbEQiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTI5NCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvY292ZXJhZ2UubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogU2F0ZWxsaXRlIGdyb3VuZCBjb3ZlcmFnZSByZW5kZXJpbmcuXG5cbiAgICBEcmF3cyBmaWxsZWQgY2lyY2xlcyBvbiB0aGUgZ2xvYmUgd2l0aCBhZGRpdGl2ZSBibGVuZGluZyBzbyB0aGV5IGJyaWdodGVuXG4gICAgd2hhdGV2ZXIgaXMgdW5kZXJuZWF0aCAoZG90cywgZ3JpZCwgZXRjLikg4oCUIGxpa2UgYSBzcG90bGlnaHQgZWZmZWN0LiBVc2VzXG4gICAgcGVyLXZlcnRleCByYWRpYWwgZmFsbG9mZjogYnJpZ2h0IGF0IHRoZSBzdWItc2F0ZWxsaXRlIHBvaW50LCBmYWRpbmcgdG8gemVyb1xuICAgIGF0IHRoZSBmb290cHJpbnQgZWRnZS4gKilcblxub3BlbiBCcnJcbm9wZW4gQnJyX2NhbnZhc1xuXG5sZXQgdmVydCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5sYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMzIGFfcG9zaXRpb247XG5sYXlvdXQobG9jYXRpb24gPSAxKSBpbiB2ZWMzIGFfY29sb3I7XG5sYXlvdXQobG9jYXRpb24gPSAyKSBpbiBmbG9hdCBhX2ZhZGU7XG51bmlmb3JtIG1hdDQgdV9wcm9qZWN0aW9uO1xudW5pZm9ybSBtYXQ0IHVfdmlldztcbm91dCB2ZWMzIHZfY29sb3I7XG5vdXQgZmxvYXQgdl9mYWRlO1xudm9pZCBtYWluKCkge1xuICBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTtcbiAgdl9jb2xvciA9IGFfY29sb3I7XG4gIHZfZmFkZSA9IGFfZmFkZTtcbn1cbnx9XG5cbmxldCBmcmFnID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmluIHZlYzMgdl9jb2xvcjtcbmluIGZsb2F0IHZfZmFkZTtcbnVuaWZvcm0gZmxvYXQgdV9pbnRlbnNpdHk7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7XG4gIC8vIFNtb290aCByYWRpYWwgZmFsbG9mZjogYnJpZ2h0IGNlbnRlciwgemVybyBhdCBlZGdlXG4gIGZsb2F0IGdsb3cgPSB2X2ZhZGUgKiB2X2ZhZGUgKiB1X2ludGVuc2l0eTtcbiAgZnJhZ0NvbG9yID0gdmVjNCh2X2NvbG9yICogZ2xvdywgZ2xvdyk7XG59XG58fVxuXG50eXBlIGZvb3RwcmludCA9IHtcbiAgcG9zIDogR2xvYmUuTWF0aC5WZWMzLnQ7XG4gIGNvbG9yIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0O1xuICBoYWxmX2FuZ2xlIDogZmxvYXQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIHZibyA6IEdsLmJ1ZmZlcjtcbiAgbXV0YWJsZSBudW1fdmVydGljZXMgOiBpbnQ7XG4gIHVfcHJvaiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfaW50ZW5zaXR5IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgZ2wgPVxuICBsZXQgcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0IH5mcmFnIGluXG4gIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gIGxldCB2Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICAoKiBwb3NpdGlvbiAoMykgKyBjb2xvciAoMykgKyBmYWRlICgxKSA9IDcgZmxvYXRzLCBzdHJpZGUgMjggKilcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAyOCAwO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMSAzIEdsLmZsb2F0IGZhbHNlIDI4IDEyO1xuICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAyO1xuICBHbC52ZXJ0ZXhfYXR0cmliX3BvaW50ZXIgZ2wgMiAxIEdsLmZsb2F0IGZhbHNlIDI4IDI0O1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIHZibztcbiAgICBudW1fdmVydGljZXMgPSAwO1xuICAgIHVfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIjtcbiAgICB1X3ZpZXcgPSB1IFwidV92aWV3XCI7XG4gICAgdV9pbnRlbnNpdHkgPSB1IFwidV9pbnRlbnNpdHlcIjtcbiAgfVxuXG5sZXQgbG9hZCBnbCB0IChmb290cHJpbnRzIDogZm9vdHByaW50IGxpc3QpID1cbiAgaWYgZm9vdHByaW50cyA9IFtdIHRoZW4gdC5udW1fdmVydGljZXMgPC0gMFxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGFsbF92ZXJ0cyA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXBcbiAgICAgICAgKGZ1biAoZnAgOiBmb290cHJpbnQpIC0+XG4gICAgICAgICAgbGV0IGNlbnRlciA9IEdsb2JlLk1hdGguVmVjMy5ub3JtYWxpemUgZnAucG9zIGluXG4gICAgICAgICAgbGV0IHIsIGcsIGIgPSBmcC5jb2xvciBpblxuICAgICAgICAgIGxldCB0cmlzID1cbiAgICAgICAgICAgIEdsb2JlLkdlb21ldHJ5LmZpbGxlZF9jaXJjbGVfb25fc3BoZXJlIGNlbnRlclxuICAgICAgICAgICAgICB+aGFsZl9hbmdsZTpmcC5oYWxmX2FuZ2xlIH5zZWdtZW50czo0OFxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogRWFjaCB0cmlhbmdsZTogKGNlbnRlciwgZWRnZTAsIGVkZ2UxKS5cbiAgICAgICAgICAgICBjZW50ZXIgZ2V0cyBmYWRlPTEuMCwgZWRnZXMgZ2V0IGZhZGU9MC4wICopXG4gICAgICAgICAgbGV0IHJlYyB0YWcgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBjIDo6IHAwIDo6IHAxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICAoYywgciwgZywgYiwgMS4wKSA6OiAocDAsIHIsIGcsIGIsIDAuMCkgOjogKHAxLCByLCBnLCBiLCAwLjApXG4gICAgICAgICAgICAgICAgOjogdGFnIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGFnIHRyaXMpXG4gICAgICAgIGZvb3RwcmludHNcbiAgICBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggYWxsX3ZlcnRzIGluXG4gICAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNykgMC4gaW5cbiAgICBMaXN0Lml0ZXJpXG4gICAgICAoZnVuIGkgKCh2IDogR2xvYmUuTWF0aC5WZWMzLnQpLCByLCBnLCBiLCBmYWRlKSAtPlxuICAgICAgICBsZXQgb2ZmID0gaSAqIDcgaW5cbiAgICAgICAgZGF0YS4ob2ZmKSA8LSB2Lng7XG4gICAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHYueTtcbiAgICAgICAgZGF0YS4ob2ZmICsgMikgPC0gdi56O1xuICAgICAgICBkYXRhLihvZmYgKyAzKSA8LSByO1xuICAgICAgICBkYXRhLihvZmYgKyA0KSA8LSBnO1xuICAgICAgICBkYXRhLihvZmYgKyA1KSA8LSBiO1xuICAgICAgICBkYXRhLihvZmYgKyA2KSA8LSBmYWRlKVxuICAgICAgYWxsX3ZlcnRzO1xuICAgIGxldCBidWYgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgZGF0YSBpblxuICAgIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB0LnZibyk7XG4gICAgR2wuYnVmZmVyX2RhdGEgZ2wgR2wuYXJyYXlfYnVmZmVyIGJ1ZiBHbC5keW5hbWljX2RyYXc7XG4gICAgdC5udW1fdmVydGljZXMgPC0gblxuICBlbmRcblxubGV0IGRyYXcgZ2wgdCB+cHJvamVjdGlvbiB+dmlldyA/KGludGVuc2l0eSA9IDAuNCkgKCkgPVxuICBpZiB0Lm51bV92ZXJ0aWNlcyA+IDAgdGhlbiBiZWdpblxuICAgICgqIEFkZGl0aXZlIGJsZW5kaW5nOiBicmlnaHRlbnMgdW5kZXJseWluZyBjb250ZW50ICopXG4gICAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lO1xuICAgIEdsLmRpc2FibGUgZ2wgR2wuZGVwdGhfdGVzdDtcbiAgICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gICAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3Byb2ogZmFsc2VcbiAgICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbik7XG4gICAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyk7XG4gICAgR2wudW5pZm9ybTFmIGdsIHQudV9pbnRlbnNpdHkgaW50ZW5zaXR5O1xuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgICBHbC5kcmF3X2FycmF5cyBnbCBHbC50cmlhbmdsZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICAgICgqIFJlc3RvcmUgbm9ybWFsIGJsZW5kaW5nICopXG4gICAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gICAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lX21pbnVzX3NyY19hbHBoYVxuICBlbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw3IiwiYTQiLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfTWF0aCIsIkdsb2JlX0dlb21ldHJ5IiwiU3RkbGliX0xpc3QiLCJHbG9iZV93ZWJnbF9TaGFkZXIiLCJ2IiwiZ2wiLCJwcm9nIiwidmFvIiwidmJvIiwidSIsIm5hbWUiLCJsb2FkIiwidCIsImZvb3RwcmludHMiLCJhbGxfdmVydHMiLCJmcCIsImNlbnRlciIsIm1hdGNoIiwiYiIsImciLCJyIiwidHJpcyIsInRhZyIsInBhcmFtIiwicmVzdCIsInAxIiwicDAiLCJjIiwibiIsImRhdGEiLCJpIiwiZmFkZSIsIm9mZiIsImJ1ZiIsImRyYXciLCJwcm9qZWN0aW9uIiwidmlldyIsIm9wdCIsImludGVuc2l0eSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFB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aW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL2VhcnRoLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIERvdCBjbG91ZCBFYXJ0aCByZW5kZXJpbmcgdXNpbmcgR0xfUE9JTlRTLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV9wb2ludHMgOiBpbnQ7XG4gIHVfcHJvamVjdGlvbiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfdmlldyA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfcG9pbnRfc2l6ZSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfZGltIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbn1cblxubGV0IHYgPyhudW1fcG9pbnRzID0gMzAwMDApIGdsID1cbiAgbGV0IHBvaW50cyA9IEdsb2JlLlNwaGVyZS5nZW5lcmF0ZV9jbG91ZCB+bnVtX3BvaW50cyBpblxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBwb2ludHMgaW5cbiAgbGV0IGRhdGEgPSBBcnJheS5tYWtlIChuICogNCkgMC4gaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgKHAgOiBHbG9iZS5TcGhlcmUucG9pbnQpIC0+XG4gICAgICBsZXQgb2ZmID0gaSAqIDQgaW5cbiAgICAgIGRhdGEuKG9mZikgPC0gcC5wb3MueDtcbiAgICAgIGRhdGEuKG9mZiArIDEpIDwtIHAucG9zLnk7XG4gICAgICBkYXRhLihvZmYgKyAyKSA8LSBwLnBvcy56O1xuICAgICAgZGF0YS4ob2ZmICsgMykgPC0gcC5icmlnaHRuZXNzKVxuICAgIHBvaW50cztcbiAgbGV0IGJ1Zl9kYXRhID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgbGV0IHByb2cgPVxuICAgIFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OlNoYWRlci5lYXJ0aF92ZXJ0ZXggfmZyYWc6U2hhZGVyLmVhcnRoX2ZyYWdtZW50XG4gIGluXG4gIGxldCB2YW8gPSBHbC5jcmVhdGVfdmVydGV4X2FycmF5IGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gIGxldCB2Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB2Ym8pO1xuICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmX2RhdGEgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMTYgMDtcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMTtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDEgMSBHbC5mbG9hdCBmYWxzZSAxNiAxMjtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgbGV0IHUgbmFtZSA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIG5hbWUpIGluXG4gIHtcbiAgICBwcm9nO1xuICAgIHZhbztcbiAgICBudW1fcG9pbnRzID0gbjtcbiAgICB1X3Byb2plY3Rpb24gPSB1IFwidV9wcm9qZWN0aW9uXCI7XG4gICAgdV92aWV3ID0gdSBcInVfdmlld1wiO1xuICAgIHVfcG9pbnRfc2l6ZSA9IHUgXCJ1X3BvaW50X3NpemVcIjtcbiAgICB1X2RpbSA9IHUgXCJ1X2RpbVwiO1xuICB9XG5cbmxldCBkcmF3IGdsIHQgfnByb2plY3Rpb24gfnZpZXcgPyhkaW0gPSAxLjApICgpID1cbiAgR2wudXNlX3Byb2dyYW0gZ2wgdC5wcm9nO1xuICBHbC51bmlmb3JtX21hdHJpeDRmdiBnbCB0LnVfcHJvamVjdGlvbiBmYWxzZVxuICAgIChUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbik7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV92aWV3IGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiB2aWV3KTtcbiAgR2wudW5pZm9ybTFmIGdsIHQudV9wb2ludF9zaXplIDMuNTtcbiAgR2wudW5pZm9ybTFmIGdsIHQudV9kaW0gZGltO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0LnZhbyk7XG4gIEdsLmRyYXdfYXJyYXlzIGdsIEdsLnBvaW50cyAwIHQubnVtX3BvaW50cztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDciLCJhNCIsImE1IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkJycl9jYW52YXMiLCJCcnIiLCJHbG9iZV9TcGhlcmUiLCJTdGRsaWJfQXJyYXkiLCJHbG9iZV93ZWJnbF9TaGFkZXIiLCJ2Iiwib3B0IiwiZ2wiLCJudW1fcG9pbnRzIiwicG9pbnRzIiwibiIsImRhdGEiLCJpIiwicCIsIm9mZiIsImJ1Zl9kYXRhIiwicHJvZyIsInZhbyIsInZibyIsInUiLCJuYW1lIiwiZHJhdyIsInQiLCJwcm9qZWN0aW9uIiwidmlldyIsInBhcmFtIiwiZGltIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxZQUFBQyxFQUFBQyxLQUFBQztBQUFBQTtBQUFBQSxLQUFBQyxhQ29CTTtBQUFBLEtBQUFDLFNBQ1M7QUFBQSxLQUFBQyxJQUNiO0FBQUEsS0FBQUMsT0FDVztBQUFBLElBQ1g7QUFBQTtBQUFBLGVBQUFDLEdBQUFDO0FBQUFBLFdBQUFDLE1BRUksZUFDQTtBQUFBO0FBQUEsZUFBcUIsaUJBQ3JCO0FBQUE7QUFBQSxlQUF5QixpQkFDekI7QUFBQTtBQUFBLGVBQXlCLGlCQUN6QjtBQUFBO0FBQUEsT0FBOEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFBQyxXQUVuQjtBQUFBLEtBQUFDO0FBQUFBLE9BRWI7QUFBQTtBQUFBLEtBQUFDLE1BRVE7QUFBQSxJQUNWO0FBQUEsUUFBQUMsTUFDVTtBQUFBLElBQ1Y7QUFBQSxJQUNBO0FBQUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF4RCxnQkFETyx1QkFETjtBQUFBLElBRE0sb0RBQWdCO0FBQUEsR0FJaEM7QUFBQSxZQUFBQyxLQUFBZCxJQUFBZSxHQUFBQyxZQUFBQyxNQUFBbEIsS0FBQW1CO0FBQUFBLFFBQUFDLE1BRU07QUFBQSxJQUNQO0FBQUEsWUFFRTtBQUFBLElBREY7QUFBQSxZQUdFO0FBQUEsSUFERjtBQUFBLElBRUE7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUEwQywyQ0FDZDtBQUFBO0FBQUEsR0RuRTlCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDE1NjIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLmdsb2JlX3dlYmdsLm9ianMvanNvby9kZWZhdWx0L2dsb2JlX3dlYmdsLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvbGliL3dlYmdsL2dyaWQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogTGF0aXR1ZGUvbG9uZ2l0dWRlIGdyaWQgb3ZlcmxheSBvbiB0aGUgZ2xvYmUuXG5cbiAgICBVc2VzIHshR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lc30gZm9yIHZlcnRleCBnZW5lcmF0aW9uLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbmxldCB2ZXJ0ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHVfcHJvamVjdGlvbiAqIHVfdmlldyAqIHZlYzQoYV9wb3NpdGlvbiwgMS4wKTsgfVxufH1cblxubGV0IGZyYWcgPVxuICB7fCN2ZXJzaW9uIDMwMCBlc1xucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xudW5pZm9ybSB2ZWMzIHVfY29sb3I7XG51bmlmb3JtIGZsb2F0IHVfYWxwaGE7XG5vdXQgdmVjNCBmcmFnQ29sb3I7XG52b2lkIG1haW4oKSB7IGZyYWdDb2xvciA9IHZlYzQodV9jb2xvciwgdV9hbHBoYSk7IH1cbnx9XG5cbnR5cGUgdCA9IHtcbiAgcHJvZyA6IEdsLnByb2dyYW07XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV92ZXJ0aWNlcyA6IGludDtcbiAgdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIHVfYWxwaGEgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xufVxuXG5sZXQgdiA/KHNwYWNpbmcgPSAzMC4pIGdsID1cbiAgbGV0IHZlcnRzID0gR2xvYmUuR2VvbWV0cnkuZ3JpZF9saW5lcyB+c3BhY2luZyAoKSBpblxuICBsZXQgbiA9IExpc3QubGVuZ3RoIHZlcnRzIGluXG4gIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDMpIDAuIGluXG4gIExpc3QuaXRlcmlcbiAgICAoZnVuIGkgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgLT5cbiAgICAgIGRhdGEuKGkgKiAzKSA8LSB2Lng7XG4gICAgICBkYXRhLigoaSAqIDMpICsgMSkgPC0gdi55O1xuICAgICAgZGF0YS4oKGkgKiAzKSArIDIpIDwtIHYueilcbiAgICB2ZXJ0cztcbiAgbGV0IGJ1ZiA9IFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBkYXRhIGluXG4gIGxldCBwcm9nID0gU2hhZGVyLnByb2dyYW0gZ2wgfnZlcnQgfmZyYWcgaW5cbiAgbGV0IHZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdmFvKTtcbiAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgR2wuYmluZF9idWZmZXIgZ2wgR2wuYXJyYXlfYnVmZmVyIChTb21lIHZibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhIGdsIEdsLmFycmF5X2J1ZmZlciBidWYgR2wuc3RhdGljX2RyYXc7XG4gIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAwIDMgR2wuZmxvYXQgZmFsc2UgMCAwO1xuICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lO1xuICBsZXQgdSBuYW1lID0gR2wuZ2V0X3VuaWZvcm1fbG9jYXRpb24gZ2wgcHJvZyAoSnN0ci5vZl9zdHJpbmcgbmFtZSkgaW5cbiAge1xuICAgIHByb2c7XG4gICAgdmFvO1xuICAgIG51bV92ZXJ0aWNlcyA9IG47XG4gICAgdV9wcm9qID0gdSBcInVfcHJvamVjdGlvblwiO1xuICAgIHVfdmlldyA9IHUgXCJ1X3ZpZXdcIjtcbiAgICB1X2NvbG9yID0gdSBcInVfY29sb3JcIjtcbiAgICB1X2FscGhhID0gdSBcInVfYWxwaGFcIjtcbiAgfVxuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3ID8oY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KSkgPyhhbHBoYSA9IDAuMykgKCkgPVxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnByb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudV9wcm9qIGZhbHNlXG4gICAgKFRhcnJheS5vZl9mbG9hdF9hcnJheSBUYXJyYXkuRmxvYXQzMiBwcm9qZWN0aW9uKTtcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC51X3ZpZXcgZmFsc2VcbiAgICAoVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIHZpZXcpO1xuICBsZXQgciwgZywgYiA9IGNvbG9yIGluXG4gIEdsLnVuaWZvcm0zZiBnbCB0LnVfY29sb3IgciBnIGI7XG4gIEdsLnVuaWZvcm0xZiBnbCB0LnVfYWxwaGEgYWxwaGE7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHQudmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZXMgMCB0Lm51bV92ZXJ0aWNlcztcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnJfY2FudmFzIiwiQnJyIiwiR2xvYmVfR2VvbWV0cnkiLCJTdGRsaWJfTGlzdCIsIkdsb2JlX3dlYmdsX1NoYWRlciIsInYiLCJvcHQiLCJnbCIsInNwYWNpbmciLCJ2ZXJ0cyIsIm4iLCJkYXRhIiwiaSIsImJ1ZiIsInByb2ciLCJ2YW8iLCJ2Ym8iLCJ1IiwibmFtZSIsImRyYXciLCJ0IiwicHJvamVjdGlvbiIsInZpZXciLCJwYXJhbSIsImNvbG9yIiwiYWxwaGEiLCJiIiwiZyIsInIiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLGlCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsWUFBQUMsRUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQUMsVUN3Q007QUFBQSxLQUFBQyxRQUNRO0FBQUEsS0FBQUMsSUFDSjtBQUFBLEtBQUFDLE9BQ0c7QUFBQSxJQUNYO0FBQUE7QUFBQSxlQUFBQyxHQUFBUDtBQUFBQSxXQUFBLElBRUk7QUFBQTtBQUFBLGVBQW1CLHlCQUNuQjtBQUFBO0FBQUEsZUFBeUIseUJBQ3pCO0FBQUE7QUFBQSxPQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBQUFRLE1BRW5CO0FBQUEsS0FBQUM7QUFBQUEsT0FDQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsTUFDRDtBQUFBLElBQ1Y7QUFBQSxRQUFBQyxNQUNVO0FBQUEsSUFDVjtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDO0FBQUFBLEtBQzZDLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FBckIsc0NBQXFCO0FBQUE7QUFBQSxZQVF0RCxrQkFEQSxrQkFERDtBQUFBLElBREEsb0RBQWdCO0FBQUEsR0FJMUI7QUFBQSxXRHJFSDtBQUFBLFlBQUFDLEtBQUFaLElBQUFhLEdBQUFDLFlBQUFDLE1BQUEsR0FBQWhCLEtBQUFpQjtBQUFBQSxRQUFBQyxRQ3VFUyxjQUFBQyxRQUFBO0FBQUEsSUFDUDtBQUFBLFlBRUU7QUFBQSxJQURGO0FBQUEsWUFHRTtBQUFBLElBREY7QUFBQSxRQUFBQyxJQUM2QyxVQUFBQyxJQUFBLFVBQUFDLElBQUE7QUFBQSxJQUU3QztBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQTJDLDJDQUNmO0FBQUE7QUFBQSxHRGxGOUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTY3MiwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvb3JiaXQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogT3JiaXQgdHJhaWwgYW5kIHNhdGVsbGl0ZSBkb3QgcmVuZGVyaW5nLlxuXG4gICAgT3JiaXQgcGF0aHMgYXJlIHJlbmRlcmVkIGFzIEdMX0xJTkVfU1RSSVAgd2l0aCBwZXItdmVydGV4IGFscGhhOiBicmlnaHQgYXRcbiAgICB0aGUgc2F0ZWxsaXRlJ3MgY3VycmVudCBwb3NpdGlvbiwgZmFkaW5nIHRvIHRyYW5zcGFyZW50IGluIHRoZSBwYXN0LiBBIHNtYWxsXG4gICAgcHJlZGljdGlvbiBkb3Qgc2hvd3Mgd2hlcmUgdGhlIHNhdGVsbGl0ZSBpcyBoZWFkaW5nLiAqKVxuXG5vcGVuIEJyclxub3BlbiBCcnJfY2FudmFzXG5cbigqIC0tLSBTaGFkZXJzIC0tLSAqKVxuXG4oKiogVHJhaWwgbGluZTogcGVyLXZlcnRleCBwcm9ncmVzcyBbMD10YWlsLCAxPWhlYWRdIGNvbnRyb2xzIGFscGhhLiAqKVxubGV0IHRyYWlsX3ZlcnRleCA9XG4gIHt8I3ZlcnNpb24gMzAwIGVzXG5wcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG5sYXlvdXQobG9jYXRpb24gPSAwKSBpbiB2ZWMzIGFfcG9zaXRpb247XG5sYXlvdXQobG9jYXRpb24gPSAxKSBpbiBmbG9hdCBhX3Byb2dyZXNzO1xudW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3ZpZXc7XG5vdXQgZmxvYXQgdl9wcm9ncmVzcztcbnZvaWQgbWFpbigpIHtcbiAgZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb24gKiB1X3ZpZXcgKiB2ZWM0KGFfcG9zaXRpb24sIDEuMCk7XG4gIHZfcHJvZ3Jlc3MgPSBhX3Byb2dyZXNzO1xufVxufH1cblxubGV0IHRyYWlsX2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjMyB1X2NvbG9yO1xuaW4gZmxvYXQgdl9wcm9ncmVzcztcbm91dCB2ZWM0IGZyYWdDb2xvcjtcbnZvaWQgbWFpbigpIHtcbiAgLy8gRmFkZTogYnJpZ2h0IGF0IGhlYWQgKHByb2dyZXNzPTEpLCB0cmFuc3BhcmVudCBhdCB0YWlsIChwcm9ncmVzcz0wKVxuICBmbG9hdCBhbHBoYSA9IHZfcHJvZ3Jlc3MgKiB2X3Byb2dyZXNzICogMC45O1xuICBmcmFnQ29sb3IgPSB2ZWM0KHVfY29sb3IsIGFscGhhKTtcbn1cbnx9XG5cbigqKiBTYXRlbGxpdGUvcHJlZGljdGlvbiBkb3Qgd2l0aCByYWRpYWwgZ2xvdy4gKilcbmxldCBkb3RfdmVydGV4ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbmxheW91dChsb2NhdGlvbiA9IDApIGluIHZlYzMgYV9wb3NpdGlvbjtcbnVuaWZvcm0gbWF0NCB1X3Byb2plY3Rpb247XG51bmlmb3JtIG1hdDQgdV92aWV3O1xudW5pZm9ybSBmbG9hdCB1X3BvaW50X3NpemU7XG52b2lkIG1haW4oKSB7XG4gIGdsX1Bvc2l0aW9uID0gdV9wcm9qZWN0aW9uICogdV92aWV3ICogdmVjNChhX3Bvc2l0aW9uLCAxLjApO1xuICBnbF9Qb2ludFNpemUgPSB1X3BvaW50X3NpemU7XG59XG58fVxuXG5sZXQgZG90X2ZyYWdtZW50ID1cbiAge3wjdmVyc2lvbiAzMDAgZXNcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjMyB1X2NvbG9yO1xudW5pZm9ybSBmbG9hdCB1X2FscGhhO1xub3V0IHZlYzQgZnJhZ0NvbG9yO1xudm9pZCBtYWluKCkge1xuICBmbG9hdCBkID0gZGlzdGFuY2UoZ2xfUG9pbnRDb29yZCwgdmVjMigwLjUpKTtcbiAgaWYgKGQgPiAwLjUpIGRpc2NhcmQ7XG4gIGZsb2F0IGdsb3cgPSBzbW9vdGhzdGVwKDAuNSwgMC4wLCBkKTtcbiAgZnJhZ0NvbG9yID0gdmVjNCh1X2NvbG9yICogZ2xvdywgZ2xvdyAqIHVfYWxwaGEpO1xufVxufH1cblxuKCogLS0tIFR5cGVzIC0tLSAqKVxuXG50eXBlIGNvbG9yID0gZmxvYXQgKiBmbG9hdCAqIGZsb2F0XG5cbnR5cGUgdHJhaWwgPSB7XG4gIHZhbyA6IEdsLnZlcnRleF9hcnJheV9vYmplY3Q7XG4gIG51bV9wb2ludHMgOiBpbnQ7XG4gIGhlYWRfaWR4IDogaW50O1xuICBjb2xvciA6IGNvbG9yO1xufVxuKCoqIEEgdHJhaWw6IGFycmF5IG9mIHBvc2l0aW9ucyBvcmRlcmVkIHBhc3TihpJmdXR1cmUuIFtoZWFkX2lkeF0gbWFya3Mgd2hlcmUgdGhlXG4gICAgc2F0ZWxsaXRlIGN1cnJlbnRseSBpcyAoMC1iYXNlZCkuIFBvaW50cyBiZWZvcmUgaGVhZF9pZHggYXJlIHRoZSBwYXN0IHRyYWlsO1xuICAgIGFmdGVyIGFyZSB0aGUgcHJlZGljdGlvbi4gKilcblxudHlwZSBkb3QgPSB7IHBvcyA6IEdsb2JlLk1hdGguVmVjMy50OyBjb2xvciA6IGNvbG9yIH1cblxudHlwZSB0ID0ge1xuICB0cmFpbF9wcm9nIDogR2wucHJvZ3JhbTtcbiAgdHJhaWxfdV9wcm9qIDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdHJhaWxfdV92aWV3IDogR2wudW5pZm9ybV9sb2NhdGlvbjtcbiAgdHJhaWxfdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF9wcm9nIDogR2wucHJvZ3JhbTtcbiAgZG90X3VfcHJvaiA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X3ZpZXcgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICBkb3RfdV9jb2xvciA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIGRvdF91X3NpemUgOiBHbC51bmlmb3JtX2xvY2F0aW9uO1xuICBkb3RfdV9hbHBoYSA6IEdsLnVuaWZvcm1fbG9jYXRpb247XG4gIG11dGFibGUgZ2hvc3RzIDogdHJhaWwgbGlzdDtcbiAgbXV0YWJsZSB0cmFpbHMgOiB0cmFpbCBsaXN0O1xuICBkb3RfdmFvIDogR2wudmVydGV4X2FycmF5X29iamVjdDtcbiAgZG90X3ZibyA6IEdsLmJ1ZmZlcjtcbn1cblxuKCogLS0tIEFQSSAtLS0gKilcblxubGV0IHYgZ2wgPVxuICBsZXQgdHJhaWxfcHJvZyA9IFNoYWRlci5wcm9ncmFtIGdsIH52ZXJ0OnRyYWlsX3ZlcnRleCB+ZnJhZzp0cmFpbF9mcmFnbWVudCBpblxuICBsZXQgZG90X3Byb2cgPSBTaGFkZXIucHJvZ3JhbSBnbCB+dmVydDpkb3RfdmVydGV4IH5mcmFnOmRvdF9mcmFnbWVudCBpblxuICBsZXQgZG90X3ZhbyA9IEdsLmNyZWF0ZV92ZXJ0ZXhfYXJyYXkgZ2wgaW5cbiAgbGV0IGRvdF92Ym8gPSBHbC5jcmVhdGVfYnVmZmVyIGdsIGluXG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIGRvdF92YW8pO1xuICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgZG90X3Zibyk7XG4gIEdsLmJ1ZmZlcl9kYXRhX3NpemUgZ2wgR2wuYXJyYXlfYnVmZmVyIDEyIEdsLmR5bmFtaWNfZHJhdztcbiAgR2wuZW5hYmxlX3ZlcnRleF9hdHRyaWJfYXJyYXkgZ2wgMDtcbiAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAwIDA7XG4gIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIE5vbmU7XG4gIGxldCB1IG5hbWUgcHJvZyA9IEdsLmdldF91bmlmb3JtX2xvY2F0aW9uIGdsIHByb2cgKEpzdHIub2Zfc3RyaW5nIG5hbWUpIGluXG4gIHtcbiAgICB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIiB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfdmlldyA9IHUgXCJ1X3ZpZXdcIiB0cmFpbF9wcm9nO1xuICAgIHRyYWlsX3VfY29sb3IgPSB1IFwidV9jb2xvclwiIHRyYWlsX3Byb2c7XG4gICAgZG90X3Byb2c7XG4gICAgZG90X3VfcHJvaiA9IHUgXCJ1X3Byb2plY3Rpb25cIiBkb3RfcHJvZztcbiAgICBkb3RfdV92aWV3ID0gdSBcInVfdmlld1wiIGRvdF9wcm9nO1xuICAgIGRvdF91X2NvbG9yID0gdSBcInVfY29sb3JcIiBkb3RfcHJvZztcbiAgICBkb3RfdV9zaXplID0gdSBcInVfcG9pbnRfc2l6ZVwiIGRvdF9wcm9nO1xuICAgIGdob3N0cyA9IFtdO1xuICAgIGRvdF91X2FscGhhID0gdSBcInVfYWxwaGFcIiBkb3RfcHJvZztcbiAgICB0cmFpbHMgPSBbXTtcbiAgICBkb3RfdmFvO1xuICAgIGRvdF92Ym87XG4gIH1cblxubGV0IGFkZF90cmFpbCBnbCB0IHBvc2l0aW9ucyB+aGVhZF9pZHggfmNvbG9yID1cbiAgbGV0IHZhbGlkID1cbiAgICBBcnJheS50b19saXN0IHBvc2l0aW9ucyB8PiBMaXN0LmZpbHRlcl9tYXAgRnVuLmlkIHw+IEFycmF5Lm9mX2xpc3RcbiAgaW5cbiAgbGV0IHRvdGFsID0gQXJyYXkubGVuZ3RoIHZhbGlkIGluXG4gIGlmIHRvdGFsID4gMCB0aGVuIGJlZ2luXG4gICAgKCogT25seSBrZWVwIHBvaW50cyB1cCB0byBhbmQgaW5jbHVkaW5nIGhlYWQg4oCUIG5vIHByZWRpY3Rpb24gKilcbiAgICBsZXQgbiA9IG1pbiAoaGVhZF9pZHggKyAxKSB0b3RhbCB8PiBtYXggMSBpblxuICAgIGxldCBkYXRhID0gQXJyYXkubWFrZSAobiAqIDQpIDAuIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgKHYgOiBHbG9iZS5NYXRoLlZlYzMudCkgPSB2YWxpZC4oaSkgaW5cbiAgICAgIGxldCBvZmYgPSBpICogNCBpblxuICAgICAgZGF0YS4ob2ZmKSA8LSB2Lng7XG4gICAgICBkYXRhLihvZmYgKyAxKSA8LSB2Lnk7XG4gICAgICBkYXRhLihvZmYgKyAyKSA8LSB2Lno7XG4gICAgICAoKiBwcm9ncmVzczogMC4wIGF0IHRhaWwg4oaSIDEuMCBhdCBoZWFkICopXG4gICAgICBkYXRhLihvZmYgKyAzKSA8LSBGbG9hdC5vZl9pbnQgaSAvLiBGbG9hdC5vZl9pbnQgKG1heCAxIChuIC0gMSkpXG4gICAgZG9uZTtcbiAgICBsZXQgYnVmID0gVGFycmF5Lm9mX2Zsb2F0X2FycmF5IFRhcnJheS5GbG9hdDMyIGRhdGEgaW5cbiAgICBsZXQgdmFvID0gR2wuY3JlYXRlX3ZlcnRleF9hcnJheSBnbCBpblxuICAgIEdsLmJpbmRfdmVydGV4X2FycmF5IGdsIChTb21lIHZhbyk7XG4gICAgbGV0IHZibyA9IEdsLmNyZWF0ZV9idWZmZXIgZ2wgaW5cbiAgICBHbC5iaW5kX2J1ZmZlciBnbCBHbC5hcnJheV9idWZmZXIgKFNvbWUgdmJvKTtcbiAgICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLnN0YXRpY19kcmF3O1xuICAgICgqIHBvc2l0aW9uOiBsb2MgMCwgc3RyaWRlIDE2LCBvZmZzZXQgMCAqKVxuICAgIEdsLmVuYWJsZV92ZXJ0ZXhfYXR0cmliX2FycmF5IGdsIDA7XG4gICAgR2wudmVydGV4X2F0dHJpYl9wb2ludGVyIGdsIDAgMyBHbC5mbG9hdCBmYWxzZSAxNiAwO1xuICAgICgqIHByb2dyZXNzOiBsb2MgMSwgc3RyaWRlIDE2LCBvZmZzZXQgMTIgKilcbiAgICBHbC5lbmFibGVfdmVydGV4X2F0dHJpYl9hcnJheSBnbCAxO1xuICAgIEdsLnZlcnRleF9hdHRyaWJfcG9pbnRlciBnbCAxIDEgR2wuZmxvYXQgZmFsc2UgMTYgMTI7XG4gICAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZTtcbiAgICB0LnRyYWlscyA8LSB7IHZhbzsgbnVtX3BvaW50cyA9IG47IGhlYWRfaWR4ID0gbiAtIDE7IGNvbG9yIH0gOjogdC50cmFpbHNcbiAgZW5kXG5cbmxldCBhZGRfbGluZSBnbCB0IHBvc2l0aW9ucyB+Y29sb3IgPVxuICBsZXQgbiA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBwIC0+IGlmIE9wdGlvbi5pc19zb21lIHAgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuICAgICAgMCBwb3NpdGlvbnNcbiAgaW5cbiAgYWRkX3RyYWlsIGdsIHQgcG9zaXRpb25zIH5oZWFkX2lkeDoobiAtIDEpIH5jb2xvclxuXG5sZXQgYWRkX2dob3N0IGdsIHQgcG9zaXRpb25zIH5jb2xvciA9XG4gIGFkZF90cmFpbCBnbCB0IHBvc2l0aW9ucyB+aGVhZF9pZHg6MCB+Y29sb3I7XG4gICgqIE1vdmUgdGhlIGxhc3QgYWRkZWQgdHJhaWwgZnJvbSB0cmFpbHMgdG8gZ2hvc3RzICopXG4gIG1hdGNoIHQudHJhaWxzIHdpdGhcbiAgfCBuZXdlc3QgOjogcmVzdCAtPlxuICAgICAgdC5naG9zdHMgPC0gbmV3ZXN0IDo6IHQuZ2hvc3RzO1xuICAgICAgdC50cmFpbHMgPC0gcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCBjbGVhcl90cmFpbHMgdCA9IHQudHJhaWxzIDwtIFtdXG5sZXQgY2xlYXJfZ2hvc3RzIHQgPSB0Lmdob3N0cyA8LSBbXVxuXG5sZXQgY2xlYXJfbGluZXMgdCA9XG4gIHQuZ2hvc3RzIDwtIFtdO1xuICB0LnRyYWlscyA8LSBbXVxuXG5sZXQgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgcG9zIH5jb2xvciB+c2l6ZSB+YWxwaGEgPVxuICBsZXQgYnVmID1cbiAgICBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzJcbiAgICAgIFt8IHBvcy5HbG9iZS5NYXRoLlZlYzMueDsgcG9zLnk7IHBvcy56IHxdXG4gIGluXG4gIEdsLmJpbmRfYnVmZmVyIGdsIEdsLmFycmF5X2J1ZmZlciAoU29tZSB0LmRvdF92Ym8pO1xuICBHbC5idWZmZXJfZGF0YSBnbCBHbC5hcnJheV9idWZmZXIgYnVmIEdsLmR5bmFtaWNfZHJhdztcbiAgR2wudXNlX3Byb2dyYW0gZ2wgdC5kb3RfcHJvZztcbiAgR2wudW5pZm9ybV9tYXRyaXg0ZnYgZ2wgdC5kb3RfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQuZG90X3VfdmlldyBmYWxzZSB2dztcbiAgbGV0IHIsIGcsIGIgPSBjb2xvciBpblxuICBHbC51bmlmb3JtM2YgZ2wgdC5kb3RfdV9jb2xvciByIGcgYjtcbiAgR2wudW5pZm9ybTFmIGdsIHQuZG90X3Vfc2l6ZSBzaXplO1xuICBHbC51bmlmb3JtMWYgZ2wgdC5kb3RfdV9hbHBoYSBhbHBoYTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgKFNvbWUgdC5kb3RfdmFvKTtcbiAgR2wuZHJhd19hcnJheXMgZ2wgR2wucG9pbnRzIDAgMTtcbiAgR2wuYmluZF92ZXJ0ZXhfYXJyYXkgZ2wgTm9uZVxuXG5sZXQgZHJhd190cmFpbHMgZ2wgdCB+cHJvaiB+dncgdHJhaWxzID1cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAodHIgOiB0cmFpbCkgLT5cbiAgICAgIGxldCByLCBnLCBiID0gdHIuY29sb3IgaW5cbiAgICAgIEdsLnVuaWZvcm0zZiBnbCB0LnRyYWlsX3VfY29sb3IgciBnIGI7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCAoU29tZSB0ci52YW8pO1xuICAgICAgR2wuZHJhd19hcnJheXMgZ2wgR2wubGluZV9zdHJpcCAwIHRyLm51bV9wb2ludHM7XG4gICAgICBHbC5iaW5kX3ZlcnRleF9hcnJheSBnbCBOb25lKVxuICAgIHRyYWlsc1xuXG5sZXQgZHJhdyBnbCB0IH5wcm9qZWN0aW9uIH52aWV3IH5kb3RzID1cbiAgbGV0IHByb2ogPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcHJvamVjdGlvbiBpblxuICBsZXQgdncgPSBUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdmlldyBpblxuICBHbC51c2VfcHJvZ3JhbSBnbCB0LnRyYWlsX3Byb2c7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV9wcm9qIGZhbHNlIHByb2o7XG4gIEdsLnVuaWZvcm1fbWF0cml4NGZ2IGdsIHQudHJhaWxfdV92aWV3IGZhbHNlIHZ3O1xuICAoKiBHaG9zdCBvcmJpdHMgZmlyc3QgKGJlaGluZCB0cmFpbHMpICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQuZ2hvc3RzO1xuICAoKiBBY3RpdmUgdHJhaWxzICopXG4gIGRyYXdfdHJhaWxzIGdsIHQgfnByb2ogfnZ3IHQudHJhaWxzO1xuICAoKiBTYXRlbGxpdGUgZG90cyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChkIDogZG90KSAtPlxuICAgICAgZHJhd19kb3QgZ2wgdCB+cHJvaiB+dncgZC5wb3MgfmNvbG9yOmQuY29sb3IgfnNpemU6OC4wIH5hbHBoYToxLjApXG4gICAgZG90c1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJCcnIiLCJCcnJfY2FudmFzIiwiU3RkbGliX0xpc3QiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX0FycmF5IiwiU3RkbGliIiwiR2xvYmVfd2ViZ2xfU2hhZGVyIiwidiIsImdsIiwidHJhaWxfcHJvZyIsImRvdF9wcm9nIiwiZG90X3ZhbyIsImRvdF92Ym8iLCJ1IiwibmFtZSIsInByb2ciLCJjc3RfdV9jb2xvciIsImNzdF91X3ZpZXciLCJjc3RfdV9wcm9qZWN0aW9uIiwiYWRkX3RyYWlsIiwidCIsInBvc2l0aW9ucyIsImhlYWRfaWR4IiwiY29sb3IiLCJ2YWxpZCIsInRvdGFsIiwibiIsImRhdGEiLCJpIiwib2ZmIiwiYnVmIiwidmFvIiwidmJvIiwiYWRkX2xpbmUiLCJhY2MiLCJwIiwiYWRkX2dob3N0IiwibWF0Y2giLCJyZXN0IiwibmV3ZXN0IiwiY2xlYXJfdHJhaWxzIiwiY2xlYXJfZ2hvc3RzIiwiY2xlYXJfbGluZXMiLCJkcmF3X2RvdCIsInByb2oiLCJ2dyIsInBvcyIsInNpemUiLCJhbHBoYSIsImIiLCJnIiwiciIsImRyYXdfdHJhaWxzIiwidHJhaWxzIiwidHIiLCJkcmF3IiwicHJvamVjdGlvbiIsInZpZXciLCJkb3RzIiwiZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLFlBQUFDLEVBQUFDO0FBQUFBO0FBQUFBLEtBQUFDO0FBQUFBLE9DNEdtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUM7QUFBQUEsT0FDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsS0FBQUMsVUFDRDtBQUFBLEtBQUFDLFVBQ0E7QUFBQSxJQUNkO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLGFBQUFDLEVBQUFDLE1B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QSxJQUVBO0FBQUEsSUFBbUM7QUFBQTtBQUFBLHNCQUFBYztBQUFBQSxjQUkvQixvREFBaUU7QUFBQTtBQUFBLGtCQUMvRDtBQUFBO0FBQUEsR0Q1T1IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0MTkwOSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiIuZ2xvYmVfd2ViZ2wub2Jqcy9qc29vL2RlZmF1bHQvZ2xvYmVfd2ViZ2wuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9vY2FtbC1nbG9iZS9saWIvd2ViZ2wvc2NlbmUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ29weXJpZ2h0IChjKSAyMDI1IFRob21hcyBHYXphZ25haXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4oKiogR2xvYmUgc2NlbmU6IGNhbnZhcyBzZXR1cCwgc2F0ZWxsaXRlIG1hbmFnZW1lbnQsIGxheWVyIGNvbXBvc2l0aW5nLlxuXG4gICAgT3ducyB0aGUgc2F0ZWxsaXRlIGxpc3QgYW5kIGhhbmRsZXMgZ2hvc3QvdHJhaWwvZG90IGxpZmVjeWNsZSBpbnRlcm5hbGx5LlxuICAgIFRoZSBjbGllbnQganVzdCBjYWxscyB7IXNldF9zYXRlbGxpdGVzfSBhbmQgeyF1cGRhdGVfdGltZX0uICopXG5cbm9wZW4gQnJyXG5vcGVuIEJycl9jYW52YXNcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgQ2FudmFzICsgR0wgc2V0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxudHlwZSBmcmFtZSA9IHtcbiAgcHJvamVjdGlvbiA6IGZsb2F0IGFycmF5O1xuICB2aWV3IDogZmxvYXQgYXJyYXk7XG4gIHdpZHRoIDogaW50O1xuICBoZWlnaHQgOiBpbnQ7XG59XG5cbnR5cGUgdCA9IHtcbiAgZ2wgOiBHbC50O1xuICBjYW52YXNfZWwgOiBFbC50O1xuICBjYW1lcmEgOiBDYW1lcmEudDtcbiAgZWFydGggOiBFYXJ0aC50O1xuICBzdGFycyA6IFN0YXJzLnQ7XG4gIG11dGFibGUgZ3JpZCA6IEdyaWQudCBvcHRpb247XG4gIG9yYml0IDogT3JiaXQudDtcbiAgY292ZXJhZ2UgOiBDb3ZlcmFnZS50O1xuICBtdXRhYmxlIHNhdGVsbGl0ZXMgOiBHbG9iZS5TYXRlbGxpdGUudCBsaXN0O1xuICBtdXRhYmxlIGN1cnJlbnRfdW5peCA6IGZsb2F0O1xuICBtdXRhYmxlIGhvdmVyZWQgOiBpbnQgb3B0aW9uO1xuICBtdXRhYmxlIGxhc3RfZnJhbWUgOiBmcmFtZSBvcHRpb247XG59XG5cbmxldCB2ID8obnVtX3BvaW50cyA9IDMwMDAwKSA/KGdyaWRfc3BhY2luZyA9IDMwLikgY2FudmFzX2VsID1cbiAgbGV0IGNhbnZhcyA9IENhbnZhcy5vZl9lbCBjYW52YXNfZWwgaW5cbiAgbGV0IGdsID1cbiAgICBtYXRjaCBHbC5nZXRfY29udGV4dCBjYW52YXMgd2l0aFxuICAgIHwgU29tZSBnbCAtPiBnbFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIldlYkdMMiBub3Qgc3VwcG9ydGVkXCJcbiAgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgbGV0IHcgPSBKdi5nZXQgSnYuZ2xvYmFsIFwiaW5uZXJXaWR0aFwiIHw+IEp2LnRvX2ludCBpblxuICAgIGxldCBoID0gSnYuZ2V0IEp2Lmdsb2JhbCBcImlubmVySGVpZ2h0XCIgfD4gSnYudG9faW50IGluXG4gICAgRWwuc2V0X2F0IChKc3RyLm9mX3N0cmluZyBcIndpZHRoXCIpIChTb21lIChKc3RyLm9mX2ludCB3KSkgY2FudmFzX2VsO1xuICAgIEVsLnNldF9hdCAoSnN0ci5vZl9zdHJpbmcgXCJoZWlnaHRcIikgKFNvbWUgKEpzdHIub2ZfaW50IGgpKSBjYW52YXNfZWw7XG4gICAgR2wudmlld3BvcnQgZ2wgMCAwIHcgaFxuICBpblxuICByZXNpemUgKCk7XG4gIGlnbm9yZSAoRXYubGlzdGVuIEV2LnJlc2l6ZSAoZnVuIF9ldiAtPiByZXNpemUgKCkpIEcudGFyZ2V0KTtcbiAgbGV0IGNhbWVyYSA9IENhbWVyYS52ICgpIGluXG4gIENhbWVyYS5hdHRhY2hfZXZlbnRzIGNhbWVyYSBjYW52YXNfZWw7XG4gIEdsLmVuYWJsZSBnbCBHbC5ibGVuZDtcbiAgR2wuYmxlbmRfZnVuYyBnbCBHbC5zcmNfYWxwaGEgR2wub25lX21pbnVzX3NyY19hbHBoYTtcbiAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3Q7XG4gIEdsLmNsZWFyX2NvbG9yIGdsIDAuMCAwLjAgMC4wMiAxLjA7XG4gIHtcbiAgICBnbDtcbiAgICBjYW52YXNfZWw7XG4gICAgY2FtZXJhO1xuICAgIGVhcnRoID0gRWFydGgudiB+bnVtX3BvaW50cyBnbDtcbiAgICBzdGFycyA9IFN0YXJzLnYgZ2w7XG4gICAgZ3JpZCA9IFNvbWUgKEdyaWQudiB+c3BhY2luZzpncmlkX3NwYWNpbmcgZ2wpO1xuICAgIG9yYml0ID0gT3JiaXQudiBnbDtcbiAgICBjb3ZlcmFnZSA9IENvdmVyYWdlLnYgZ2w7XG4gICAgc2F0ZWxsaXRlcyA9IFtdO1xuICAgIGN1cnJlbnRfdW5peCA9IDAuO1xuICAgIGhvdmVyZWQgPSBOb25lO1xuICAgIGxhc3RfZnJhbWUgPSBOb25lO1xuICB9XG5cbmxldCBnbCB0ID0gdC5nbFxubGV0IGNhbWVyYSB0ID0gdC5jYW1lcmFcbmxldCBvcmJpdCB0ID0gdC5vcmJpdFxubGV0IGNvdmVyYWdlIHQgPSB0LmNvdmVyYWdlXG5sZXQgc2F0ZWxsaXRlcyB0ID0gdC5zYXRlbGxpdGVzXG5sZXQgY2FtZXJhX3Bvc2l0aW9uIHQgPSBDYW1lcmEucG9zaXRpb24gdC5jYW1lcmFcbmxldCBzZXRfZ3JpZF9zcGFjaW5nIHQgc3BhY2luZyA9IHQuZ3JpZCA8LSBTb21lIChHcmlkLnYgfnNwYWNpbmcgdC5nbClcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgU2F0ZWxsaXRlIG1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHNldF9zYXRlbGxpdGVzIHQgc2F0cyA9XG4gIHQuc2F0ZWxsaXRlcyA8LSBzYXRzO1xuICBPcmJpdC5jbGVhcl9saW5lcyB0Lm9yYml0O1xuICBMaXN0Lml0ZXJcbiAgICAoZnVuIHNhdCAtPlxuICAgICAgT3JiaXQuYWRkX2dob3N0IHQuZ2wgdC5vcmJpdFxuICAgICAgICAoR2xvYmUuU2F0ZWxsaXRlLmdob3N0X3BvaW50cyBzYXQpXG4gICAgICAgIH5jb2xvcjpHbG9iZS5Db2xvci5naG9zdClcbiAgICBzYXRzXG5cbmxldCBzYXRfZHQgc2F0IGN1cnJlbnRfdW5peCA9IGN1cnJlbnRfdW5peCAtLiBHbG9iZS5TYXRlbGxpdGUuZXBvY2hfdW5peCBzYXRcblxuXG5sZXQgdXBkYXRlX3RpbWUgdCBjdXJyZW50X3VuaXggPVxuICB0LmN1cnJlbnRfdW5peCA8LSBjdXJyZW50X3VuaXg7XG4gIGxldCBjYW1lcmFfcG9zID0gY2FtZXJhX3Bvc2l0aW9uIHQgaW5cbiAgKCogQ29tcHV0ZSBwb3NpdGlvbnMgKyBMT0QgZm9yIGFsbCBzYXRlbGxpdGVzICopXG4gIGxldCBzYXRfcG9zaXRpb25zID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biBzYXQgLT5cbiAgICAgICAgbGV0IGR0ID0gc2F0X2R0IHNhdCBjdXJyZW50X3VuaXggaW5cbiAgICAgICAgKHNhdCwgR2xvYmUuU2F0ZWxsaXRlLnBvc2l0aW9uX2F0IHNhdCB+ZHQpKVxuICAgICAgdC5zYXRlbGxpdGVzXG4gIGluXG4gIGxldCBwb3NpdGlvbnMgPSBMaXN0Lm1hcCBzbmQgc2F0X3Bvc2l0aW9ucyBpblxuICBsZXQgZnVsbCwgZG90X29ubHksIF9oaWRkZW4gPVxuICAgIEdsb2JlLlZpc2liaWxpdHkucGFydGl0aW9uX2J5X2xvZCB+Y2FtZXJhX3BvcyBwb3NpdGlvbnNcbiAgaW5cbiAgKCogVHJhaWxzIG9ubHkgZm9yIEZ1bGwgTE9EIHNhdGVsbGl0ZXMgKilcbiAgT3JiaXQuY2xlYXJfdHJhaWxzIHQub3JiaXQ7XG4gIExpc3QuaXRlclxuICAgIChmdW4gKGlkeCwgX3BvcykgLT5cbiAgICAgIGxldCBzYXQgPSBmc3QgKExpc3QubnRoIHNhdF9wb3NpdGlvbnMgaWR4KSBpblxuICAgICAgbGV0IGR0ID0gc2F0X2R0IHNhdCBjdXJyZW50X3VuaXggaW5cbiAgICAgIGxldCB0cmFpbCA9IEdsb2JlLlNhdGVsbGl0ZS50cmFpbF9wb3NpdGlvbnMgc2F0IH5kdCBpblxuICAgICAgT3JiaXQuYWRkX3RyYWlsIHQuZ2wgdC5vcmJpdCB0cmFpbFxuICAgICAgICB+aGVhZF9pZHg6KEFycmF5Lmxlbmd0aCB0cmFpbCAtIDEpXG4gICAgICAgIH5jb2xvcjooR2xvYmUuU2F0ZWxsaXRlLmNvbG9yIHNhdCkpXG4gICAgZnVsbDtcbiAgKCogQWxzbyBhZGQgc2hvcnQgdHJhaWxzIGZvciBkb3Rfb25seSAoanVzdCAzIHBvaW50cyBmb3IgZGlyZWN0aW9uKSAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChpZHgsIF9wb3MpIC0+XG4gICAgICBsZXQgc2F0ID0gZnN0IChMaXN0Lm50aCBzYXRfcG9zaXRpb25zIGlkeCkgaW5cbiAgICAgIGxldCBkdCA9IHNhdF9kdCBzYXQgY3VycmVudF91bml4IGluXG4gICAgICBsZXQgdHJhaWwgPSBHbG9iZS5TYXRlbGxpdGUudHJhaWxfcG9zaXRpb25zIHNhdCB+ZHQgaW5cbiAgICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHRyYWlsIGluXG4gICAgICBpZiBuID4gMyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBzaG9ydCA9IEFycmF5LnN1YiB0cmFpbCAobiAtIDMpIDMgaW5cbiAgICAgICAgT3JiaXQuYWRkX3RyYWlsIHQuZ2wgdC5vcmJpdCBzaG9ydCB+aGVhZF9pZHg6MlxuICAgICAgICAgIH5jb2xvcjooR2xvYmUuU2F0ZWxsaXRlLmNvbG9yIHNhdClcbiAgICAgIGVuZClcbiAgICBkb3Rfb25seTtcbiAgKCogQ292ZXJhZ2UgZm9vdHByaW50cyBmb3IgdmlzaWJsZSBzYXRlbGxpdGVzICopXG4gIGxldCB2aXNpYmxlX2luZGljZXMgPSBMaXN0Lm1hcCBmc3QgZnVsbCBAIExpc3QubWFwIGZzdCBkb3Rfb25seSBpblxuICBsZXQgZm9vdHByaW50cyA9XG4gICAgTGlzdC5maWx0ZXJfbWFwXG4gICAgICAoZnVuIGlkeCAtPlxuICAgICAgICBsZXQgc2F0LCBwb3MgPSBMaXN0Lm50aCBzYXRfcG9zaXRpb25zIGlkeCBpblxuICAgICAgICBsZXQgciA9IEdsb2JlLk1hdGguVmVjMy5sZW5ndGggcG9zIGluXG4gICAgICAgIGlmIHIgPCAxLjAxIHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGFsdF9rbSA9IChyIC0uIDEuKSAqLiBDb29yZGluYXRlLmVhcnRoX3JhZGl1cyBpblxuICAgICAgICAgIGxldCBhbmdsZSA9XG4gICAgICAgICAgICBHbG9iZS5HZW9tZXRyeS5mb290cHJpbnRfYW5nbGUgfmFsdGl0dWRlOmFsdF9rbSB+bWluX2VsZXZhdGlvbjowLlxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgQ292ZXJhZ2UuXG4gICAgICAgICAgICAgIHsgcG9zOyBjb2xvciA9IEdsb2JlLlNhdGVsbGl0ZS5jb2xvciBzYXQ7IGhhbGZfYW5nbGUgPSBhbmdsZSB9KVxuICAgICAgdmlzaWJsZV9pbmRpY2VzXG4gIGluXG4gIENvdmVyYWdlLmxvYWQgdC5nbCB0LmNvdmVyYWdlIGZvb3RwcmludHNcblxubGV0IHNhdGVsbGl0ZV9kb3RzIHQgPVxuICBsZXQgY2FtZXJhX3BvcyA9IGNhbWVyYV9wb3NpdGlvbiB0IGluXG4gIExpc3QuZmlsdGVyX21hcFxuICAgIChmdW4gc2F0IC0+XG4gICAgICBsZXQgZHQgPSBzYXRfZHQgc2F0IHQuY3VycmVudF91bml4IGluXG4gICAgICBsZXQgcG9zLCBjb2xvciA9IEdsb2JlLlNhdGVsbGl0ZS5kb3Qgc2F0IH5kdCBpblxuICAgICAgbWF0Y2ggR2xvYmUuVmlzaWJpbGl0eS5sb2QgfmNhbWVyYV9wb3MgcG9zIHdpdGhcbiAgICAgIHwgR2xvYmUuVmlzaWJpbGl0eS5IaWRkZW4gLT4gTm9uZVxuICAgICAgfCBfIC0+IFNvbWUgT3JiaXQueyBwb3M7IGNvbG9yIH0pXG4gICAgdC5zYXRlbGxpdGVzXG5cbmxldCBzYXRlbGxpdGVfcG9zaXRpb25zIHQgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gc2F0IC0+XG4gICAgICBsZXQgZHQgPSBzYXRfZHQgc2F0IHQuY3VycmVudF91bml4IGluXG4gICAgICBHbG9iZS5TYXRlbGxpdGUucG9zaXRpb25fYXQgc2F0IH5kdClcbiAgICB0LnNhdGVsbGl0ZXNcblxubGV0IGJlZ2luX2ZyYW1lIHQgPyhwcm9qZWN0aW9uX29mZnNldCA9IDAuKSBkdCA9XG4gIENhbWVyYS51cGRhdGUgdC5jYW1lcmEgZHQ7XG4gIGxldCB3ID0gR2wuZHJhd2luZ19idWZmZXJfd2lkdGggdC5nbCBpblxuICBsZXQgaCA9IEdsLmRyYXdpbmdfYnVmZmVyX2hlaWdodCB0LmdsIGluXG4gIGxldCBhc3BlY3QgPSBGbG9hdC5vZl9pbnQgdyAvLiBGbG9hdC5tYXggMS4gKEZsb2F0Lm9mX2ludCBoKSBpblxuICBsZXQgcHJvaiA9XG4gICAgR2xvYmUuTWF0aC5NYXQ0LnBlcnNwZWN0aXZlIH5mb3Z5OihGbG9hdC5waSAvLiA0LikgfmFzcGVjdCB+bmVhcjowLjFcbiAgICAgIH5mYXI6MTAwLlxuICBpblxuICBpZiBwcm9qZWN0aW9uX29mZnNldCA8PiAwLiB0aGVuIHByb2ouKDEyKSA8LSBwcm9qZWN0aW9uX29mZnNldDtcbiAgbGV0IHByb2plY3Rpb24gPSBHbG9iZS5NYXRoLk1hdDQudG9fZmxvYXRfYXJyYXkgcHJvaiBpblxuICBsZXQgdmlldyA9IEdsb2JlLk1hdGguTWF0NC50b19mbG9hdF9hcnJheSAoQ2FtZXJhLnZpZXdfbWF0cml4IHQuY2FtZXJhKSBpblxuICBHbC5jbGVhciB0LmdsIChHbC5jb2xvcl9idWZmZXJfYml0IGxvciBHbC5kZXB0aF9idWZmZXJfYml0KTtcbiAgbGV0IGZyYW1lID0geyBwcm9qZWN0aW9uOyB2aWV3OyB3aWR0aCA9IHc7IGhlaWdodCA9IGggfSBpblxuICB0Lmxhc3RfZnJhbWUgPC0gU29tZSBmcmFtZTtcbiAgZnJhbWVcblxubGV0IHByb2plY3Rpb24gZiA9IGYucHJvamVjdGlvblxubGV0IHZpZXcgZiA9IGYudmlld1xuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBMYXllciBkcmF3aW5nIHdpdGggY29ycmVjdCBjb21wb3NpdGluZyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG50eXBlIGxheWVycyA9IHtcbiAgc2hvd19zdGFycyA6IGJvb2w7XG4gIHNob3dfZWFydGggOiBib29sO1xuICBzaG93X2dyaWQgOiBib29sO1xuICBzaG93X29yYml0cyA6IGJvb2w7XG4gIHNob3dfY292ZXJhZ2UgOiBib29sO1xuICBlYXJ0aF9kaW0gOiBmbG9hdDtcbiAgZ3JpZF9jb2xvciA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdDtcbiAgZ3JpZF9hbHBoYSA6IGZsb2F0O1xuICBjb3ZlcmFnZV9pbnRlbnNpdHkgOiBmbG9hdDtcbiAgY3VzdG9tIDogKHByb2plY3Rpb246ZmxvYXQgYXJyYXkgLT4gdmlldzpmbG9hdCBhcnJheSAtPiB1bml0KSBsaXN0O1xufVxuXG5sZXQgZGVmYXVsdF9sYXllcnMgPVxuICB7XG4gICAgc2hvd19zdGFycyA9IHRydWU7XG4gICAgc2hvd19lYXJ0aCA9IHRydWU7XG4gICAgc2hvd19ncmlkID0gZmFsc2U7XG4gICAgc2hvd19vcmJpdHMgPSBmYWxzZTtcbiAgICBzaG93X2NvdmVyYWdlID0gZmFsc2U7XG4gICAgZWFydGhfZGltID0gMS4wO1xuICAgIGdyaWRfY29sb3IgPSAoMC4xNSwgMC4zNSwgMC41KTtcbiAgICBncmlkX2FscGhhID0gMC4zO1xuICAgIGNvdmVyYWdlX2ludGVuc2l0eSA9IDAuNDtcbiAgICBjdXN0b20gPSBbXTtcbiAgfVxuXG5sZXQgZHJhdyB0IGZyYW1lIGxheWVycyA9XG4gIGxldCBnbCA9IHQuZ2wgaW5cbiAgbGV0IHAgPSBmcmFtZS5wcm9qZWN0aW9uIGFuZCB2ID0gZnJhbWUudmlldyBpblxuICBpZiBsYXllcnMuc2hvd19zdGFycyB0aGVuIGJlZ2luXG4gICAgR2wuZGlzYWJsZSBnbCBHbC5kZXB0aF90ZXN0O1xuICAgIFN0YXJzLmRyYXcgZ2wgdC5zdGFycyB+cHJvamVjdGlvbjpwIH52aWV3OnY7XG4gICAgR2wuZW5hYmxlIGdsIEdsLmRlcHRoX3Rlc3RcbiAgZW5kO1xuICBpZiBsYXllcnMuc2hvd19lYXJ0aCB0aGVuXG4gICAgRWFydGguZHJhdyBnbCB0LmVhcnRoIH5wcm9qZWN0aW9uOnAgfnZpZXc6diB+ZGltOmxheWVycy5lYXJ0aF9kaW0gKCk7XG4gIChpZiBsYXllcnMuc2hvd19ncmlkIHRoZW5cbiAgICAgbWF0Y2ggdC5ncmlkIHdpdGhcbiAgICAgfCBTb21lIGdyaWQgLT5cbiAgICAgICAgIEdyaWQuZHJhdyBnbCBncmlkIH5wcm9qZWN0aW9uOnAgfnZpZXc6diB+Y29sb3I6bGF5ZXJzLmdyaWRfY29sb3JcbiAgICAgICAgICAgfmFscGhhOmxheWVycy5ncmlkX2FscGhhICgpXG4gICAgIHwgTm9uZSAtPiAoKSk7XG4gIGlmIGxheWVycy5zaG93X29yYml0cyB0aGVuIGJlZ2luXG4gICAgbGV0IGRvdHMgPSBzYXRlbGxpdGVfZG90cyB0IGluXG4gICAgT3JiaXQuZHJhdyBnbCB0Lm9yYml0IH5wcm9qZWN0aW9uOnAgfnZpZXc6diB+ZG90cztcbiAgICAoKiBEcmF3IGhvdmVyZWQgc2F0ZWxsaXRlIGxhcmdlciAqKVxuICAgIG1hdGNoIHQuaG92ZXJlZCB3aXRoXG4gICAgfCBTb21lIGlkeCAtPiAoXG4gICAgICAgIG1hdGNoIExpc3QubnRoX29wdCAoc2F0ZWxsaXRlX3Bvc2l0aW9ucyB0KSBpZHggd2l0aFxuICAgICAgICB8IFNvbWUgcG9zIC0+XG4gICAgICAgICAgICBsZXQgY29sb3IgPVxuICAgICAgICAgICAgICBtYXRjaCBMaXN0Lm50aF9vcHQgdC5zYXRlbGxpdGVzIGlkeCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBzYXQgLT4gR2xvYmUuU2F0ZWxsaXRlLmNvbG9yIHNhdFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2xvYmUuQ29sb3Iud2hpdGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBPcmJpdC5kcmF3X2RvdCBnbCB0Lm9yYml0XG4gICAgICAgICAgICAgIH5wcm9qOihUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgcClcbiAgICAgICAgICAgICAgfnZ3OihUYXJyYXkub2ZfZmxvYXRfYXJyYXkgVGFycmF5LkZsb2F0MzIgdilcbiAgICAgICAgICAgICAgcG9zIH5jb2xvciB+c2l6ZToxNC4wIH5hbHBoYToxLjBcbiAgICAgICAgfCBOb25lIC0+ICgpKVxuICAgIHwgTm9uZSAtPiAoKVxuICBlbmQ7XG4gIExpc3QuaXRlciAoZnVuIGYgLT4gZiB+cHJvamVjdGlvbjpwIH52aWV3OnYpIGxheWVycy5jdXN0b207XG4gIGlmIGxheWVycy5zaG93X2NvdmVyYWdlIHRoZW5cbiAgICBDb3ZlcmFnZS5kcmF3IGdsIHQuY292ZXJhZ2UgfnByb2plY3Rpb246cCB+dmlldzp2XG4gICAgICB+aW50ZW5zaXR5OmxheWVycy5jb3ZlcmFnZV9pbnRlbnNpdHkgKClcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgUGlja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0IHBpY2sgdCBmcmFtZSB+c2NyZWVuX3ggfnNjcmVlbl95ID1cbiAgbWF0Y2hcbiAgICBHbG9iZS5SYXljYXN0LnJheV9mcm9tX3NjcmVlbiB+c2NyZWVuX3ggfnNjcmVlbl95IH53aWR0aDpmcmFtZS53aWR0aFxuICAgICAgfmhlaWdodDpmcmFtZS5oZWlnaHQgfnByb2plY3Rpb246ZnJhbWUucHJvamVjdGlvbiB+dmlldzpmcmFtZS52aWV3XG4gIHdpdGhcbiAgfCBOb25lIC0+IGBNaXNzXG4gIHwgU29tZSByYXkgLT4gKFxuICAgICAgbGV0IHBvc2l0aW9ucyA9IHNhdGVsbGl0ZV9wb3NpdGlvbnMgdCBpblxuICAgICAgbWF0Y2ggR2xvYmUuUmF5Y2FzdC5waWNrX25lYXJlc3QgcmF5IHBvc2l0aW9ucyB+dGhyZXNob2xkOjAuMDUgd2l0aFxuICAgICAgfCBTb21lIGhpdCAtPiBgU2F0ZWxsaXRlIGhpdC5HbG9iZS5SYXljYXN0LmluZGV4XG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIEdsb2JlLlJheWNhc3QucGlja19lYXJ0aCByYXkgd2l0aFxuICAgICAgICAgIHwgU29tZSBwb3MgLT4gYEVhcnRoIHBvc1xuICAgICAgICAgIHwgTm9uZSAtPiBgTWlzcykpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFpvb20gKyBob3ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCB6b29tX3RvX3NhdGVsbGl0ZSB0IGlkeCA9XG4gIG1hdGNoIExpc3QubnRoX29wdCB0LnNhdGVsbGl0ZXMgaWR4IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzYXQgLT5cbiAgICAgIGxldCBkdCA9IHQuY3VycmVudF91bml4IC0uIHQuY3VycmVudF91bml4IGluXG4gICAgICBsZXQgcG9zID0gR2xvYmUuU2F0ZWxsaXRlLnBvc2l0aW9uX2F0IHNhdCB+ZHQgaW5cbiAgICAgIENhbWVyYS5sb29rX2F0X3Bvc2l0aW9uIHQuY2FtZXJhIHBvcztcbiAgICAgIHQuY2FtZXJhLmRpc3RhbmNlIDwtIDIuMFxuXG5sZXQgem9vbV90b19wb3NpdGlvbiB0IHBvcyA9XG4gIENhbWVyYS5sb29rX2F0X3Bvc2l0aW9uIHQuY2FtZXJhIHBvcztcbiAgdC5jYW1lcmEuZGlzdGFuY2UgPC0gMi4wXG5cbmxldCBob3ZlcmVkIHQgPSB0LmhvdmVyZWRcblxubGV0IHVwZGF0ZV9ob3ZlciB0IH5zY3JlZW5feCB+c2NyZWVuX3kgPVxuICBtYXRjaCB0Lmxhc3RfZnJhbWUgd2l0aFxuICB8IE5vbmUgLT4gdC5ob3ZlcmVkIDwtIE5vbmVcbiAgfCBTb21lIGZyYW1lIC0+IChcbiAgICAgIG1hdGNoXG4gICAgICAgIEdsb2JlLlJheWNhc3QucmF5X2Zyb21fc2NyZWVuIH5zY3JlZW5feCB+c2NyZWVuX3kgfndpZHRoOmZyYW1lLndpZHRoXG4gICAgICAgICAgfmhlaWdodDpmcmFtZS5oZWlnaHQgfnByb2plY3Rpb246ZnJhbWUucHJvamVjdGlvbiB+dmlldzpmcmFtZS52aWV3XG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdC5ob3ZlcmVkIDwtIE5vbmVcbiAgICAgIHwgU29tZSByYXkgLT5cbiAgICAgICAgICBsZXQgcG9zaXRpb25zID0gc2F0ZWxsaXRlX3Bvc2l0aW9ucyB0IGluXG4gICAgICAgICAgdC5ob3ZlcmVkIDwtXG4gICAgICAgICAgICAobWF0Y2ggR2xvYmUuUmF5Y2FzdC5waWNrX25lYXJlc3QgcmF5IHBvc2l0aW9ucyB+dGhyZXNob2xkOjAuMDggd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhpdCAtPiBTb21lIGhpdC5HbG9iZS5SYXljYXN0LmluZGV4XG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSkpXG5cbmxldCBjbGljayB0IH5zY3JlZW5feCB+c2NyZWVuX3kgPVxuICBtYXRjaCB0Lmxhc3RfZnJhbWUgd2l0aFxuICB8IE5vbmUgLT4gYE1pc3NcbiAgfCBTb21lIGZyYW1lIC0+IChcbiAgICAgIG1hdGNoIHBpY2sgdCBmcmFtZSB+c2NyZWVuX3ggfnNjcmVlbl95IHdpdGhcbiAgICAgIHwgYFNhdGVsbGl0ZSBpZHggLT5cbiAgICAgICAgICB6b29tX3RvX3NhdGVsbGl0ZSB0IGlkeDtcbiAgICAgICAgICBgU2F0ZWxsaXRlIGlkeFxuICAgICAgfCBgRWFydGggcG9zIC0+XG4gICAgICAgICAgem9vbV90b19wb3NpdGlvbiB0IHBvcztcbiAgICAgICAgICBgRWFydGggcG9zXG4gICAgICB8IGBNaXNzIC0+IGBNaXNzKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiZ2xvYmFsX2RhdGEiLCJHbG9iZV9SYXljYXN0IiwiR2xvYmVfd2ViZ2xfQ2FtZXJhIiwiU3RkbGliX0xpc3QiLCJHbG9iZV9TYXRlbGxpdGUiLCJCcnJfY2FudmFzIiwiR2xvYmVfd2ViZ2xfU3RhcnMiLCJHbG9iZV93ZWJnbF9FYXJ0aCIsIkdsb2JlX3dlYmdsX0dyaWQiLCJHbG9iZV93ZWJnbF9PcmJpdCIsIkdsb2JlX0NvbG9yIiwiQnJyIiwiR2xvYmVfd2ViZ2xfQ292ZXJhZ2UiLCJTdGRsaWJfRmxvYXQiLCJHbG9iZV9NYXRoIiwiR2xvYmVfVmlzaWJpbGl0eSIsIkNvb3JkaW5hdGUiLCJHbG9iZV9HZW9tZXRyeSIsIlN0ZGxpYl9BcnJheSIsIlN0ZGxpYiIsIkp2IiwiSnN0ciIsInYiLCJvcHQiLCJjYW52YXNfZWwiLCJudW1fcG9pbnRzIiwiZ3JpZF9zcGFjaW5nIiwiY2FudmFzIiwibWF0Y2giLCJnbCIsInJlc2l6ZSIsInBhcmFtIiwidyIsImgiLCJldiIsImNhbWVyYSIsInQiLCJvcmJpdCIsImNvdmVyYWdlIiwic2F0ZWxsaXRlcyIsImNhbWVyYV9wb3NpdGlvbiIsInNldF9ncmlkX3NwYWNpbmciLCJzcGFjaW5nIiwic2V0X3NhdGVsbGl0ZXMiLCJzYXRzIiwic2F0Iiwic2F0X2R0IiwiY3VycmVudF91bml4IiwidXBkYXRlX3RpbWUiLCJjYW1lcmFfcG9zIiwic2F0X3Bvc2l0aW9ucyIsImR0IiwicG9zaXRpb25zIiwiZG90X29ubHkiLCJmdWxsIiwiaWR4IiwidHJhaWwiLCJuIiwic2hvcnQiLCJ2aXNpYmxlX2luZGljZXMiLCJmb290cHJpbnRzIiwicG9zIiwiciIsImFsdF9rbSIsImFuZ2xlIiwic2F0ZWxsaXRlX3Bvc2l0aW9ucyIsImJlZ2luX2ZyYW1lIiwicHJvamVjdGlvbl9vZmZzZXQiLCJhc3BlY3QiLCJwcm9qIiwicHJvamVjdGlvbiIsInZpZXciLCJmcmFtZSIsImRyYXciLCJsYXllcnMiLCJwIiwiZ3JpZCIsImRvdHMiLCJjb2xvciIsInBpY2siLCJzY3JlZW5feCIsInNjcmVlbl95IiwicmF5IiwiaGl0Iiwiem9vbV90b19zYXRlbGxpdGUiLCJ6b29tX3RvX3Bvc2l0aW9uIiwiaG92ZXJlZCIsInVwZGF0ZV9ob3ZlciIsImNsaWNrIiwidmFyaWFudCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMscUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsa0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsTUFBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxZQUFBQyxF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O0FBQUEsS0FBQXhCLFVBRVA7QUFBQSxJQUF3RCxnQkFBQXVELE1BQUEsZ0JBQ2pELDBCQUNKO0FBQUEsSUFGcUQ7QUFBQTtBQUFBLEdBRS9DO0FBQUEsWUFBQUssTUFBQXBELEdBQUE0QyxVQUFBQztBQUFBQSxRQUFBckQsUUFHMUI7QUFBQSxnQkFDVTtBQUFBLFFBQUE0QyxRQURWLFVBQUE1QyxVQUdVO0FBQUEsSUFBZ0MsZ0NBTzNCO0FBQUEsUUFBQTZELFVBUDJCO0FBQUE7QUFBQSxTQUFBNUIsTUFBQTtBQUFBLEtBS2xDO0FBQUEsS0FBc0I7QUFBQTtBQUFBLFFBQUFOLE1BTFk7QUFBQSxJQUVsQztBQUFBLElBQXVCO0FBQUEsR0FLVjtBQUFBLEdEL1V2QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQyMjk1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InNpZ25hbC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvc2lnbmFsL1NpZ25hbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBMaXN0X2V4dCA9IHN0cnVjdFxuICBsZXQgbWVtID8oZXEgPSBTdGRsaWIuKCA9ICkpIHggbCA9XG4gICAgbGV0IHJlYyBzZWFyY2ggZXEgeCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBmYWxzZSB8IHkgOjogbCcgLT4gZXEgeCB5IHx8IHNlYXJjaCBlcSB4IGwnXG4gICAgaW5cbiAgICBzZWFyY2ggZXEgeCBsXG5cbiAgbGV0IHJlbW92ZV9vbmUgfmVxIHggbCA9XG4gICAgbGV0IHJlYyByZW1vdmVfb25lIH5lcSB4IGFjYyBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgeSA6OiB0bCB3aGVuIGVxIHggeSAtPiAoeSwgTGlzdC5yZXZfYXBwZW5kIGFjYyB0bClcbiAgICAgIHwgeSA6OiB0bCAtPiByZW1vdmVfb25lIH5lcSB4ICh5IDo6IGFjYykgdGxcbiAgICBpblxuICAgIGlmIG1lbSB+ZXEgeCBsIHRoZW4gcmVtb3ZlX29uZSB+ZXEgeCBbXSBsXG4gICAgZWxzZSBpbnZhbGlkX2FyZyBcImNvdWxkIG5vdCByZW1vdmUsIGVsZW1lbnQgaXMgbm90IGEgbWVtYmVyXCJcbmVuZFxuXG4oKiBwaHlzaWNhbCBlcXVhbGl0eSAqKVxubGV0IGRlZmF1bHRfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbigqIFN1YnNjcmlwdGlvbiByZWdpc3RyeSBmb3Igc2lnbmFscy4gKilcbm1vZHVsZSBTdWJzIDogc2lnXG4gIHR5cGUgJ2Egc3ViID0gJ2EgLT4gdW5pdFxuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICAoKiB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnQgKilcbiAgdmFsIGFkZCA6ID9sYWJlbDpzdHJpbmcgLT4gJ2Egc3ViIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZGlzcGF0Y2ggOiAnYSAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHN1YiAtPiAnYSB0IC0+IHVuaXRcbiAgKCogdmFsIG5hbWVzIDogJ2EgdCAtPiBzdHJpbmcgbGlzdCAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2Egc3ViID0gJ2EgLT4gdW5pdFxuICB0eXBlICdhIHQgPSAoc3RyaW5nICogJ2Egc3ViIHJlZikgbGlzdCByZWZcblxuICBsZXQgZW1wdHkgKCkgPSByZWYgW11cblxuICAoKiBsZXQgbGVuZ3RoIHN1YnMgPSBMaXN0Lmxlbmd0aCAhc3VicyAqKVxuICBsZXQgYWRkID8obGFiZWwgPSBcIlwiKSAoayA6ICdhIHN1Yikgc3VicyA9XG4gICAgc3VicyA6PSBMaXN0LmFwcGVuZCAhc3VicyBbIChsYWJlbCwgcmVmIGspIF1cblxuICBsZXQgZGlzcGF0Y2ggeCBzdWJzID0gTGlzdC5pdGVyIChmdW4gKF8sIGspIC0+ICFrIHgpICFzdWJzXG5cbiAgbGV0IHJlbW92ZSBrIHN1YnMgPVxuICAgIGxldCAoXywgaycpLCBzdWJzJyA9XG4gICAgICBMaXN0X2V4dC5yZW1vdmVfb25lXG4gICAgICAgIH5lcTooZnVuIChfLCBzMSkgKF8sIHMyKSAtPiAhczEgPT0gIXMyKVxuICAgICAgICAoXCJcIiwgcmVmIGspXG4gICAgICAgICFzdWJzXG4gICAgaW5cbiAgICAoKiBJZiByZW1vdmUgaXMgY2FsbGVkIGR1cmluZyBkaXNwYXRjaCwgZGlzcGF0Y2ggd2lsbCBoYXZlIHJlZmVycmVkIHRvIHRoZSBvcmlnaW5hbCBsaXN0LiBXZSBzZXQgdGhlXG4gICAgICAgcmVtb3ZlZCBrIHRvIGlnbm9yZSB0byBhdm9pZCBjYWxsaW5nIGl0LiAqKVxuICAgIGsnIDo9IGlnbm9yZTtcbiAgICBzdWJzIDo9IHN1YnMnXG5cbiAgKCogbGV0IG5hbWVzIHN1YnMgPSBMaXN0Lm1hcCBmc3QgIXN1YnMgKilcbmVuZFxuXG4oKiBOb3RpZmljYXRpb24gKilcblxudHlwZSBub3RpZmljYXRpb24gPSB7IGFkZCA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQ7IHJ1biA6IHVuaXQgLT4gdW5pdCB9XG5cbm1vZHVsZSBOb3RpZmljYXRpb24gPSBzdHJ1Y3RcbiAgbGV0IG1ha2UgKCkgOiBub3RpZmljYXRpb24gPVxuICAgIGxldCBmcyA9IHJlZiBbXSBpblxuICAgIGxldCBhZGQgZiA9IGZzIDo9IGYgOjogIWZzIGluXG4gICAgbGV0IHJ1biAoKSA9IExpc3QuaXRlciAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFmcykgaW5cbiAgICB7IGFkZDsgcnVuIH1cblxuICBsZXQgbm93ID1cbiAgICBsZXQgYWRkIGYgPSBmICgpIGluXG4gICAgeyBhZGQ7IHJ1biA9IGlnbm9yZSB9XG5cbiAgbGV0IG5ldmVyID0geyBhZGQgPSBpZ25vcmU7IHJ1biA9IGlnbm9yZSB9XG5lbmRcblxubGV0IG5ldmVyID0gTm90aWZpY2F0aW9uLm5ldmVyXG5sZXQgbm93ID0gTm90aWZpY2F0aW9uLm5vd1xuXG5sZXQgc2NvcGUgZiA9XG4gIGxldCBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24ubWFrZSAoKSBpblxuICBmIG5vdGlmaWNhdGlvbjtcbiAgbm90aWZpY2F0aW9uLnJ1biAoKVxuXG4oKiBTaWduYWwgKilcblxudHlwZSBzdWIgPSB1bml0IC0+IHVuaXRcblxudHlwZSAnYSB0ID0ge1xuICBuYW1lIDogc3RyaW5nO1xuICBtdXRhYmxlIHZhbHVlIDogJ2E7XG4gIGVtaXQgOiA/bm90aWZ5Om5vdGlmaWNhdGlvbiAtPiAnYSAtPiB1bml0O1xuICBzdWIgOiA/bGFiZWw6c3RyaW5nIC0+ICgnYSAtPiB1bml0KSAtPiBzdWI7XG59XG5cbmxldCBnZW5faWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBzdHJpbmdfb2ZfaW50ICFpXG5cbmxldCBiYXNlID8oZXF1YWwgPSBkZWZhdWx0X2VxdWFsKSB+bmFtZSB2YWx1ZSA9XG4gIGxldCBuYW1lID0gbmFtZSBeIFwiI1wiIF4gZ2VuX2lkICgpIGluXG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IHJlYyBzID0geyBuYW1lOyB2YWx1ZTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBub3cpIHggPVxuICAgIGlmIG5vdCAoZXF1YWwgcy52YWx1ZSB4KSB0aGVuIChcbiAgICAgIHMudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGluXG4gIHNcblxubGV0IG1ha2UgP2VxdWFsID8obGFiZWwgPSBcIm1ha2VcIikgdmFsdWUgPSBiYXNlID9lcXVhbCB+bmFtZTpsYWJlbCB2YWx1ZVxubGV0IGxhYmVsIHMgPSBzLm5hbWVcblxubGV0IG51bGwgPVxuICBsZXQgc3ViID9sYWJlbDpfIF8gKCkgPSAoKSBpblxuICBsZXQgcmVjIHMgPSB7IG5hbWUgPSBcIm51bGxcIjsgdmFsdWUgPSAoKTsgZW1pdDsgc3ViIH1cbiAgYW5kIGVtaXQgP25vdGlmeTpfIF94ID0gKCkgaW5cbiAgc1xuXG5sZXQgZ2V0IHMgPSBzLnZhbHVlXG5sZXQgZW1pdCA/bm90aWZ5IHggcyA9IHMuZW1pdCA/bm90aWZ5IHhcbmxldCBzZXQgeCBzID0gZW1pdCB+bm90aWZ5Om5ldmVyIHggc1xubGV0IHVwZGF0ZSA/bm90aWZ5IGYgcyA9IHMuZW1pdCA/bm90aWZ5IChmIHMudmFsdWUpXG5sZXQgdHJpZ2dlciBzID0gcy5lbWl0IHMudmFsdWVcblxubGV0IHN1YiBrIHMgPVxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIGsgaW5cbiAgKClcblxubGV0IHN1YicgayBzID0gcy5zdWIga1xuXG5sZXQgc3ViMiBrIHMxIHMyID1cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBrIHgxIHMyLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGsgczEudmFsdWUgeDIpIGluXG4gICgpXG5cbmxldCB1c2UgayBzID1cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBrIGluXG4gIGsgcy52YWx1ZVxuXG5sZXQgdXNlJyA/bGFiZWwgayBzID1cbiAgbGV0IHVuc3ViIDogc3ViID0gcy5zdWIgP2xhYmVsIGsgaW5cbiAgayBzLnZhbHVlO1xuICB1bnN1YlxuXG5sZXQgdXNlMiBrIHMxIHMyID1cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBrIHgxIHMyLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGsgczEudmFsdWUgeDIpIGluXG4gIGsgczEudmFsdWUgczIudmFsdWVcblxubGV0IHVuc3ViIHN1YiA9IHN1YiAoKVxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBzJyA9IGJhc2Ugfm5hbWU6XCJtYXBcIiAoZiBzLnZhbHVlKSBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4geCAtPiBzJy5lbWl0IChmIHgpKSBpblxuICBzJ1xuXG5sZXQgY29uc3QgeCBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcImNvbnN0XCIgeCBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4gXyAtPiBzJy5lbWl0IHgpIGluXG4gIHMnXG5cbmxldCB0YXAgZiBzID1cbiAgbGV0IHMnID0gYmFzZSB+bmFtZTpcInRhcFwiIHMudmFsdWUgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMuc3ViIChmdW4geCAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIHMnLmVtaXQgeClcbiAgaW5cbiAgcydcblxubGV0IHBhaXIgczEgczIgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwicGFpclwiOyB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUpOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzMS5zdWIgKGZ1biB4MSAtPiBlbWl0ICh4MSwgczIudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKHMxLnZhbHVlLCB4MikpIGluXG4gIHMnXG5cbmxldCB0cmlwbGUgczEgczIgczMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAgeyBuYW1lID0gXCJ0cmlwbGVcIjsgdmFsdWUgPSAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSk7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKHMxLnZhbHVlLCB4MiwgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMpKSBpblxuICBzJ1xuXG5sZXQgdDUgczEgczIgczMgczQgczUgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9XG4gICAge1xuICAgICAgbmFtZSA9IFwidDVcIjtcbiAgICAgIHZhbHVlID0gKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSk7XG4gICAgICBlbWl0O1xuICAgICAgc3ViO1xuICAgIH1cbiAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICBzJy52YWx1ZSA8LSB4O1xuICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicylcbiAgYW5kIHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMS5zdWIgKGZ1biB4MSAtPiBlbWl0ICh4MSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczIuc3ViIChmdW4geDIgLT4gZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgeDMsIHM0LnZhbHVlLCBzNS52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNC5zdWIgKGZ1biB4NCAtPiBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCB4NCwgczUudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczUuc3ViIChmdW4geDUgLT4gZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHg1KSlcbiAgaW5cbiAgcydcblxubGV0IHQ2IHMxIHMyIHMzIHM0IHM1IHM2ID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcInQ2XCI7XG4gICAgICB2YWx1ZSA9IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHMxLnN1YiAoZnVuIHgxIC0+XG4gICAgICAgIGVtaXQgKHgxLCBzMi52YWx1ZSwgczMudmFsdWUsIHM0LnZhbHVlLCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczIuc3ViIChmdW4geDIgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHgyLCBzMy52YWx1ZSwgczQudmFsdWUsIHM1LnZhbHVlLCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzMy5zdWIgKGZ1biB4MyAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHgzLCBzNC52YWx1ZSwgczUudmFsdWUsIHM2LnZhbHVlKSlcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPVxuICAgIHM0LnN1YiAoZnVuIHg0IC0+XG4gICAgICAgIGVtaXQgKHMxLnZhbHVlLCBzMi52YWx1ZSwgczMudmFsdWUsIHg0LCBzNS52YWx1ZSwgczYudmFsdWUpKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgczUuc3ViIChmdW4geDUgLT5cbiAgICAgICAgZW1pdCAoczEudmFsdWUsIHMyLnZhbHVlLCBzMy52YWx1ZSwgczQudmFsdWUsIHg1LCBzNi52YWx1ZSkpXG4gIGluXG4gIGxldCBfIDogc3ViID1cbiAgICBzNi5zdWIgKGZ1biB4NiAtPlxuICAgICAgICBlbWl0IChzMS52YWx1ZSwgczIudmFsdWUsIHMzLnZhbHVlLCBzNC52YWx1ZSwgczUudmFsdWUsIHg2KSlcbiAgaW5cbiAgcydcblxubGV0IGZpbHRlciBwcmVkIH5zZWVkIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcImZpbHRlclwiO1xuICAgICAgdmFsdWUgPSAoaWYgcHJlZCBzLnZhbHVlIHRoZW4gcy52YWx1ZSBlbHNlIHNlZWQpO1xuICAgICAgZW1pdDtcbiAgICAgIHN1YjtcbiAgICB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgaWYgcHJlZCB4IHRoZW4gKFxuICAgICAgcycudmFsdWUgPC0geDtcbiAgICAgIG5vdGlmeS5hZGQgKGZ1biAoKSAtPiBTdWJzLmRpc3BhdGNoIHggc3VicykpXG4gIGluXG4gIGxldCBfIDogc3ViID0gcy5zdWIgZW1pdCBpblxuICBzJ1xuXG5sZXQgZmlsdGVyX21hcCBmIH5zZWVkIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPVxuICAgIHtcbiAgICAgIG5hbWUgPSBcImZpbHRlcl9tYXBcIjtcbiAgICAgIHZhbHVlID0gKG1hdGNoIGYgcy52YWx1ZSB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBzZWVkKTtcbiAgICAgIGVtaXQ7XG4gICAgICBzdWI7XG4gICAgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBpblxuICBsZXQgXyA6IHN1YiA9XG4gICAgcy5zdWIgKGZ1biB4IC0+IG1hdGNoIGYgeCB3aXRoIFNvbWUgeCcgLT4gZW1pdCB4JyB8IE5vbmUgLT4gKCkpXG4gIGluXG4gIHMnXG5cbmxldCByZWR1Y2UgZiBpbml0IHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgU3Vicy5hZGQgP2xhYmVsIGsgc3VicztcbiAgICBmdW4gKCkgLT4gU3Vicy5yZW1vdmUgayBzdWJzXG4gIGluXG4gIGxldCByZWMgcycgPSB7IG5hbWUgPSBcInJlZHVjZVwiOyB2YWx1ZSA9IGYgaW5pdCBzLnZhbHVlOyBlbWl0OyBzdWIgfVxuICBhbmQgZW1pdCA/KG5vdGlmeSA9IE5vdGlmaWNhdGlvbi5ub3cpIHggPVxuICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgbm90aWZ5LmFkZCAoZnVuICgpIC0+IFN1YnMuZGlzcGF0Y2ggeCBzdWJzKVxuICBpblxuICBsZXQgXyA6IHN1YiA9IHMuc3ViIChmdW4gdmFsdWUgLT4gcycuZW1pdCAoZiBzJy52YWx1ZSB2YWx1ZSkpIGluXG4gIHMnXG5cbmxldCByZWR1Y2VyIGYgaW5pdCA9XG4gIGxldCBldmVudHMgPSBiYXNlIH5uYW1lOlwicmVkdWNlclwiIE5vbmUgaW5cbiAgbGV0IHN0YXRlX3NpZ25hbCA9XG4gICAgcmVkdWNlXG4gICAgICAoZnVuIHN0YXRlIGV2ZW50X29wdCAtPlxuICAgICAgICBtYXRjaCBldmVudF9vcHQgd2l0aCBTb21lIGV2ZW50IC0+IGYgc3RhdGUgZXZlbnQgfCBOb25lIC0+IHN0YXRlKVxuICAgICAgaW5pdCBldmVudHNcbiAgaW5cbiAgbGV0IGRpc3BhdGNoIGV2ZW50ID0gZW1pdCAoU29tZSBldmVudCkgZXZlbnRzIGluXG4gIChzdGF0ZV9zaWduYWwsIGRpc3BhdGNoKVxuXG5sZXQgc2VsZWN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIlNpZ25hbC5zZWxlY3Q6IGVtcHR5IHNpZ25hbCBsaXN0XCJcbiAgfCBzMSA6OiBfIC0+XG4gICAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gICAgbGV0IHN1YiA/bGFiZWwgayA9XG4gICAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICAgIGluXG4gICAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwic2VsZWN0XCI7IHZhbHVlID0gczEudmFsdWU7IGVtaXQ7IHN1YiB9XG4gICAgYW5kIGVtaXQgPyhub3RpZnkgPSBOb3RpZmljYXRpb24ubm93KSB4ID1cbiAgICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gcyAtPlxuICAgICAgICBsZXQgXyA6IHN1YiA9IHMuc3ViIGVtaXQgaW5cbiAgICAgICAgKCkpXG4gICAgICBsO1xuICAgIHMnXG5cbmxldCB1bmlxID8oZXF1YWwgPSAoID09ICkpIHMgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwidW5pcVwiOyB2YWx1ZSA9IHMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgaWYgbm90IChlcXVhbCB4IHMnLnZhbHVlKSB0aGVuIChcbiAgICAgIHMnLnZhbHVlIDwtIHg7XG4gICAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpKVxuICBhbmQgc3ViID9sYWJlbCBrID1cbiAgICBTdWJzLmFkZCA/bGFiZWwgayBzdWJzO1xuICAgIGZ1biAoKSAtPiBTdWJzLnJlbW92ZSBrIHN1YnNcbiAgaW5cbiAgbGV0IF8gOiBzdWIgPSBzLnN1YiBlbWl0IGluXG4gIHMnXG5cbmxldCBtYXAyIGYgczEgczIgPVxuICBsZXQgc3VicyA9IFN1YnMuZW1wdHkgKCkgaW5cbiAgbGV0IHJlYyBzJyA9IHsgbmFtZSA9IFwibWFwMlwiOyB2YWx1ZSA9IGYgczEudmFsdWUgczIudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKGYgeDEgczIudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKGYgczEudmFsdWUgeDIpKSBpblxuICBzJ1xuXG5sZXQgbWFwMyBmIHMxIHMyIHMzID1cbiAgbGV0IHN1YnMgPSBTdWJzLmVtcHR5ICgpIGluXG4gIGxldCByZWMgcycgPVxuICAgIHsgbmFtZSA9IFwibWFwM1wiOyB2YWx1ZSA9IGYgczEudmFsdWUgczIudmFsdWUgczMudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IHMxLnN1YiAoZnVuIHgxIC0+IGVtaXQgKGYgeDEgczIudmFsdWUgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMyLnN1YiAoZnVuIHgyIC0+IGVtaXQgKGYgczEudmFsdWUgeDIgczMudmFsdWUpKSBpblxuICBsZXQgXyA6IHN1YiA9IHMzLnN1YiAoZnVuIHgzIC0+IGVtaXQgKGYgczEudmFsdWUgczIudmFsdWUgeDMpKSBpblxuICBzJ1xuXG5sZXQgc2FtcGxlID9lcXVhbCB+b246czEgczIgPVxuICBsZXQgcycgPSBiYXNlID9lcXVhbCB+bmFtZTpcInNhbXBsZVwiIHMyLnZhbHVlIGluXG4gIGxldCBfIDogc3ViID0gczEuc3ViIChmdW4gXyAtPiBzJy5lbWl0IHMyLnZhbHVlKSBpblxuICBzJ1xuXG5sZXQgYXBwbHkgZl9zIHhfcyA9XG4gIGxldCBzdWJzID0gU3Vicy5lbXB0eSAoKSBpblxuICBsZXQgcmVjIHMnID0geyBuYW1lID0gXCJhcHBseVwiOyB2YWx1ZSA9IGZfcy52YWx1ZSB4X3MudmFsdWU7IGVtaXQ7IHN1YiB9XG4gIGFuZCBlbWl0ID8obm90aWZ5ID0gTm90aWZpY2F0aW9uLm5vdykgeCA9XG4gICAgcycudmFsdWUgPC0geDtcbiAgICBub3RpZnkuYWRkIChmdW4gKCkgLT4gU3Vicy5kaXNwYXRjaCB4IHN1YnMpXG4gIGFuZCBzdWIgP2xhYmVsIGsgPVxuICAgIFN1YnMuYWRkID9sYWJlbCBrIHN1YnM7XG4gICAgZnVuICgpIC0+IFN1YnMucmVtb3ZlIGsgc3Vic1xuICBpblxuICBsZXQgXyA6IHN1YiA9IGZfcy5zdWIgKGZ1biBmIC0+IGVtaXQgKGYgeF9zLnZhbHVlKSkgaW5cbiAgbGV0IF8gOiBzdWIgPSB4X3Muc3ViIChmdW4geCAtPiBlbWl0IChmX3MudmFsdWUgeCkpIGluXG4gIHMnXG5cbigqIGxldCBmb3J3YXJkIHMxIHMyID1cbiAgIHN1YiAoZnVuIHggLT4gZW1pdCB4IHMyKSAqKVxuXG5tb2R1bGUgU3ludGF4ID0gc3RydWN0XG4gIGxldCAoIGxldCsgKSBzIGYgPSBtYXAgZiBzXG4gIGxldCAoIGFuZCsgKSA9IHBhaXJcbiAgbGV0ICggPH4gKSA9IG1hcFxuICBsZXQgKCB+fiApID0gYXBwbHlcbmVuZFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3VwZGF0ZV9kdW1teSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJnbG9iYWxfZGF0YSIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiQXNzZXJ0X2ZhaWx1cmUiLCJkdW1teSIsImRlZmF1bHRfZXF1YWwiLCJlbXB0eSIsInBhcmFtIiwiY3N0IiwiYWRkIiwib3B0IiwiayIsInN1YnMiLCJsYWJlbCIsImRpc3BhdGNoIiwieCIsInJlbW92ZSIsImwiLCJlcSIsInMyIiwiczEiLCJ5IiwiYWNjIiwidGwiLCJub3ciLCJuZXZlciIsInNjb3BlIiwiZnMiLCJydW4iLCJub3RpZmljYXRpb24iLCJpIiwiYmFzZSIsIm5hbWUiLCJ2YWx1ZSIsImVxdWFsIiwic3ViIiwicyIsImVtaXQiLCJub3RpZnkiLCJtYWtlIiwibnVsbCQiLCJnZXQiLCJzZXQiLCJ1cGRhdGUiLCJ0cmlnZ2VyIiwic3ViMiIsIngxIiwieDIiLCJ1c2UiLCJ1bnN1YiIsInVzZTIiLCJtYXAiLCJjb25zdCQiLCJ0YXAiLCJwYWlyIiwidHJpcGxlIiwiczMiLCJ4MyIsInQ1IiwiczQiLCJzNSIsIng0IiwieDUiLCJ0NiIsInM2IiwieDYiLCJmaWx0ZXIiLCJwcmVkIiwic2VlZCIsImV0YSIsImZpbHRlcl9tYXAiLCJtYXRjaCIsInJlZHVjZSIsImluaXQiLCJyZWR1Y2VyIiwiZXZlbnRzIiwic3RhdGVfc2lnbmFsIiwic3RhdGUiLCJldmVudF9vcHQiLCJldmVudCIsInNlbGVjdCIsInVuaXEiLCJtYXAyIiwibWFwMyIsInNhbXBsZSIsImFwcGx5IiwiZl9zIiwieF9zIiwibGV0JCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLFFDeUVJO0FB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LGdDQUF3QjtBQUFBLElBQy9DO0FBQUE7QUFBQTtBQUFBLGVBQUFVLElBQXVCLE9BQXdCLFFBQXhCLGdDQUF3QjtBQUFBLElBQUM7QUFBQSxHQUM1RDtBQUFBLFlBQUEyQixPQUFBbEQsT0FBQWQsSUFBQUQ7QUFBQUEsUUFBQWlCLElBR087QUFBQSxJQUNLLDhCQUFBN0IsT0FBaUIsaUNBQWdCO0FBQUEsSUFBQztBQUFBLEdBQzlDO0FBQUEsWUFBQThFLE1BQUFDLEtBQUFDO0FBQUFBLFFBQUEzRSxPQUdTLFVBQUF3QixJQUNYO0FBQUEsYUFBQUMsS0FBQTNCLEtBQUFLO0FBQUFBLFNBQUF1QixTQUNTO0FBQUEsS0FDUDtBQUFBLEtBQ0Esc0NBQUEvQixPQUFzQix3QkFBb0IsR0FBQztBQUFBO0FBQUEsYUFBQTRCLElBQUF0QixPQUFBRjtBQUFBQSxLQUUzQztBQUFBLEtBQXNCLGdCQUFBSixPQUNaLHNCQUFrQixFQUROO0FBQUEsSUFDTTtBQUFBLElBTjRCLGtDQUFuQjtBQUFBLElBUXpCLCtCQUFBYixHQUF1QixPQUFhLFFBQWIsc0JBQWE7QUFBQSxJQUNwQywrQkFBQXFCLEdBQXVCLE9BQWEsUUFBYixzQkFBYTtBQUFBLElBQUM7QUFBQSxHQUNqRDtBQUFBLFlBQUF5RSxLQUFBcEQsR0FBQTFDLEdBTWlCLGdCQUFPO0FBQUEsR0EzVDFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRDdIRiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQyODQwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Imp4X2pzb28uY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L2p4L2pzb28vSnhfZmZpLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0XG5cbmV4dGVybmFsIHJhdyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG5sZXQgZ2xvYmFsX3RoaXMgPSByYXcgXCJnbG9iYWxUaGlzXCJcbmxldCBudWxsID0gcmF3IFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcmF3IFwidW5kZWZpbmVkXCJcblxuZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcbmV4dGVybmFsIHN0cmljdF9lcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4oKiBQcmltaXRpdmVzICopXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcbmV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5leHRlcm5hbCBvZl9ib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5leHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuZXh0ZXJuYWwgdG9fZmxvYXQgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuKCogQXJyYXkgKilcbmV4dGVybmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcbmV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbigqIExpc3QgKilcbmV4dGVybmFsIG9mX2xpc3QgOiB0IGxpc3QgLT4gdCA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcbmV4dGVybmFsIHRvX2xpc3QgOiB0IC0+IHQgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuKCogT2JqICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuZXh0ZXJuYWwgZGVsIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcbmV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5leHRlcm5hbCBvYmpfbmV3IDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcbmV4dGVybmFsIG9ial9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbigqIEZ1biAqKVxuZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcbmV4dGVybmFsIG9mX2Z1biA6IGludCAtPiAoXyAtPiBfKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuKCogdHlwZV9vZiAqKVxuXG5leHRlcm5hbCB0eXBlX29mIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuKCogaW5zdGFuY2Vfb2YgKilcblxuZXh0ZXJuYWwgaW5zdGFuY2Vfb2YgOiB0IC0+IGNvbnN0cjp0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG4iXSwibmFtZXMiOlsicnVudGltZSIsImdsb2JhbF90aGlzIiwibnVsbCQiLCJ1bmRlZmluZWQkIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLGNDSWtCO0FBQUEsSUFBQUMsUUFDUDtBQUFBLElBQUFDLGFBQ0s7QUFBQSxHQUFlO0FBQUE7QUFBQTtBQUFBLEVETi9CIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDI4NTYsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoianhfanNvby5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2Zyb21fYXJyYXkiLCJjYW1sX2pzX2Z1bl9jYWxsIiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfc2V0IiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJTdGRsaWJfTGlzdCIsIkp4X0p4X2ZmaSIsIlN0ZGxpYl9GbG9hdCIsIlN0ZGxpYl9TdHJpbmciLCJudWxsJCIsInVuZGVmaW5lZCQiLCJlcXVhbCIsInN0cmljdF9lcXVhbCIsImRlYnVnZ2VyJCIsImlzX251bGwiLCJ2IiwiaXNfdW5kZWZpbmVkIiwiaXNfZGVmaW5lZCIsImlzX251bWJlciIsImpzIiwiaXNfYm9vbGVhbiIsImlzX3N0cmluZyIsImlzX29iamVjdCIsInJhdyIsImlzX2ludCIsIlVuZGVmaW5lZF9wcm9wZXJ0eSIsImdsb2JhbCIsImsiLCJ4Iiwib2ZfanMiLCJ0b19qcyIsIm9iaiIsInQiLCJlbXB0eSIsInBhcmFtIiwib2ZfbGlzdCIsImVudHJpZXMiLCJuYW1lIiwidG9fbGlzdCIsImVudHJ5X2FyciIsIm9mX2FycmF5IiwiY3JlYXRlIiwiZ2V0X3Byb3RvdHlwZSIsInNldF9wcm90b3R5cGUiLCJwcm90byIsImdldCIsImRlY29kZSIsImdldF9vcHQiLCJnZXRfcGF0aCIsInBhdGgiLCJnZXRfcGF0aF9vcHQiLCJzZXQiLCJlbmNvZGUiLCJ4X2pzIiwic2V0X3BhdGgiLCJkZWwiLCJoYXMiLCJoYXNfanMiLCJrX2pzIiwiY2FsbF9qc191bml0IiwidGhpcyQiLCJhcmdzIiwiY2FsbDAiLCJmX2siLCJyZXR1cm4kIiwiY2FsbDEiLCJhIiwiY2FsbDIiLCJlbmNvZGVfYSIsImVuY29kZV9iIiwiYiIsImNhbGwzIiwiZW5jb2RlX2MiLCJjIiwiY2FsbDQiLCJlbmNvZGVfZCIsImQiLCJjYWxsNSIsImVuY29kZV9lIiwiZSIsImNhbGw2IiwiZW5jb2RlX2YiLCJjYWxsNyIsImVuY29kZV9nIiwiZyIsImNhbGw4IiwiZW5jb2RlX2giLCJoIiwiY2FsbDkiLCJlbmNvZGVfaSIsImkiLCJjYWxsMF91bml0IiwiY2FsbDFfdW5pdCIsImNhbGwyX3VuaXQiLCJjYWxsM191bml0IiwiY2FsbDRfdW5pdCIsImNhbGw1X3VuaXQiLCJjYWxsNl91bml0IiwiY2FsbDdfdW5pdCIsImNhbGw4X3VuaXQiLCJjYWxsOV91bml0IiwibmV3MCIsIm5ldzEiLCJuZXcyIiwibmV3MyIsIm5ldzQiLCJuZXc1IiwibmV3NiIsIm5ldzciLCJuZXc4IiwibmV3OSIsIm5ld19qcyIsImlzX2FycmF5IiwiYXJyIiwidW5pdCIsImludCIsImZsb2F0IiwiYm9vbCIsImFycmF5IiwicGFpciIsInRvX2pzX3giLCJ0b19qc195IiwieSIsInRyaXBsZSIsInRvX2pzX3oiLCJ6IiwibnVsbGFibGUiLCJvcHRpb25hbCIsImZ1bjAiLCJmdW4xIiwiZnVuMiIsImZ1bjMiLCJmdW40IiwiZnVuNSIsImZ1bjYiLCJmdW43IiwiZnVuOCIsImZ1bjkiLCJhbnkiLCJhcnJheV9qcyIsIm9mX2pzX3giLCJvZl9qc195IiwibGVuIiwieV9qcyIsIm9mX2pzX3oiLCJ6X2pzIiwiZmllbGQiLCJkZWNvZGVyIiwib3IiLCJkZWNvZGVyMSIsImRlY29kZXIyIiwiZXhuIiwiZl9qcyIsImNvbnNvbGUiLCJsb2ciLCJzdHJpbmciLCJkZWJ1ZyIsImxzdCIsImdsb2JhbF90aGlzIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsaUJBQUE7QUFBQSxJQUFBQyxxQkFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsbUJBQUE7QUFBQSxJQUFBQyxpQkFBQTtBQUFBLElBQUFDLCtCQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLElBQUFDLDBCQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLFFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsWUFBQUMsVUFBQTtBQUFBLFlBQUFDLFFBQUFDLEdBQUEsMkJBQUE7QUFBQSxZQUFBQyxhQUFB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QUFBO0FBQUEsWUFBQXdCLFdBQUEvRCxLQUFBZ0MsS0FBQUssVUFBQUMsVUFBQUcsVUFBQU4sR0FBQUksR0FBQUc7QUFBQUEsUUFBQSxJQUFBLDZCQUFBO0FBQUEsSUFBQSxnQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFzQjtBQUFBQSxJQUFBaEUsS0FBQWdDLEtBQUFLLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFULEdBQUFJLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxnQ0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFvQjtBQUFBQSxJQUFBakUsS0FBQWdDLEtBQUFLLFVBQUFDLFVBQUFHLFVBQUFHLFVBQUFHLFVBQUFaLEdBQUFJLEdBQUFHLEdBQUFHLEdBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsZ0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0I7QUFBQUEsSUFBQWxFO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsZ0NBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0c7QUFBQUEsSUFBQW5FO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBakI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUE7QUFBQSxvQkFBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFlO0FBQUFBLElBQUFwRTtBQUFBQSxJQUFBZ0M7QUFBQUEsSUFBQUs7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXBCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQTtBQUFBLG9CQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWE7QUFBQUEsSUFBQXJFO0FBQUFBLElBQUFnQztBQUFBQSxJQUFBSztBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBdkI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQTtBQUFBLG9CQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQVcsS0FBQXRFLEtBQUEsY0FBQTtBQUFBLFlBQUF1RSxLQUFBdkUsS0FBQXFCLFFBQUFjLEdBQUEsT0FBQSxRQUFBLHNCQUFBO0FBQUEsWUFBQXFDLEtBQUF4RSxLQUFBcUMsVUFBQUMsVUFBQUgsR0FBQUk7QUFBQUEsUUFBQSxJQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsMkJBQUE7QUFBQTtBQUFBLFlBQUFrQyxLQUFBekUsS0FBQXFDLFVBQUFDLFVBQUFHLFVBQUFOLEdBQUFJLEdBQUFHO0FBQUFBLFFBQUEsSUFBQSw2QkFBQTtBQUFBLElBQUEsT0FBQSxRQUFBLDhCQUFBO0FBQUE7QUFBQSxZQUFBZ0MsS0FBQTFFLEtBQUFxQyxVQUFBQyxVQUFBRyxVQUFBRyxVQUFBVCxHQUFBSSxHQUFBRyxHQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsT0FBQSxRQUFBLGlDQUFBO0FBQUE7QUFBQSxZQUFBOEI7QUFBQUEsSUFBQTNFLEtBQUFxQyxVQUFBQyxVQUFBRyxVQUFBRyxVQUFBRyxVQUFBWixHQUFBSSxHQUFBRyxHQUFBRyxHQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSxvQ0FBQTtBQUFBO0FBQUEsWUFBQTRCO0FBQUFBLElBQUE1RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQWY7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSx1Q0FBQTtBQUFBO0FBQUEsWUFBQTRHO0FBQUFBLElBQUE3RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQWpCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLE9BQUEsUUFBQSwwQ0FBQTtBQUFBO0FBQUEsWUFBQXlCO0FBQUFBLElBQUE5RTtBQUFBQSxJQUFBcUM7QUFBQUEsSUFBQUM7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUU7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQXBCO0FBQUFBLElBQUFJO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUEvRTtBQUFBQSxJQUFBb0Y7QUFBQUEsSUFBQUc7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxPQUFBLFFBQUEsNkNBQUE7QUFBQTtBQUFBLFlBQUF1QjtBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQXFDO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUF2QjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7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QUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBa0I7QUFBQUEsSUFBQXVEO0FBQUFBLElBQUFwRjtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBZjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUE7QUFBQUEsS0FBQSxJQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLElBQUEsS0FBQTtBQUFBLElBQUE7QUFBQTtBQUFBLFlBQUFrRztBQUFBQSxJQUFBc0Q7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFqQjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsSUFBQSxLQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsWUFBQWU7QUFBQUEsSUFBQXFEO0FBQUFBLElBQUFwRjtBQUFBQSxJQUFBQztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBcEI7QUFBQUEsSUFBQUk7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQUc7QUFBQUEsSUFBQS9FO0FBQUFBLElBQUFvRjtBQUFBQSxJQUFBRztBQUFBQTtBQUFBQSxLQUFBLElBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBYTtBQUFBQSxJQUFBb0Q7QUFBQUEsSUFBQXBGO0FBQUFBLElBQUFDO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUFFO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBLElBQUF2QjtBQUFBQSxJQUFBSTtBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBRztBQUFBQSxJQUFBL0U7QUFBQUEsSUFBQW9GO0FBQUFBLElBQUFHO0FBQUFBLElBQUFHO0FBQUFBO0FBQUFBLEtBQUEsSUFBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxTQUFBO0FBQUEsU0FBQTtBQUFBLFNBQUE7QUFBQSxJQUFBLEtBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxZQUFBL0IsZUFBQTNELEdBQUE2RCxNQUFBLDJCQUFBLFNBQUE7QUFBQSxPQUFBNEYsVUFBQTtBQUFBLFlBQUFDLElBQUE5SCxHQUFBLDJDQUFBO0FBQUEsT0FBQStILFNBQUE7QUFBQSxZQUFBQyxNQUFBQztBQUFBQSxJQUFBLE9BQUEsSUFBQSxjQUFBLGtDQUFBO0FBQUE7QUFBQSxPQUFBQyxjQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBQUEiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDA0NSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZ2xvYmFsLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibGV0IHdpbmRvdyA9IEp4Lmdsb2JhbCBcIndpbmRvd1wiXG5sZXQgZG9jdW1lbnQgPSBKeC5nbG9iYWwgXCJkb2N1bWVudFwiXG5sZXQgY29uc29sZSA9IEp4Lmdsb2JhbCBcImNvbnNvbGVcIlxubGV0IG5hdmlnYXRvciA9IEp4Lmdsb2JhbCBcIm5hdmlnYXRvclwiXG5cbmxldCBlbmNvZGVfdXJpX2NvbXBvbmVudCA9XG4gIGxldCBmID0gSnguZ2xvYmFsIFwiZW5jb2RlVVJJQ29tcG9uZW50XCIgaW5cbiAgSnguRnVuLmNhbGwxIGYgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLnN0cmluZ1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJKeCIsIndpbmRvdyIsImRvY3VtZW50IiwiY29uc29sZSIsIm5hdmlnYXRvciIsImVuY29kZV91cmlfY29tcG9uZW50Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0NBYTtBQUFBLElBQUFDLFdBQ0U7QUFBQSxJQUFBQyxVQUNEO0FBQUEsSUFBQUMsWUFDRTtBQUFBLElBQUFULElBR047QUFBQSxJQUFBVSx1QkFDUjtBQUFBLEdBQTBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRFA1RCIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0MDc3LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9wcm9taXNlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSAnYSB0ID0gSngudFxudHlwZSAoJ2EsICdlcnIpIGV4ZWN1dG9yID0gKCdhIC0+IHVuaXQpIC0+ICgnZXJyIC0+IHVuaXQpIC0+IHVuaXRcblxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IHQgPSBKeC5nbG9iYWwgXCJQcm9taXNlXCJcbmxldCBtYWtlIGV4ZWN1dG9yID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLmZ1bjEgZXhlY3V0b3JcbmxldCByZXNvbHZlIHYgPSBKeC5PYmouY2FsbDEgdCBcInJlc29sdmVcIiB+cmV0dXJuOm9mX2pzIEp4LkVuY29kZXIuYW55IHZcbmxldCByZWplY3QgZXJyID0gSnguT2JqLmNhbGwxIHQgXCJyZWplY3RcIiB+cmV0dXJuOm9mX2pzIEp4LkVuY29kZXIuYW55IGVyclxubGV0IGFuZF90aGVuIGYgcCA9IEp4Lk9iai5jYWxsMSBwIFwidGhlblwiIH5yZXR1cm46b2ZfanMgSnguRW5jb2Rlci5mdW4xIGZcbmxldCBtYXAgZiBwID0gYW5kX3RoZW4gKGZ1biB4IC0+IHJlc29sdmUgKGYgeCkpIHBcbmxldCB1c2UgZiBwID0gSnguT2JqLmNhbGwxX3VuaXQgcCBcInRoZW5cIiBKeC5FbmNvZGVyLmZ1bjEgZlxubGV0IGNhdGNoIGYgcCA9IEp4Lk9iai5jYWxsMV91bml0IHAgXCJjYXRjaFwiIEp4LkVuY29kZXIuZnVuMSBmXG5sZXQgaWdub3JlIHAgPSB1c2UgaWdub3JlIHBcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKCBsZXQqICkgcCBmID0gYW5kX3RoZW4gZiBwXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiSngiLCJ0b19qcyIsInAiLCJvZl9qcyIsImpzIiwidCIsIm1ha2UiLCJleGVjdXRvciIsInJlc29sdmUiLCJ2IiwicmVqZWN0IiwiZXJyIiwiY3N0X3RoZW4iLCJhbmRfdGhlbiIsIm1hcCIsIngiLCJ1c2UiLCJjYXRjaCQiLCJpZ25vcmUiLCJsZXQkIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFQLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxLQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0NHYyxTQUFDO0FBQUEsWUFBQUMsTUFBQUMsSUFDQSxVQUFFO0FBQUEsT0FBQUMsSUFDVDtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElBQ1ksc0RBQXNDO0FBQUE7QUFBQSxZQUFBQyxRQUFBQztBQUFBQSxJQUMxQyxpRUFBdUQ7QUFBQTtBQUFBLFlBQUFDLE9BQUFDO0FBQUFBLElBQ3RELGtFQUF3RDtBQUFBO0FBQUEsT0FBQUMsV0RSekU7QUFBQSxZQUFBQyxTQUFBdEIsR0FBQVc7QUFBQUEsSUNTbUIsZ0VBQXFEO0FBQUE7QUFBQSxZQUFBWSxJQUFBdkIsR0FBQVc7QUFBQUEsSUFDMUQseUJBQUFhLEdBQTJCLE9BQUssUUFBTCxpQkFBSyxNQUFHO0FBQUE7QUFBQSxZQUFBQyxJQUFBekIsR0FBQVc7QUFBQUEsSUFDbkMseURBQTRDO0FBQUE7QUFBQSxZQUFBZSxPQUFBMUIsR0FBQVc7QUFBQUEsSUFDMUMsd0RBQTZDO0FBQUE7QUFBQSxZQUFBZ0IsT0FBQWhCLEdBQzlDLHVCRGJmLGNDYTJCO0FBQUEsWUFBQWlCLEtBQUFqQixHQUFBWCxHQUdOLHFCQUFZO0FBQUEsR0FYTjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURMM0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDE1MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfZG9tLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEdsb2JhbCA9IFN0ZHdlYl9nbG9iYWxcbm1vZHVsZSBQcm9taXNlID0gU3Rkd2ViX3Byb21pc2VcblxudHlwZSBub2RlID0gSngudFxudHlwZSBldmVudCA9IEp4LnRcblxuKCogU3R5bGUgKilcblxudHlwZSBzdHlsZSA9IEp4LnRcblxubW9kdWxlIFN0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0eWxlXG5cbiAgbGV0IHRleHQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNzc1RleHRcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgbGVuZ3RoIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJsZW5ndGhcIiBKeC5EZWNvZGVyLmludFxuXG4gIGxldCBzZXQgdGhpcyBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJzZXRQcm9wZXJ0eVwiXG4gICAgICBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lOyBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZSB8XVxuXG4gIGxldCB1bnNldCB0YXJnZXQgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCB0YXJnZXQgXCJyZW1vdmVQcm9wZXJ0eVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgZ2V0IHRoaXMgbmFtZSA9XG4gICAgSnguRGVjb2Rlci5zdHJpbmdcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwic2V0UHJvcGVydHlcIiBbfCBKeC5FbmNvZGVyLnN0cmluZyBuYW1lIHxdKVxuZW5kXG5cbigqIERPTSBldmVudHMgKilcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgbmFtZSA9IEp4LnRcblxuICBtb2R1bGUgTmFtZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEp4LnRcblxuICAgIGxldCB0b19zdHJpbmcgPSBKeC5EZWNvZGVyLnN0cmluZ1xuICAgIGxldCBtYWtlID0gSnguRW5jb2Rlci5zdHJpbmdcbiAgZW5kXG5cbiAgdHlwZSB0ID0gZXZlbnRcblxuICBsZXQgdGFyZ2V0IHQgPSBKeC5PYmouZ2V0IHQgXCJ0YXJnZXRcIiBKeC5EZWNvZGVyLmFueVxuICBsZXQgcHJldmVudF9kZWZhdWx0IHQgPSBKeC5PYmouY2FsbDBfdW5pdCB0IFwicHJldmVudERlZmF1bHRcIiAoKVxuXG4gICgqIEdlbmVyaWMgZXZlbnRzICopXG5cbiAgbGV0IGNoYW5nZSA9IE5hbWUubWFrZSBcImNoYW5nZVwiXG5cbiAgKCogVUkgZXZlbnRzICopXG5cbiAgbGV0IHJlc2l6ZSA9IE5hbWUubWFrZSBcInJlc2l6ZVwiXG5cbiAgKCogTW91c2UgKilcblxuICBsZXQgY2xpY2sgPSBKeC5FbmNvZGVyLnN0cmluZyBcImNsaWNrXCJcbiAgbGV0IGRibGNsaWNrID0gSnguRW5jb2Rlci5zdHJpbmcgXCJkYmxjbGlja1wiXG4gIGxldCBtb3VzZW1vdmUgPSBKeC5FbmNvZGVyLnN0cmluZyBcIm1vdXNlbW92ZVwiXG4gIGxldCBwYWdlX3ggdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhZ2VYXCIgSnguRGVjb2Rlci5mbG9hdFxuICBsZXQgcGFnZV95IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJwYWdlWVwiIEp4LkRlY29kZXIuZmxvYXRcblxuICAoKiBLZXlib2FyZCBldmVudHMgKilcblxuICBsZXQga2V5ZG93biA9IE5hbWUubWFrZSBcImtleWRvd25cIlxuICBsZXQga2V5IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJrZXlcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgY29kZSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwia2V5Q29kZVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogSW5wdXQgKilcblxuICBsZXQgYmVmb3JlX2lucHV0ID0gTmFtZS5tYWtlIFwiYmVmb3JlaW5wdXRcIlxuICBsZXQgaW5wdXQgPSBOYW1lLm1ha2UgXCJpbnB1dFwiXG4gIGxldCBjYW5jZWwgPSBOYW1lLm1ha2UgXCJjYW5jZWxcIlxuICBsZXQgZGF0YSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiZGF0YVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogRnVsbHNjcmVlbiBldmVudHMgKilcbiAgbGV0IGZ1bGxzY3JlZW5fY2hhbmdlID0gTmFtZS5tYWtlIFwiZnVsbHNjcmVlbmNoYW5nZVwiXG4gIGxldCBmdWxsc2NyZWVuX2Vycm9yID0gTmFtZS5tYWtlIFwiZnVsbHNjcmVlbmVycm9yXCJcblxuICAoKiBQb3Agc3RhdGUgZXZlbnRzICopXG4gIGxldCBwb3BzdGF0ZSA9IE5hbWUubWFrZSBcInBvcHN0YXRlXCJcblxuICAoKiBIYXNoIGNoYW5nZSBldmVudHMgKilcbiAgbGV0IGhhc2hjaGFuZ2UgPSBOYW1lLm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICAoKiBGb2N1cyBldmVudHMgKilcbiAgbGV0IGJsdXIgPSBOYW1lLm1ha2UgXCJibHVyXCJcbiAgbGV0IGZvY3VzaW4gPSBOYW1lLm1ha2UgXCJmb2N1c2luXCJcbiAgbGV0IGZvY3Vzb3V0ID0gTmFtZS5tYWtlIFwiZm9jdXNvdXRcIlxuXG4gICgqIFN1Ym1pdCBldmVudHMgKilcbiAgbGV0IHN1Ym1pdCA9IE5hbWUubWFrZSBcInN1Ym1pdFwiXG5lbmRcblxubW9kdWxlIFRva2VuX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0b2dnbGUgdGhpcyBuYW1lID0gSnguT2JqLmNhbGwxX3VuaXQgdGhpcyBcInRvZ2dsZVwiIEp4LkVuY29kZXIuc3RyaW5nIG5hbWVcbiAgbGV0IGFkZCB0aGlzIG5hbWUgPSBKeC5PYmouY2FsbDFfdW5pdCB0aGlzIFwiYWRkXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuICBsZXQgcmVtb3ZlIHRoaXMgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJyZW1vdmVcIiBKeC5FbmNvZGVyLnN0cmluZyBuYW1lXG5lbmRcblxubW9kdWxlIEJsb2IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCBzaXplIHQgPSBKeC5PYmouZ2V0IHQgXCJzaXplXCIgSnguRGVjb2Rlci5pbnRcbiAgbGV0IHR5cGUnIHQgPSBKeC5PYmouZ2V0IHQgXCJ0eXBlXCIgSnguRGVjb2Rlci5zdHJpbmdcblxuICBsZXQgdGV4dCB0ID1cbiAgICBKeC5PYmouY2FsbDAgdCBcInRleHRcIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgKClcbiAgICB8PiBQcm9taXNlLm1hcCBKeC5EZWNvZGVyLnN0cmluZ1xuZW5kXG5cbm1vZHVsZSBGaWxlID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgbGFzdF9tb2RpZmllZCB0ID0gSnguT2JqLmdldCB0IFwibGFzdF9tb2RpZmllZFwiIEp4LkRlY29kZXIuZmxvYXRcbiAgbGV0IG5hbWUgdCA9IEp4Lk9iai5nZXQgdCBcIm5hbWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgdG9fYmxvYiB0ID0gdFxuZW5kXG5cbm1vZHVsZSBOb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICAoKiBDb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19qcyB0ID0gdFxuXG4gICgqIFRyYXZlcnNhbCAqKVxuXG4gIGxldCBwYXJlbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcInBhcmVudE5vZGVcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IGZpcnN0X2NoaWxkIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJmaXJzdENoaWxkXCIgSnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gIGxldCBsYXN0X2NoaWxkIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJsYXN0Q2hpbGRcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IG5leHRfc2libGluZyB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwibmV4dFNpYmxpbmdcIiBKeC5EZWNvZGVyLihudWxsYWJsZSBqcylcbiAgbGV0IF9uZXh0X3NpYmxpbmdfanMgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcIm5leHRTaWJsaW5nXCIgSnguRGVjb2Rlci5qc1xuXG4gIGxldCBpdGVyX2NoaWxkcmVuIHRoaXMgZiA9XG4gICAgbGV0IG5vZGVfbGlzdCA9IEp4Lk9iai5nZXQgdGhpcyBcImNoaWxkTm9kZXNcIiBKeC5EZWNvZGVyLmpzIGluXG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBub2RlX2xpc3QgXCJmb3JFYWNoXCIgW3wgSnguRW5jb2Rlci5mdW4xIGYgfF1cblxuICBsZXQgY2hpbGRyZW4gdGhpcyA9XG4gICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgIGl0ZXJfY2hpbGRyZW4gdGhpcyAoZnVuIGMgLT4gYWNjIDo9IGMgOjogIWFjYyk7XG4gICAgTGlzdC5yZXYgIWFjY1xuXG4gICgqIE5vZGUgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBjbG9uZV9ub2RlIHRoaXMgfmRlZXAgPVxuICAgIEp4Lk9iai5jYWxsMSB0aGlzIFwiY2xvbmVOb2RlXCIgSnguRW5jb2Rlci5ib29sIGRlZXAgfnJldHVybjpKeC5EZWNvZGVyLmpzXG5cbiAgbGV0IGlzX3NhbWVfbm9kZSB0aGlzIG90aGVyID1cbiAgICBKeC5EZWNvZGVyLmJvb2wgKEp4Lk9iai5jYWxsX2pzIHRoaXMgXCJpc1NhbWVOb2RlXCIgW3wgb3RoZXIgfF0pXG5cbiAgbGV0IHJlbW92ZSB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcInJlbW92ZVwiICgpXG5cbiAgbGV0IHJlcGxhY2Vfd2l0aCB0aGlzIG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlV2l0aFwiIFt8IG90aGVyIHxdXG5cbiAgKCogQ2hpbGRyZW4gbWFuaXB1bGF0aW9uICopXG5cbiAgbGV0IGFwcGVuZF90ZXh0IH5wYXJlbnQgdGV4dCA9XG4gICAgSnguT2JqLmNhbGwxX3VuaXQgcGFyZW50IFwiYXBwZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBhcHBlbmRfY2hpbGQgfnBhcmVudCBvdGhlciA9XG4gICAgSnguT2JqLmNhbGxfanNfdW5pdCBwYXJlbnQgXCJhcHBlbmRDaGlsZFwiIFt8IG90aGVyIHxdXG5cbiAgbGV0IHJlbW92ZV9jaGlsZCB+cGFyZW50IG90aGVyID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcInJlbW92ZUNoaWxkXCIgW3wgb3RoZXIgfF1cblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB+cGFyZW50IH5yZWZlcmVuY2UgbmV3X25vZGUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgcGFyZW50IFwiaW5zZXJ0QmVmb3JlXCIgW3wgbmV3X25vZGU7IHJlZmVyZW5jZSB8XVxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlIG5ld19ub2RlID1cbiAgICBpbnNlcnRfYmVmb3JlIH5wYXJlbnQgfnJlZmVyZW5jZTooX25leHRfc2libGluZ19qcyByZWZlcmVuY2UpIG5ld19ub2RlXG5cbiAgbGV0IHJlcGxhY2VfY2hpbGQgfnBhcmVudCB+cmVmZXJlbmNlIG5ld19ub2RlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHBhcmVudCBcInJlcGxhY2VDaGlsZFwiIFt8IG5ld19ub2RlOyByZWZlcmVuY2UgfF1cblxuICBsZXQgcmVwbGFjZV9jaGlsZHJlbiB0aGlzIGNoaWxkcmVuID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlQ2hpbGRyZW5cIiBjaGlsZHJlblxuXG4gIGxldCBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCB0aGlzIHBvc2l0aW9uIG5vZGUgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJpbnNlcnRBZGphY2VudEVsZW1lbnRcIiBKeC5FbmNvZGVyLnN0cmluZ1xuICAgICAgSnguRW5jb2Rlci5qcyBwb3NpdGlvbiBub2RlXG5cbiAgbGV0IGluc2VydF9iZWZvcmVfYmVnaW4gfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJiZWZvcmViZWdpblwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2FmdGVyX2JlZ2luIH5yZWZlcmVuY2Ugbm9kZSA9XG4gICAgaW5zZXJ0X2FkamFjZW50X2VsZW1lbnQgcmVmZXJlbmNlIFwiYWZ0ZXJiZWdpblwiIG5vZGVcblxuICBsZXQgaW5zZXJ0X2JlZm9yZV9lbmQgfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJiZWZvcmVlbmRcIiBub2RlXG5cbiAgbGV0IGluc2VydF9hZnRlcl9lbmQgfnJlZmVyZW5jZSBub2RlID1cbiAgICBpbnNlcnRfYWRqYWNlbnRfZWxlbWVudCByZWZlcmVuY2UgXCJhZnRlcmVuZFwiIG5vZGVcblxuICAoKiBUZXh0IGNvbnRlbnQgKilcblxuICBsZXQgc2V0X3RleHRfY29udGVudCB0aGlzIHRleHQgPVxuICAgIEp4Lk9iai5zZXQgdGhpcyBcInRleHRDb250ZW50XCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gIGxldCBnZXRfdGV4dF9jb250ZW50IHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJ0ZXh0Q29udGVudFwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogSFRNTCBjb250ZW50ICopXG5cbiAgbGV0IHNldF9pbm5lcl9odG1sIHRoaXMgdGV4dCA9XG4gICAgSnguT2JqLnNldCB0aGlzIFwiaW5uZXJIVE1MXCIgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuXG4gICgqIEV2ZW50IGhhbmRsaW5nICopXG5cbiAgbGV0IGJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJhZGRFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICAgIGV2ZW50X3R5cGUgZlxuXG4gIGxldCB1bmJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICAgIEp4Lk9iai5jYWxsMl91bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlbmVyXCIgSnguRW5jb2Rlci5qcyBKeC5FbmNvZGVyLmZ1bjFcbiAgICAgIGV2ZW50X3R5cGUgZlxuXG4gICgqIFN0YXRlIGNoYW5nZXMgKilcblxuICBsZXQgYmx1ciB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImJsdXJcIiAoKVxuICBsZXQgY2xpY2sgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJjbGlja1wiICgpXG4gIGxldCBmb2N1cyB0aGlzID0gSnguT2JqLmNhbGwwX3VuaXQgdGhpcyBcImZvY3VzXCIgKClcblxuICAoKiBQb3BvdmVyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgaGlkZV9wb3BvdmVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwiaGlkZVBvcG92ZXJcIiAoKVxuICBsZXQgc2hvd19wb3BvdmVyIHRoaXMgPSBKeC5PYmouY2FsbDBfdW5pdCB0aGlzIFwic2hvd1BvcG92ZXJcIiAoKVxuICBsZXQgdG9nZ2xlX3BvcG92ZXIgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJ0b2dnbGVQb3BvdmVyXCIgKClcblxuICAoKiBTZWxlY3RvcnMgKilcblxuICBsZXQgbWF0Y2hlcyB0aGlzIHNlbGVjdG9ycyA9XG4gICAgSnguRGVjb2Rlci5ib29sXG4gICAgICAoSnguT2JqLmNhbGxfanMgdGhpcyBcIm1hdGNoZXNcIiBbfCBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvcnMgfF0pXG5cbiAgbGV0IGNsb3Nlc3QgdGhpcyBzZWxlY3RvcnMgPVxuICAgIEp4LkRlY29kZXIubnVsbGFibGUgSnguRGVjb2Rlci5hbnlcbiAgICAgIChKeC5PYmouY2FsbF9qcyB0aGlzIFwiY2xvc2VzdFwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHNlbGVjdG9ycyB8XSlcblxuICAoKiBpbnB1dCAqKVxuXG4gIGxldCBzZWxlY3QgdGhpcyA9IEp4Lk9iai5jYWxsMF91bml0IHRoaXMgXCJzZWxlY3RcIiAoKVxuXG4gICgqIGEgKilcblxuICBsZXQgdG9fc3RyaW5nIHRoaXMgPSBKeC5PYmouY2FsbDAgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyB0aGlzIFwidG9TdHJpbmdcIiAoKVxuXG4gICgqIEF0dHJpYnV0ZXMgKilcblxuICBsZXQgc2V0X2F0dHIgdGhpcyBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJzZXRBdHRyaWJ1dGVcIlxuICAgICAgW3wgSnguRW5jb2Rlci5zdHJpbmcgbmFtZTsgSnguRW5jb2Rlci5zdHJpbmcgdmFsdWUgfF1cblxuICBsZXQgZ2V0X2F0dHIgdGhpcyBuYW1lID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcImdldEF0dHJpYnV0ZVwiIH5yZXR1cm46SnguRGVjb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmdcbiAgICAgIG5hbWVcblxuICBsZXQgdW5zZXRfYXR0ciB0aGlzIG5hbWUgPVxuICAgIEp4Lk9iai5jYWxsX2pzX3VuaXQgdGhpcyBcInJlbW92ZUF0dHJpYnV0ZVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgZ2V0X2NsYXNzX2xpc3QgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNsYXNzTGlzdFwiIEp4LkRlY29kZXIuanNcbiAgbGV0IHNldF9zdHlsZSB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJzdHlsZVwiIEp4LkVuY29kZXIuc3RyaW5nIHhcbiAgbGV0IGdldF9zdHlsZSB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwic3R5bGVcIiBKeC5EZWNvZGVyLmpzXG4gIGxldCByZXNldF9zdHlsZSB0aGlzID0gSnguT2JqLnNldCB0aGlzIFwic3R5bGVcIiBKeC5FbmNvZGVyLnN0cmluZyBcIlwiXG4gIGxldCBnZXRfaHJlZiB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiaHJlZlwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaHJlZiB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJocmVmXCIgSnguRW5jb2Rlci5zdHJpbmcgeFxuICBsZXQgZ2V0X3ZhbHVlIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJ2YWx1ZVwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfdmFsdWUgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwidmFsdWVcIiBKeC5FbmNvZGVyLnN0cmluZyB4XG4gIGxldCByZXNldF92YWx1ZSB0aGlzID0gSnguT2JqLnNldCB0aGlzIFwidmFsdWVcIiBKeC5FbmNvZGVyLnN0cmluZyBcIlwiXG4gIGxldCBzZXRfZGlzYWJsZWQgdGhpcyB4ID0gSnguT2JqLnNldCB0aGlzIFwiZGlzYWJsZWRcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgc2V0X2F1dG9mb2N1cyB0aGlzIHggPSBKeC5PYmouc2V0IHRoaXMgXCJhdXRvZm9jdXNcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgZ2V0X29mZnNldF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwib2Zmc2V0V2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X2NsaWVudF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwiY2xpZW50V2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X3Njcm9sbF93aWR0aCB0aGlzID0gSnguT2JqLmdldCB0aGlzIFwic2Nyb2xsV2lkdGhcIiBKeC5EZWNvZGVyLmludFxuICBsZXQgZ2V0X2NoZWNrZWQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImNoZWNrZWRcIiBKeC5EZWNvZGVyLmJvb2xcbiAgbGV0IHNldF9jaGVja2VkIHRoaXMgeCA9IEp4Lk9iai5zZXQgdGhpcyBcImNoZWNrZWRcIiBKeC5FbmNvZGVyLmJvb2wgeFxuICBsZXQgZ2V0X2ZpbGVzIHRoaXMgPSBKeC5PYmouZ2V0IHRoaXMgXCJmaWxlc1wiIEp4LkRlY29kZXIuYXJyYXlfanNcbmVuZFxuXG5tb2R1bGUgVGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJUZXh0XCJcbiAgbGV0IHRvX2NoYXJhY3Rlcl9kYXRhIHQgPSB0XG5lbmRcblxubW9kdWxlIENvbW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSngudFxuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiQ29tbWVudFwiXG4gIGxldCB0b19jaGFyYWN0ZXJfZGF0YSB0ID0gdFxuICBsZXQgbWFrZSBkYXRhID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyBkYXRhXG5lbmRcblxubW9kdWxlIEZyYWdtZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdCA9IEp4Lmdsb2JhbCBcIkRvY3VtZW50RnJhZ21lbnRcIlxuICBsZXQgdG9fbm9kZSB0ID0gdFxuICBsZXQgbWFrZSAoKSA9IEp4Lk9iai5uZXcwIHRcblxuICBsZXQgcmVwbGFjZV9jaGlsZHJlbiB0aGlzIGNoaWxkcmVuID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZXBsYWNlQ2hpbGRyZW5cIiBjaGlsZHJlblxuZW5kXG5cbm1vZHVsZSBEb2N1bWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBKeC50XG5cbiAgbGV0IHRoaXMgPSBHbG9iYWwuZG9jdW1lbnRcbiAgbGV0IHRvX25vZGUgdGhpcyA9IHRoaXNcbiAgbGV0IGdldF9jb29raWVzICgpID0gSnguT2JqLmdldCBHbG9iYWwuZG9jdW1lbnQgXCJjb29raWVcIiBKeC5EZWNvZGVyLnN0cmluZ1xuICBsZXQgc2V0X2Nvb2tpZXMgY29va2llcyA9IEp4Lk9iai5zZXQgdGhpcyBcImNvb2tpZVwiIEp4LkVuY29kZXIuc3RyaW5nIGNvb2tpZXNcblxuICBsZXQgZ2V0X2VsZW1lbnRfYnlfaWQgaWQgPVxuICAgIEp4LkRlY29kZXIubnVsbGFibGVcbiAgICAgIChmdW4geCAtPiB4KVxuICAgICAgKEp4Lk9iai5jYWxsX2pzIEdsb2JhbC5kb2N1bWVudCBcImdldEVsZW1lbnRCeUlkXCJcbiAgICAgICAgIFt8IEp4LkVuY29kZXIuc3RyaW5nIGlkIHxdXG4gICAgICApXG5cbiAgbGV0IHF1ZXJ5X3NlbGVjdG9yIHNlbGVjdG9yID1cbiAgICBKeC5PYmouY2FsbDEgR2xvYmFsLmRvY3VtZW50IFwicXVlcnlTZWxlY3RvclwiXG4gICAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIGpzKVxuICAgICAgSnguRW5jb2Rlci5zdHJpbmcgc2VsZWN0b3JcblxuICBsZXQgcXVlcnkgc2VsZWN0b3IgPVxuICAgIEp4Lk9iai5jYWxsMSBHbG9iYWwuZG9jdW1lbnQgXCJxdWVyeVNlbGVjdG9yXCJcbiAgICAgIH5yZXR1cm46SnguRGVjb2Rlci4obnVsbGFibGUganMpXG4gICAgICBKeC5FbmNvZGVyLnN0cmluZyBzZWxlY3RvclxuXG4gIGxldCBxdWVyeV9zZWxlY3Rvcl9hbGwgX3NlbGVjdG9yID0gZmFpbHdpdGggXCJ0b2RvXCJcblxuICBsZXQgY3JlYXRlX3RleHRfbm9kZSB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbF9qcyBHbG9iYWwuZG9jdW1lbnQgXCJjcmVhdGVUZXh0Tm9kZVwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIHRleHQgfF1cblxuICBsZXQgY3JlYXRlX2VsZW1lbnQgbmFtZSA9XG4gICAgSnguT2JqLmNhbGxfanMgR2xvYmFsLmRvY3VtZW50IFwiY3JlYXRlRWxlbWVudFwiIFt8IEp4LkVuY29kZXIuc3RyaW5nIG5hbWUgfF1cblxuICBsZXQgYWN0aXZlX2VsZW1lbnQgdGhpcyA9IEp4Lk9iai5nZXQgdGhpcyBcImFjdGl2ZUVsZW1lbnRcIiBKeC5EZWNvZGVyLmpzXG5lbmRcblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgaGFzaCB0ID0gSnguT2JqLmdldCB0IFwiaGFzaFwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaGFzaCB0IHYgPSBKeC5PYmouc2V0IHQgXCJoYXNoXCIgSnguRW5jb2Rlci5zdHJpbmcgdlxuICBsZXQgaHJlZiB0ID0gSnguT2JqLmdldCB0IFwiaHJlZlwiIEp4LkRlY29kZXIuc3RyaW5nXG4gIGxldCBzZXRfaHJlZiB0IHYgPSBKeC5PYmouc2V0IHQgXCJocmVmXCIgSnguRW5jb2Rlci5zdHJpbmcgdlxuICBsZXQgcmVwbGFjZSB0IHVybCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJyZXBsYWNlXCIgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG4gIGxldCBhc3NpZ24gdCB1cmwgPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwiYXNzaWduXCIgSnguRW5jb2Rlci5zdHJpbmcgdXJsXG4gIGxldCByZWxvYWQgdCA9IEp4Lk9iai5jYWxsMCB0IFwicmVsb2FkXCIgfnJldHVybjpKeC5EZWNvZGVyLmFueSAoKVxuICBsZXQgaG9zdG5hbWUgdCA9IEp4Lk9iai5nZXQgdCBcImhvc3RuYW1lXCIgSnguRGVjb2Rlci5zdHJpbmdcbiAgbGV0IHNlYXJjaCB0ID0gSnguT2JqLmdldCB0IFwic2VhcmNoXCIgSnguRGVjb2Rlci5zdHJpbmdcbmVuZFxuXG5tb2R1bGUgV2luZG93ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgdGhpcyA9IEdsb2JhbC53aW5kb3dcbiAgbGV0IHRvX2V2ZW50X3RhcmdldCB0ID0gdFxuICBsZXQgbG9jYXRpb24gPSBKeC5PYmouZ2V0IHRoaXMgXCJsb2NhdGlvblwiIEp4LkRlY29kZXIuanNcblxuICBsZXQgc2V0X2ludGVydmFsIGYgbXMgPVxuICAgIEp4Lk9iai5jYWxsMiBHbG9iYWwud2luZG93IFwic2V0SW50ZXJ2YWxcIiB+cmV0dXJuOkp4LkRlY29kZXIuaW50XG4gICAgICBKeC5FbmNvZGVyLmZ1bjEgSnguRW5jb2Rlci5pbnQgZiBtc1xuXG4gIGxldCBzZXRfdGltZW91dCBmIG1zID1cbiAgICBKeC5PYmouY2FsbDIgR2xvYmFsLndpbmRvdyBcInNldFRpbWVvdXRcIiB+cmV0dXJuOkp4LkRlY29kZXIuaW50XG4gICAgICBKeC5FbmNvZGVyLmZ1bjEgSnguRW5jb2Rlci5pbnQgZiBtc1xuXG4gIGxldCBjbGVhcl90aW1lb3V0IGlkID1cbiAgICBKeC5PYmouY2FsbDFfdW5pdCBHbG9iYWwud2luZG93IFwiY2xlYXJUaW1lb3V0XCIgSnguRW5jb2Rlci5pbnQgaWRcblxuICBsZXQgYWxlcnQgdGV4dCA9IEp4Lk9iai5jYWxsMV91bml0IHRoaXMgXCJhbGVydFwiIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICBsZXQgY29uZmlybSB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcImNvbmZpcm1cIiB+cmV0dXJuOkp4LkRlY29kZXIuYm9vbCBKeC5FbmNvZGVyLnN0cmluZyB0ZXh0XG5cbiAgbGV0IHByb21wdCB0ZXh0ID1cbiAgICBKeC5PYmouY2FsbDEgdGhpcyBcInByb21wdFwiXG4gICAgICB+cmV0dXJuOkp4LkRlY29kZXIuKG51bGxhYmxlIHN0cmluZylcbiAgICAgIEp4LkVuY29kZXIuc3RyaW5nIHRleHRcblxuICAoKiBFdmVudCBoYW5kbGluZyAqKVxuXG4gIGxldCBiaW5kIGV2ZW50X3R5cGUgZiA9XG4gICAgSnguT2JqLmNhbGwyX3VuaXQgdGhpcyBcImFkZEV2ZW50TGlzdGVuZXJcIiBKeC5FbmNvZGVyLmpzIEp4LkVuY29kZXIuZnVuMVxuICAgICAgZXZlbnRfdHlwZSBmXG5cbiAgbGV0IHVuYmluZCBldmVudF90eXBlID1cbiAgICBKeC5PYmouY2FsbF9qc191bml0IHRoaXMgXCJyZW1vdmVFdmVudExpc3RlclwiIFt8IEp4LkVuY29kZXIuanMgZXZlbnRfdHlwZSB8XVxuZW5kXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJjYW1sX2NhbGwzIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsInRleHQiLCJ0aGlzJCIsImxlbmd0aCIsImNzdF9zZXRQcm9wZXJ0eSIsInNldCIsIm5hbWUiLCJ2YWx1ZSIsInVuc2V0IiwidGFyZ2V0IiwiZ2V0IiwidG9fc3RyaW5nIiwibWFrZSIsInQiLCJwcmV2ZW50X2RlZmF1bHQiLCJjaGFuZ2UiLCJyZXNpemUiLCJjc3RfY2xpY2siLCJjbGljayIsImRibGNsaWNrIiwibW91c2Vtb3ZlIiwicGFnZV94IiwicGFnZV95Iiwia2V5ZG93biIsImtleSIsImNvZGUiLCJiZWZvcmVfaW5wdXQiLCJpbnB1dCIsImNhbmNlbCIsImRhdGEiLCJmdWxsc2NyZWVuX2NoYW5nZSIsImZ1bGxzY3JlZW5fZXJyb3IiLCJwb3BzdGF0ZSIsImhhc2hjaGFuZ2UiLCJjc3RfYmx1ciIsImJsdXIiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJzdWJtaXQiLCJ0b2dnbGUiLCJhZGQiLCJjc3RfcmVtb3ZlIiwicmVtb3ZlIiwic2l6ZSIsInR5cGUiLCJsYXN0X21vZGlmaWVkIiwidG9fYmxvYiIsInRvX2pzIiwicGFyZW50IiwiZmlyc3RfY2hpbGQiLCJsYXN0X2NoaWxkIiwiY3N0X25leHRTaWJsaW5nIiwibmV4dF9zaWJsaW5nIiwibmV4dF9zaWJsaW5nX2pzIiwiaXRlcl9jaGlsZHJlbiIsIm5vZGVfbGlzdCIsImNoaWxkcmVuIiwiYWNjIiwiYyIsImNsb25lX25vZGUiLCJkZWVwIiwiaXNfc2FtZV9ub2RlIiwib3RoZXIiLCJyZXBsYWNlX3dpdGgiLCJhcHBlbmRfdGV4dCIsImFwcGVuZF9jaGlsZCIsInJlbW92ZV9jaGlsZCIsImluc2VydF9iZWZvcmUiLCJyZWZlcmVuY2UiLCJuZXdfbm9kZSIsImluc2VydF9hZnRlciIsInJlcGxhY2VfY2hpbGQiLCJjc3RfcmVwbGFjZUNoaWxkcmVuIiwicmVwbGFjZV9jaGlsZHJlbiIsImluc2VydF9hZGphY2VudF9lbGVtZW50IiwicG9zaXRpb24iLCJub2RlIiwiaW5zZXJ0X2JlZm9yZV9iZWdpbiIsImluc2VydF9hZnRlcl9iZWdpbiIsImluc2VydF9iZWZvcmVfZW5kIiwiaW5zZXJ0X2FmdGVyX2VuZCIsImNzdF90ZXh0Q29udGVudCIsInNldF90ZXh0X2NvbnRlbnQiLCJnZXRfdGV4dF9jb250ZW50Iiwic2V0X2lubmVyX2h0bWwiLCJjc3RfYWRkRXZlbnRMaXN0ZW5lciIsImJpbmQiLCJldmVudF90eXBlIiwidW5iaW5kIiwiZm9jdXMiLCJoaWRlX3BvcG92ZXIiLCJzaG93X3BvcG92ZXIiLCJ0b2dnbGVfcG9wb3ZlciIsIm1hdGNoZXMiLCJzZWxlY3RvcnMiLCJjbG9zZXN0Iiwic2VsZWN0Iiwic2V0X2F0dHIiLCJnZXRfYXR0ciIsInVuc2V0X2F0dHIiLCJnZXRfY2xhc3NfbGlzdCIsImNzdF9zdHlsZSIsInNldF9zdHlsZSIsIngiLCJnZXRfc3R5bGUiLCJjc3QiLCJyZXNldF9zdHlsZSIsImNzdF9ocmVmIiwiZ2V0X2hyZWYiLCJzZXRfaHJlZiIsImNzdF92YWx1ZSIsImdldF92YWx1ZSIsInNldF92YWx1ZSIsInJlc2V0X3ZhbHVlIiwic2V0X2Rpc2FibGVkIiwic2V0X2F1dG9mb2N1cyIsImdldF9vZmZzZXRfd2lkdGgiLCJnZXRfY2xpZW50X3dpZHRoIiwiZ2V0X3Njcm9sbF93aWR0aCIsImNzdF9jaGVja2VkIiwiZ2V0X2NoZWNrZWQiLCJzZXRfY2hlY2tlZCIsImdldF9maWxlcyIsInRvX2NoYXJhY3Rlcl9kYXRhIiwidG9fbm9kZSIsInBhcmFtIiwiY3N0X2Nvb2tpZSIsImdldF9jb29raWVzIiwic2V0X2Nvb2tpZXMiLCJjb29raWVzIiwiZ2V0X2VsZW1lbnRfYnlfaWQiLCJpZCIsImNzdF9xdWVyeVNlbGVjdG9yIiwicXVlcnlfc2VsZWN0b3IiLCJzZWxlY3RvciIsInF1ZXJ5IiwicXVlcnlfc2VsZWN0b3JfYWxsIiwiY3JlYXRlX3RleHRfbm9kZSIsImNyZWF0ZV9lbGVtZW50IiwiYWN0aXZlX2VsZW1lbnQiLCJjc3RfaGFzaCIsImhhc2giLCJzZXRfaGFzaCIsInYiLCJocmVmIiwicmVwbGFjZSIsInVybCIsImFzc2lnbiIsInJlbG9hZCIsImhvc3RuYW1lIiwic2VhcmNoIiwidG9fZXZlbnRfdGFyZ2V0IiwibG9jYXRpb24iLCJzZXRfaW50ZXJ2YWwiLCJtcyIsInNldF90aW1lb3V0IiwiY2xlYXJfdGltZW91dCIsImFsZXJ0IiwiY29uZmlybSIsInByb21wdCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVIsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFWLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBWixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLHVCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLElDYWtCLDBEQUEyQztBQUFBO0FBQUEsWUFBQUMs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QTtBQUFBLFlBQUFxRixPQUFBQyxZQUFBMUc7QUFBQUEsSUFLeEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUNjO0FBQUE7QUFBQSxZQUFBMkcsU0FBQUQ7QUFBQUEsUUFBQSxJQUdrQztBQUFBLElBQXdCLDZEQUFHO0FBQUE7QUFBQSxHQTlCdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUR6V3pEIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDQ3ODQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX3dlYnNvY2tldC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBHbG9iYWwgPSBTdGR3ZWJfZ2xvYmFsXG4gIG1vZHVsZSBFdmVudCA9IFN0ZHdlYl9kb20uRXZlbnRcbmVuZFxuXG50eXBlIHQgPSBKeC50XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBsZXQgZGF0YSB0ID0gSnguT2JqLmdldCB0IFwiZGF0YVwiIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgKCogR2VuZXJpYyBldmVudHMgKilcblxuICBsZXQgb3BlbicgPSBFdmVudC5OYW1lLm1ha2UgXCJvcGVuXCJcbiAgbGV0IG1lc3NhZ2UgPSBFdmVudC5OYW1lLm1ha2UgXCJtZXNzYWdlXCJcbiAgbGV0IGNsb3NlID0gRXZlbnQuTmFtZS5tYWtlIFwiY2xvc2VcIlxuICBsZXQgZXJyb3IgPSBFdmVudC5OYW1lLm1ha2UgXCJlcnJvclwiXG5lbmRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJXZWJTb2NrZXRcIlxubGV0IG1ha2UgdXJsID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyB1cmxcblxubGV0IGJpbmQgdGhpcyBldmVudF90eXBlIGYgPVxuICBKeC5PYmouY2FsbDJfdW5pdCB0aGlzIFwiYWRkRXZlbnRMaXN0ZW5lclwiIEp4LkVuY29kZXIuanMgSnguRW5jb2Rlci5mdW4xXG4gICAgZXZlbnRfdHlwZSBmXG5cbmxldCB1bmJpbmQgdGhpcyBldmVudF90eXBlID1cbiAgSnguT2JqLmNhbGxfanNfdW5pdCB0aGlzIFwicmVtb3ZlRXZlbnRMaXN0ZXJcIiBbfCBKeC5FbmNvZGVyLmpzIGV2ZW50X3R5cGUgfF1cblxuKCogVE9ETzogcGFyYW1ldGVycyBgY29kZWAgYW5kIGByZWFzb25gIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKilcbmxldCBjbG9zZSA/Y29kZSA/cmVhc29uIHQgPVxuICBKeC5PYmouY2FsbDJfdW5pdCB0IFwiY2xvc2VcIlxuICAgIChKeC5FbmNvZGVyLm9wdGlvbmFsIEp4LkVuY29kZXIuaW50KVxuICAgIChKeC5FbmNvZGVyLm9wdGlvbmFsIEp4LkVuY29kZXIuc3RyaW5nKVxuICAgIGNvZGUgcmVhc29uXG5cbmxldCBzZW5kIHQgZGF0YSA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJzZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgZGF0YVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw2IiwiYTQiLCJhNSIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGR3ZWJfU3Rkd2ViX2RvbSIsImRhdGEiLCJ0Iiwib3BlbiIsIm1lc3NhZ2UiLCJjc3RfY2xvc2UiLCJjbG9zZSIsImVycm9yIiwibWFrZSIsInVybCIsImJpbmQiLCJ0aGlzJCIsImV2ZW50X3R5cGUiLCJ1bmJpbmQiLCJjb2RlIiwicmVhc29uIiwic2VuZCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRSxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsWUFBQUMsS0FBQUMsR0NRZSxtREFBcUM7QUFBQTtBQUFBLElBQUFDLE9BSXRDO0FBQUEsSUFBQUMsVUFDRTtBQUFBLElBQUFDLFlEYmhCO0FBQUEsSUFBQUMsUUNjYztBQUFBLElBQUFDLFFBQ0E7QUFBQSxJQUFBTCxJQUdOO0FBQUEsWUFBQU0sS0FBQUMsS0FDTyxnREFBbUM7QUFBQSxZQUFBQyxLQUFBQyxPQUFBQyxZQUFBeEI7QUFBQUEsSUFHaEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUNjO0FBQUE7QUFBQSxZQUFBeUIsT0FBQUYsT0FBQUM7QUFBQUEsUUFBQSxJQUdrQztBQUFBLElBQXdCLDREQUFHO0FBQUE7QUFBQSxZQUFBTixRQUFBUSxNQUFBQyxRQUFBYjtBQUFBQTtBQUFBQSxLQUFBLElBTXpFO0FBQUEsU0FEQTtBQUFBLElBQW9DLCtEQUV6QjtBQUFBO0FBQUEsWUFBQWMsS0FBQWQsR0FBQUQ7QUFBQUEsSUFFRyx5REFBaUQ7QUFBQTtBQUFBLEdBakJ0QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRGxCN0IiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NDg2MSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfdXJsX3NlYXJjaF9wYXJhbXMubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxuZW5kXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJVUkxTZWFyY2hQYXJhbXNcIlxubGV0IG9mX3N0cmluZyBzID0gSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLnN0cmluZyBzXG5sZXQgZW1wdHkgKCkgPSBKeC5PYmoubmV3MCB0XG5cbmxldCBtYWtlIGl0ZW1zID1cbiAgSnguT2JqLm5ldzEgdCBKeC5FbmNvZGVyLm9ialxuICAgIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiAoaywgSnguRW5jb2Rlci5zdHJpbmcgdikpIGl0ZW1zKVxuXG5sZXQgZ2V0IHQgcGFyYW0gPVxuICBKeC5PYmouY2FsbDEgdCBcImdldFwiXG4gICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBzdHJpbmcpXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgcGFyYW1cblxubGV0IGRlbGV0ZSB0ID92YWx1ZSBwYXJhbSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgdmFsdWUgLT4gSnguZW5jb2RlIEp4LkVuY29kZXIuc3RyaW5nIHZhbHVlXG4gIGluXG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJkZWxldGVcIiBKeC5FbmNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueSBwYXJhbSB2YWx1ZVxuXG5sZXQgaGFzIHQgP3ZhbHVlIHRleHQgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IE5vbmUgLT4gSngudW5kZWZpbmVkXG4gICAgfCBTb21lIHZhbHVlIC0+IEp4LmVuY29kZSBKeC5FbmNvZGVyLnN0cmluZyB2YWx1ZVxuICBpblxuICBKeC5PYmouY2FsbDIgdCBcImhhc1wiIH5yZXR1cm46SnguRGVjb2Rlci5ib29sIEp4LkVuY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuYW55XG4gICAgdGV4dCB2YWx1ZVxuXG5sZXQgdG9fc3RyaW5nIHQgPSBKeC5PYmouY2FsbDAgdCBcInRvU3RyaW5nXCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyAoKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiY2FtbF9jYWxsNCIsImEzIiwiY2FtbF9jYWxsNSIsImE0IiwiY2FtbF9jYWxsNiIsImE1IiwiY2FtbF9jYWxsNyIsImE2IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZGxpYl9MaXN0IiwidCIsIm9mX3N0cmluZyIsInMiLCJlbXB0eSIsInBhcmFtIiwibWFrZSIsIml0ZW1zIiwidiIsImsiLCJnZXQiLCJkZWxldGUkIiwidmFsdWUiLCJoYXMiLCJ0ZXh0IiwidG9fc3RyaW5nIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFaLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLElDTVE7QUFBQSxZQUFBQyxVQUFBQyxHQUNVLDhDQUFpQztBQUFBLFlBQUFDLE1BQUFDLE9BQ3BDLGdDQUFhO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUE7QUFBQUEsS0FBQTtBQUFBLE9BSXhCO0FBQUE7QUFBQSxrQkFBQUY7QUFBQUEsY0FBQUcsSUFBVSxVQUFBQyxJQUFBO0FBQUEsVUFBbUIsdUNBQW1CO0FBQUEsU0FBRTtBQUFBO0FBQUEsSUFBTztBQUFBO0FBQUEsWUFBQUMsSUFBQVQsR0FBQUk7QUFBQUEsUUFBQSxJQUlyQztBQUFBLElBQWUsb0RBQ1o7QUFBQTtBQUFBLFlBQUFNLFFBQUFWLEdBQUFXLE9BQUFQO0FBQUFBLElBR3pCO0FBQUEsU0FBQU8sVUFBQSxVQUFBQSxVQUdrQjtBQUFBO0FBQUEsU0FBQUEsVUFETjtBQUFBLElBR1o7QUFBQSw0RUFBeUU7QUFBQTtBQUFBLFlBQUFDLElBQUFaLEdBQUFXLE9BQUFFO0FBQUFBLElBR3pFO0FBQUEsU0FBQUYsVUFBQSxVQUFBQSxVQUdrQjtBQUFBO0FBQUEsU0FBQUEsVUFETjtBQUFBLElBR1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUNZO0FBQUE7QUFBQSxZQUFBRyxVQUFBZDtBQUFBQSxJQUVJLDBEQUFzRDtBQUFBO0FBQUEsR0E5QnJDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFRE5uQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ0OTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9zdG9yYWdlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgbG9jYWwgPSBKeC5nbG9iYWwgXCJsb2NhbFN0b3JhZ2VcIlxuXG5sZXQgZ2V0IHQgbmFtZSA9XG4gIEp4Lk9iai5jYWxsMSB0IFwiZ2V0SXRlbVwiXG4gICAgfnJldHVybjpKeC5EZWNvZGVyLihudWxsYWJsZSBzdHJpbmcpXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuXG5sZXQgc2V0IHQgbmFtZSB2YWx1ZSA9XG4gIEp4Lk9iai5jYWxsMl91bml0IHQgXCJzZXRJdGVtXCIgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB2YWx1ZVxuXG5sZXQgZGVsIHQgbmFtZSA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJyZW1vdmVJdGVtXCIgSnguRW5jb2Rlci5zdHJpbmcgbmFtZVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsNCIsImExIiwiYTIiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDYiLCJhNSIsIkp4IiwibG9jYWwiLCJnZXQiLCJ0IiwibmFtZSIsInNldCIsInZhbHVlIiwiZGVsIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQU4sR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFSLEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxRQ0VZO0FBQUEsWUFBQUMsSUFBQUMsR0FBQUM7QUFBQUEsUUFBQSxJQUlZO0FBQUEsSUFBZSx1REFDYjtBQUFBO0FBQUEsWUFBQUMsSUFBQUYsR0FBQUMsTUFBQUU7QUFBQUEsSUFHeEI7QUFBQSx5RUFBNEU7QUFBQTtBQUFBLFlBQUFDLElBQUFKLEdBQUFDO0FBQUFBLElBRTdELCtEQUF1RDtBQUFBO0FBQUEsR0FWcEM7QUFBQTtBQUFBO0FBQUEsRURGcEMiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTAwNSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfb2JqZWN0Lm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIk9iamVjdFwiXG5cbmxldCBmcm9tX2VudHJpZXMgPVxuICBKeC5PYmouY2FsbDEgdCBcImZyb21FbnRyaWVzXCIgfnJldHVybjpKeC5EZWNvZGVyLmpzIEp4LkVuY29kZXIuanNcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDQiLCJhMSIsImEyIiwiYTMiLCJKeCIsInQiLCJmcm9tX2VudHJpZXMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyxJQ0VRO0FBQUEsSUFBQUM7QUFBQUEsTUFHTjtBQUFBLEdBQWdFO0FBQUE7QUFBQTtBQUFBLEVETGxFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDUwMzIsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2l0ZXJhdG9yLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwidHlwZSAnYSB0ID0gSngudFxudHlwZSAnYSBuZXh0ID0gSngudFxuXG5sZXQgbmV4dCB0ID0gSnguT2JqLmNhbGxfanMgdCBcIm5leHRcIiBbfHxdXG5sZXQgbmV4dF9pc19kb25lIG5leHQgPSBKeC5PYmouZ2V0IG5leHQgXCJkb25lXCIgSnguRGVjb2Rlci5ib29sXG5sZXQgbmV4dF92YWx1ZSBuZXh0ID0gSnguT2JqLmdldCBuZXh0IFwidmFsdWVcIiBKeC5EZWNvZGVyLmFueVxuXG5sZXQgaXRlciBmIHQgPVxuICBsZXQgaXNfZG9uZSA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSBub3QgIWlzX2RvbmUgZG9cbiAgICBsZXQgbiA9IG5leHQgdCBpblxuICAgIGlmIG5leHRfaXNfZG9uZSBuIHRoZW4gaXNfZG9uZSA6PSB0cnVlXG4gICAgZWxzZVxuICAgICAgbGV0IHYgPSBuZXh0X3ZhbHVlIG4gaW5cbiAgICAgIGYgdlxuICBkb25lXG5cbmxldCB1bnNhZmVfb2ZfanMganMgPSBqc1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJKeCIsIm5leHQiLCJ0IiwibmV4dF9pc19kb25lIiwibmV4dF92YWx1ZSIsIml0ZXIiLCJpc19kb25lIiwibiIsInYiLCJ1bnNhZmVfb2ZfanMiLCJqcyJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE9BQUFDLEtBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQ0dhLDZDQUE0QjtBQUFBLFlBQUFDLGFBQUFGO0FBQUFBLElBQ2pCLHNEQUFzQztBQUFBO0FBQUEsWUFBQUcsV0FBQUg7QUFBQUEsSUFDeEMsd0RBQXNDO0FBQUE7QUFBQSxZQUFBSSxLQUFBVixHQUFBTztBQUFBQSxRQUFBSSxVQUkxRDtBQUFBO0FBQUE7QUFBQSxTQUFBQyxJQUNVO0FBQUEsS0FDTDtBQUFBLE1BQW9CO0FBQUEsY0FBQUMsSUFFYixlQUNSO0FBQUE7QUFBQSxHQUNBO0FBQUEsWUFBQUMsYUFBQUMsSUFFZ0IsVUFBRTtBQUFBLEdEakJ4QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1MDc1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9tYXAubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgSXRlcmF0b3IgPSBTdGR3ZWJfaXRlcmF0b3JcblxudHlwZSAnYSB0ID0gSngudFxuXG5sZXQgdCA9IEp4Lmdsb2JhbCBcIk1hcFwiXG5sZXQgdG9fanMgdCA9IHRcbmxldCBvZl9qcyB0ID0gdFxubGV0IG1ha2UgKCkgPSBKeC5PYmoubmV3MCB0XG5sZXQgY2xlYXIgdCA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcImNsZWFyXCIgW3x8XVxubGV0IHNldCB0IGsgdiA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcInNldFwiIFt8IGs7IEp4LkVuY29kZXIuYW55IHYgfF1cbmxldCBnZXQgdCBrID0gSnguRGVjb2Rlci5vcHRpb25hbCBKeC5EZWNvZGVyLmFueSAoSnguT2JqLmNhbGxfanMgdCBcImdldFwiIFt8IGsgfF0pXG5sZXQgZGVsZXRlIHQgayA9IEp4Lk9iai5jYWxsX2pzX3VuaXQgdCBcImRlbGV0ZVwiIFt8IGsgfF1cbmxldCBrZXlzIHQgPSBKeC5PYmouY2FsbF9qcyB0IFwia2V5c1wiIFt8fF1cbmxldCBzaXplIHQgPSBKeC5PYmouZ2V0IHQgXCJzaXplXCIgSnguRGVjb2Rlci5pbnRcbmxldCB2YWx1ZXMgdCA9IEp4Lk9iai5jYWxsX2pzIHQgXCJ2YWx1ZXNcIiBbfHxdXG5cbmxldCBmaXJzdF9rZXkgdCA9XG4gIGxldCBpdGVyID0ga2V5cyB0IGluXG4gIGxldCBuZXh0ID0gSXRlcmF0b3IubmV4dCBpdGVyIGluXG4gIGlmIEl0ZXJhdG9yLm5leHRfaXNfZG9uZSBuZXh0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKEl0ZXJhdG9yLm5leHRfdmFsdWUgbmV4dClcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIkp4IiwidCIsInRvX2pzIiwib2ZfanMiLCJtYWtlIiwicGFyYW0iLCJjbGVhciIsInNldCIsImsiLCJ2IiwiZ2V0IiwiZGVsZXRlJCIsImtleXMiLCJzaXplIiwidmFsdWVzIiwiZmlyc3Rfa2V5IiwiaXRlciIsIm5leHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsSUNJUTtBQUFBLFlBQUFDLE1BQUFELEdBQ00sU0FBQztBQUFBLFlBQUFFLE1BQUFGLEdBQ0QsU0FBQztBQUFBLFlBQUFHLEtBQUFDLE9BQ0QsZ0NBQWE7QUFBQSxZQUFBQyxNQUFBTCxHQUNiLDhDQUFrQztBQUFBLFlBQUFNLElBQUFOLEdBQUFPLEdBQUFDO0FBQUFBLFFBQUEsSUFDRTtBQUFBLElBQWdCLDBDQUFHO0FBQUE7QUFBQSxZQUFBQyxJQUFBVCxHQUFBTztBQUFBQSxRQUFBLElBQ3BCO0FBQUEsSUFBZ0M7QUFBQTtBQUFBLFlBQUFHLFFBQUFWLEdBQUFPLEdBQ2hFLGtEQUFzQztBQUFBLFlBQUFJLEtBQUFYLEdBQzFDLDZDQUE0QjtBQUFBLFlBQUFZLEtBQUFaLEdBQzVCLG1EQUFrQztBQUFBLFlBQUFhLE9BQUFiLEdBQ2hDLCtDQUE4QjtBQUFBLFlBQUFjLFVBQUFkO0FBQUFBLFFBQUFlLE9BR2hDLFNBQUFDLE9BQ0E7QUFBQSxJQUNSO0FBQUE7QUFBQSxrQkFBK0MsMkNBQTBCO0FBQUE7QUFBQSxHQWZ2RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRURKdkIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTE0MywiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfanNvbi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgdCA9IEp4LnRcblxubGV0IHQgPSBKeC5nbG9iYWwgXCJKU09OXCJcblxubGV0IHN0cmluZ2lmeSA/KHJlcGxhY2VyID0gSngudW5kZWZpbmVkKSA/KHNwYWNlID0gSngudW5kZWZpbmVkKSB2YWx1ZSA9XG4gIEp4Lk9iai5jYWxsMyB0IFwic3RyaW5naWZ5XCIgfnJldHVybjpKeC5EZWNvZGVyLnN0cmluZyBKeC5FbmNvZGVyLmFueVxuICAgIEp4LkVuY29kZXIuYW55IEp4LkVuY29kZXIuYW55IHZhbHVlIHJlcGxhY2VyIHNwYWNlXG5cbmxldCBwYXJzZSA/cmV2aXZlciB0ZXh0ID1cbiAgbGV0IHJldml2ZXIgPVxuICAgIG1hdGNoIHJldml2ZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBKeC51bmRlZmluZWRcbiAgICB8IFNvbWUgcmV2aXZlciAtPiByZXZpdmVyXG4gIGluXG4gIEp4Lk9iai5jYWxsMiB0IFwicGFyc2VcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5hbnlcbiAgICB0ZXh0IHJldml2ZXJcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDciLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiYTYiLCJjYW1sX2NhbGw5IiwiYTciLCJhOCIsIkp4IiwidCIsInN0cmluZ2lmeSIsIm9wdCIsInZhbHVlIiwicmVwbGFjZXIiLCJzcGFjZSIsInBhcnNlIiwicmV2aXZlciIsInRleHQiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBVCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBQyxJQUFBRSxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsT0FBQUMsS0FBQSxtQ0FBQUMsSUNFUTtBQUFBLFlBQUFDLFVBQUEsR0FBQUMsS0FBQUM7QUFBQUEsUUFBQUMsV0FFTSxrQkFBQUMsUUFBQTtBQUFBLElBQ1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDb0Q7QUFBQTtBQUFBLFlBQUFDLE1BQUFDLFNBQUFDO0FBQUFBLElBR3BEO0FBQUEsU0FBQUQsWUFBQSxZQUFBQSxZQUdvQjtBQUFBO0FBQUEsU0FBQUEsWUFEUjtBQUFBLElBR1o7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUNjO0FBQUE7QUFBQSxHQWJRO0FBQUE7QUFBQTtBQUFBLEVERnhCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDUyMDEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2Zvcm1fZGF0YS5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBEb20gPSBTdGR3ZWJfZG9tXG4gIG1vZHVsZSBPYmplY3QgPSBTdGR3ZWJfb2JqZWN0XG5lbmRcblxudHlwZSB0ID0gSngudFxuXG5sZXQgY29uc3RyID0gSnguZ2xvYmFsIFwiRm9ybURhdGFcIlxuXG5sZXQgbWFrZSA/c3VibWl0dGVyIGZvcm0gPVxuICBtYXRjaCBzdWJtaXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gSnguT2JqLm5ldzEgY29uc3RyIERvbS5Ob2RlLnRvX2pzIGZvcm1cbiAgfCBTb21lIHN1Ym1pdHRlciAtPlxuICAgIEp4Lk9iai5uZXcyIGNvbnN0ciBEb20uTm9kZS50b19qcyBEb20uTm9kZS50b19qcyBmb3JtIHN1Ym1pdHRlclxuXG5sZXQgZW50cmllcyB0ID1cbiAgbGV0IGl0ZXJfanMgPSBKeC5PYmouY2FsbF9qcyB0IFwiZW50cmllc1wiIFt8fF0gaW5cbiAgU3Rkd2ViX2l0ZXJhdG9yLnVuc2FmZV9vZl9qcyBpdGVyX2pzXG5cbmxldCB0b19qc29uID0gT2JqZWN0LmZyb21fZW50cmllc1xubGV0IHRvX2pzIHQgPSB0XG5cbmxldCB0b19hc3NvYyB0ID1cbiAgbGV0IGl0ID0gZW50cmllcyB0IGluXG4gIGxldCBvdXQgPSByZWYgW10gaW5cbiAgU3Rkd2ViX2l0ZXJhdG9yLml0ZXJcbiAgICAoZnVuIHggLT5cbiAgICAgIGxldCBhcnIgPSBKeC5EZWNvZGVyLmFycmF5IEp4LkRlY29kZXIuc3RyaW5nIHggaW5cbiAgICAgIGxldCBpdGVtID0gKEFycmF5LmdldCBhcnIgMCwgQXJyYXkuZ2V0IGFyciAxKSBpblxuICAgICAgb3V0IDo9IGl0ZW0gOjogIW91dFxuICAgIClcbiAgICBpdDtcbiAgTGlzdC5yZXYgIW91dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NoZWNrX2JvdW5kIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDUiLCJhMyIsImE0IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfaXRlcmF0b3IiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfZG9tIiwiU3Rkd2ViX1N0ZHdlYl9vYmplY3QiLCJjb25zdHIiLCJtYWtlIiwic3VibWl0dGVyIiwiZm9ybSIsImVudHJpZXMiLCJ0IiwiaXRlcl9qcyIsInRvX2pzb24iLCJ0b19qcyIsInRvX2Fzc29jIiwiaXQiLCJvdXQiLCJ4IiwiYXJyIiwiaXRlbSJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxtQkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLFNDT2E7QUFBQSxZQUFBQyxLQUFBQyxXQUFBQztBQUFBQSxJQUdYO0FBQUEsS0FDVSxvRUFFdUQ7QUFBQSxRQUFBRCxjQUhqRTtBQUFBLElBR0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEseUJBQStEO0FBQUE7QUFBQSxZQUFBRSxRQUFBQztBQUFBQSxRQUFBQyxVQUduRDtBQUFBLElBQ2Qsb0RBQW9DO0FBQUE7QUFBQSxPQUFBQyxVQVZMO0FBQUEsWUFBQUMsTUFBQUgsR0FhbkIsU0FBQztBQUFBLFlBQUFJLFNBQUFKO0FBQUFBLFFBQUFLLEtBR0osWUFBQUMsTUFDVDtBQUFBLElBQ0E7QUFBQTtBQUFBLGVBQUFDO0FBQUFBO0FBQUFBLFFBQUFDLE1BRWM7QUFBQSxZQUNtQjtBQUFBLFFBQUFDLE9BQWpCO0FBQUEsT0FDWjtBQUFBO0FBQUEsTUFBbUI7QUFBQTtBQUFBLElBRW5CLHlDQUNTO0FBQUE7QUFBQSxHQXpCa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVEUGpDIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDUyNzcsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2ZldGNoLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwib3BlbiBzdHJ1Y3RcbiAgbW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxuICBtb2R1bGUgRm9ybV9kYXRhID0gU3Rkd2ViX2Zvcm1fZGF0YVxuZW5kXG5cbigqIFJlcXVlc3QgKilcblxudHlwZSByZXF1ZXN0ID0gSngudFxuXG5tb2R1bGUgUmVxdWVzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSByZXF1ZXN0XG5cbiAgbGV0IHQgPSBKeC5nbG9iYWwgXCJSZXF1ZXN0XCJcblxuICBsZXQgbWFrZSA/b3B0aW9ucyB1cmwgPVxuICAgIG1hdGNoIG9wdGlvbnMgd2l0aFxuICAgIHwgU29tZSBvcHRpb25zIC0+IEp4Lk9iai5uZXcyIHQgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5qcyB1cmwgb3B0aW9uc1xuICAgIHwgTm9uZSAtPiBKeC5PYmoubmV3MSB0IEp4LkVuY29kZXIuc3RyaW5nIHVybFxuXG4gIGxldCBvZl9qcyA9IEp4LkRlY29kZXIuanNcbiAgbGV0IHRvX2pzID0gSnguRW5jb2Rlci5qc1xuZW5kXG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgb2Zfc3RyaW5nID0gSnguRW5jb2Rlci5zdHJpbmdcbiAgbGV0IG9mX2Zvcm1fZGF0YSA9IEZvcm1fZGF0YS50b19qc1xuICBsZXQgdG9fanMgdCA9IHRcbiAgbGV0IHVuc2FmZV9vZl9qcyB0ID0gdFxuZW5kXG5cbigqIE9wdGlvbnMgKilcblxudHlwZSBtZXRoID1cbiAgWyBgR2V0IHwgYFB1dCB8IGBQb3N0IHwgYERlbGV0ZSB8IGBIZWFkIHwgYENvbm5lY3QgfCBgVHJhY2UgfCBgT3B0aW9ucyBdXG5cbnR5cGUgbW9kZSA9IFsgYENvcnMgfCBgTm9fY29ycyBdXG50eXBlIGNyZWRlbnRpYWxzID0gWyBgT21pdCB8IGBTYW1lX29yaWdpbiB8IGBJbmNsdWRlIF1cbnR5cGUgb3B0aW9ucyA9IEp4LnRcbnR5cGUgaGVhZGVycyA9IEp4LnRcblxubW9kdWxlIEhlYWRlcnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaGVhZGVyc1xuXG4gIGxldCB0ID0gSnguZ2xvYmFsIFwiSGVhZGVyc1wiXG4gIGxldCBtYWtlICgpID0gSnguT2JqLm5ldzAgdFxuXG4gIGxldCBhcHBlbmQgdCBuYW1lIHZhbHVlID1cbiAgICBKeC5PYmouY2FsbDJfdW5pdCB0IFwiYXBwZW5kXCIgSnguRW5jb2Rlci5zdHJpbmcgSnguRW5jb2Rlci5zdHJpbmcgbmFtZSB2YWx1ZVxuXG4gIGxldCBlbnRyaWVzIHQgPSBKeC5PYmouY2FsbDAgdCBcImVudHJpZXNcIiB+cmV0dXJuOkp4LkRlY29kZXIuanMgKClcbmVuZFxuXG5tb2R1bGUgT3B0aW9ucyA9IHN0cnVjdFxuICB0eXBlIHQgPSBvcHRpb25zXG5cbiAgbGV0IG1ha2UgP2JvZHkgP21ldGggPyhoZWFkZXJzID0gW10pID9tb2RlID9jcmVkZW50aWFscyAoKSA9XG4gICAgbGV0IG9wZW4gSnguRW5jb2RlciBpblxuICAgIGxldCBmaWVsZHMgPSBbXSBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgICB8IFtdIC0+IGZpZWxkc1xuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBocyA9IEhlYWRlcnMubWFrZSAoKSBpblxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgdmFsdWUpIC0+IEhlYWRlcnMuYXBwZW5kIGhzIG5hbWUgdmFsdWUpIGhlYWRlcnM7XG4gICAgICAgIChcImhlYWRlcnNcIiwgaHMpIDo6IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBtb2RlIHdpdGhcbiAgICAgIHwgU29tZSBgQ29ycyAtPiAoXCJtb2RlXCIsIHN0cmluZyBcImNvcnNcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYE5vX2NvcnMgLT4gKFwibW9kZVwiLCBzdHJpbmcgXCJuby1jb3JzXCIpIDo6IGZpZWxkc1xuICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBtYXRjaCBjcmVkZW50aWFscyB3aXRoXG4gICAgICB8IFNvbWUgYE9taXQgLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwib21pdFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgU2FtZV9vcmlnaW4gLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwic2FtZS1vcmlnaW5cIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYEluY2x1ZGUgLT4gKFwiY3JlZGVudGlhbHNcIiwgc3RyaW5nIFwiaW5jbHVkZVwiKSA6OiBmaWVsZHNcbiAgICAgIHwgTm9uZSAtPiBmaWVsZHNcbiAgICBpblxuICAgIGxldCBmaWVsZHMgPVxuICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IFNvbWUgYm9keSAtPiAoXCJib2R5XCIsIEJvZHkudG9fanMgYm9keSkgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIG1hdGNoIG1ldGggd2l0aFxuICAgICAgfCBTb21lIGBHZXQgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIkdFVFwiKSA6OiBmaWVsZHNcbiAgICAgIHwgU29tZSBgUHV0IC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJQVVRcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYFBvc3QgLT4gKFwibWV0aG9kXCIsIHN0cmluZyBcIlBPU1RcIikgOjogZmllbGRzXG4gICAgICB8IFNvbWUgYERlbGV0ZSAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiREVMRVRFXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBIZWFkIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJIRUFEXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBDb25uZWN0IC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJDT05ORUNUXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBPcHRpb25zIC0+IChcIm1ldGhvZFwiLCBzdHJpbmcgXCJPUFRJT05TXCIpIDo6IGZpZWxkc1xuICAgICAgfCBTb21lIGBUcmFjZSAtPiAoXCJtZXRob2RcIiwgc3RyaW5nIFwiVFJBQ0VcIikgOjogZmllbGRzXG4gICAgICB8IE5vbmUgLT4gZmllbGRzXG4gICAgaW5cbiAgICBKeC5PYmoub2ZfbGlzdCBmaWVsZHNcblxuICBsZXQgb2ZfanMgPSBKeC5EZWNvZGVyLmpzXG4gIGxldCB0b19qcyA9IEp4LkVuY29kZXIuanNcbmVuZFxuXG4oKiBSZXNwb25zZSAqKVxuXG50eXBlIHJlc3BvbnNlID0gSnguanNcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlc3BvbnNlXG5cbiAgbGV0IG9rIHQgPSBKeC5PYmouZ2V0IHQgXCJva1wiIEp4LkRlY29kZXIuYm9vbFxuICBsZXQgc3RhdHVzIHQgPSBKeC5PYmouZ2V0IHQgXCJzdGF0dXNcIiBKeC5EZWNvZGVyLmludFxuXG4gIGxldCB0ZXh0IHQgPVxuICAgIEp4Lk9iai5jYWxsMCB0IFwidGV4dFwiIH5yZXR1cm46UHJvbWlzZS5vZl9qcyAoKVxuICAgIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuc3RyaW5nXG5cbiAgbGV0IGpzb24gdCA9XG4gICAgSnguT2JqLmNhbGwwIHQgXCJqc29uXCIgfnJldHVybjpQcm9taXNlLm9mX2pzICgpIHw+IFByb21pc2UubWFwIEp4LkRlY29kZXIuanNcblxuICBsZXQgaGVhZGVycyB0ID0gSnguT2JqLmdldCB0IFwiaGVhZGVyc1wiIEp4LkRlY29kZXIuanNcbiAgbGV0IG9mX2pzID0gSnguRGVjb2Rlci5qc1xuICBsZXQgdG9fanMgPSBKeC5FbmNvZGVyLmpzXG5lbmRcblxubGV0IGZldGNoID9ib2R5ID8obWV0aCA9IGBHZXQpID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB1cmwgPVxuICBsZXQgb3B0cyA9IE9wdGlvbnMubWFrZSB+bWV0aCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgP2JvZHkgKCkgaW5cbiAgSnguT2JqLmNhbGwyIFN0ZHdlYl9nbG9iYWwud2luZG93IFwiZmV0Y2hcIiB+cmV0dXJuOlJlc3BvbnNlLm9mX2pzXG4gICAgSnguRW5jb2Rlci5zdHJpbmcgT3B0aW9ucy50b19qcyB1cmwgb3B0c1xuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMyIsImExIiwiYTIiLCJjYW1sX2NhbGw0IiwiYTMiLCJjYW1sX2NhbGw1IiwiYTQiLCJjYW1sX2NhbGw2IiwiYTUiLCJjYW1sX2NhbGw3IiwiYTYiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGR3ZWJfU3Rkd2ViX3Byb21pc2UiLCJTdGRsaWJfTGlzdCIsIlN0ZHdlYl9TdGR3ZWJfZm9ybV9kYXRhIiwidCIsIm1ha2UiLCJvcHRpb25zIiwidXJsIiwib2ZfanMiLCJ0b19qcyIsIm9mX3N0cmluZyIsIm9mX2Zvcm1fZGF0YSIsInVuc2FmZV9vZl9qcyIsInBhcmFtIiwiYXBwZW5kIiwibmFtZSIsInZhbHVlIiwiZW50cmllcyIsImNzdF9oZWFkZXJzIiwiYm9keSIsIm1ldGgiLCJvcHQiLCJtb2RlIiwiY3JlZGVudGlhbHMiLCJoZWFkZXJzIiwiZmllbGRzIiwiaHMiLCJjc3RfbW9kZSIsIm1hdGNoIiwiY3N0X2NyZWRlbnRpYWxzIiwiY3N0X21ldGhvZCIsIm9rIiwic3RhdHVzIiwidGV4dCIsImpzb24iLCJmZXRjaCIsIm9wdHMiXSwibWFwcGluZ3MiOiJPQUFBQSxVQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBTCxHQUFBQyxJQUFBRSxJQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVAsR0FBQUMsSUFBQUUsSUFBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFULEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FB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O0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQzBDO0FBQUE7QUFBQSxHQXBGZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUQ3QzdCIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDU0NjUsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2RpY3QubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgU3RkbGliX29iaiA9IE9ialxubW9kdWxlIFN0ZGxpYl9hcnJheSA9IEFycmF5XG5cbnR5cGUgJ2EgdCA9IEp4Lk9iai50XG5cbmxldCB0b19qcyBwID0gcFxubGV0IG9mX2pzIGpzID0ganNcbmxldCB0b19vYmogcCA9IHBcbmxldCBvZl9vYmogb2JqID0gb2JqXG5sZXQgZW1wdHkgPSBKeC5PYmouZW1wdHlcblxubGV0IG9mX2FycmF5IGFyciA9XG4gIGxldCBhcnIgPVxuICAgIChTdGRsaWJfb2JqLm1hZ2ljIDogKHN0cmluZyAqICdhKSBhcnJheSAtPiAoc3RyaW5nICogSngudCkgYXJyYXkpIGFyclxuICBpblxuICBKeC5PYmoub2ZfYXJyYXkgYXJyXG5cbmxldCBvZl9saXN0IGwgPSBvZl9hcnJheSAoU3RkbGliX2FycmF5Lm9mX2xpc3QgbClcbmxldCBnZXQgZGljdCBrZXkgPSBKeC5PYmouZ2V0IGRpY3Qga2V5IEp4LkRlY29kZXIuYW55XG5sZXQgZ2V0X29wdCBkaWN0IGtleSA9IEp4Lk9iai5nZXRfb3B0IGRpY3Qga2V5IEp4LkRlY29kZXIuYW55XG5sZXQgc2V0IGRpY3Qga2V5IHggPSBKeC5PYmouc2V0IGRpY3Qga2V5IEp4LkVuY29kZXIuYW55IHhcbmxldCBkZWwgPSBKeC5PYmouZGVsXG5cbmxldCBlbnRyeV9vZl9qcyBlbnRyeV9qcyA9XG4gIG1hdGNoIEp4LkRlY29kZXIuYXJyYXlfanMgZW50cnlfanMgd2l0aFxuICB8IFt8IGtleTsgdiB8XSAtPiAoSnguRGVjb2Rlci5zdHJpbmcga2V5LCBKeC5EZWNvZGVyLmFueSB2KVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJPYmplY3QgZW50cmllcyBpcyBub3QgYSBwYWlyXCJcblxubGV0IGVudHJpZXMgZGljdCA9XG4gIEp4Lk9iai5jYWxsMSBKeC5PYmoudCBcImVudHJpZXNcIlxuICAgIH5yZXR1cm46KEp4LkRlY29kZXIuYXJyYXkgZW50cnlfb2ZfanMpXG4gICAgSnguRW5jb2Rlci5qcyBkaWN0XG5cbmxldCBrZXlzIGRpY3QgPVxuICBKeC5PYmouY2FsbDEgSnguT2JqLnQgXCJrZXlzXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKGFycmF5IHN0cmluZylcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IHZhbHVlcyBkaWN0ID1cbiAgSnguT2JqLmNhbGwxIEp4Lk9iai50IFwidmFsdWVzXCJcbiAgICB+cmV0dXJuOkp4LkRlY29kZXIuKGFycmF5IGFueSlcbiAgICBKeC5FbmNvZGVyLmpzIGRpY3RcblxubGV0IG1hcCBkaWN0IGYgPVxuICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgbGV0IGtleXMgPSBrZXlzIGRpY3QgaW5cbiAgZm9yIGkgPSAwIHRvIFN0ZGxpYl9hcnJheS5sZW5ndGgga2V5cyAtIDEgZG9cbiAgICBsZXQga2V5ID0gU3RkbGliX2FycmF5LnVuc2FmZV9nZXQga2V5cyBpIGluXG4gICAgbGV0IHggPSBnZXQgZGljdCBrZXkgaW5cbiAgICBsZXQgeCcgPSBmIHggaW5cbiAgICBzZXQgb3V0IGtleSB4J1xuICBkb25lO1xuICBvdXRcblxubGV0IHVwZGF0ZSBkaWN0IGYgPVxuICBsZXQga2V5cyA9IGtleXMgZGljdCBpblxuICBmb3IgaSA9IDAgdG8gU3RkbGliX2FycmF5Lmxlbmd0aCBrZXlzIC0gMSBkb1xuICAgIGxldCBrZXkgPSBTdGRsaWJfYXJyYXkudW5zYWZlX2dldCBrZXlzIGkgaW5cbiAgICBsZXQgeCA9IGdldCBkaWN0IGtleSBpblxuICAgIGxldCB4JyA9IGYgeCBpblxuICAgIHNldCBkaWN0IGtleSB4J1xuICBkb25lXG5cbmxldCBmb2xkX2xlZnQgZGljdCBmIGluaXQgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHZhbHVlcyA9IHZhbHVlcyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIHZhbHVlcyAtIDEgZG9cbiAgICBsZXQgeCA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IHZhbHVlcyBpIGluXG4gICAgYWNjIDo9IGYgIWFjYyB4XG4gIGRvbmU7XG4gICFhY2NcblxubGV0IGl0ZXIgZGljdCBmID1cbiAgbGV0IHZhbHVlcyA9IHZhbHVlcyBkaWN0IGluXG4gIGZvciBpID0gMCB0byBTdGRsaWJfYXJyYXkubGVuZ3RoIHZhbHVlcyAtIDEgZG9cbiAgICBsZXQgeCA9IFN0ZGxpYl9hcnJheS51bnNhZmVfZ2V0IHZhbHVlcyBpIGluXG4gICAgZiB4XG4gIGRvbmVcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImdsb2JhbF9kYXRhIiwiSngiLCJTdGRsaWIiLCJTdGRsaWJfQXJyYXkiLCJ0b19qcyIsInAiLCJvZl9qcyIsImpzIiwidG9fb2JqIiwib2Zfb2JqIiwib2JqIiwiZW1wdHkiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwiZ2V0IiwiZGljdCIsImtleSIsImdldF9vcHQiLCJzZXQiLCJ4IiwiZGVsIiwiZW50cnlfb2ZfanMiLCJlbnRyeV9qcyIsIm1hdGNoIiwibGVuIiwidiIsImVudHJpZXMiLCJrZXlzIiwidmFsdWVzIiwibWFwIiwib3V0IiwiaSIsInVwZGF0ZSIsImZvbGRfbGVmdCIsImluaXQiLCJhY2MiLCJpdGVyIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsWUFBQUMsTUFBQUMsR0NLYyxTQUFDO0FBQUEsWUFBQUMsTUFBQUMsSUFDQSxVQUFFO0FBQUEsWUFBQUMsT0FBQUgsR0FDRixTQUFDO0FBQUEsWUFBQUksT0FBQUMsS0FDQyxXQUFHO0FBQUEsT0FBQUMsUURScEI7QUFBQSxZQUFBQyxTQUFBQyxLQ2VFLGlDQUFtQjtBQUFBLFlBQUFDLFFBQUFDLEdBRUksT0FBd0IsU0FBeEIsK0JBQXdCO0FBQUEsWUFBQUMsSUFBQUMsTUFBQUM7QUFBQUEsSUFDOUIsb0RBQWtDO0FBQUE7QUFBQSxZQUFBQyxRQUFBRixNQUFBQztBQUFBQSxJQUM5QixvREFBc0M7QUFBQTtBQUFBLFlBQUFFLElBQUFILE1BQUFDLEtBQUFHO0FBQUFBLElBQ3hDLHVEQUFvQztBQUFBO0FBQUEsT0FBQUMsTURwQnpEO0FBQUEsWUFBQUMsWUFBQUM7QUFBQUEsUUFBQUMsUUN3QlEsaUNBQUFDLE1BQTRCO0FBQUEsa0JBRTNCLDJEQUEwQztBQUFBLFFBQUFSLE1BRmYsVUFBQVMsSUFBQSxjQUNRO0FBQUEsSUFBdkIseUNBQXFCO0FBQUEsR0FDUztBQUFBLFlBQUFDLFFBQUFYO0FBQUFBLFFBQUEsSUFJdkM7QUFBQSxJQUE4QiwrREFDcEI7QUFBQTtBQUFBLFlBQUFZLEtBQUFaO0FBQUFBLFFBQUEsSUFJRTtBQUFBLElBQVksNERBQ2Q7QUFBQTtBQUFBLFlBQUFhLE9BQUFiO0FBQUFBLFFBQUEsSUFJRTtBQUFBLElBQVMsOERBQ1g7QUFBQTtBQUFBLFlBQUFjLElBQUFkLE1BQUEzQjtBQUFBQTtBQUFBQSxLQUFBMEMsTUFHVjtBQUFBLEtBQUFILFNBQ0M7QUFBQSxTQUNYO0FBQUE7QUFBQSxTQUFBSSxJQUFBO0FBQUE7QUFBQSxVQUFBZixNQUNFLGVBQUFHLElBQ1EsZ0JBQUFBLE1BQ0M7QUFBQSxNQUNUO0FBQUEsY0FBYztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFaEI7QUFBQSxHQUFHO0FBQUEsWUFBQWEsT0FBQWpCLE1BQUEzQjtBQUFBQSxRQUFBdUMsU0FHUSxnQkFDWDtBQUFBO0FBQUEsU0FBQUksSUFBQTtBQUFBO0FBQUEsVUFBQWYsTUFDRSxlQUFBRyxJQUNRLGdCQUFBQSxNQUNDO0FBQUEsTUFDVDtBQUFBLGNBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBSmpCO0FBQUEsR0FLSTtBQUFBLFlBQUFjLFVBQUFsQixNQUFBM0IsR0FBQThDO0FBQUFBLFFBQUFOLFdBSVMsa0JBQ2I7QUFBQTtBQUFBLFNBQUFPLFFBQUE7QUFBQTtBQUFBLFNBQUFBLE1BQUEsTUFBQUosSUFBQTtBQUFBO0FBQUEsVUFBQVosSUFDVSxxQkFDRCwyQkFBUTtBQUFBLHNCQUFBZ0IsUUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFFakI7QUFBQSxHQUFJO0FBQUEsWUFBQUMsS0FBQXJCLE1BQUEzQjtBQUFBQSxRQUFBd0MsV0FHUyxrQkFDYjtBQUFBO0FBQUEsU0FBQUcsSUFBQTtBQUFBO0FBQUEsVUFBQVosSUFDVTtBQUFBLE1BQ1I7QUFBQSxjQUFHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUZMO0FBQUEsR0FHSTtBQUFBLEdEN0VOIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDU2MjMsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkd2ViLmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9zdGR3ZWIvU3Rkd2ViX2NvbnNvbGUubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgR2xvYmFsID0gU3Rkd2ViX2dsb2JhbFxuXG50eXBlIHQgPSBKeC50XG5cbmxldCB0ID0gR2xvYmFsLmNvbnNvbGVcbmxldCBsb2cgeCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJsb2dcIiBKeC5FbmNvZGVyLmFueSB4XG5sZXQgZXJyb3IgeCA9IEp4Lk9iai5jYWxsMV91bml0IHQgXCJlcnJvclwiIEp4LkVuY29kZXIuYW55IHhcbmxldCBpbmZvIHggPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwiaW5mb1wiIEp4LkVuY29kZXIuYW55IHhcbmxldCB3YXJuIHggPSBKeC5PYmouY2FsbDFfdW5pdCB0IFwid2FyblwiIEp4LkVuY29kZXIuYW55IHhcbmxldCBlbnN1cmUgYiB4ID0gSnguT2JqLmNhbGwyX3VuaXQgdCBcImFzc2VydFwiIEp4LkVuY29kZXIuYm9vbCBKeC5FbmNvZGVyLmFueSBiIHhcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsNCIsImYiLCJhMCIsImExIiwiYTIiLCJhMyIsImNhbWxfY2FsbDYiLCJhNCIsImE1IiwiZ2xvYmFsX2RhdGEiLCJKeCIsIlN0ZHdlYl9TdGR3ZWJfZ2xvYmFsIiwidCIsImxvZyIsIngiLCJlcnJvciIsImluZm8iLCJ3YXJuIiwiZW5zdXJlIiwiYiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQyxJQUFBQyxJQUFBQyxJQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUwsR0FBQUMsSUFBQUMsSUFBQUMsSUFBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLEtBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLElBQUE7QUFBQSxZQUFBQyxJQUFBQyxHQ0tZLHNEQUEwQztBQUFBLFlBQUFDLE1BQUFEO0FBQUFBLElBQ3hDLHdEQUE0QztBQUFBO0FBQUEsWUFBQUUsS0FBQUYsR0FDN0MsdURBQTJDO0FBQUEsWUFBQUcsS0FBQUgsR0FDM0MsdURBQTJDO0FBQUEsWUFBQUksT0FBQUMsR0FBQUw7QUFBQUEsSUFDdkMsdUVBQStEO0FBQUE7QUFBQSxHRFRoRiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1NjU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYl9jbGlwYm9hcmQubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJtb2R1bGUgUHJvbWlzZSA9IFN0ZHdlYl9wcm9taXNlXG5cbnR5cGUgdCA9IEp4LnRcblxubGV0IHdyaXRlX3RleHQgdCB0ZXh0ID1cbiAgSnguT2JqLmNhbGwxIHQgXCJ3cml0ZVRleHRcIiB+cmV0dXJuOlByb21pc2Uub2ZfanMgSnguRW5jb2Rlci5zdHJpbmcgdGV4dFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGw1IiwiZiIsImEwIiwiYTEiLCJhMiIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9wcm9taXNlIiwid3JpdGVfdGV4dCIsInQiLCJ0ZXh0Il0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDLElBQUFDLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsd0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQ0tFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGtCQUF1RTtBQUFBO0FBQUEsR0RMekUiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NTY5MCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJzdGR3ZWIuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L3N0ZHdlYi9TdGR3ZWJfYXJyYXkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJ0eXBlICdhIHQgPSBKeC50XG5cbmxldCB0ID0gSnguZ2xvYmFsIFwiQXJyYXlcIlxubGV0IHRvX2pzIHAgPSBwXG5sZXQgb2ZfanMganMgPSBqc1xubGV0IG1ha2UgbiA9IEp4Lk9iai5uZXcxIHQgSnguRW5jb2Rlci5pbnQgblxubGV0IGVtcHR5ICgpID0gbWFrZSAwXG5sZXQgc2V0IGFyciAoaSA6IGludCkgeCA9IEp4Lk9iai5zZXRfanMgYXJyIChKeC5FbmNvZGVyLmludCBpKSAoSnguRW5jb2Rlci5hbnkgeClcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IG91dCA9IG1ha2UgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBzZXQgb3V0IGkgKGYgaSlcbiAgZG9uZTtcbiAgb3V0XG5cbmxldCBnZXQgYXJyIGkgPSBKeC5EZWNvZGVyLmFueSAoSnguT2JqLmdldF9qcyBhcnIgKEp4LkVuY29kZXIuaW50IGkpKVxuXG5sZXQgZ2V0X29wdCBhcnIgaSA9XG4gIGxldCB4ID0gZ2V0IGFyciBpIGluXG4gIGxldCB4X2pzID0gSnguRW5jb2Rlci5hbnkgeCBpblxuICBpZiBKeC5pc191bmRlZmluZWQgeF9qcyB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlIHhcblxubGV0IHB1c2ggYXJyIHggPSBKeC5PYmouY2FsbDFfdW5pdCBhcnIgXCJwdXNoXCIgSnguRW5jb2Rlci5hbnkgeFxubGV0IHBvcCBhcnIgPSBKeC5PYmouY2FsbDAgYXJyIFwicG9wXCIgfnJldHVybjpKeC5EZWNvZGVyLmFueSAoKVxubGV0IHBvcF9vcHQgYXJyID0gSnguT2JqLmNhbGwwIGFyciBcInBvcFwiIH5yZXR1cm46SnguRGVjb2Rlci4ob3B0aW9uYWwgYW55KSAoKVxubGV0IGxlbmd0aCBhcnIgPSBKeC5PYmouZ2V0IGFyciBcImxlbmd0aFwiIEp4LkRlY29kZXIuaW50XG5cbmxldCBjb25jYXQgYXJyMSBhcnIyID1cbiAgSnguT2JqLmNhbGwxIH5yZXR1cm46SnguRGVjb2Rlci5qcyBhcnIxIFwiY29uY2F0XCIgSnguRW5jb2Rlci5qcyBhcnIyXG5cbmxldCBzbGljZSBhcnIgaSBqID1cbiAgSnguT2JqLmNhbGwyIH5yZXR1cm46SnguRGVjb2Rlci5qcyBhcnIgXCJzbGljZVwiIEp4LkVuY29kZXIuaW50IEp4LkVuY29kZXIuaW50IGlcbiAgICBqXG5cbmxldCBpdGVyIGFyciBmID0gSnguT2JqLmNhbGwxX3VuaXQgYXJyIFwiZm9yRWFjaFwiIEp4LkVuY29kZXIuZnVuMSBmXG5cbmxldCBvZl9saXN0IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IG91dCA9IG1ha2UgMSBpblxuICAgIHNldCBvdXQgMCBoZDtcbiAgICBMaXN0Lml0ZXJpIChmdW4gaSB4IC0+IHNldCBvdXQgKGkgKyAxKSB4KSB0bDtcbiAgICBvdXRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImNhbWxfY2FsbDQiLCJhMyIsImNhbWxfY2FsbDUiLCJhNCIsImNhbWxfY2FsbDciLCJhNSIsImE2IiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWJfTGlzdCIsIkp4IiwiU3RkbGliIiwidCIsInRvX2pzIiwicCIsIm9mX2pzIiwianMiLCJtYWtlIiwibiIsImVtcHR5IiwicGFyYW0iLCJzZXQiLCJhcnIiLCJpIiwieCIsImluaXQiLCJvdXQiLCJnZXQiLCJnZXRfb3B0IiwieF9qcyIsInB1c2giLCJjc3RfcG9wIiwicG9wIiwicG9wX29wdCIsImxlbmd0aCIsImNvbmNhdCIsImFycjEiLCJhcnIyIiwic2xpY2UiLCJqIiwiaXRlciIsIm9mX2xpc3QiLCJsIiwidGwiLCJoZCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyw4QkFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUosR0FBQUMsSUFBQUUsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFOLEdBQUFDLElBQUFFLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBUixHQUFBQyxJQUFBRSxJQUFBRSxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQVYsR0FBQUMsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLElDRVE7QUFBQSxZQUFBQyxNQUFBQyxHQUNNLFNBQUM7QUFBQSxZQUFBQyxNQUFBQyxJQUNBLFVBQUU7QUFBQSxZQUFBQyxLQUFBQyxHQUNKLDhDQUE4QjtBQUFBLFlBQUFDLE1BQUFDLE9BQzVCLGNBQU07QUFBQSxZQUFBQyxJQUFBQyxLQUFBQyxHQUFBQztBQUFBQSxRQUFBLElBQzBDLCtCQUFuQjtBQUFBLElBQWtCLHdDQUFtQjtBQUFBO0FBQUEsWUFBQUMsS0FBQVAsR0FBQXZCO0FBQUFBLFFBQUErQixNQUdyRSxhQUNWO0FBQUE7QUFBQSxTQUFBSCxJQUFBO0FBQUE7QUFBQSxNQUNFLFlBQVU7QUFBQSxjQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUVqQjtBQUFBLEdBQUc7QUFBQSxZQUFBSSxJQUFBTCxLQUFBQztBQUFBQSxRQUFBLElBRTZDLDhCQUFuQjtBQUFBLElBQXNDO0FBQUE7QUFBQSxZQUFBSyxRQUFBTixLQUFBQztBQUFBQSxRQUFBQyxJQUczRCxhQUFBSyxPQUNHO0FBQUEsSUFDUjtBQUFBLEtBQTBCO0FBQUEsSUFBcUI7QUFBQSxHQUFDO0FBQUEsWUFBQUMsS0FBQVIsS0FBQUU7QUFBQUEsSUFFcEMseURBQTZDO0FBQUE7QUFBQSxPQUFBTyxVRHZCOUQ7QUFBQSxZQUFBQyxJQUFBVjtBQUFBQSxJQ3dCYywwREFBZ0Q7QUFBQTtBQUFBLFlBQUFXLFFBQUFYO0FBQUFBLFFBQUEsSUFDRDtBQUFBLElBQVksaURBQUk7QUFBQTtBQUFBLFlBQUFZLE9BQUFaO0FBQUFBLElBQzVELHVEQUFzQztBQUFBO0FBQUEsWUFBQWEsT0FBQUMsTUFBQUM7QUFBQUEsSUFHckQseUVBQW1FO0FBQUE7QUFBQSxZQUFBQyxNQUFBaEIsS0FBQUMsR0FBQWdCO0FBQUFBLElBR25FO0FBQUEsNkVBQ0c7QUFBQTtBQUFBLFlBQUFDLEtBQUFsQixLQUFBM0I7QUFBQUEsSUFFWSw0REFBaUQ7QUFBQTtBQUFBLFlBQUE4QyxRQUFBQztBQUFBQSxJQUdoRSxRQUNRLGVBS0g7QUFBQSxRQUFBQyxLQU5MLE1BQUFDLEtBQUEsTUFBQWxCLE1BR1k7QUFBQSxJQUNWO0FBQUEsSUFDQTtBQUFBLHFCQUFBSCxHQUFBQyxHQUF1Qiw2QkFBaUI7QUFBQSxJQUFJO0FBQUEsR0FDekM7QUFBQSxHQTFDa0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFREZ6QiIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ1ODIxLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZHdlYi5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvc3Rkd2ViL1N0ZHdlYi5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBBcnJheSA9IFN0ZHdlYl9hcnJheVxubW9kdWxlIENvbnNvbGUgPSBTdGR3ZWJfY29uc29sZVxubW9kdWxlIERpY3QgPSBTdGR3ZWJfZGljdFxubW9kdWxlIERvbSA9IFN0ZHdlYl9kb21cbm1vZHVsZSBJdGVyYXRvciA9IFN0ZHdlYl9pdGVyYXRvclxubW9kdWxlIE9iamVjdCA9IFN0ZHdlYl9vYmplY3Rcbm1vZHVsZSBGb3JtX2RhdGEgPSBTdGR3ZWJfZm9ybV9kYXRhXG5tb2R1bGUgTWFwID0gU3Rkd2ViX21hcFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWJfcHJvbWlzZVxubW9kdWxlIEZldGNoID0gU3Rkd2ViX2ZldGNoXG5tb2R1bGUgU3RvcmFnZSA9IFN0ZHdlYl9zdG9yYWdlXG5tb2R1bGUgQ2xpcGJvYXJkID0gU3Rkd2ViX2NsaXBib2FyZFxubW9kdWxlIEpzb24gPSBTdGR3ZWJfanNvblxubW9kdWxlIFdlYnNvY2tldCA9IFN0ZHdlYl93ZWJzb2NrZXRcbm1vZHVsZSBVcmxfc2VhcmNoX3BhcmFtcyA9IFN0ZHdlYl91cmxfc2VhcmNoX3BhcmFtc1xuXG5tb2R1bGUgTmF2aWdhdG9yID0gc3RydWN0XG4gIHR5cGUgdCA9IEp4LnRcblxuICBsZXQgY2xpcGJvYXJkIHQgPSBKeC5PYmouZ2V0IHQgXCJjbGlwYm9hcmRcIiBKeC5EZWNvZGVyLmpzXG5lbmRcblxubW9kdWxlIE51bWJlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuXG4gIGxldCB0b19wcmVjaXNpb24gdCBuID1cbiAgICBsZXQgdF9qcyA9IEp4LkVuY29kZXIuZmxvYXQgdCBpblxuICAgIEp4Lk9iai5jYWxsMSB0X2pzIFwidG9QcmVjaXNpb25cIiB+cmV0dXJuOkp4LkRlY29kZXIuc3RyaW5nIEp4LkVuY29kZXIuaW50IG5cbmVuZFxuXG5pbmNsdWRlIFN0ZHdlYl9nbG9iYWxcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDMiLCJhMSIsImEyIiwiY2FtbF9jYWxsNSIsImEzIiwiYTQiLCJnbG9iYWxfZGF0YSIsIkp4IiwiU3Rkd2ViX1N0ZHdlYl9nbG9iYWwiLCJTdGR3ZWJfU3Rkd2ViX3VybF9zZWFyY2hfcGFyYW0iLCJTdGR3ZWJfU3Rkd2ViX3dlYnNvY2tldCIsIlN0ZHdlYl9TdGR3ZWJfY2xpcGJvYXJkIiwiU3Rkd2ViX1N0ZHdlYl9zdG9yYWdlIiwiU3Rkd2ViX1N0ZHdlYl9mZXRjaCIsIlN0ZHdlYl9TdGR3ZWJfZm9ybV9kYXRhIiwiU3Rkd2ViX1N0ZHdlYl9qc29uIiwiU3Rkd2ViX1N0ZHdlYl9kb20iLCJTdGR3ZWJfU3Rkd2ViX29iamVjdCIsIlN0ZHdlYl9TdGR3ZWJfbWFwIiwiU3Rkd2ViX1N0ZHdlYl9pdGVyYXRvciIsIlN0ZHdlYl9TdGR3ZWJfcHJvbWlzZSIsIlN0ZHdlYl9TdGR3ZWJfZGljdCIsIlN0ZHdlYl9TdGR3ZWJfYXJyYXkiLCJTdGR3ZWJfU3Rkd2ViX2NvbnNvbGUiLCJjbGlwYm9hcmQiLCJ0IiwidG9fcHJlY2lzaW9uIiwibiIsInRfanMiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNvbnNvbGUiLCJuYXZpZ2F0b3IiLCJlbmNvZGVfdXJpX2NvbXBvbmVudCIsIlN0ZHdlYiJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsdUJBQUE7QUFBQSxJQUFBQztBQUFBQSxNQUFBO0FBQUEsSUFBQUMsMEJBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLHdCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQywwQkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsb0JBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBLElBQUFDLG9CQUFBO0FBQUEsSUFBQUMseUJBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLElBQUFDLHFCQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxJQUFBQyx3QkFBQTtBQUFBLFlBQUFDLFVBQUFDO0FBQUFBLElDbUJvQix3REFBc0M7QUFBQTtBQUFBLFlBQUFDLGFBQUFELEdBQUFFO0FBQUFBLFFBQUFDLE9BTzNDO0FBQUEsSUFDWDtBQUFBLHNFQUEwRTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxTRDNCOUU7QUFBQSxJQUFBQyxXQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyx1QkFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ2MDg2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Imh0bWwuY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L2h0bWwvSHRtbC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gU3Rkd2ViXG5cbm1vZHVsZSBDdHggPSBzdHJ1Y3RcbiAgbGV0IGdlbl9pZCA9XG4gICAgbGV0IGkgPSByZWYgKC0xKSBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgaW5jciBpO1xuICAgICAgKE9iai5tYWdpYyAhaSA6IHN0cmluZylcblxuICB0eXBlIHQgPSB7IGlkIDogc3RyaW5nOyBtdXRhYmxlIGNsZWFudXAgOiAodW5pdCAtPiB1bml0KSBsaXN0OyB0cmVlIDogdCBTdGR3ZWIuRGljdC50IH1cblxuICBsZXQgbWFrZSAoKSA9IHsgaWQgPSBnZW5faWQgKCk7IGNsZWFudXAgPSBbXTsgdHJlZSA9IFN0ZHdlYi5EaWN0LmVtcHR5ICgpIH1cbiAgbGV0IG9uX2NsZWFudXAgdCBmID0gdC5jbGVhbnVwIDwtIGYgOjogdC5jbGVhbnVwXG4gIGxldCBjbGVhbnVwIHQgPSBMaXN0Lml0ZXIgKGZ1biBjIC0+IGMgKCkpIHQuY2xlYW51cFxuICBsZXQgbGluayB0IHQyID0gU3Rkd2ViLkRpY3Quc2V0IHQudHJlZSB0Mi5pZCB0MlxuICBsZXQgdW5saW5rIHQgc3ViY3R4ID0gU3Rkd2ViLkRpY3QuZGVsIHQudHJlZSBzdWJjdHguaWRcbmVuZFxuXG4oKiBBdHRyaWJ1dGVzIGFyZSBmdW5jdGlvbnMgdGhhdCBzZXQgXCJhdHRyaWJ1dGVzXCIgb24gZWxlbWVudHMuXG4gICBIdG1sIHZhbHVlcyBhcmUgZnVuY3Rpb25zIHRoYXQgbW91bnQgYW5kIHVubW91bnQgY2hpbGRyZW4uXG5cbiAgIENsZWFudXA6XG4gICAtIGZyZWUgbXVzdCBiZSBhbHdheXMgY2FsbGVkLCBpZiBkZWZpbmVkO1xuICAgLSByZW1vdmUgbXVzdCBiZSBjYWxsZWQgdG8gZGVhY3RpdmF0ZSB0aGUgYXR0ciBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWRcbiAgICAgd2hlbiB0aGUgbm9kZSBpcyByZW1vdmVkLlxuKilcblxubW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IHsgc2V0IDogdW5pdCAtPiB1bml0OyB1bnNldCA6IHVuaXQgLT4gdW5pdCB9XG4gIHR5cGUgdCA9IEN0eC50IC0+IERvbS5Ob2RlLnQgLT4gc3RhdGVcblxuICBsZXQgbm9wIF9jdHggX25vZGUgPSB7IHNldCA9IGlnbm9yZTsgdW5zZXQgPSBpZ25vcmUgfVxuICBsZXQgb24gYm9vbCBhdHRyID0gaWYgYm9vbCB0aGVuIGF0dHIgZWxzZSBub3BcblxuICBsZXQgb25fc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vcFxuICAgIHwgU29tZSBhdCAtPiBhdFxuXG4gIGxldCBvbl9vayA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIC0+IG5vcFxuICAgIHwgT2sgYXR0ciAtPiBhdHRyXG5cbiAgbGV0IHN0cmluZyBuYW1lIHZhbHVlIF9jdHggbm9kZSA9XG4gICAgbGV0IHNldCAoKSA9IERvbS5Ob2RlLnNldF9hdHRyIG5vZGUgbmFtZSB2YWx1ZSBpblxuICAgIGxldCB1bnNldCAoKSA9IERvbS5Ob2RlLnVuc2V0X2F0dHIgbm9kZSBuYW1lIGluXG4gICAgeyBzZXQ7IHVuc2V0IH1cblxuICBsZXQgYm9vbCBuYW1lIGJvb2wgPSBpZiBib29sIHRoZW4gc3RyaW5nIG5hbWUgXCJcIiBlbHNlIG5vcFxuICBsZXQgaW50IG5hbWUgaSA9IHN0cmluZyBuYW1lIChzdHJpbmdfb2ZfaW50IGkpXG5cbiAgbGV0IG9uX21vdW50IGYgX2N0eCBub2RlID1cbiAgICBsZXQgc2V0ICgpID0gZiBub2RlIGluXG4gICAgeyBzZXQ7IHVuc2V0ID0gaWdub3JlIH1cblxuICBsZXQgc2V0IGF0dHIgbm9kZSA9IGF0dHIgbm9kZVxuICBsZXQgdW5zZXQgc3RhdGUgPSBzdGF0ZS51bnNldCAoKVxuXG4gIGxldCBjb21iaW5lIGExIGEyIGN0eCBub2RlID1cbiAgICBsZXQgYTFfc3RhdGUgPSBhMSBjdHggbm9kZSBpblxuICAgIGxldCBhMl9zdGF0ZSA9IGEyIGN0eCBub2RlIGluXG4gICAgbGV0IHNldCAoKSA9XG4gICAgICBhMV9zdGF0ZS5zZXQgKCk7XG4gICAgICBhMl9zdGF0ZS5zZXQgKClcbiAgICBpblxuICAgIGxldCB1bnNldCAoKSA9XG4gICAgICBhMV9zdGF0ZS51bnNldCAoKTtcbiAgICAgIGEyX3N0YXRlLnVuc2V0ICgpXG4gICAgaW5cbiAgICB7IHNldDsgdW5zZXQgfVxuXG4gIGxldCBsaXN0IGF0dHJzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBub3AgYXR0cnNcbiAgbGV0IGxhYmVsID0gc3RyaW5nIFwibGFiZWxcIlxuZW5kXG5cbnR5cGUgYXR0ciA9IEF0dHIudFxuXG5sZXQgYXR0ciA9IEF0dHIuc3RyaW5nXG5cbigqIFN0YW5kYXJkIGNvbnN0cnVjdG9ycy4gKilcbmxldCBhY2NlcHQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImFjY2VwdFwiIHZhbHVlXG5sZXQgYWNjZXNza2V5IHZhbHVlID0gQXR0ci5zdHJpbmcgXCJhY2Nlc3NrZXlcIiB2YWx1ZVxubGV0IGFjdGlvbiB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiYWN0aW9uXCIgdmFsdWVcbmxldCBhdXRvY29tcGxldGUgdmFsdWUgPSBBdHRyLnN0cmluZyBcImF1dG9jb21wbGV0ZVwiIHZhbHVlXG5sZXQgYXV0b2ZvY3VzIHZhbHVlID0gQXR0ci5ib29sIFwiYXV0b2ZvY3VzXCIgdmFsdWVcbmxldCBjaGFyc2V0IHZhbHVlID0gQXR0ci5zdHJpbmcgXCJjaGFyc2V0XCIgdmFsdWVcbmxldCBjaGVja2VkIHZhbHVlID0gQXR0ci5ib29sIFwiY2hlY2tlZFwiIHZhbHVlXG5sZXQgY2xhc3NfbmFtZSB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiY2xhc3NcIiB2YWx1ZVxubGV0IGNvbHMgdmFsdWUgPSBBdHRyLmludCBcImNvbHNcIiB2YWx1ZVxubGV0IGNvbnRlbnQgdmFsdWUgPSBBdHRyLnN0cmluZyBcImNvbnRlbnRcIiB2YWx1ZVxubGV0IGNvbnRlbnRlZGl0YWJsZSB2YWx1ZSA9IEF0dHIuYm9vbCBcImNvbnRlbnRlZGl0YWJsZVwiIHZhbHVlXG5sZXQgZGVmZXIgdmFsdWUgPSBBdHRyLmJvb2wgXCJkZWZlclwiIHZhbHVlXG5sZXQgZGlyIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJkaXJcIiB2YWx1ZVxubGV0IGRpc2FibGVkIHZhbHVlID0gQXR0ci5ib29sIFwiZGlzYWJsZWRcIiB2YWx1ZVxubGV0IGRyYWdnYWJsZSB2YWx1ZSA9IEF0dHIuYm9vbCBcImRyYWdnYWJsZVwiIHZhbHVlXG5sZXQgZm9yJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiZm9yXCIgdmFsdWVcbmxldCBmb3JtYWN0aW9uIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJmb3JtYWN0aW9uXCIgdmFsdWVcbmxldCBoZWlnaHQgdmFsdWUgPSBBdHRyLmludCBcImhlaWdodFwiIHZhbHVlXG5sZXQgaGlkZGVuIHZhbHVlID0gQXR0ci5ib29sIFwiaGlkZGVuXCIgdmFsdWVcbmxldCBocmVmIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJocmVmXCIgdmFsdWVcbmxldCBpZCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwiaWRcIiB2YWx1ZVxubGV0IGxhbmcgdmFsdWUgPSBBdHRyLnN0cmluZyBcImxhbmdcIiB2YWx1ZVxubGV0IGxpc3QgdmFsdWUgPSBBdHRyLnN0cmluZyBcImxpc3RcIiB2YWx1ZVxubGV0IG1lZGlhIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJtZWRpYVwiIHZhbHVlXG5sZXQgbWV0aG9kJyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwibWV0aG9kXCIgdmFsdWVcbmxldCBuYW1lIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJuYW1lXCIgdmFsdWVcbmxldCBvcGVuJyB2YWx1ZSA9IEF0dHIuYm9vbCBcIm9wZW5cIiB2YWx1ZVxubGV0IHBsYWNlaG9sZGVyIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJwbGFjZWhvbGRlclwiIHZhbHVlXG5sZXQgcmVsIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJyZWxcIiB2YWx1ZVxubGV0IHJlcXVpcmVkIHZhbHVlID0gQXR0ci5ib29sIFwicmVxdWlyZWRcIiB2YWx1ZVxubGV0IHJvd3MgdmFsdWUgPSBBdHRyLmludCBcInJvd3NcIiB2YWx1ZVxubGV0IHNlbGVjdGVkIHZhbHVlID0gQXR0ci5ib29sIFwic2VsZWN0ZWRcIiB2YWx1ZVxubGV0IHNwZWxsY2hlY2sgdmFsdWUgPSBBdHRyLnN0cmluZyBcInNwZWxsY2hlY2tcIiB2YWx1ZVxubGV0IHNyYyB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwic3JjXCIgdmFsdWVcbmxldCB0YWJpbmRleCB2YWx1ZSA9IEF0dHIuaW50IFwidGFiaW5kZXhcIiB2YWx1ZVxubGV0IHRpdGxlIHZhbHVlID0gQXR0ci5zdHJpbmcgXCJ0aXRsZVwiIHZhbHVlXG5sZXQgdHlwZScgdmFsdWUgPSBBdHRyLnN0cmluZyBcInR5cGVcIiB2YWx1ZVxuXG5sZXQgdmFsdWUgeCBfY3R4IG5vZGUgPVxuICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuc2V0X3ZhbHVlIG5vZGUgeCBpblxuICBsZXQgdW5zZXQgKCkgPSBEb20uTm9kZS5yZXNldF92YWx1ZSBub2RlIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IHZhbHVlX29yIGRlZmF1bHQgb3B0ID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gdmFsdWUgeFxuICB8IE5vbmUgLT4gdmFsdWUgZGVmYXVsdFxuXG5sZXQgd3JhcCB2YWx1ZSA9IEF0dHIuc3RyaW5nIFwid3JhcFwiIHZhbHVlXG5sZXQgd2lkdGggdmFsdWUgPSBBdHRyLmludCBcIndpZHRoXCIgdmFsdWVcbmxldCBzdHlsZSB4ID0gQXR0ci5zdHJpbmcgXCJzdHlsZVwiIHhcbmxldCByb2xlIHggPSBBdHRyLnN0cmluZyBcInJvbGVcIiB4XG5cbmxldCBzdHlsZV9saXN0IGl0ZW1zIF9jdHggbm9kZSA9XG4gIGxldCBzdHlsZSA9IERvbS5Ob2RlLmdldF9zdHlsZSBub2RlIGluXG4gIGxldCBzZXQgKCkgPSBMaXN0Lml0ZXIgKGZ1biAobmFtZSwgdmFsdWUpIC0+IERvbS5TdHlsZS5zZXQgc3R5bGUgbmFtZSB2YWx1ZSkgaXRlbXMgaW5cbiAgbGV0IHVuc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gKG5hbWUsIF92YWx1ZSkgLT4gRG9tLlN0eWxlLnVuc2V0IHN0eWxlIG5hbWUpIGl0ZW1zIGluXG4gIHsgQXR0ci5zZXQ7IHVuc2V0IH1cblxubGV0IGNsYXNzX2xpc3QgaXRlbXMgX2N0eCBub2RlID1cbiAgbGV0IGNsID0gRG9tLk5vZGUuZ2V0X2NsYXNzX2xpc3Qgbm9kZSBpblxuICBsZXQgc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gbmFtZSAtPiBEb20uVG9rZW5fbGlzdC5hZGQgY2wgbmFtZSkgaXRlbXMgaW5cbiAgbGV0IHVuc2V0ICgpID0gTGlzdC5pdGVyIChmdW4gbmFtZSAtPiBEb20uVG9rZW5fbGlzdC5yZW1vdmUgY2wgbmFtZSkgaXRlbXMgaW5cbiAgeyBBdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgY2xhc3NfZmxhZ3Mgb3B0aW9ucyA9XG4gIGxldCBsaXN0ID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKGMsIGIpIC0+IGlmIGIgdGhlbiBjIDo6IGFjYyBlbHNlIGFjYykgW10gb3B0aW9ucyBpblxuICBjbGFzc19saXN0IGxpc3RcblxuKCogRG8gd2UgbmVlZCB0byB1bmJpbmQgdGhlIGV2ZW50IGV4cGxpY2l0bHk/IEluIHRoZW9yeSwgdGhlIGJyb3dzZXIgc2hvdWxkXG4gICByZW1vdmUgdGhlIGxpc3RlbmVycyB3aGVuIHRoZSBub2RlIGlzIGdjJ2VkLiAqKVxubGV0IG9uID8oZGVmYXVsdCA9IHRydWUpID9jb25maXJtIChuYW1lIDogRG9tLkV2ZW50Lm5hbWUpIGYgX2N0eCBub2RlID1cbiAgbGV0IGYnID1cbiAgICBtYXRjaCBjb25maXJtIHdpdGhcbiAgICB8IE5vbmUgd2hlbiBub3QgZGVmYXVsdCAtPlxuICAgICAgZnVuIGV2IC0+XG4gICAgICAgIERvbS5FdmVudC5wcmV2ZW50X2RlZmF1bHQgZXY7XG4gICAgICAgIGYgZXZcbiAgICB8IE5vbmUgLT4gZlxuICAgIHwgU29tZSBtc2cgLT5cbiAgICAgIGZ1biBldiAtPlxuICAgICAgICBpZiBEb20uV2luZG93LmNvbmZpcm0gbXNnIHRoZW5cbiAgICAgICAgICBsZXQgKCkgPSBpZiBub3QgZGVmYXVsdCB0aGVuIERvbS5FdmVudC5wcmV2ZW50X2RlZmF1bHQgZXYgaW5cbiAgICAgICAgICBmIGV2XG4gICAgICAgIGVsc2UgRG9tLkV2ZW50LnByZXZlbnRfZGVmYXVsdCBldlxuICBpblxuICBsZXQgc2V0ICgpID0gRG9tLk5vZGUuYmluZCBub2RlIG5hbWUgZicgaW5cbiAgbGV0IHVuc2V0ICgpID0gRG9tLk5vZGUudW5iaW5kIG5vZGUgbmFtZSBmJyBpblxuICB7IEF0dHIuc2V0OyB1bnNldCB9XG5cbmxldCBvbl9jaGFuZ2UgP2NvbmZpcm0gaGFuZGxlciA9XG4gIG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jaGFuZ2UgKGZ1biBldiAtPlxuICAgICAgaGFuZGxlciAoRG9tLk5vZGUuZ2V0X3ZhbHVlIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9jaGVja2VkID9jb25maXJtIGhhbmRsZXIgPVxuICBvbiB+ZGVmYXVsdDpmYWxzZSA/Y29uZmlybSBEb20uRXZlbnQuY2hhbmdlIChmdW4gZXYgLT5cbiAgICAgIGhhbmRsZXIgKERvbS5Ob2RlLmdldF9jaGVja2VkIChEb20uRXZlbnQudGFyZ2V0IGV2KSkpXG5cbmxldCBvbl9pbnB1dCA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmlucHV0IChmdW4gZXYgLT5cbiAgICAgIGhhbmRsZXIgKERvbS5Ob2RlLmdldF92YWx1ZSAoRG9tLkV2ZW50LnRhcmdldCBldikpKVxuXG5sZXQgb25fY2xpY2sgP2NvbmZpcm0gaGFuZGxlciA9IG9uIH5kZWZhdWx0OmZhbHNlID9jb25maXJtIERvbS5FdmVudC5jbGljayAoZnVuIF8gLT4gaGFuZGxlciAoKSlcblxubGV0IG9uX2RvdWJsZV9jbGljayA/Y29uZmlybSBoYW5kbGVyID1cbiAgb24gfmRlZmF1bHQ6ZmFsc2UgP2NvbmZpcm0gRG9tLkV2ZW50LmRibGNsaWNrIChmdW4gXyAtPiBoYW5kbGVyICgpKVxuXG4oKiBFbGVtXG5cbiAgICBodG1sIHN0YXRlIGlzIGNvbXBvc2VkIG9mIHR3byBjbGVhbnVwIGZ1bmN0aW9uczpcbiAgICAtIGZyZWU6IGNsZWFucyB1cCBhbnkgbm9uLWRvbSByZXNvdXJjZXMgKGxpa2Ugc2lnbmFsIHN1YnNjcmlwdGlvbnMpO1xuICAgIC0gcmVtb3ZlOiBjYWxscyBmcmVlIGFuZCBhbHNvIHJlbW92ZXMgdGhlIHRvcC1sZXZlbCBkb20gcmVzb3VyY2VzLlxuXG4gICBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBuZWVkZWQgc2luY2UgZGVsZXRpbmcgYSB0b3AtbGV2ZWwgZG9tIG5vZGUsXG4gICBhdXRvbWF0aWNhbGx5IGRlbGV0ZXMgdGhlIGNoaWxkcmVuIG5vZGVzLCBidXQgd2lsbCBub3QgZnJlZSBhbnkgbWFudWFsbHlcbiAgIGFjcXVpcmVkIHJlc291cmNlcy5cbiopXG5cbigqIEV4dHJhIGNvbnN0cnVjdG9ycy4gKilcbm1vZHVsZSBFbGVtID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSB7IHVubW91bnQgOiB1bml0IC0+IHVuaXQ7IG1vdW50IDogKERvbS5ub2RlIC0+IHVuaXQpIC0+IHVuaXQgfVxuICB0eXBlIHQgPSBDdHgudCAtPiBEb20ubm9kZSAtPiBzdGF0ZVxuXG4gIGxldCBudWxsX3N0YXRlID0geyB1bm1vdW50ID0gaWdub3JlOyBtb3VudCA9IChmdW4gX2luc2VydCAtPiAoKSkgfVxuICBsZXQgbnVsbCBfY3R4IF9wYXJlbnQgPSBudWxsX3N0YXRlXG5cbiAgKCpcbiAgICBbTk9URV0gSW52YXJpYW50XG4gICAgVGhlIHBhcmVudCBNVVNUIE5PVCBjaGFuZ2UuXG5cbiAgICBbTk9URV0gT3JlZHJcbiAgICBUaGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgTVVTVCBiZTpcbiAgICAxLiBjcmVhdGUgZWxlbVxuICAgIDIuIGluc2VydCBlbGVtXG4gICAgMy4gc2V0IGF0dHJzXG4gICAgMi4gYWRkIGNoaWxkcmVuXG5cbiAgICBJZiB0aGlzIG9yZGVyIGlzbid0IGZvbGxvd2VkLCBhbGwga2luZHMgb2YgdGhpbmdzIHdpbGwgYnJlYWsuIEZvciBleGFtcGxlLFxuICAgIGBzZWxlY3RgIHJlcXVpcmVzIHRoYXQgY2hpbGRyZW4gYXJlIHByZXNlbnQgZm9yIHRoZSBgdmFsdWVgIGF0dHIgdG8gd29yay5cblxuICAgIFRoZSBgY29uZGl0aW9uYWxgIGF0dHJpYnV0ZSByZXF1aXJlcyB0aGF0IHRoZSBub2RlIGlzIG1vdW50ZWQgb24gYSBwYXJlbnQuXG4gICopXG5cbiAgbGV0IG1ha2UgbmFtZSBhdHRycyBjaGlsZHJlbiBjdHggcGFyZW50ID1cbiAgICBsZXQgbW91bnRlZCA9IHJlZiBmYWxzZSBpblxuICAgICgqIENyZWF0ZSBub2RlICopXG4gICAgbGV0IG5vZGUgPSBEb20uRG9jdW1lbnQuY3JlYXRlX2VsZW1lbnQgbmFtZSBpblxuICAgIGxldCBtb3VudCBpbnNlcnQgPVxuICAgICAgaW5zZXJ0IG5vZGU7XG4gICAgICBpZiBub3QgIW1vdW50ZWQgdGhlbiAoXG4gICAgICAgICgqIFNldCBub2RlJ3MgYXR0cmlidXRlcyAqKVxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChhdHRyIDogQXR0ci50KSAtPlxuICAgICAgICAgICAgbGV0IHN0YXRlID0gYXR0ciBjdHggbm9kZSBpblxuICAgICAgICAgICAgc3RhdGUuc2V0ICgpKVxuICAgICAgICAgIGF0dHJzO1xuICAgICAgICAoKiBDcmVhdGUgYW5kIG1vdW50IGNoaWxkcmVuICopXG4gICAgICAgIGxldCBub2RlX2luc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50Om5vZGUgaW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoY2hpbGQgOiB0KSAtPlxuICAgICAgICAgICAgbGV0IGNoaWxkX3N0YXRlID0gY2hpbGQgY3R4IG5vZGUgaW5cbiAgICAgICAgICAgIGNoaWxkX3N0YXRlLm1vdW50IG5vZGVfaW5zZXJ0KVxuICAgICAgICAgIGNoaWxkcmVuO1xuICAgICAgICBtb3VudGVkIDo9IHRydWUpXG4gICAgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgICgqIEFsbG93IG1vdW50aW5nIG5vZGUgb24gcGFyZW50ICopXG4gICAgICBtb3VudDtcbiAgICB9XG5cbiAgbGV0IHRleHQgZGF0YSBfY3R4IHBhcmVudCA9XG4gICAgbGV0IG5vZGUgPSBEb20uRG9jdW1lbnQuY3JlYXRlX3RleHRfbm9kZSBkYXRhIGluXG4gICAge1xuICAgICAgdW5tb3VudCA9IChmdW4gKCkgLT4gRG9tLk5vZGUucmVtb3ZlX2NoaWxkIH5wYXJlbnQgbm9kZSk7XG4gICAgICBtb3VudCA9IChmdW4gaW5zZXJ0IC0+IGluc2VydCBub2RlKTtcbiAgICB9XG5cbiAgbGV0IG9mX3NvbWUgdG9faHRtbCBvcHRpb24gPVxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBTb21lIHggLT4gdG9faHRtbCB4XG4gICAgfCBOb25lIC0+IG51bGxcblxuICBsZXQgb2Zfb2sgdG9faHRtbCByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+IHRvX2h0bWwgeFxuICAgIHwgRXJyb3IgXyAtPiBudWxsXG5cbiAgbGV0IG9uX3VubW91bnQgZiBlbGVtIGN0eCA9XG4gICAgQ3R4Lm9uX2NsZWFudXAgY3R4IGY7XG4gICAgZWxlbSBjdHhcblxuICBsZXQgdW5zYWZlIG5hbWUgYXR0cnMgY29udGVudCBjdHggcGFyZW50ID1cbiAgICBsZXQgbm9kZSA9IERvbS5Eb2N1bWVudC5jcmVhdGVfZWxlbWVudCBuYW1lIGluXG4gICAgRG9tLk5vZGUuc2V0X2lubmVyX2h0bWwgbm9kZSBjb250ZW50O1xuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoYXR0ciA6IEF0dHIudCkgLT5cbiAgICAgICAgbGV0IHN0YXRlID0gYXR0ciBjdHggbm9kZSBpblxuICAgICAgICBzdGF0ZS5zZXQgKCkpXG4gICAgICBhdHRycztcbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBEb20uTm9kZS5yZW1vdmVfY2hpbGQgfnBhcmVudCBub2RlKTtcbiAgICAgIG1vdW50ID0gKGZ1biBpbnNlcnQgLT4gaW5zZXJ0IG5vZGUpO1xuICAgIH1cblxuICBsZXQgZnJhZ21lbnQgY2hpbGRyZW4gY3R4IHBhcmVudCA9XG4gICAgbGV0IGZyYWcgPSBEb20uRnJhZ21lbnQubWFrZSAoKSBpblxuICAgIGxldCBmcmFnX2luc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcgaW5cbiAgICBsZXQgc3RhdGVzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4gKGNoaWxkIDogdCkgLT5cbiAgICAgICAgICBsZXQgcyA9IGNoaWxkIGN0eCBwYXJlbnQgaW5cbiAgICAgICAgICBzLm1vdW50IGZyYWdfaW5zZXJ0O1xuICAgICAgICAgIHMpXG4gICAgICAgIGNoaWxkcmVuXG4gICAgaW5cbiAgICB7XG4gICAgICB1bm1vdW50ID0gKGZ1biAoKSAtPiBMaXN0Lml0ZXIgKGZ1biAocyA6IHN0YXRlKSAtPiBzLnVubW91bnQgKCkpIHN0YXRlcyk7XG4gICAgICBtb3VudCA9IChmdW4gaW5zZXJ0IC0+IGluc2VydCBmcmFnKTtcbiAgICB9XG5lbmRcblxudHlwZSBodG1sID0gRWxlbS50XG5cbmxldCBlbGVtID0gRWxlbS5tYWtlXG5sZXQgdGV4dCA9IEVsZW0udGV4dFxubGV0IG51bGwgPSBFbGVtLm51bGxcbmxldCBmcmFnbWVudCA9IEVsZW0uZnJhZ21lbnRcbmxldCBpbnQgbiA9IHRleHQgKHN0cmluZ19vZl9pbnQgbilcbmxldCBuYnNwID0gdGV4dCBcIlxcdXswMEEwfVwiXG5sZXQgYSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhYmJyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFiYnJcIiBhdHRycyBjaGlsZHJlblxubGV0IGFkZHJlc3MgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYWRkcmVzc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYXJlYSBhdHRycyA9IGVsZW0gXCJhcmVhXCIgYXR0cnMgW11cbmxldCBhcnRpY2xlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFydGljbGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGFzaWRlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImFzaWRlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBhdWRpbyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJhdWRpb1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBiYXNlIGF0dHJzID0gZWxlbSBcImJhc2VcIiBhdHRycyBbXVxubGV0IGJkaSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiZGlcIiBhdHRycyBjaGlsZHJlblxubGV0IGJkbyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJiZG9cIiBhdHRycyBjaGlsZHJlblxubGV0IGJsb2NrcXVvdGUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiYmxvY2txdW90ZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgYnIgYXR0cnMgPSBlbGVtIFwiYnJcIiBhdHRycyBbXVxubGV0IGJ1dHRvbiBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJidXR0b25cIiBhdHRycyBjaGlsZHJlblxubGV0IGNhbnZhcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjYW52YXNcIiBhdHRycyBjaGlsZHJlblxubGV0IGNhcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiY2FwdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgY2l0ZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJjaXRlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjb2RlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvZGVcIiBhdHRycyBjaGlsZHJlblxubGV0IGNvbCBhdHRycyA9IGVsZW0gXCJjb2xcIiBhdHRycyBbXVxubGV0IGNvbGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvbGdyb3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBjb21tYW5kIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImNvbW1hbmRcIiBhdHRycyBjaGlsZHJlblxubGV0IGRhdGFsaXN0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRhdGFsaXN0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGVsIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImRlbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZGV0YWlscyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkZXRhaWxzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkZm4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGZuXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkaXYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZGl2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBkbCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJkbFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZHQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZHRcIiBhdHRycyBjaGlsZHJlblxubGV0IGVtIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImVtXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBlbWJlZCBhdHRycyA9IGVsZW0gXCJlbWJlZFwiIGF0dHJzIFtdXG5sZXQgZmllbGRzZXQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmllbGRzZXRcIiBhdHRycyBjaGlsZHJlblxubGV0IGZpZ2NhcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiZmlnY2FwdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZmlndXJlIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZpZ3VyZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZm9vdGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImZvb3RlclwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgZm9ybSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJmb3JtXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoMSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoMVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDIgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDJcIiBhdHRycyBjaGlsZHJlblxubGV0IGgzIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImgzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoNCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoNFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgaDUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaDVcIiBhdHRycyBjaGlsZHJlblxubGV0IGg2IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImg2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBoZWFkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImhlYWRcIiBhdHRycyBjaGlsZHJlblxubGV0IGhlYWRlciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoZWFkZXJcIiBhdHRycyBjaGlsZHJlblxubGV0IGhncm91cCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJoZ3JvdXBcIiBhdHRycyBjaGlsZHJlblxubGV0IGhyIGF0dHJzID0gZWxlbSBcImhyXCIgYXR0cnMgW11cblxuKCogbGV0IGh0bWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaHRtbFwiIGF0dHJzIGNoaWxkcmVuICopXG5sZXQgaSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJpXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBpZnJhbWUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwiaWZyYW1lXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBpbWcgYXR0cnMgPSBlbGVtIFwiaW1nXCIgYXR0cnMgW11cbmxldCBpbnB1dCBhdHRycyA9IGVsZW0gXCJpbnB1dFwiIGF0dHJzIFtdXG5sZXQgaW5zIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImluc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQga2JkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImtiZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQga2V5Z2VuIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImtleWdlblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbGFiZWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibGFiZWxcIiBhdHRycyBjaGlsZHJlblxubGV0IGxlZ2VuZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJsZWdlbmRcIiBhdHRycyBjaGlsZHJlblxubGV0IGxpIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcImxpXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtYWluIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1haW5cIiBhdHRycyBjaGlsZHJlblxubGV0IG1hcCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtYXBcIiBhdHRycyBjaGlsZHJlblxubGV0IG1hcmsgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibWFya1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgbWVudSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJtZW51XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBtZXRhIGF0dHJzID0gZWxlbSBcIm1ldGFcIiBhdHRycyBbXVxubGV0IG1ldGVyIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm1ldGVyXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBuYXYgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwibmF2XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvYmplY3QnIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm9iamVjdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgb2wgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib2xcIiBhdHRycyBjaGlsZHJlblxubGV0IG9wdGdyb3VwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcIm9wdGdyb3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvcHRpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3B0aW9uXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBvdXRwdXQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwib3V0cHV0XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBwIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInBcIiBhdHRycyBjaGlsZHJlblxubGV0IHBhcmFtIGF0dHJzID0gZWxlbSBcInBhcmFtXCIgYXR0cnMgW11cbmxldCBwcmUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicHJlXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBwcm9ncmVzcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJwcm9ncmVzc1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJxXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBycCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJycFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcnQgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicnRcIiBhdHRycyBjaGlsZHJlblxubGV0IHJ1YnkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwicnVieVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgcyBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzXCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzYW1wIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNhbXBcIiBhdHRycyBjaGlsZHJlblxubGV0IHNlY3Rpb24gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic2VjdGlvblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc2VsZWN0IGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInNlbGVjdFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc21hbGwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic21hbGxcIiBhdHRycyBjaGlsZHJlblxubGV0IHNvdXJjZSBhdHRycyA9IGVsZW0gXCJzb3VyY2VcIiBhdHRycyBbXVxubGV0IHNwYW4gYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3BhblwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3Ryb25nIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN0cm9uZ1wiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3ViIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInN1YlwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgc3VtbWFyeSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJzdW1tYXJ5XCIgYXR0cnMgY2hpbGRyZW5cbmxldCBzdXAgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwic3VwXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0YWJsZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0YWJsZVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGJvZHkgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGJvZHlcIiBhdHRycyBjaGlsZHJlblxubGV0IHRkIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRkXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0ZXh0YXJlYSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0ZXh0YXJlYVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGZvb3QgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidGZvb3RcIiBhdHRycyBjaGlsZHJlblxubGV0IHRoIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInRoXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0aGVhZCBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0aGVhZFwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdGltZSBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0aW1lXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB0ciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ0clwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdHJhY2sgYXR0cnMgPSBlbGVtIFwidHJhY2tcIiBhdHRycyBbXVxubGV0IHUgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidVwiIGF0dHJzIGNoaWxkcmVuXG5sZXQgdWwgYXR0cnMgY2hpbGRyZW4gPSBlbGVtIFwidWxcIiBhdHRycyBjaGlsZHJlblxubGV0IHZhciBhdHRycyBjaGlsZHJlbiA9IGVsZW0gXCJ2YXJcIiBhdHRycyBjaGlsZHJlblxubGV0IHZpZGVvIGF0dHJzIGNoaWxkcmVuID0gZWxlbSBcInZpZGVvXCIgYXR0cnMgY2hpbGRyZW5cbmxldCB3YnIgYXR0cnMgPSBlbGVtIFwid2JyXCIgYXR0cnMgW11cblxubGV0IG9uX21vdW50IGYgaHRtbCBjdHggcGFyZW50ID1cbiAgbGV0IHN0YXRlIDogRWxlbS5zdGF0ZSA9IGh0bWwgY3R4IHBhcmVudCBpblxuICB7XG4gICAgc3RhdGUgd2l0aFxuICAgIG1vdW50ID1cbiAgICAgIChmdW4gaW5zZXJ0IC0+XG4gICAgICAgIHN0YXRlLm1vdW50IGluc2VydDtcbiAgICAgICAgZiAoKSk7XG4gIH1cblxubGV0IHJlc291cmNlIH5pbml0IH5mcmVlICh1c2UgOiAnYSAtPiBFbGVtLnQpIGN0eCBwYXJlbnQgPVxuICBsZXQgciA9IGluaXQgKCkgaW5cbiAgbGV0IGh0bWwgPSB1c2UgciBpblxuICBsZXQgc3RhdGUgPSBodG1sIGN0eCBwYXJlbnQgaW5cbiAgQ3R4Lm9uX2NsZWFudXAgY3R4IChmdW4gKCkgLT4gZnJlZSByKTtcbiAgc3RhdGVcblxuKCogRE9NIGhlbHBlcnMgKilcblxubGV0IG1vdW50IHBhcmVudCBodG1sID1cbiAgbGV0IGN0eCA9IEN0eC5tYWtlICgpIGluXG4gIGxldCBzdGF0ZSA6IEVsZW0uc3RhdGUgPSBodG1sIGN0eCBwYXJlbnQgaW5cbiAgbGV0IGluc2VydCA9IERvbS5Ob2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50IGluXG4gIHN0YXRlLm1vdW50IGluc2VydFxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWIiLCJTdGRsaWIiLCJTdGRsaWJfTGlzdCIsImkiLCJtYWtlIiwicGFyYW0iLCJvbl9jbGVhbnVwIiwidCIsImNsZWFudXAiLCJjIiwibGluayIsInQyIiwidW5saW5rIiwic3ViY3R4Iiwibm9wIiwiY3R4Iiwibm9kZSIsIm9uIiwiYm9vbCIsImF0dHIiLCJvbl9zb21lIiwiYXQiLCJvbl9vayIsInN0cmluZyIsIm5hbWUiLCJ2YWx1ZSIsInNldCIsInVuc2V0IiwiaW50Iiwib25fbW91bnQiLCJjb21iaW5lIiwiYTFfc3RhdGUiLCJhMl9zdGF0ZSIsImxpc3QiLCJhdHRycyIsImNzdF9sYWJlbCIsImxhYmVsIiwiYWNjZXB0IiwiYWNjZXNza2V5IiwiYWN0aW9uIiwiYXV0b2NvbXBsZXRlIiwiYXV0b2ZvY3VzIiwiY2hhcnNldCIsImNoZWNrZWQiLCJjbGFzc19uYW1lIiwiY29scyIsImNvbnRlbnQiLCJjb250ZW50ZWRpdGFibGUiLCJkZWZlciIsImRpciIsImRpc2FibGVkIiwiZHJhZ2dhYmxlIiwiZm9yJCIsImZvcm1hY3Rpb24iLCJoZWlnaHQiLCJoaWRkZW4iLCJocmVmIiwiaWQiLCJsYW5nIiwibWVkaWEiLCJtZXRob2QiLCJvcGVuIiwicGxhY2Vob2xkZXIiLCJyZWwiLCJyZXF1aXJlZCIsInJvd3MiLCJzZWxlY3RlZCIsInNwZWxsY2hlY2siLCJzcmMiLCJ0YWJpbmRleCIsInRpdGxlIiwidHlwZSIsIngiLCJ2YWx1ZV9vciIsImRlZmF1bHQkIiwib3B0Iiwid3JhcCIsIndpZHRoIiwic3R5bGUiLCJyb2xlIiwic3R5bGVfbGlzdCIsIml0ZW1zIiwiY2xhc3NfbGlzdCIsImNsIiwiY2xhc3NfZmxhZ3MiLCJvcHRpb25zIiwiYWNjIiwiYiIsImNvbmZpcm0iLCJtc2ciLCJldiIsIm9uX2NoYW5nZSIsImhhbmRsZXIiLCJvbl9jaGVja2VkIiwib25faW5wdXQiLCJvbl9jbGljayIsIm9uX2RvdWJsZV9jbGljayIsIm51bGxfc3RhdGUiLCJpbnNlcnQiLCJudWxsJCIsInBhcmVudCIsImNoaWxkcmVuIiwibW91bnRlZCIsIm1vdW50Iiwic3RhdGUiLCJub2RlX2luc2VydCIsImNoaWxkIiwiY2hpbGRfc3RhdGUiLCJ0ZXh0IiwiZGF0YSIsIm9mX3NvbWUiLCJ0b19odG1sIiwib3B0aW9uIiwib2Zfb2siLCJyZXN1bHQiLCJvbl91bm1vdW50IiwiZWxlbSIsInVuc2FmZSIsImZyYWdtZW50IiwiZnJhZyIsImZyYWdfaW5zZXJ0Iiwic3RhdGVzIiwicyIsIm4iLCJuYnNwIiwiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYmFzZSIsImJkaSIsImJkbyIsImJsb2NrcXVvdGUiLCJiciIsImJ1dHRvbiIsImNhbnZhcyIsImNhcHRpb24iLCJjaXRlIiwiY29kZSIsImNvbCIsImNvbGdyb3VwIiwiY29tbWFuZCIsImRhdGFsaXN0IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGl2IiwiZGwiLCJkdCIsImVtIiwiZW1iZWQiLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJmaWd1cmUiLCJmb290ZXIiLCJmb3JtIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZCIsImhlYWRlciIsImhncm91cCIsImhyIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQiLCJpbnMiLCJrYmQiLCJrZXlnZW4iLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWVudSIsIm1ldGEiLCJtZXRlciIsIm5hdiIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJvdXRwdXQiLCJwIiwicHJlIiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2VjdGlvbiIsInNlbGVjdCIsInNtYWxsIiwic291cmNlIiwic3BhbiIsInN0cm9uZyIsInN1YiIsInN1bW1hcnkiLCJzdXAiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidSIsInVsIiwidmFyJCIsInZpZGVvIiwid2JyIiwiaHRtbCIsInJlc291cmNlIiwiaW5pdCIsImZyZWUiLCJ1c2UiLCJyIiwiSHRtbCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFKLEdBQUFDLElBQUFFLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxJQUFBO0FBQUEsWUFBQUMsS0FBQUM7QUFBQUEsUUFBQSxJQ1d1RDtBQUFBLElBTGpEO0FBQUEsSUFLMEI7QUFBQSxHQUE2QztBQUFBLFlBQUFDLFdBQUFDLEdBQUFkLEdBQ3RELDhCQUEyQjtBQUFBLFlBQUFlLFFBQUFEO0FBQUFBLElBQ2hDO0FBQUEsNEJBQUFFLEdBQW9CLHVCQUFJLFNBQVc7QUFBQTtBQUFBLFlBQUFDLEtBQUFILEdBQUFJLElBQ25DLGlEQUErQjtBQUFBLFlBQUFDLE9BQUFMLEdBQUFNO0FBQUFBLElBQ3pCLGlEQUFnQztBQUFBO0FBQUEsWUFBQUMsSUFBQUMsS0FBQUM7QUFBQUEsSUFnQmpDLHVCRC9CdkIsbUNDK0J1QjtBQUFBLEdBQWdDO0FBQUEsWUFBQUMsR0FBQUMsTUFBQUMsTUFDbEMsd0JBQTBCO0FBQUEsWUFBQUMsUUFBQWY7QUFBQUEsSUFFL0IsWUFDRjtBQUFBLFFBQUFnQixLQURFO0FBQUEsSUFFQztBQUFBLEdBQUU7QUFBQSxZQUFBQyxNQUFBakI7QUFBQUEsSUFFTCxtQkFDRztBQUFBLFFBQUFjLE9BREg7QUFBQSxJQUVHO0FBQUEsR0FBSTtBQUFBLFlBQUFJLE9BQUFDLE1BQUFDLE9BQUFWLEtBQUFDO0FBQUFBLGFBQUFVLElBQUFyQjtBQUFBQSxLQUdKLHNEQUFpQztBQUFBO0FBQUEsYUFBQXNCLE1BQUF0QixPQUMvQiwrQ0FBNkI7QUFBQSxJQUM1QztBQUFBLEdBQWM7QUFBQSxZQUFBYSxLQUFBTSxNQUFBTjtBQUFBQSxJQUVLLDZCQUFhLHFDQUF1QjtBQUFBO0FBQUEsWUFBQVUsSUFBQUosTUFBQXJCO0FBQUFBLFFBQUEsSUFDNUI7QUFBQSxJQUFpQjtBQUFBO0FBQUEsWUFBQTBCLFNBQUFwQyxHQUFBc0IsS0FBQUM7QUFBQUEsYUFBQVUsSUFBQXJCLE9BRy9CLDBCQUFNO0FBQUEsSUFDbkIsNEJEcERKLFdDb0RJO0FBQUEsR0FBdUI7QUFBQSxZQUFBeUIsUUFBQWxDLElBQUFFLElBQUFpQixLQUFBQztBQUFBQTtBQUFBQSxLQUFBZSxXQU1SO0FBQUEsS0FBQUMsV0FDQTtBQUFBLGFBQUFOLElBQUFyQjtBQUFBQSxLQUViO0FBQUEsS0FBZSxpQ0FDQTtBQUFBO0FBQUEsYUFBQXNCLE1BQUF0QjtBQUFBQSxLQUdmO0FBQUEsS0FBaUIsaUNBQ0E7QUFBQTtBQUFBLElBRW5CO0FBQUEsR0FBYztBQUFBLFlBQUE0QixLQUFBQztBQUFBQSxJQUVDLHNEQUFnQztBQUFBO0FBQUEsT0FBQUMsWUR0RW5EO0FBQUEsWUFBQUMsTUFBQSxTQ3VFYztBQUFBLFlBQUFDLE9BQUFaO0FBQUFBLElBUUssc0JEL0VuQixzQ0MrRW1CO0FBQUEsR0FBMEI7QUFBQSxZQUFBYSxVQUFBYjtBQUFBQSxJQUN2QixzQkRoRnRCLHlDQ2dGc0I7QUFBQSxHQUE2QjtBQUFBLFlBQUFjLE9BQUFkO0FBQUFBLElBQ2hDLHNCRGpGbkIsc0NDaUZtQjtBQUFBLEdBQTBCO0FBQUEsWUFBQWUsYUFBQWY7QUFBQUEsSUFDcEIsc0JEbEZ6Qiw0Q0NrRnlCO0FBQUEsR0FBZ0M7QUFBQSxZQUFBZ0IsVUFBQWhCLE9BQ25DLCtCQUEyQjtBQUFBLFlBQUFpQixRQUFBakI7QUFBQUEsSUFDN0Isc0JEcEZwQix1Q0NvRm9CO0FBQUEsR0FBMkI7QUFBQSxZQUFBa0IsUUFBQWxCLE9BQzNCLDZCQUF5QjtBQUFBLFlBQUFtQixXQUFBbkI7QUFBQUEsSUFDdEIsc0JEdEZ2QixxQ0NzRnVCO0FBQUEsR0FBeUI7QUFBQSxZQUFBb0IsS0FBQXBCLE9BQy9CLHlCQUFxQjtBQUFBLFlBQUFxQixRQUFBckI7QUFBQUEsSUFDbEIsc0JEeEZwQix1Q0N3Rm9CO0FBQUEsR0FBMkI7QUFBQSxZQUFBc0IsZ0JBQUF0QixPQUNuQixxQ0FBaUM7QUFBQSxZQUFBdUIsTUFBQXZCLE9BQzNDLDJCQUF1QjtBQUFBLFlBQUF3QixJQUFBeEI7QUFBQUEsSUFDekIsc0JEM0ZoQixtQ0MyRmdCO0FBQUEsR0FBdUI7QUFBQSxZQUFBeUIsU0FBQXpCLE9BQ2xCLDhCQUEwQjtBQUFBLFlBQUEwQixVQUFBMUIsT0FDekIsK0JBQTJCO0FBQUEsWUFBQTJCLEtBQUEzQjtBQUFBQSxJQUNoQyxzQkQ5RmpCLG1DQzhGaUI7QUFBQSxHQUF1QjtBQUFBLFlBQUE0QixXQUFBNUI7QUFBQUEsSUFDakIsc0JEL0Z2QiwwQ0MrRnVCO0FBQUEsR0FBOEI7QUFBQSxZQUFBNkIsT0FBQTdCLE9BQ2xDLDJCQUF1QjtBQUFBLFlBQUE4QixPQUFBOUIsT0FDdkIsNEJBQXdCO0FBQUEsWUFBQStCLEtBQUEvQjtBQUFBQSxJQUMxQixzQkRsR2pCLG9DQ2tHaUI7QUFBQSxHQUF3QjtBQUFBLFlBQUFnQyxHQUFBaEM7QUFBQUEsSUFDMUIsc0JEbkdmLGtDQ21HZTtBQUFBLEdBQXNCO0FBQUEsWUFBQWlDLEtBQUFqQztBQUFBQSxJQUNwQixzQkRwR2pCLG9DQ29HaUI7QUFBQSxHQUF3QjtBQUFBLFlBQUFRLE9BQUFSO0FBQUFBLElBQ3hCLHNCRHJHakIsb0NDcUdpQjtBQUFBLEdBQXdCO0FBQUEsWUFBQWtDLE1BQUFsQztBQUFBQSxJQUN2QixzQkR0R2xCLHFDQ3NHa0I7QUFBQSxHQUF5QjtBQUFBLFlBQUFtQyxPQUFBbkM7QUFBQUEsSUFDdkIsc0JEdkdwQixzQ0N1R29CO0FBQUEsR0FBMEI7QUFBQSxZQUFBRCxLQUFBQztBQUFBQSxJQUM3QixzQkR4R2pCLG9DQ3dHaUI7QUFBQSxHQUF3QjtBQUFBLFlBQUFvQyxLQUFBcEMsT0FDdkIsMEJBQXNCO0FBQUEsWUFBQXFDLFlBQUFyQztBQUFBQSxJQUNoQixzQkQxR3hCLDJDQzBHd0I7QUFBQSxHQUErQjtBQUFBLFlBQUFzQyxJQUFBdEM7QUFBQUEsSUFDdkMsc0JEM0doQixtQ0MyR2dCO0FBQUEsR0FBdUI7QUFBQSxZQUFBdUMsU0FBQXZDLE9BQ2xCLDhCQUEwQjtBQUFBLFlBQUF3QyxLQUFBeEMsT0FDOUIseUJBQXFCO0FBQUEsWUFBQXlDLFNBQUF6QyxPQUNqQiw4QkFBMEI7QUFBQSxZQUFBMEMsV0FBQTFDO0FBQUFBLElBQ3hCLHNCRC9HdkIsMENDK0d1QjtBQUFBLEdBQThCO0FBQUEsWUFBQTJDLElBQUEzQztBQUFBQSxJQUNyQyxzQkRoSGhCLG1DQ2dIZ0I7QUFBQSxHQUF1QjtBQUFBLFlBQUE0QyxTQUFBNUMsT0FDbEIsNkJBQXlCO0FBQUEsWUFBQTZDLE1BQUE3QztBQUFBQSxJQUM1QixzQkRsSGxCLHFDQ2tIa0I7QUFBQSxHQUF5QjtBQUFBLFlBQUE4QyxLQUFBOUM7QUFBQUEsSUFDekIsc0JEbkhsQixvQ0NtSGtCO0FBQUEsR0FBd0I7QUFBQSxZQUFBQSxNQUFBK0MsR0FBQXpELEtBQUFDO0FBQUFBLGFBQUFVLElBQUFyQixPQUczQiw0Q0FBeUI7QUFBQSxhQUFBc0IsTUFBQXRCLE9BQ3ZCLHlDQUF5QjtBQUFBLElBQ3hDO0FBQUEsR0FBbUI7QUFBQSxZQUFBb0UsU0FBQUMsVUFBQUM7QUFBQUEsSUFHbkIsVUFFVTtBQUFBLFFBQUFILElBRlY7QUFBQSxJQUNZO0FBQUEsR0FDVztBQUFBLFlBQUFJLEtBQUFuRDtBQUFBQSxJQUVSLHNCRC9IakIsb0NDK0hpQjtBQUFBLEdBQXdCO0FBQUEsWUFBQW9ELE1BQUFwRCxPQUN2QiwwQkFBc0I7QUFBQSxZQUFBcUQsTUFBQU4sR0FDMUIsc0JEaklkLGlDQ2lJYyxDQUFxQjtBQUFBLFlBQUFPLEtBQUFQLEdBQ3RCLHNCRGxJYixnQ0NrSWEsQ0FBb0I7QUFBQSxZQUFBUSxXQUFBQyxPQUFBbEUsS0FBQUM7QUFBQUEsUUFBQThELFFBR25CO0FBQUEsYUFBQXBELElBQUFyQjtBQUFBQSxLQUNDO0FBQUE7QUFBQSx1QkFBQUE7QUFBQUEsbUJBQUFvQixRQUFVLFVBQUFELE9BQUE7QUFBQSxlQUFzQixzREFBK0I7QUFBQTtBQUFBLG9CQUFNO0FBQUE7QUFBQSxhQUFBRyxNQUFBdEI7QUFBQUEsS0FDbkU7QUFBQTtBQUFBLHVCQUFBQTtBQUFBQSxtQkFBQW1CLE9BQVU7QUFBQSxlQUF1QiwrQ0FBMkI7QUFBQTtBQUFBLG9CQUFNO0FBQUE7QUFBQSxJQUNqRjtBQUFBLEdBQW1CO0FBQUEsWUFBQTBELFdBQUFELE9BQUFsRSxLQUFBQztBQUFBQSxRQUFBbUUsS0FHVjtBQUFBLGFBQUF6RCxJQUFBckI7QUFBQUEsS0FDSTtBQUFBO0FBQUEsdUJBQUFtQixNQUF1Qiw0Q0FBMEI7QUFBQSxvQkFBTztBQUFBO0FBQUEsYUFBQUcsTUFBQXRCO0FBQUFBLEtBQ3REO0FBQUE7QUFBQSx1QkFBQW1CLE1BQXVCLDRDQUE2QjtBQUFBLG9CQUFPO0FBQUE7QUFBQSxJQUMxRTtBQUFBLEdBQW1CO0FBQUEsWUFBQTRELFlBQUFDO0FBQUFBO0FBQUFBLEtBQUFwRDtBQUFBQSxPQUdSO0FBQUE7QUFBQSxrQkFBQXFELEtBQUFqRjtBQUFBQSxjQUFBa0YsSUFBZSxVQUFBOUUsSUFBQTtBQUFBLFVBQW1CLDRCQUE0QjtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQ3pFO0FBQUEsR0FBZTtBQUFBLFlBQUFRLEtBQUEwRCxLQUFBYSxTQUFBaEUsTUFBQS9CLEdBQUFzQixLQUFBQztBQUFBQSxRQUFBMEQsV0FJVjtBQUFBLElBQ0w7QUFBQTtBQUFBLE1BQUFlLE1BQUE7QUFBQSxNQUFBaEc7QUFBQUEsUUFRSSxTQUFBaUc7QUFBQUEsU0FDSztBQUFBLFVBR0Usc0NBQTRCO0FBQUEsU0FGL0IsaUJBQTZCO0FBQUEsU0FDN0Isd0JBQytCO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBQWpHO0FBQUFBLFFBVnpCO0FBQUE7QUFBQTtBQUFBLFdBQUFpRztBQUFBQSxXQUVSO0FBQUEsV0FBNEIsd0JBQ3hCO0FBQUE7QUFBQSxhQUFBaEUsSUFBQXJCLE9BU0csb0RBQTBCO0FBQUEsYUFBQXNCLE1BQUF0QjtBQUFBQSxLQUN4QixvREFBNEI7QUFBQTtBQUFBLElBQzNDO0FBQUEsR0FBbUI7QUFBQSxXQWhHTztBQUFBLFlBQUFzRixVQUFBSCxTQUFBSTtBQUFBQSxhQUFBLEVBQUFGO0FBQUFBLFNBQUEsSUFvR007QUFBQSxLQUFwQixPQUEwQyxvQkFBMUMsZ0NBQTBDO0FBQUE7QUFBQSxZQUR0RDtBQUFBLDBCRDFLRixxQ0MwS0U7QUFBQSxHQUN1RDtBQUFBLFdBcEc3QjtBQUFBLFlBQUFHLFdBQUFMLFNBQUFJO0FBQUFBLGFBQUEsRUFBQUY7QUFBQUEsU0FBQSxJQXdHUTtBQUFBLEtBQXRCLE9BQTRDLG9CQUE1QyxnQ0FBNEM7QUFBQTtBQUFBLFlBRHhEO0FBQUEsMEJEOUtGLHFDQzhLRTtBQUFBLEdBQ3lEO0FBQUEsV0F4Ry9CO0FBQUEsWUFBQUksU0FBQU4sU0FBQUk7QUFBQUEsYUFBQSxFQUFBRjtBQUFBQSxTQUFBLElBNEdNO0FBQUEsS0FBcEIsT0FBMEMsb0JBQTFDLGdDQUEwQztBQUFBO0FBQUEsWUFEdEQ7QUFBQSwwQkRsTEYscUNDa0xFO0FBQUEsR0FDdUQ7QUFBQSxXQTVHN0I7QUFBQSxZQUFBSyxTQUFBUCxTQUFBSTtBQUFBQSxhQUFBLEVBQUF2RixPQThHeUQsNkJBQVU7QUFBQSxZQUEvRDtBQUFBLDBCRHJMaEMscUNDcUxnQztBQUFBLEdBQWdFO0FBQUEsV0E5R3BFO0FBQUEsWUFBQTJGLGdCQUFBUixTQUFBSTtBQUFBQSxhQUFBLEVBQUF2RixPQWlIOEIsNkJBQVU7QUFBQSxZQUFsRTtBQUFBLDBCRHhMRixxQ0N3TEU7QUFBQSxHQUFtRTtBQUFBLE9BQUE0RixhQWpIekMsZ0JEdkU1QixxQkFBQUMsUUMwTStELFNBQUU7QUFBQSxZQUFBQyxNQUFBcEYsS0FBQXFGLFFBQ3ZDLGtCQUFVO0FBQUEsWUFBQWhHLE9BQUFvQixNQUFBVSxPQUFBbUUsVUFBQXRGLEtBQUFxRjtBQUFBQSxRQUFBcEYsT0FzQnJCLG9DQUFBc0YsVUFGWDtBQUFBLGFBQUFDLE1BQUFMO0FBQUFBLEtBSUU7QUFBQSxhQUFXO0FBQUE7QUFBQSxNQUdUO0FBQUE7QUFBQSxpQkFBQS9FO0FBQUFBLGFBQUFxRixRQUVnQjtBQUFBLFNBQ1osOEJBQVk7QUFBQTtBQUFBO0FBQUEsVUFBQUMsY0FHRTtBQUFBLE1BQ2xCO0FBQUE7QUFBQSxpQkFBQUM7QUFBQUEsYUFBQUMsY0FFc0I7QUFBQSxTQUNsQiw4Q0FBNkI7QUFBQTtBQUFBO0FBQUEsTUFDdkI7QUFBQTtBQUFBO0FBQUE7QUFBQSxjQWREO0FBQUE7QUFBQSxJQWVPO0FBQUEsSUFFcEI7QUFBQSxxQkFBQXRHO0FBQUFBLGFBQ3VCLGlEQUFrQztBQUFBO0FBQUEsa0JBRHpEO0FBQUEsR0FJQztBQUFBLFlBQUF1RyxLQUFBQyxNQUFBOUYsS0FBQXFGO0FBQUFBLFFBQUFwRixPQUdVO0FBQUEsSUFDWDtBQUFBLHFCQUFBWDtBQUFBQSxhQUN1QixpREFBa0M7QUFBQTtBQUFBLHFCQUFBNkYsUUFDaEMsK0JBQVcsR0FGcEM7QUFBQSxHQUdDO0FBQUEsWUFBQVksUUFBQUMsU0FBQUM7QUFBQUEsSUFHRCxhQUVVO0FBQUEsUUFBQXhDLElBRlY7QUFBQSxJQUNZLDZCQUNFO0FBQUE7QUFBQSxZQUFBeUMsTUFBQUYsU0FBQUc7QUFBQUEsSUFHZCxvQkFFYTtBQUFBLFFBQUExQyxJQUZiO0FBQUEsSUFDVSw2QkFDTztBQUFBO0FBQUEsWUFBQTJDLFdBQUExSCxHQUFBMkgsTUFBQXJHO0FBQUFBLElBR2pCO0FBQUEsSUFBb0IsNEJBQ1o7QUFBQTtBQUFBLFlBQUFzRyxPQUFBN0YsTUFBQVUsT0FBQVksU0FBQS9CLEtBQUFxRjtBQUFBQSxRQUFBcEYsT0FHRztBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUE7QUFBQSxlQUFBRztBQUFBQSxXQUFBcUYsUUFFZ0I7QUFBQSxPQUNaLDhCQUFZO0FBQUE7QUFBQTtBQUFBLElBQ1Q7QUFBQSxxQkFBQW5HO0FBQUFBLGFBRWdCLGlEQUFrQztBQUFBO0FBQUEscUJBQUE2RixRQUNoQywrQkFBVyxHQUg3QjtBQUFBLEdBSU47QUFBQSxZQUFBb0IsU0FBQWpCLFVBQUF0RixLQUFBcUY7QUFBQUE7QUFBQUEsS0FBQW1CLE9BR1U7QUFBQSxLQUFBQyxjQUNPO0FBQUEsS0FBQUM7QUFBQUEsT0FFaEI7QUFBQTtBQUFBLGtCQUFBZjtBQUFBQSxjQUFBZ0IsSUFFWTtBQUFBLFVBQ1I7QUFBQSxVQUFtQjtBQUFBLFNBQ2xCO0FBQUE7QUFBQSxJQUdQO0FBQUEscUJBQUFySDtBQUFBQSxhQUN1QjtBQUFBLHFDQUFBcUgsR0FBOEIsMEJBQVksV0FBUTtBQUFBO0FBQUEscUJBQUF4QixRQUNoRCwrQkFBVyxHQUZwQztBQUFBLEdBR0M7QUFBQSxZQUFBdEUsTUFBQStGO0FBQUFBLFFBQUEsSUFTWTtBQUFBLElBQWlCO0FBQUE7QUFBQSxZQUFBQyxLQUFBLE1BQ3ZCO0FBQUEsWUFBQUMsRUFBQTNGLE9BQUFtRTtBQUFBQSxJQUNZO0FBQUEsR0FBdUI7QUFBQSxZQUFBeUIsS0FBQTVGLE9BQUFtRTtBQUFBQSxJQUNwQjtBQUFBLEdBQTBCO0FBQUEsWUFBQTBCLFFBQUE3RixPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUE2QjtBQUFBLFlBQUEyQixLQUFBOUY7QUFBQUEsSUFDekMsc0JEeFRqQix1Q0N3VGlCO0FBQUEsR0FBb0I7QUFBQSxZQUFBK0YsUUFBQS9GLE9BQUFtRTtBQUFBQSxJQUNSO0FBQUEsR0FBNkI7QUFBQSxZQUFBNkIsTUFBQWhHLE9BQUFtRTtBQUFBQSxJQUMvQjtBQUFBLEdBQTJCO0FBQUEsWUFBQThCLE1BQUFqRyxPQUFBbUU7QUFBQUEsSUFDM0I7QUFBQSxHQUEyQjtBQUFBLFlBQUFkLEVBQUFyRCxPQUFBbUU7QUFBQUEsSUFDL0I7QUFBQSxHQUF1QjtBQUFBLFlBQUErQixLQUFBbEc7QUFBQUEsSUFDN0Isc0JEN1RqQix1Q0M2VGlCO0FBQUEsR0FBb0I7QUFBQSxZQUFBbUcsSUFBQW5HLE9BQUFtRTtBQUFBQSxJQUNaO0FBQUEsR0FBeUI7QUFBQSxZQUFBaUMsSUFBQXBHLE9BQUFtRTtBQUFBQSxJQUN6QjtBQUFBLEdBQXlCO0FBQUEsWUFBQWtDLFdBQUFyRyxPQUFBbUU7QUFBQUEsSUFDbEI7QUFBQTtBQUFBLEdBQWdDO0FBQUEsWUFBQW1DLEdBQUF0RztBQUFBQSxJQUNqRCxzQkRqVWYscUNDaVVlO0FBQUEsR0FBa0I7QUFBQSxZQUFBdUcsT0FBQXZHLE9BQUFtRTtBQUFBQSxJQUNMO0FBQUEsR0FBNEI7QUFBQSxZQUFBcUMsT0FBQXhHLE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQTRCO0FBQUEsWUFBQXNDLFFBQUF6RyxPQUFBbUU7QUFBQUEsSUFDM0I7QUFBQSxHQUE2QjtBQUFBLFlBQUF1QyxLQUFBMUcsT0FBQW1FO0FBQUFBLElBQ2hDO0FBQUEsR0FBMEI7QUFBQSxZQUFBd0MsS0FBQTNHLE9BQUFtRTtBQUFBQSxJQUMxQjtBQUFBLEdBQTBCO0FBQUEsWUFBQXlDLElBQUE1RztBQUFBQSxJQUNwQyxzQkR2VWhCLHNDQ3VVZ0I7QUFBQSxHQUFtQjtBQUFBLFlBQUE2RyxTQUFBN0csT0FBQW1FO0FBQUFBLElBQ0w7QUFBQSxHQUE4QjtBQUFBLFlBQUEyQyxRQUFBOUcsT0FBQW1FO0FBQUFBLElBQy9CO0FBQUEsR0FBNkI7QUFBQSxZQUFBNEMsU0FBQS9HLE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQThCO0FBQUEsWUFBQTZDLEdBQUFoSCxPQUFBbUU7QUFBQUEsSUFDcEM7QUFBQSxHQUF3QjtBQUFBLFlBQUE4QyxJQUFBakgsT0FBQW1FO0FBQUFBLElBQ3ZCO0FBQUEsR0FBeUI7QUFBQSxZQUFBK0MsUUFBQWxILE9BQUFtRTtBQUFBQSxJQUNyQjtBQUFBLEdBQTZCO0FBQUEsWUFBQWdELElBQUFuSCxPQUFBbUU7QUFBQUEsSUFDakM7QUFBQSxHQUF5QjtBQUFBLFlBQUFpRCxJQUFBcEgsT0FBQW1FO0FBQUFBLElBQ3pCO0FBQUEsR0FBeUI7QUFBQSxZQUFBa0QsR0FBQXJILE9BQUFtRTtBQUFBQSxJQUMxQjtBQUFBLEdBQXdCO0FBQUEsWUFBQW1ELEdBQUF0SCxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUFvRCxHQUFBdkgsT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBd0I7QUFBQSxZQUFBcUQsTUFBQXhIO0FBQUFBLElBQzlCLHNCRG5WbEIsd0NDbVZrQjtBQUFBLEdBQXFCO0FBQUEsWUFBQXlILFNBQUF6SCxPQUFBbUU7QUFBQUEsSUFDVDtBQUFBLEdBQThCO0FBQUEsWUFBQXVELFdBQUExSCxPQUFBbUU7QUFBQUEsSUFDNUI7QUFBQTtBQUFBLEdBQWdDO0FBQUEsWUFBQXdELE9BQUEzSCxPQUFBbUU7QUFBQUEsSUFDcEM7QUFBQSxHQUE0QjtBQUFBLFlBQUF5RCxPQUFBNUgsT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBNEI7QUFBQSxZQUFBMEQsS0FBQTdILE9BQUFtRTtBQUFBQSxJQUM5QjtBQUFBLEdBQTBCO0FBQUEsWUFBQTJELEdBQUE5SCxPQUFBbUU7QUFBQUEsSUFDNUI7QUFBQSxHQUF3QjtBQUFBLFlBQUE0RCxHQUFBL0gsT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBd0I7QUFBQSxZQUFBNkQsR0FBQWhJLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQXdCO0FBQUEsWUFBQThELEdBQUFqSSxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUErRCxHQUFBbEksT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBd0I7QUFBQSxZQUFBZ0UsR0FBQW5JLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQXdCO0FBQUEsWUFBQWlFLEtBQUFwSSxPQUFBbUU7QUFBQUEsSUFDdEI7QUFBQSxHQUEwQjtBQUFBLFlBQUFrRSxPQUFBckksT0FBQW1FO0FBQUFBLElBQ3hCO0FBQUEsR0FBNEI7QUFBQSxZQUFBbUUsT0FBQXRJLE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQTRCO0FBQUEsWUFBQW9FLEdBQUF2STtBQUFBQSxJQUN6QyxzQkRsV2YscUNDa1dlO0FBQUEsR0FBa0I7QUFBQSxZQUFBL0IsSUFBQStCLE9BQUFtRTtBQUFBQSxJQUdWO0FBQUEsR0FBdUI7QUFBQSxZQUFBcUUsT0FBQXhJLE9BQUFtRTtBQUFBQSxJQUNsQjtBQUFBLEdBQTRCO0FBQUEsWUFBQXNFLElBQUF6STtBQUFBQSxJQUN4QyxzQkR2V2hCLHNDQ3VXZ0I7QUFBQSxHQUFtQjtBQUFBLFlBQUEwSSxNQUFBMUk7QUFBQUEsSUFDakIsc0JEeFdsQix3Q0N3V2tCO0FBQUEsR0FBcUI7QUFBQSxZQUFBMkksSUFBQTNJLE9BQUFtRTtBQUFBQSxJQUNkO0FBQUEsR0FBeUI7QUFBQSxZQUFBeUUsSUFBQTVJLE9BQUFtRTtBQUFBQSxJQUN6QjtBQUFBLEdBQXlCO0FBQUEsWUFBQTBFLE9BQUE3SSxPQUFBbUU7QUFBQUEsSUFDdEI7QUFBQSxHQUE0QjtBQUFBLFlBQUFqRSxRQUFBRixPQUFBbUU7QUFBQUEsSUFDN0I7QUFBQSxHQUEyQjtBQUFBLFlBQUEyRSxPQUFBOUksT0FBQW1FO0FBQUFBLElBQzFCO0FBQUEsR0FBNEI7QUFBQSxZQUFBNEUsR0FBQS9JLE9BQUFtRTtBQUFBQSxJQUNoQztBQUFBLEdBQXdCO0FBQUEsWUFBQTZFLEtBQUFoSixPQUFBbUU7QUFBQUEsSUFDdEI7QUFBQSxHQUEwQjtBQUFBLFlBQUE4RSxJQUFBakosT0FBQW1FO0FBQUFBLElBQzNCO0FBQUEsR0FBeUI7QUFBQSxZQUFBK0UsS0FBQWxKLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQTBCO0FBQUEsWUFBQWdGLEtBQUFuSixPQUFBbUU7QUFBQUEsSUFDMUI7QUFBQSxHQUEwQjtBQUFBLFlBQUFpRixLQUFBcEo7QUFBQUEsSUFDbkMsc0JEblhqQix1Q0NtWGlCO0FBQUEsR0FBb0I7QUFBQSxZQUFBcUosTUFBQXJKLE9BQUFtRTtBQUFBQSxJQUNWO0FBQUEsR0FBMkI7QUFBQSxZQUFBbUYsSUFBQXRKLE9BQUFtRTtBQUFBQSxJQUM3QjtBQUFBLEdBQXlCO0FBQUEsWUFBQW9GLE9BQUF2SixPQUFBbUU7QUFBQUEsSUFDckI7QUFBQSxHQUE0QjtBQUFBLFlBQUFxRixHQUFBeEosT0FBQW1FO0FBQUFBLElBQ2pDO0FBQUEsR0FBd0I7QUFBQSxZQUFBc0YsU0FBQXpKLE9BQUFtRTtBQUFBQSxJQUNsQjtBQUFBLEdBQThCO0FBQUEsWUFBQVcsT0FBQTlFLE9BQUFtRTtBQUFBQSxJQUNoQztBQUFBLEdBQTRCO0FBQUEsWUFBQXVGLE9BQUExSixPQUFBbUU7QUFBQUEsSUFDNUI7QUFBQSxHQUE0QjtBQUFBLFlBQUF3RixFQUFBM0osT0FBQW1FO0FBQUFBLElBQ2pDO0FBQUEsR0FBdUI7QUFBQSxZQUFBeUYsSUFBQTVKLE9BQUFtRTtBQUFBQSxJQUVyQjtBQUFBLEdBQXlCO0FBQUEsWUFBQTBGLFNBQUE3SixPQUFBbUU7QUFBQUEsSUFDcEI7QUFBQSxHQUE4QjtBQUFBLFlBQUEyRixFQUFBOUosT0FBQW1FO0FBQUFBLElBQ3JDO0FBQUEsR0FBdUI7QUFBQSxZQUFBNEYsR0FBQS9KLE9BQUFtRTtBQUFBQSxJQUN0QjtBQUFBLEdBQXdCO0FBQUEsWUFBQTZGLEdBQUFoSyxPQUFBbUU7QUFBQUEsSUFDeEI7QUFBQSxHQUF3QjtBQUFBLFlBQUE4RixLQUFBakssT0FBQW1FO0FBQUFBLElBQ3RCO0FBQUEsR0FBMEI7QUFBQSxZQUFBcUIsRUFBQXhGLE9BQUFtRTtBQUFBQSxJQUM3QjtBQUFBLEdBQXVCO0FBQUEsWUFBQStGLEtBQUFsSyxPQUFBbUU7QUFBQUEsSUFDcEI7QUFBQSxHQUEwQjtBQUFBLFlBQUFnRyxRQUFBbkssT0FBQW1FO0FBQUFBLElBQ3ZCO0FBQUEsR0FBNkI7QUFBQSxZQUFBaUcsT0FBQXBLLE9BQUFtRTtBQUFBQSxJQUM5QjtBQUFBLEdBQTRCO0FBQUEsWUFBQWtHLE1BQUFySyxPQUFBbUU7QUFBQUEsSUFDN0I7QUFBQSxHQUEyQjtBQUFBLFlBQUFtRyxPQUFBdEs7QUFBQUEsSUFDbkMsc0JEeFluQix5Q0N3WW1CO0FBQUEsR0FBc0I7QUFBQSxZQUFBdUssS0FBQXZLLE9BQUFtRTtBQUFBQSxJQUNmO0FBQUEsR0FBMEI7QUFBQSxZQUFBcUcsT0FBQXhLLE9BQUFtRTtBQUFBQSxJQUN4QjtBQUFBLEdBQTRCO0FBQUEsWUFBQXNHLElBQUF6SyxPQUFBbUU7QUFBQUEsSUFDL0I7QUFBQSxHQUF5QjtBQUFBLFlBQUF1RyxRQUFBMUssT0FBQW1FO0FBQUFBLElBQ3JCO0FBQUEsR0FBNkI7QUFBQSxZQUFBd0csSUFBQTNLLE9BQUFtRTtBQUFBQSxJQUNqQztBQUFBLEdBQXlCO0FBQUEsWUFBQXlHLE1BQUE1SyxPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUEyQjtBQUFBLFlBQUEwRyxNQUFBN0ssT0FBQW1FO0FBQUFBLElBQzNCO0FBQUEsR0FBMkI7QUFBQSxZQUFBMkcsR0FBQTlLLE9BQUFtRTtBQUFBQSxJQUM5QjtBQUFBLEdBQXdCO0FBQUEsWUFBQTRHLFNBQUEvSyxPQUFBbUU7QUFBQUEsSUFDbEI7QUFBQSxHQUE4QjtBQUFBLFlBQUE2RyxNQUFBaEwsT0FBQW1FO0FBQUFBLElBQ2pDO0FBQUEsR0FBMkI7QUFBQSxZQUFBOEcsR0FBQWpMLE9BQUFtRTtBQUFBQSxJQUM5QjtBQUFBLEdBQXdCO0FBQUEsWUFBQStHLE1BQUFsTCxPQUFBbUU7QUFBQUEsSUFDckI7QUFBQSxHQUEyQjtBQUFBLFlBQUFnSCxLQUFBbkwsT0FBQW1FO0FBQUFBLElBQzVCO0FBQUEsR0FBMEI7QUFBQSxZQUFBaUgsR0FBQXBMLE9BQUFtRTtBQUFBQSxJQUM1QjtBQUFBLEdBQXdCO0FBQUEsWUFBQWtILE1BQUFyTDtBQUFBQSxJQUM5QixzQkR2WmxCLHdDQ3Vaa0I7QUFBQSxHQUFxQjtBQUFBLFlBQUFzTCxFQUFBdEwsT0FBQW1FO0FBQUFBLElBQ2hCO0FBQUEsR0FBdUI7QUFBQSxZQUFBb0gsR0FBQXZMLE9BQUFtRTtBQUFBQSxJQUN0QjtBQUFBLEdBQXdCO0FBQUEsWUFBQXFILEtBQUF4TCxPQUFBbUU7QUFBQUEsSUFDdkI7QUFBQSxHQUF5QjtBQUFBLFlBQUFzSCxNQUFBekwsT0FBQW1FO0FBQUFBLElBQ3ZCO0FBQUEsR0FBMkI7QUFBQSxZQUFBdUgsSUFBQTFMO0FBQUFBLElBQ3RDLHNCRDVaaEIsc0NDNFpnQjtBQUFBLEdBQW1CO0FBQUEsWUFBQUwsV0FBQXBDLEdBQUFvTyxNQUFBOU0sS0FBQXFGO0FBQUFBLFFBQUFJLFFBR1I7QUFBQSxJQUN6QjtBQUFBO0FBQUEscUJBQUFOO0FBQUFBLGFBSU07QUFBQSxhQUFrQix1QkFDZDtBQUFBLGNBTFY7QUFBQSxHQU1DO0FBQUEsWUFBQTRILFNBQUFDLE1BQUFDLE1BQUFDLEtBQUFsTixLQUFBcUY7QUFBQUE7QUFBQUEsS0FBQThILElBR087QUFBQSxLQUFBTCxPQUNHO0FBQUEsS0FBQXJILFFBQ0M7QUFBQSxJQUNaLHlCQUFBbkcsT0FBOEIsMEJBQU07QUFBQSxJQUFDO0FBQUEsR0FDaEM7QUFBQSxZQUFBa0csTUFBQUgsUUFBQXlIO0FBQUFBO0FBQUFBLEtBQUE5TSxNQUtLO0FBQUEsS0FBQXlGLFFBQ2U7QUFBQSxLQUFBTixTQUNaO0FBQUEsSUFDYixtQ0FBa0I7QUFBQTtBQUFBO0FBQUEsSUFBQWlJO0FBQUFBLE1BaklNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQWpNO0FBQUFBLFFBd0VSLHNCRDVYbEIsd0NDNFhrQjtBQUFBLE9BQXFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBeEViO0FBQUE7QUFBQSxFRHBUMUIiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0NzAxMSwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvVmlldy5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBDb21tZW50ID0gU3Rkd2ViLkRvbS5Db21tZW50XG5tb2R1bGUgRnJhZ21lbnQgPSBTdGR3ZWIuRG9tLkZyYWdtZW50XG5tb2R1bGUgRG9jdW1lbnQgPSBTdGR3ZWIuRG9tLkRvY3VtZW50XG5tb2R1bGUgTm9kZSA9IFN0ZHdlYi5Eb20uTm9kZVxubW9kdWxlIEV2ZW50ID0gU3Rkd2ViLkRvbS5FdmVudFxuXG5tb2R1bGUgTGlzdF9leHQgPSBzdHJ1Y3RcbiAgbGV0IHJldl9tYXBpIGYgbDAgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIHwgeCA6OiBsJyAtPiBsb29wIChpICsgMSkgKGYgaSB4IDo6IGFjYykgbCdcbiAgICBpblxuICAgIGxvb3AgMCBbXSBsMFxuZW5kXG5cbmxldCBvcHRpb25fZ2V0IG9wdGlvbiA9XG4gIG1hdGNoIG9wdGlvbiB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwib3B0aW9uIGlzIE5vbmVcIlxuXG5sZXQgb3JfZmFpbCBtc2cgb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT4gZmFpbHdpdGggbXNnXG5cbmxldCBpbnNlcnRfYWZ0ZXJfYW5jaG9yIH5wYXJlbnQgfmFuY2hvciBub2RlID1cbiAgbWF0Y2ggTm9kZS5uZXh0X3NpYmxpbmcgYW5jaG9yIHdpdGhcbiAgfCBTb21lIGFuY2hvcl9zaWJsaW5nIC0+IE5vZGUuaW5zZXJ0X2JlZm9yZSB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yX3NpYmxpbmcgbm9kZVxuICB8IE5vbmUgLT4gTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudCBub2RlXG5cbigqIFNob3cgKilcblxubGV0IGZha2VfZGVidWdfaHRtbCBfcmVuZGVyX2NvdW50IF9jb21tZW50X2RhdGEgaHRtbCA9IGh0bWxcblxubGV0IHJlYWxfZGVidWdfaHRtbCA9XG4gIGxldCBjb2xvcnMgPSBbfCBcIm1hZ2VudGFcIjsgXCJjeWFuXCI7IFwic2FsbW9uXCI7IFwiYXF1YW1hcmluZVwiOyBcImxpbWVcIjsgXCJ5ZWxsb3dcIjsgXCJwYWxlZ3JlZW5cIiB8XSBpblxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGxldCBnZXRfY29sb3IgKCkgPVxuICAgIGlmICFpICsgMSA+PSBBcnJheS5sZW5ndGggY29sb3JzIHRoZW4gaSA6PSAwIGVsc2UgaW5jciBpO1xuICAgIEFycmF5LmdldCBjb2xvcnMgIWlcbiAgaW5cbiAgZnVuIHJlbmRlcl9jb3VudCBjb21tZW50X2RhdGEgaHRtbCAtPlxuICAgIGxldCBjID0gZ2V0X2NvbG9yICgpIGluXG4gICAgSHRtbC5kaXZcbiAgICAgIFtcbiAgICAgICAgSHRtbC5zdHlsZV9saXN0XG4gICAgICAgICAgWyAoXCJkaXNwbGF5XCIsIFwiZmxleFwiKTsgKFwiZmxleC1kaXJlY3Rpb25cIiwgXCJjb2x1bW5cIik7IChcImJvcmRlclwiLCBcIjJweCBzb2xpZCBcIiBeIGMpIF07XG4gICAgICBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuc3R5bGVfbGlzdFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwiYmFja2dyb3VuZC1jb2xvclwiLCBjKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LXNpemVcIiwgXCJzbWFsbFwiKTtcbiAgICAgICAgICAgICAgICAoXCJmb250LXdlaWdodFwiLCBcImJvbGRcIik7XG4gICAgICAgICAgICAgICAgKFwiZm9udC1mYW1pbHlcIiwgXCJjb3VyaWVyXCIpO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwudGV4dCBjb21tZW50X2RhdGE7IEh0bWwudGV4dCBcIiNcIjsgSHRtbC5pbnQgcmVuZGVyX2NvdW50IF07XG4gICAgICAgIGh0bWw7XG4gICAgICBdXG5cbmxldCBkZWJ1Z19odG1sIDogKGludCAtPiBzdHJpbmcgLT4gSHRtbC5odG1sIC0+IEh0bWwuaHRtbCkgcmVmID0gcmVmIGZha2VfZGVidWdfaHRtbFxubGV0IGVuYWJsZV9kZWJ1ZyBmbGFnID0gZGVidWdfaHRtbCA6PSBpZiBmbGFnIHRoZW4gcmVhbF9kZWJ1Z19odG1sIGVsc2UgZmFrZV9kZWJ1Z19odG1sXG5cbmxldCBnZW5fc2hvd19pZCA9XG4gIGxldCBpID0gcmVmICgtMSkgaW5cbiAgZnVuIGxhYmVsIC0+XG4gICAgaW5jciBpO1xuICAgIFN0cmluZy5jb25jYXQgXCJcIlxuICAgICAgW1xuICAgICAgICBcInNob3c6XCI7XG4gICAgICAgIHN0cmluZ19vZl9pbnQgIWk7XG4gICAgICAgIChtYXRjaCBsYWJlbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB4IC0+IFwiL1wiIF4geCk7XG4gICAgICBdXG5cbmxldCBzaG93ID9sYWJlbCAodG9faHRtbCA6ICdhIC0+IEh0bWwuaHRtbCkgc2lnbmFsIDogSHRtbC5odG1sID1cbiBmdW4gY3R4IHBhcmVudCAtPlxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBsZXQgY29tbWVudF9kYXRhID0gZ2VuX3Nob3dfaWQgbGFiZWwgaW5cbiAgbGV0IGFuY2hvciA9IENvbW1lbnQubWFrZSBjb21tZW50X2RhdGEgaW5cbiAgbGV0IHRoaXNfY3R4ID0gSHRtbC5DdHgubWFrZSAoKSBpblxuICBsZXQgY3Vycl9zdGF0ZSA9XG4gICAgbGV0IGh0bWwgPSB0b19odG1sIChTaWduYWwuZ2V0IHNpZ25hbCkgaW5cbiAgICBsZXQgaHRtbCA9ICFkZWJ1Z19odG1sICFjb3VudCBjb21tZW50X2RhdGEgaHRtbCBpblxuICAgIGluY3IgY291bnQ7XG4gICAgcmVmIChodG1sIHRoaXNfY3R4IHBhcmVudClcbiAgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBsZXQgaW5zZXJ0ID0gTm9kZS5pbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlOmFuY2hvciBpblxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IGh0bWwgPSB0b19odG1sIHggaW5cbiAgICAgICAgbGV0IGh0bWwgPSAhZGVidWdfaHRtbCAhY291bnQgY29tbWVudF9kYXRhIGh0bWwgaW5cbiAgICAgICAgaW5jciBjb3VudDtcbiAgICAgICAgbGV0IG5leHRfc3RhdGUgPSBodG1sIHRoaXNfY3R4IHBhcmVudCBpblxuICAgICAgICAhY3Vycl9zdGF0ZS51bm1vdW50ICgpO1xuICAgICAgICBuZXh0X3N0YXRlLm1vdW50IGluc2VydDtcbiAgICAgICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlKVxuICAgICAgc2lnbmFsXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgdGhpc19jdHggdW5zdWI7XG4gIGxldCBtb3VudCBpbnNlcnQgPVxuICAgIGluc2VydCBhbmNob3I7XG4gICAgIWN1cnJfc3RhdGUubW91bnQgaW5zZXJ0O1xuICAgIEh0bWwuQ3R4LmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIGxldCB1bm1vdW50ICgpID1cbiAgICBOb2RlLnJlbW92ZSBhbmNob3I7XG4gICAgIWN1cnJfc3RhdGUudW5tb3VudCAoKTtcbiAgICBIdG1sLkN0eC5jbGVhbnVwIHRoaXNfY3R4O1xuICAgIEh0bWwuQ3R4LnVubGluayBjdHggdGhpc19jdHhcbiAgaW5cbiAgeyBtb3VudDsgdW5tb3VudCB9XG5cbmxldCBzaG93X3NvbWUgP2xhYmVsIHRvX2h0bWwgb3B0X3NpZ25hbCA9XG4gIHNob3cgP2xhYmVsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gSHRtbC5udWxsXG4gICAgICB8IFNvbWUgeCAtPiB0b19odG1sIHgpXG4gICAgb3B0X3NpZ25hbFxuXG5sZXQgc2hvd19vayA/bGFiZWwgdG9faHRtbCByZXNfc2lnbmFsID1cbiAgc2hvdyA/bGFiZWxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgXyAtPiBIdG1sLm51bGxcbiAgICAgIHwgT2sgeCAtPiB0b19odG1sIHgpXG4gICAgcmVzX3NpZ25hbFxuXG4oKiBDb25kaXRpb25hbCAqKVxuXG5sZXQgZ2VuX2NvbmRpdGlvbmFsX2lkID1cbiAgbGV0IGkgPSByZWYgKC0xKSBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIGk7XG4gICAgXCJjb25kaXRpb25hbDpcIiBeIHN0cmluZ19vZl9pbnQgIWlcblxubGV0IGNvbmRpdGlvbmFsIH5vbjpwcmVkIHNpZ25hbCBodG1sIDogSHRtbC5odG1sID1cbiAgc2hvdyB+bGFiZWw6XCJjb25kaXRpb25hbFwiIChmdW4geCAtPiBpZiBwcmVkIHggdGhlbiBodG1sIGVsc2UgSHRtbC5udWxsKSBzaWduYWxcblxuKCogRWFjaCAqKVxuXG5tb2R1bGUgRWFjaF9jYWNoZSA6IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBzbG90c1xuICB0eXBlIGtleVxuXG4gIHZhbCBrZXkgOiAnYSAtPiBrZXlcbiAgdmFsIG1ha2UgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyAtPiB1bml0XG4gIHZhbCBnZXQgOiB0IC0+IGtleTprZXkgLT4gc2xvdHMgb3B0aW9uXG4gIHZhbCBnZXRfZmlyc3Rfc2xvdCA6IHNsb3RzIC0+IGludCAqIEh0bWwuRWxlbS5zdGF0ZVxuICB2YWwgYWRkX3Nsb3QgOiB0IC0+IGtleTprZXkgLT4gaW50IC0+IEh0bWwuRWxlbS5zdGF0ZSAtPiB1bml0XG4gIHZhbCBkZWxfc2xvdCA6IHQgLT4ga2V5OmtleSAtPiBzbG90cyAtPiBpbnQgLT4gdW5pdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTWFwID0gU3Rkd2ViLk1hcFxuICBtb2R1bGUgSXRlcmF0b3IgPSBTdGR3ZWIuSXRlcmF0b3JcbiAgbW9kdWxlIERpY3QgPSBTdGR3ZWIuRGljdFxuXG4gIHR5cGUga2V5ID0gSngudFxuICB0eXBlIHNsb3RzID0gSHRtbC5FbGVtLnN0YXRlIE1hcC50XG4gIHR5cGUgdCA9IHNsb3RzIE1hcC50XG5cbiAgbGV0IGtleSB4ID0gSnguRW5jb2Rlci5hbnkgeFxuICBsZXQgbWFrZSA9IE1hcC5tYWtlXG4gIGxldCBtYWtlX3Nsb3RzID0gTWFwLm1ha2VcblxuICBsZXQgZ2V0X2ZpcnN0X3Nsb3QgKHNsb3RzIDogc2xvdHMpID1cbiAgICBtYXRjaCBNYXAuZmlyc3Rfa2V5IHNsb3RzIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJCVUc6IGdldF9zbG90OiBzbG90cyBtdXN0IG5vdCBiZSBlbXB0eVwiXG4gICAgfCBTb21lIGlkeF9qcyAtPlxuICAgICAgbGV0IGlkeCA9IEp4LkRlY29kZXIuaW50IGlkeF9qcyBpblxuICAgICAgbGV0IGh0bWwgPSBNYXAuZ2V0IHNsb3RzIGlkeF9qcyB8PiBPcHRpb24uZ2V0IGluXG4gICAgICAoaWR4LCBodG1sKVxuXG4gIGxldCBzZXQgY2FjaGUgfmtleSAoc2xvdHMgOiBzbG90cykgPSBNYXAuc2V0IGNhY2hlIGtleSBzbG90c1xuICBsZXQgZ2V0IChjYWNoZSA6IHQpIH5rZXkgPSBNYXAuZ2V0IGNhY2hlIGtleVxuXG4gIGxldCBhZGRfc2xvdCAoY2FjaGUgOiB0KSB+a2V5IGlkeCBodG1sID1cbiAgICBsZXQgc2xvdHMgOiBzbG90cyA9XG4gICAgICBtYXRjaCBnZXQgY2FjaGUgfmtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbWFrZV9zbG90cyAoKVxuICAgICAgfCBTb21lIHNsb3RzIC0+IHNsb3RzXG4gICAgaW5cbiAgICBNYXAuc2V0IHNsb3RzIChKeC5FbmNvZGVyLmludCBpZHgpIGh0bWw7XG4gICAgc2V0IGNhY2hlIH5rZXkgc2xvdHNcblxuICBsZXQgZGVsX3Nsb3QgY2FjaGUgfmtleSBzbG90cyBpZHggPVxuICAgIE1hcC5kZWxldGUgc2xvdHMgKEp4LkVuY29kZXIuaW50IGlkeCk7XG4gICAgaWYgTWFwLnNpemUgc2xvdHMgPSAwIHRoZW4gTWFwLmRlbGV0ZSBjYWNoZSBrZXlcblxuICBsZXQgY2xlYXIgY2FjaGUgPVxuICAgIE1hcC52YWx1ZXMgY2FjaGVcbiAgICB8PiBJdGVyYXRvci5pdGVyIChmdW4gKHNsb3RzIDogc2xvdHMpIC0+XG4gICAgICAgICAgIGxldCBzdGF0ZXMgPSBNYXAudmFsdWVzIHNsb3RzIGluXG4gICAgICAgICAgIEl0ZXJhdG9yLml0ZXIgKGZ1biAocyA6IEh0bWwuRWxlbS5zdGF0ZSkgLT4gcy51bm1vdW50ICgpKSBzdGF0ZXM7XG4gICAgICAgICAgIE1hcC5jbGVhciBzbG90cylcbmVuZFxuXG5sZXQgZ2VuX2VhY2hfaWQgPVxuICBsZXQgaSA9IHJlZiAoLTEpIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgaTtcbiAgICBcImVhY2g6XCIgXiBzdHJpbmdfb2ZfaW50ICFpXG5cbmV4dGVybmFsIGRlZmF1bHRfa2V5IDogJ2EgLT4gc3RyaW5nID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgZWFjaCA/a2V5Oih0b19rZXkgPSBkZWZhdWx0X2tleSkgKHRvX2h0bWwgOiAnYSAtPiBIdG1sLmh0bWwpIGl0ZW1zX3NpZ25hbCA6IEh0bWwuaHRtbCA9XG4gZnVuIGN0eCBwYXJlbnQgLT5cbiAgbGV0IGFuY2hvciA9IENvbW1lbnQubWFrZSAoZ2VuX2VhY2hfaWQgKCkpIGluXG4gIGxldCBmcmFnID0gRnJhZ21lbnQubWFrZSAoKSBpblxuICBsZXQgY3Vycl9jYWNoZSA9IHJlZiAoRWFjaF9jYWNoZS5tYWtlICgpKSBpblxuICBsZXQgdGhpc19jdHggPSBIdG1sLkN0eC5tYWtlICgpIGluXG4gIGxldCB1bnN1YiA9XG4gICAgU2lnbmFsLnN1YidcbiAgICAgIChmdW4gbmV3X2l0ZW1zIC0+XG4gICAgICAgIGxldCBuZXh0X2NhY2hlID0gRWFjaF9jYWNoZS5tYWtlICgpIGluXG4gICAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgICAoZnVuIGogaXRlbSAtPlxuICAgICAgICAgICAgbGV0IGtleSA9IEVhY2hfY2FjaGUua2V5ICh0b19rZXkgaXRlbSkgaW5cbiAgICAgICAgICAgIG1hdGNoIEVhY2hfY2FjaGUuZ2V0ICFjdXJyX2NhY2hlIH5rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBodG1sIDogSHRtbC5odG1sID0gdG9faHRtbCBpdGVtIGluXG4gICAgICAgICAgICAgIGxldCBzdGF0ZSA9IGh0bWwgdGhpc19jdHggcGFyZW50IGluXG4gICAgICAgICAgICAgIHN0YXRlLm1vdW50IChOb2RlLmFwcGVuZF9jaGlsZCB+cGFyZW50OmZyYWcpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmFkZF9zbG90IG5leHRfY2FjaGUgfmtleSBqIHN0YXRlXG4gICAgICAgICAgICB8IFNvbWUgb2xkX3Nsb3RzIC0+XG4gICAgICAgICAgICAgIGxldCBpLCBpX3N0YXRlID0gRWFjaF9jYWNoZS5nZXRfZmlyc3Rfc2xvdCBvbGRfc2xvdHMgaW5cbiAgICAgICAgICAgICAgaV9zdGF0ZS5tb3VudCAoTm9kZS5hcHBlbmRfY2hpbGQgfnBhcmVudDpmcmFnKTtcbiAgICAgICAgICAgICAgRWFjaF9jYWNoZS5kZWxfc2xvdCAhY3Vycl9jYWNoZSB+a2V5IG9sZF9zbG90cyBpO1xuICAgICAgICAgICAgICBFYWNoX2NhY2hlLmFkZF9zbG90IG5leHRfY2FjaGUgfmtleSBqIGlfc3RhdGUpXG4gICAgICAgICAgbmV3X2l0ZW1zO1xuICAgICAgICBFYWNoX2NhY2hlLmNsZWFyICFjdXJyX2NhY2hlO1xuICAgICAgICBOb2RlLmluc2VydF9hZnRlciB+cGFyZW50IH5yZWZlcmVuY2U6YW5jaG9yIGZyYWc7XG4gICAgICAgIGN1cnJfY2FjaGUgOj0gbmV4dF9jYWNoZSlcbiAgICAgIGl0ZW1zX3NpZ25hbFxuICBpblxuICBIdG1sLkN0eC5vbl9jbGVhbnVwIHRoaXNfY3R4IHVuc3ViO1xuICBsZXQgbW91bnQgaW5zZXJ0ID1cbiAgICBpbnNlcnQgYW5jaG9yO1xuICAgIGxldCBpdGVtcyA9IFNpZ25hbC5nZXQgaXRlbXNfc2lnbmFsIGluXG4gICAgTGlzdC5pdGVyaVxuICAgICAgKGZ1biBpIGl0ZW0gLT5cbiAgICAgICAgbGV0IGh0bWwgOiBIdG1sLmh0bWwgPSB0b19odG1sIGl0ZW0gaW5cbiAgICAgICAgbGV0IHN0YXRlID0gaHRtbCB0aGlzX2N0eCBwYXJlbnQgaW5cbiAgICAgICAgc3RhdGUubW91bnQgKE5vZGUuYXBwZW5kX2NoaWxkIH5wYXJlbnQ6ZnJhZyk7XG4gICAgICAgIGxldCBrZXkgPSBFYWNoX2NhY2hlLmtleSBpdGVtIGluXG4gICAgICAgIEVhY2hfY2FjaGUuYWRkX3Nsb3QgIWN1cnJfY2FjaGUgfmtleSBpIHN0YXRlKVxuICAgICAgaXRlbXM7XG4gICAgTm9kZS5pbnNlcnRfYWZ0ZXIgfnBhcmVudCB+cmVmZXJlbmNlOmFuY2hvciBmcmFnO1xuICAgIEh0bWwuQ3R4LmxpbmsgY3R4IHRoaXNfY3R4XG4gIGluXG4gIGxldCB1bm1vdW50ICgpID1cbiAgICBFYWNoX2NhY2hlLmNsZWFyICFjdXJyX2NhY2hlO1xuICAgIEh0bWwuQ3R4LmNsZWFudXAgdGhpc19jdHg7XG4gICAgSHRtbC5DdHgudW5saW5rIGN0eCB0aGlzX2N0eFxuICBpblxuICB7IG1vdW50OyB1bm1vdW50IH1cblxuKCogQmluZCAqKVxuXG5sZXQgYmluZCB0b19hdHRyIHNpZ25hbCBjdHggbm9kZSA9XG4gIGxldCBjdXJyX3N0YXRlID0gcmVmIHsgSHRtbC5BdHRyLnNldCA9IGlnbm9yZTsgdW5zZXQgPSBpZ25vcmUgfSBpblxuICBsZXQgdW5zdWIgPVxuICAgIFNpZ25hbC5zdWInXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgIWN1cnJfc3RhdGUudW5zZXQgKCk7XG4gICAgICAgIGxldCBuZXh0X2F0dHIgOiBIdG1sLmF0dHIgPSB0b19hdHRyIHggaW5cbiAgICAgICAgbGV0IG5leHRfc3RhdGUgPSBuZXh0X2F0dHIgY3R4IG5vZGUgaW5cbiAgICAgICAgbmV4dF9zdGF0ZS5zZXQgKCk7XG4gICAgICAgIGN1cnJfc3RhdGUgOj0gbmV4dF9zdGF0ZSlcbiAgICAgIHNpZ25hbFxuICBpblxuICBIdG1sLkN0eC5vbl9jbGVhbnVwIGN0eCB1bnN1YjtcbiAgbGV0IHNldCAoKSA9XG4gICAgbGV0IG5leHRfYXR0ciA6IEh0bWwuYXR0ciA9IHRvX2F0dHIgKFNpZ25hbC5nZXQgc2lnbmFsKSBpblxuICAgIGxldCBuZXh0X3N0YXRlID0gbmV4dF9hdHRyIGN0eCBub2RlIGluXG4gICAgbmV4dF9zdGF0ZS5zZXQgKCk7XG4gICAgY3Vycl9zdGF0ZSA6PSBuZXh0X3N0YXRlXG4gIGluXG4gIGxldCB1bnNldCAoKSA9ICFjdXJyX3N0YXRlLnVuc2V0ICgpIGluXG4gIHsgSHRtbC5BdHRyLnNldDsgdW5zZXQgfVxuXG5sZXQgYmluZF9zb21lIHRvX2F0dHIgb3B0X3NpZ25hbCA9XG4gIGJpbmRcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBIdG1sLkF0dHIubm9wXG4gICAgICB8IFNvbWUgeCAtPiB0b19hdHRyIHgpXG4gICAgb3B0X3NpZ25hbFxuXG5sZXQgYmluZF9vayB0b19hdHRyIHJlc19zaWduYWwgPVxuICBiaW5kXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIF8gLT4gSHRtbC5BdHRyLm5vcFxuICAgICAgfCBPayB4IC0+IHRvX2F0dHIgeClcbiAgICByZXNfc2lnbmFsXG5cbigqIFRvZ2dsZSAqKVxuXG5sZXQgdG9nZ2xlIH5vbjpwcmVkIHNpZ25hbCBhdHRyIDogSHRtbC5hdHRyID1cbiBmdW4gY3R4IG5vZGUgLT5cbiAgbGV0IGFjdGl2ZV9zaWcgPSBTaWduYWwudW5pcSB+ZXF1YWw6KCA9PSApIChTaWduYWwubWFwIHByZWQgc2lnbmFsKSBpblxuICBsZXQgc3RhdGUgOiBIdG1sLkF0dHIuc3RhdGUgPSBhdHRyIGN0eCBub2RlIGluXG4gIGxldCBpc19hY3RpdmUgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwudXNlJ1xuICAgICAgKGZ1biBhY3RpdmUgLT5cbiAgICAgICAgaWYgYWN0aXZlIHRoZW4gc3RhdGUuc2V0ICgpIGVsc2Ugc3RhdGUudW5zZXQgKCk7XG4gICAgICAgIGlzX2FjdGl2ZSA6PSBhY3RpdmUpXG4gICAgICBhY3RpdmVfc2lnXG4gIGluXG4gIEh0bWwuQ3R4Lm9uX2NsZWFudXAgY3R4IHVuc3ViO1xuICBsZXQgc2V0ICgpID1cbiAgICBpc19hY3RpdmUgOj0gU2lnbmFsLmdldCBhY3RpdmVfc2lnO1xuICAgIGlmICFpc19hY3RpdmUgdGhlbiBzdGF0ZS5zZXQgKCkgZWxzZSBzdGF0ZS51bnNldCAoKVxuICBpblxuICBsZXQgdW5zZXQgKCkgPSBpZiAhaXNfYWN0aXZlIHRoZW4gc3RhdGUudW5zZXQgKCkgaW5cbiAgeyBIdG1sLkF0dHIuc2V0OyB1bnNldCB9XG5cbigqIFZpc2libGUgKilcblxubGV0IHZpc2libGUgfm9uOnByZWQgc2lnbmFsIDogSHRtbC5BdHRyLnQgPVxuICB0b2dnbGUgfm9uOihmdW4geCAtPiBub3QgKHByZWQgeCkpIHNpZ25hbCAoSHRtbC5zdHlsZV9saXN0IFsgKFwiZGlzcGxheVwiLCBcIm5vbmVcIikgXSlcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF9jYWxsMSIsImYiLCJhMCIsImNhbWxfY2FsbDIiLCJhMSIsImNhbWxfY2FsbDMiLCJhMiIsImdsb2JhbF9kYXRhIiwiSHRtbCIsIlNpZ25hbCIsIlN0ZHdlYiIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliIiwiSngiLCJTdGRsaWJfT3B0aW9uIiwiU3RkbGliX1N0cmluZyIsInJldl9tYXBpIiwibDAiLCJpIiwiYWNjIiwibCIsIngiLCJvcHRpb25fZ2V0Iiwib3B0aW9uIiwib3JfZmFpbCIsIm1zZyIsImluc2VydF9hZnRlcl9hbmNob3IiLCJwYXJlbnQiLCJhbmNob3IiLCJub2RlIiwibWF0Y2giLCJhbmNob3Jfc2libGluZyIsImZha2VfZGVidWdfaHRtbCIsInJlbmRlcl9jb3VudCIsImNvbW1lbnRfZGF0YSIsImh0bWwiLCJjb2xvcnMiLCJjc3RfZGlzcGxheSIsInJlYWxfZGVidWdfaHRtbCIsImMiLCJkZWJ1Z19odG1sIiwiZW5hYmxlX2RlYnVnIiwiZmxhZyIsImdlbl9zaG93X2lkIiwibGFiZWwiLCJjc3QiLCJzaG93IiwidG9faHRtbCIsInNpZ25hbCIsImN0eCIsInRoaXNfY3R4IiwiY291bnQiLCJjdXJyX3N0YXRlIiwiaW5zZXJ0IiwidW5zdWIiLCJuZXh0X3N0YXRlIiwibW91bnQiLCJ1bm1vdW50IiwicGFyYW0iLCJzaG93X3NvbWUiLCJvcHRfc2lnbmFsIiwic2hvd19vayIsInJlc19zaWduYWwiLCJnZW5fY29uZGl0aW9uYWxfaWQiLCJjb25kaXRpb25hbCIsInByZWQiLCJrZXkiLCJtYWtlIiwibWFrZV9zbG90cyIsImdldF9maXJzdF9zbG90Iiwic2xvdHMiLCJpZHhfanMiLCJpZHgiLCJzZXQiLCJjYWNoZSIsImdldCIsImFkZF9zbG90IiwiZGVsX3Nsb3QiLCJjbGVhciIsInN0YXRlcyIsInMiLCJkdW1teSIsImdlbl9lYWNoX2lkIiwiZWFjaCIsIm9wdCIsIml0ZW1zX3NpZ25hbCIsInRvX2tleSIsImZyYWciLCJjdXJyX2NhY2hlIiwibmV3X2l0ZW1zIiwibmV4dF9jYWNoZSIsImoiLCJpdGVtIiwib2xkX3Nsb3RzIiwiaV9zdGF0ZSIsInN0YXRlIiwiaXRlbXMiLCJiaW5kIiwidG9fYXR0ciIsIm5leHRfYXR0ciIsInVuc2V0IiwiYmluZF9zb21lIiwiYmluZF9vayIsInRvZ2dsZSIsImF0dHIiLCJhY3RpdmVfc2lnIiwiaXNfYWN0aXZlIiwiYWN0aXZlIiwidmlzaWJsZSJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFB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bm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ3NDQ1LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9UaW1lLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIFdpbmRvdyA9IFN0ZHdlYi5Eb20uV2luZG93XG5cbmxldCB0aWNrIH5tcyA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgfmVxdWFsOihmdW4gXyBfIC0+IGZhbHNlKSAoKSBpblxuICBsZXQgXyA9IFdpbmRvdy5zZXRfaW50ZXJ2YWwgKGZ1biAoKSAtPiBTaWduYWwuZW1pdCAoKSBzKSBtcyBpblxuICBzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDIiLCJmIiwiYTAiLCJhMSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiU3Rkd2ViIiwidGljayIsIm1zIiwicyIsInBhcmFtIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLFlBQUFDLEtBQUFDO0FBQUFBLFFBQUFDLElDR1UscUNBQUFDLE9BQStCLFNBQUs7QUFBQSxJQUNwQztBQUFBO0FBQUEsZUFBQUEsT0FBK0Isb0NBQWdCO0FBQUE7QUFBQSxJQUFJO0FBQUEsR0FDMUQ7QUFBQSxHRExIIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDc0NzQsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L1JvdXRlci5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm9wZW4gc3RydWN0XG4gIG1vZHVsZSBTdHJpbmdfbWFwID0gTWFwLk1ha2UgKFN0cmluZylcblxuICB0eXBlICdhIHNpZ25hbCA9ICdhIFNpZ25hbC50XG5cbiAgbGV0ICggb3IgKSBvcHQgZGVmYXVsdCA9XG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGRlZmF1bHRcblxuICBsZXQgb3JfZmFpbCBtc2cgb3B0ID1cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggbXNnXG5cbiAgbGV0IHJlYyBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbCB+cHJlZml4OnAgbCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBwMCA6OiBwJyAtPiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgbDAgOjogbCcgd2hlbiBlcXVhbCBwMCBsMCAtPiBsaXN0X3N0YXJ0c193aXRoIH5lcXVhbCB+cHJlZml4OnAnIGwnXG4gICAgICB8IF8gLT4gZmFsc2UpXG5lbmRcblxudHlwZSAnYSB2YXIgPSB7XG4gIGxhYmVsIDogc3RyaW5nO1xuICB0b19zdHJpbmcgOiAnYSAtPiBzdHJpbmc7XG4gIG9mX3N0cmluZyA6IHN0cmluZyAtPiAnYSBvcHRpb247XG4gIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbDtcbn1cblxubGV0IHZhciB+b2Zfc3RyaW5nIH50b19zdHJpbmcgPyhlcXVhbCA9IFN0ZGxpYi4oID0gKSkgbGFiZWwgPSB7IGxhYmVsOyB0b19zdHJpbmc7IG9mX3N0cmluZzsgZXF1YWwgfVxuXG5sZXQgaW50ID1cbiAgeyBsYWJlbCA9IFwiaW50XCI7IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnQ7IG9mX3N0cmluZyA9IGludF9vZl9zdHJpbmdfb3B0OyBlcXVhbCA9IEludC5lcXVhbCB9XG5cbmxldCBzdHJpbmcgPSB7IGxhYmVsID0gXCJzdHJpbmdcIjsgdG9fc3RyaW5nID0gRnVuLmlkOyBvZl9zdHJpbmcgPSBPcHRpb24uc29tZTsgZXF1YWwgPSBTdHJpbmcuZXF1YWwgfVxuXG5sZXQgcXVlcnkgPVxuICB7XG4gICAgbGFiZWwgPSBcInF1ZXJ5XCI7XG4gICAgdG9fc3RyaW5nID0gU3Rkd2ViLlVybF9zZWFyY2hfcGFyYW1zLnRvX3N0cmluZztcbiAgICBvZl9zdHJpbmcgPSAoZnVuIHN0ciAtPiBTb21lIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMub2Zfc3RyaW5nIHN0cikpO1xuICAgIGVxdWFsID1cbiAgICAgIChmdW4geDEgeDIgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIChTdGR3ZWIuVXJsX3NlYXJjaF9wYXJhbXMudG9fc3RyaW5nIHgxKSAoU3Rkd2ViLlVybF9zZWFyY2hfcGFyYW1zLnRvX3N0cmluZyB4MikpO1xuICB9XG5cbnR5cGUgdCA9IHsgcHJlZml4IDogc3RyaW5nIGxpc3Qgc2lnbmFsOyByZXN0IDogc3RyaW5nIGxpc3Qgc2lnbmFsIH1cblxudHlwZSAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCA9XG4gIHwgQ29uc3QgOiBzdHJpbmcgKiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aCAtPiAoJ3ZpZXcsICdsaW5rLCAnYSkgcGF0aFxuICB8IFZhciA6XG4gICAgICAndiB2YXIgKiAndiBzaWduYWwgb3B0aW9uICogKCd2aWV3LCAnbGluaywgJ2EpIHBhdGhcbiAgICAgIC0+ICgndiBzaWduYWwgLT4gJ3ZpZXcsICd2IC0+ICdsaW5rLCAnYSkgcGF0aFxuICB8IFJlc3QgOiAodCAtPiAnYSwgKCd2aWV3LCAnbGluaywgJ2EpIHBhdGggLT4gJ2xpbmssICdhKSBwYXRoXG4gIHwgRW5kIDogKHVuaXQgLT4gJ2EsICdhLCAnYSkgcGF0aFxuXG50eXBlIHJvdXRlID1cbiAgfCBSb3V0ZSA6ICgndmlldywgJ2xpbmssIEh0bWwuaHRtbCkgcGF0aCAqICd2aWV3IC0+IHJvdXRlXG4gIHwgQWxpYXMgOiAodW5pdCAtPiAnYSwgJ2EsICdhKSBwYXRoICogc3RyaW5nIGxpc3QgLT4gcm91dGVcblxudHlwZSBsb29rdXAgPSB7IHJvdXRlIDogcm91dGU7IG1hdGNoZWQgOiBzdHJpbmcgbGlzdDsgYXJncyA6IHN0cmluZyBsaXN0IH1cbigqIFJvdXRpbmcgdGFibGUgbG9va3VwIHJlc3VsdC4gKilcblxudHlwZSBjYXB0dXJlID0gTWF0Y2ggb2Ygcm91dGUgfCBOb19tYXRjaCB8IFBhcnRpYWwgb2Ygcm91dGVcbigqIFdoYXQgZG9lcyBhIHBhdGggaW4gYSByb3V0aW5nIHRhYmxlIGNhcHR1cmU/LiAqKVxuXG50eXBlIHRhYmxlID0geyBjYXB0dXJlIDogY2FwdHVyZTsgY2hpbGRyZW4gOiB0YWJsZSBTdHJpbmdfbWFwLnQgfVxuXG5sZXQgcm91dGUgcGF0aCByZW5kZXIgPSBSb3V0ZSAocGF0aCwgcmVuZGVyKVxuXG5sZXQgc3RyaW5nX29mX3BhdGggOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nID1cbiBmdW4gcGF0aDAgLT5cbiAgbGV0IHJlYyBsb29wIDogdHlwZSBhIGsgb3V0LiAoYSwgaywgb3V0KSBwYXRoIC0+IHN0cmluZyA9XG4gICBmdW4gcGF0aCAtPlxuICAgIG1hdGNoIHBhdGggd2l0aFxuICAgIHwgRW5kIC0+IFwiXCJcbiAgICB8IFJlc3QgLT4gXCIqKlwiXG4gICAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gY29uc3RcbiAgICB8IENvbnN0IChjb25zdCwgdGFpbCkgLT4gU3RyaW5nLmNvbmNhdCBcIi9cIiBbIGNvbnN0OyBsb29wIHRhaWwgXVxuICAgIHwgVmFyICh2YXIsIF8sIEVuZCkgLT4gXCI6XCIgXiB2YXIubGFiZWxcbiAgICB8IFZhciAodmFyLCBfLCB0YWlsKSAtPiBTdHJpbmcuY29uY2F0IFwiL1wiIFsgdmFyLmxhYmVsOyBsb29wIHRhaWwgXVxuICBpblxuICBtYXRjaCBwYXRoMCB3aXRoXG4gIHwgRW5kIC0+IFwiL1wiXG4gIHwgXyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgWyBcIi9cIjsgbG9vcCBwYXRoMCBdXG5cbmxldCBsaXN0X29mX3BhdGggOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nIGxpc3QgPVxuIGZ1biBwYXRoMCAtPlxuICBsZXQgcmVjIGxvb3AgOiB0eXBlIGEgayBvdXQuIChhLCBrLCBvdXQpIHBhdGggLT4gc3RyaW5nIGxpc3QgPVxuICAgZnVuIHBhdGggLT5cbiAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICB8IEVuZCAtPiBbXVxuICAgIHwgUmVzdCAtPiBbIFwiKipcIiBdXG4gICAgfCBDb25zdCAoY29uc3QsIEVuZCkgLT4gWyBjb25zdCBdXG4gICAgfCBDb25zdCAoY29uc3QsIHRhaWwpIC0+IFsgY29uc3QgXSBAIGxvb3AgdGFpbFxuICAgIHwgVmFyICh2YXIsIF8sIEVuZCkgLT4gWyBcIjpcIiBeIHZhci5sYWJlbCBdXG4gICAgfCBWYXIgKHZhciwgXywgdGFpbCkgLT4gWyB2YXIubGFiZWwgXSBAIGxvb3AgdGFpbFxuICBpblxuICBtYXRjaCBwYXRoMCB3aXRoXG4gIHwgRW5kIC0+IFtdXG4gIHwgXyAtPiBsb29wIHBhdGgwXG5cbm1vZHVsZSBUYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSB0YWJsZVxuXG4gIGxldCBlbXB0eSA9IHsgY2FwdHVyZSA9IE5vX21hdGNoOyBjaGlsZHJlbiA9IFN0cmluZ19tYXAuZW1wdHkgfVxuXG4gIGxldCByZWdpc3RlciByb3V0ZTAgcm9vdCA9XG4gICAgbGV0IHJlYyBsb29wIDogdHlwZSBhIGsgb3V0LiAoYSwgaywgb3V0KSBwYXRoIC0+IHQgLT4gdCA9XG4gICAgIGZ1biBwYXRoIG5vZGUgLT5cbiAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgfCBFbmQgLT4geyBub2RlIHdpdGggY2FwdHVyZSA9IE1hdGNoIHJvdXRlMCB9XG4gICAgICB8IFJlc3QgLT4geyBub2RlIHdpdGggY2FwdHVyZSA9IFBhcnRpYWwgcm91dGUwIH1cbiAgICAgIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPlxuICAgICAgICBsZXQgbWF0Y2hlZF9ub2RlID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IGNvbnN0IG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgIHwgU29tZSBleGlzdGluZ19ub2RlIC0+IGV4aXN0aW5nX25vZGVcbiAgICAgICAgICB8IE5vbmUgLT4geyBjYXB0dXJlID0gTm9fbWF0Y2g7IGNoaWxkcmVuID0gU3RyaW5nX21hcC5lbXB0eSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0YWlsID0gbG9vcCB0YWlsIG1hdGNoZWRfbm9kZSBpblxuICAgICAgICB7IG5vZGUgd2l0aCBjaGlsZHJlbiA9IFN0cmluZ19tYXAuYWRkIGNvbnN0IHRhaWwgbm9kZS5jaGlsZHJlbiB9XG4gICAgICB8IFZhciAoXywgXywgdGFpbCkgLT5cbiAgICAgICAgbGV0IG1hdGNoZWRfbm9kZSA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nX21hcC5maW5kX29wdCBcIjpcIiBub2RlLmNoaWxkcmVuIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZXhpc3Rpbmdfbm9kZSAtPiBleGlzdGluZ19ub2RlXG4gICAgICAgICAgfCBOb25lIC0+IHsgY2FwdHVyZSA9IE5vX21hdGNoOyBjaGlsZHJlbiA9IFN0cmluZ19tYXAuZW1wdHkgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbCA9IGxvb3AgdGFpbCBtYXRjaGVkX25vZGUgaW5cbiAgICAgICAgeyBub2RlIHdpdGggY2hpbGRyZW4gPSBTdHJpbmdfbWFwLmFkZCBcIjpcIiB0YWlsIG5vZGUuY2hpbGRyZW4gfVxuICAgIGluXG4gICAgbWF0Y2ggcm91dGUwIHdpdGhcbiAgICB8IFJvdXRlIChwYXRoMCwgXykgLT4gbG9vcCBwYXRoMCByb290XG4gICAgfCBBbGlhcyAocGF0aDAsIF8pIC0+IGxvb3AgcGF0aDAgcm9vdFxuXG4gIGV4Y2VwdGlvbiBJbmNvbXBsZXRlX21hdGNoIG9mIHN0cmluZyBsaXN0XG4gIGV4Y2VwdGlvbiBOb19tYXRjaCBvZiBzdHJpbmcgbGlzdFxuXG4gIGxldCBsb29rdXAgKHRhYmxlMCA6IHQpIChpbnB1dDAgOiBzdHJpbmcgbGlzdCkgOiAobG9va3VwLCBleG4pIHJlc3VsdCA9XG4gICAgbGV0IHJlYyBsb29wID9idCBub2RlIGlucHV0IG1hdGNoZWQgYXJncyA9XG4gICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IFtdIC0+IChcbiAgICAgICAgbWF0Y2ggbm9kZS5jYXB0dXJlIHdpdGhcbiAgICAgICAgfCBOb19tYXRjaCAtPiAoXG4gICAgICAgICAgKCogSWYgd2UgaGF2ZSBhIGJhY2t0cmFja2luZyBjb250aW51YXRpb24sIHRyeSB0aGF0IGJlZm9yZSBmYWlsaW5nLiAqKVxuICAgICAgICAgIG1hdGNoIGJ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRXJyb3IgKEluY29tcGxldGVfbWF0Y2ggaW5wdXQwKVxuICAgICAgICAgIHwgU29tZSBidCAtPiBidCAoKSlcbiAgICAgICAgfCBNYXRjaCByb3V0ZSAtPiBPayB7IHJvdXRlOyBtYXRjaGVkID0gTGlzdC5yZXYgbWF0Y2hlZDsgYXJncyA9IExpc3QucmV2IGFyZ3MgfVxuICAgICAgICB8IFBhcnRpYWwgcm91dGUgLT4gT2sgeyByb3V0ZTsgbWF0Y2hlZCA9IExpc3QucmV2IG1hdGNoZWQ7IGFyZ3MgPSBMaXN0LnJldiBhcmdzIH0pXG4gICAgICB8IGlucHV0X2hkIDo6IGlucHV0JyAtPiAoXG4gICAgICAgIGxldCBidCAoKSA9XG4gICAgICAgICAgbWF0Y2ggbm9kZS5jYXB0dXJlIHdpdGhcbiAgICAgICAgICB8IFBhcnRpYWwgcm91dGUgLT4gT2sgeyByb3V0ZTsgbWF0Y2hlZCA9IExpc3QucmV2IG1hdGNoZWQ7IGFyZ3MgPSBMaXN0LnJldiBhcmdzIEAgaW5wdXQgfVxuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmdfbWFwLmZpbmRfb3B0IFwiOlwiIG5vZGUuY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG5vZGUnIC0+IGxvb3Agbm9kZScgaW5wdXQnIChpbnB1dF9oZCA6OiBtYXRjaGVkKSAoaW5wdXRfaGQgOjogYXJncylcbiAgICAgICAgICAgIHwgTm9uZSAtPiBFcnJvciAoTm9fbWF0Y2ggaW5wdXQwKSlcbiAgICAgICAgaW5cbiAgICAgICAgKCogRm9sbG93IENvbnN0LiBJZiBub3QgZGVmaW5lZCwgY2hlY2sgZm9yIFJlc3QgYW5kIFZhci5cbiAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gY2hlY2tpbmcgdGhpcyBub3csIHdlIGNyZWF0ZSBhIFwiYmFja3RyYWNraW5nXCJcbiAgICAgICAgICAgY29udGludWF0aW9uIHRoYXQgbWlnaHQgYXR0ZW1wdCB0aGUgUmVzdC9WYXIgbWF0Y2ggaWYgQ29uc3QgZmFpbHMuICopXG4gICAgICAgIG1hdGNoIFN0cmluZ19tYXAuZmluZF9vcHQgaW5wdXRfaGQgbm9kZS5jaGlsZHJlbiB3aXRoXG4gICAgICAgIHwgU29tZSBub2RlJyAtPiBsb29wIH5idCBub2RlJyBpbnB1dCcgKGlucHV0X2hkIDo6IG1hdGNoZWQpIGFyZ3NcbiAgICAgICAgfCBOb25lIC0+IGJ0ICgpKVxuICAgIGluXG4gICAgbG9vcCB0YWJsZTAgaW5wdXQwIFtdIFtdXG5cbiAgbGV0IG9mX3JvdXRlX2xpc3Qgcm91dGVzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiByZWdpc3RlciB4IGFjYykgZW1wdHkgcm91dGVzXG5lbmRcblxubGV0IHRhYmxlID0gVGFibGUub2Zfcm91dGVfbGlzdFxubGV0IG1ha2UgPyhwcmVmaXggPSBTaWduYWwubWFrZSBbXSkgcmVzdCA9IHsgcHJlZml4OyByZXN0IH1cbmxldCBwYXRoIChyb3V0ZXIgOiB0KSA9IHJvdXRlci5yZXN0XG5sZXQgcHJlZml4IChyb3V0ZXIgOiB0KSA9IHJvdXRlci5wcmVmaXhcblxubGV0IHJlYyBldmFsX3BhdGggOiB0eXBlIHZpZXcgbGluayBhLiAoc3RyaW5nIGxpc3QgLT4gYSkgLT4gKHZpZXcsIGxpbmssIGEpIHBhdGggLT4gbGluayA9XG4gZnVuIGsgcGF0aCAtPlxuICBtYXRjaCBwYXRoIHdpdGhcbiAgfCBFbmQgLT4gayBbXVxuICB8IFJlc3QgLT4gZnVuIHBhdGgyIC0+IGV2YWxfcGF0aCBrIHBhdGgyXG4gIHwgQ29uc3QgKGNvbnN0LCBFbmQpIC0+IGsgWyBjb25zdCBdXG4gIHwgQ29uc3QgKGNvbnN0LCB0YWlsKSAtPiBldmFsX3BhdGggKGZ1biByZXN0IC0+IGsgKGNvbnN0IDo6IHJlc3QpKSB0YWlsXG4gIHwgVmFyICh2YXIsIF8sIHRhaWwpIC0+IGZ1biB4IC0+IGV2YWxfcGF0aCAoZnVuIHJlc3QgLT4gayAodmFyLnRvX3N0cmluZyB4IDo6IHJlc3QpKSB0YWlsXG5cbmxldCBsb2NhdGlvbl9zZXRfcGF0aCBwYXRoID1cbiAgbGV0IGhhc2ggPSBcIiMvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIHBhdGggaW5cbiAgU3Rkd2ViLkRvbS5Mb2NhdGlvbi5zZXRfaGFzaCBTdGR3ZWIuRG9tLldpbmRvdy5sb2NhdGlvbiBoYXNoXG5cbmxldCBhbGlhcyBzcmMgZHN0ID0gZXZhbF9wYXRoIChmdW4gc3RyX3BhdGggLT4gQWxpYXMgKHNyYywgc3RyX3BhdGgpKSBkc3RcblxuKCogZ29fdXAgMiBhL2IvYy9kIC0+IC9hL2IgKilcbigqIGdvX3VwIDAgYS9iL2MvZCAtPiAvYS9iL2MvZCAqKVxuKCogZ29fdXAgMiAvIC0+IC8gKilcbigqIGdvX3VwIDEwIGEvYi9jL2QgLT4gLyAqKVxubGV0IGdvX3VwIG4wIHByZWZpeCA9XG4gIGlmIG4wID0gMCB0aGVuIHByZWZpeFxuICBlbHNlIGlmIG4wIDwgMCB0aGVuIGludmFsaWRfYXJnIFwidXAgbXVzdCBiZSBwb3NpdGl2ZVwiXG4gIGVsc2VcbiAgICBsZXQgcHJlZml4X3JldiA9IExpc3QucmV2IHByZWZpeCBpblxuICAgIGxldCByZWMgbG9vcCBuIGlucHV0ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gTGlzdC5yZXYgaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGxcbiAgICBpblxuICAgIGxvb3AgbjAgcHJlZml4X3JldlxuXG5sZXQgZ28gPyhhYnNvbHV0ZSA9IGZhbHNlKSA/KHVwID0gMCkgKHJvdXRlciA6IHQpIHBhdGggPVxuICBldmFsX3BhdGhcbiAgICAoZnVuIHN0cl9wYXRoIC0+XG4gICAgICBsZXQgcHJlZml4ID0gaWYgYWJzb2x1dGUgdGhlbiBbXSBlbHNlIGdvX3VwIHVwIChTaWduYWwuZ2V0IHJvdXRlci5wcmVmaXgpIGluXG4gICAgICBsb2NhdGlvbl9zZXRfcGF0aCAocHJlZml4IEAgc3RyX3BhdGgpKVxuICAgIHBhdGhcblxubGV0IHBpY2tfcXBhdGggc2VnbWVudHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBFaXRoZXIuTGVmdCBjb25zdCAtPiBjb25zdFxuICAgICAgfCBSaWdodCB2YXJfc2lnIC0+IFNpZ25hbC5nZXQgdmFyX3NpZylcbiAgICBzZWdtZW50c1xuXG5sZXQgbGluayA/KGFic29sdXRlID0gZmFsc2UpID8odXAgPSAwKSA/KGFjdGl2ZSA9IEh0bWwuQXR0ci5ub3ApID8oaW5hY3RpdmUgPSBIdG1sLkF0dHIubm9wKVxuICAgID8oZXhhY3QgPSBmYWxzZSkgP2FsaWFzIChyb3V0ZXIgOiB0KSBwYXRoMCA9XG4gIGxldCBhbGlhcyA9IE9wdGlvbi5tYXAgbGlzdF9vZl9wYXRoIGFsaWFzIGluXG4gIGxldCBjaGVja19pc19hY3RpdmUgbGluayBjdXJyID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgZXhhY3QgdGhlbiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBsaW5rIGN1cnJcbiAgICAgIGVsc2UgbGlzdF9zdGFydHNfd2l0aCB+ZXF1YWw6U3RyaW5nLmVxdWFsIH5wcmVmaXg6bGluayBjdXJyXG4gICAgaW5cbiAgICBtYXRjaCBhbGlhcyB3aXRoXG4gICAgfCBTb21lIGFsaWFzIC0+IGVxIHx8IExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIGFsaWFzIGN1cnJcbiAgICB8IE5vbmUgLT4gZXFcbiAgaW5cbiAgZXZhbF9wYXRoXG4gICAgKGZ1biBzdHJfcGF0aCAtPlxuICAgICAgbGV0IG91dCA9XG4gICAgICAgIFNpZ25hbC5tYXBcbiAgICAgICAgICAoZnVuIHByZWZpeCAtPiAoZ29fdXAgdXAgcHJlZml4LCBzdHJfcGF0aCkpXG4gICAgICAgICAgKGlmIGFic29sdXRlIHRoZW4gU2lnbmFsLm1ha2UgW10gZWxzZSByb3V0ZXIucHJlZml4KVxuICAgICAgaW5cbiAgICAgIFNpZ25hbC5wYWlyIG91dCByb3V0ZXIucmVzdFxuICAgICAgfD4gU2lnbmFsLnVuaXEgfmVxdWFsOihmdW4gKChwMSwgczEpLCByMSkgKChwMiwgczIpLCByMikgLT5cbiAgICAgICAgICAgICBpZiBhY3RpdmUgPT0gSHRtbC5BdHRyLm5vcCB0aGVuXG4gICAgICAgICAgICAgICBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBwMSBwMiAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBzMSBzMlxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIExpc3QuZXF1YWwgU3RyaW5nLmVxdWFsIHAxIHAyXG4gICAgICAgICAgICAgICAmJiBMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBzMSBzMlxuICAgICAgICAgICAgICAgJiYgTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcjEgcjIpXG4gICAgICB8PiBWaWV3LmJpbmQgKGZ1biAoKGxpbmtfcHJlZml4LCBsaW5rX3N1ZmZpeCksIHJlc3QpIC0+XG4gICAgICAgICAgICAgbGV0IHBhdGhfc3RyID0gU3RyaW5nLmNvbmNhdCBcIi9cIiAoKFwiI1wiIDo6IGxpbmtfcHJlZml4KSBAIGxpbmtfc3VmZml4KSBpblxuICAgICAgICAgICAgIGxldCBocmVmX2F0dHIgPSBIdG1sLmhyZWYgcGF0aF9zdHIgaW5cbiAgICAgICAgICAgICBsZXQgdXNlcl9hdHRyID1cbiAgICAgICAgICAgICAgIGlmIGFjdGl2ZSA9PSBIdG1sLkF0dHIubm9wIHRoZW4gaW5hY3RpdmVcbiAgICAgICAgICAgICAgIGVsc2UgaWYgY2hlY2tfaXNfYWN0aXZlIGxpbmtfc3VmZml4IHJlc3QgdGhlbiBhY3RpdmVcbiAgICAgICAgICAgICAgIGVsc2UgaW5hY3RpdmVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEh0bWwuQXR0ci5jb21iaW5lIGhyZWZfYXR0ciB1c2VyX2F0dHIpKVxuICAgIHBhdGgwXG5cbnR5cGUgZW1pdHMgPSB7XG4gIG11dGFibGUgZW1pdF9hcmdzIDogKG5vdGlmeTpTaWduYWwubm90aWZpY2F0aW9uIC0+IHN0cmluZyAtPiB1bml0KSBsaXN0O1xuICBtdXRhYmxlIGVtaXRfcHJlZml4IDogbm90aWZ5OlNpZ25hbC5ub3RpZmljYXRpb24gLT4gc3RyaW5nIGxpc3QgLT4gdW5pdDtcbiAgbXV0YWJsZSBlbWl0X3Jlc3QgOiBub3RpZnk6U2lnbmFsLm5vdGlmaWNhdGlvbiAtPiBzdHJpbmcgbGlzdCAtPiB1bml0O1xufVxuXG5sZXQgaW5pdF9lbWl0cyAoKSA9XG4gIHsgZW1pdF9hcmdzID0gW107IGVtaXRfcHJlZml4ID0gKGZ1biB+bm90aWZ5Ol8gXyAtPiAoKSk7IGVtaXRfcmVzdCA9IChmdW4gfm5vdGlmeTpfIF8gLT4gKCkpIH1cblxubGV0IGFwcGx5IGVtaXRzIH5wcmVmaXg6YWJzcHJlZml4MCB+bWF0Y2hlZCB+YXJnczphcmdzMCA9XG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kIGluXG4gIGxldCBhYnNwcmVmaXhfc2lnID0gU2lnbmFsLm1hcCAoZnVuIGFic3ByZWZpeDAgLT4gYWJzcHJlZml4MCBAIG1hdGNoZWQpIGFic3ByZWZpeDAgaW5cbiAgbGV0IGFic3ByZWZpeF9lbWl0IH5ub3RpZnkgcHJlZml4JyA9XG4gICAgbGV0IGFic3ByZWZpeCcgPSBTaWduYWwuZ2V0IGFic3ByZWZpeDAgQCBwcmVmaXgnIGluXG4gICAgaWYgbm90IChMaXN0LmVxdWFsIFN0cmluZy5lcXVhbCBhYnNwcmVmaXgnIChTaWduYWwuZ2V0IGFic3ByZWZpeF9zaWcpKSB0aGVuXG4gICAgICBTaWduYWwuZW1pdCB+bm90aWZ5IGFic3ByZWZpeCcgYWJzcHJlZml4X3NpZ1xuICBpblxuICBlbWl0cy5lbWl0X3ByZWZpeCA8LSBhYnNwcmVmaXhfZW1pdDtcbiAgbGV0IHJlYyBsb29wIDpcbiAgICAgIHR5cGUgdmlldyBsaW5rLlxuICAgICAgc3RyaW5nIGxpc3QgLT5cbiAgICAgIF8gbGlzdCAtPlxuICAgICAgKHN0cmluZywgc3RyaW5nIHNpZ25hbCkgRWl0aGVyLnQgbGlzdCAtPlxuICAgICAgKHZpZXcsIGxpbmssIEh0bWwuaHRtbCkgcGF0aCAtPlxuICAgICAgdmlldyAtPlxuICAgICAgKEh0bWwuaHRtbCAqIChzdHJpbmcsIHN0cmluZyBzaWduYWwpIEVpdGhlci50IGxpc3QsIHN0cmluZykgcmVzdWx0ID1cbiAgIGZ1biBhcmdzIGFyZ3NfZW1pdHMgcmV2X3F1YWxpZmllZF9wYXRoIHBhdGggdmlldyAtPlxuICAgIG1hdGNoIChwYXRoLCBhcmdzKSB3aXRoXG4gICAgfCBSZXN0LCBfIC0+XG4gICAgICBsZXQgcmVzdF9zaWcgPSBTaWduYWwubWFrZSBhcmdzIGluXG4gICAgICBsZXQgcmVzdF9lbWl0IH5ub3RpZnkgcmVzdCA9XG4gICAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTdHJpbmcuZXF1YWwgcmVzdCAoU2lnbmFsLmdldCByZXN0X3NpZykpIHRoZW5cbiAgICAgICAgICBTaWduYWwuZW1pdCB+bm90aWZ5IHJlc3QgcmVzdF9zaWdcbiAgICAgIGluXG4gICAgICBlbWl0cy5lbWl0X2FyZ3MgPC0gTGlzdC5yZXYgYXJnc19lbWl0cztcbiAgICAgIGVtaXRzLmVtaXRfcmVzdCA8LSByZXN0X2VtaXQ7XG4gICAgICBsZXQgaHRtbCA9IHZpZXcgKHsgcHJlZml4ID0gYWJzcHJlZml4X3NpZzsgcmVzdCA9IHJlc3Rfc2lnIH0gOiB0KSBpblxuICAgICAgbGV0IHF1YWxpZmllZF9wYXRoJyA9XG4gICAgICAgIGxldCBxdWFsaWZpZWRfcmVzdCA9IExpc3QubWFwIChmdW4gYXJnIC0+IEVpdGhlci5MZWZ0IGFyZykgYXJncyBpblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmV2X3F1YWxpZmllZF9wYXRoIHF1YWxpZmllZF9yZXN0XG4gICAgICBpblxuICAgICAgT2sgKGh0bWwsIHF1YWxpZmllZF9wYXRoJylcbiAgICB8IEVuZCwgW10gLT5cbiAgICAgIGVtaXRzLmVtaXRfYXJncyA8LSBMaXN0LnJldiBhcmdzX2VtaXRzO1xuICAgICAgT2sgKHZpZXcgKCksIExpc3QucmV2IHJldl9xdWFsaWZpZWRfcGF0aClcbiAgICB8IEVuZCwgXyA6OiBfIC0+IEVycm9yIFwidG9vIG1hbnkgYXJndW1lbnRzIGZvciBwYXRoXCJcbiAgICB8IENvbnN0IChjb25zdCwgcGF0aCcpLCBfIC0+IGxvb3AgYXJncyBhcmdzX2VtaXRzIChMZWZ0IGNvbnN0IDo6IHJldl9xdWFsaWZpZWRfcGF0aCkgcGF0aCcgdmlld1xuICAgIHwgVmFyIF8sIFtdIC0+IEVycm9yIFwiaW5zdWZmaWNpZW50IGFyZ3VtZW50cyBmb3IgcGF0aFwiXG4gICAgfCBWYXIgKHZhciwgdmFyX3NpZ19vcHQsIHBhdGgnKSwgYXJnX3N0ciA6OiBhcmdzJyAtPlxuICAgICAgbGV0KiBhcmcgPVxuICAgICAgICB2YXIub2Zfc3RyaW5nIGFyZ19zdHJcbiAgICAgICAgfD4gT3B0aW9uLnRvX3Jlc3VsdFxuICAgICAgICAgICAgIH5ub25lOihTdHJpbmcuY29uY2F0IFwiXCIgWyBcImNvdWxkIG5vdCBkZWNvZGUgXCI7IHZhci5sYWJlbDsgXCIgdmFyaWFibGU6IFwiOyBhcmdfc3RyIF0pXG4gICAgICBpblxuICAgICAgbGV0IGFyZ19zaWcgPVxuICAgICAgICBtYXRjaCB2YXJfc2lnX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTaWduYWwubWFrZSB+bGFiZWw6KFwidmFyLVwiIF4gdmFyLmxhYmVsKSBhcmdcbiAgICAgICAgfCBTb21lIHZhcl9zaWcgLT5cbiAgICAgICAgICBTaWduYWwuZW1pdCBhcmcgdmFyX3NpZztcbiAgICAgICAgICB2YXJfc2lnXG4gICAgICBpblxuICAgICAgbGV0IGFyZ19lbWl0IH5ub3RpZnkgYXJnX3N0cicgPVxuICAgICAgICBsZXQgYXJnJyA9IHZhci5vZl9zdHJpbmcgYXJnX3N0cicgfD4gb3JfZmFpbCAoXCJ2YXIgZGVjb2RpbmcgZmFpbGVkOiBcIiBeIHZhci5sYWJlbCkgaW5cbiAgICAgICAgaWYgbm90ICh2YXIuZXF1YWwgKFNpZ25hbC5nZXQgYXJnX3NpZykgYXJnJykgdGhlbiBTaWduYWwuZW1pdCB+bm90aWZ5IGFyZycgYXJnX3NpZ1xuICAgICAgaW5cbiAgICAgIGxldCBxdWFsaWZpZWRfcGF0aCcgPSBFaXRoZXIuUmlnaHQgKFNpZ25hbC5tYXAgdmFyLnRvX3N0cmluZyBhcmdfc2lnKSA6OiByZXZfcXVhbGlmaWVkX3BhdGggaW5cbiAgICAgIGxvb3AgYXJncycgKGFyZ19lbWl0IDo6IGFyZ3NfZW1pdHMpIHF1YWxpZmllZF9wYXRoJyBwYXRoJyAodmlldyBhcmdfc2lnKVxuICBpblxuICBsb29wIGFyZ3MwIFtdIFtdXG5cbmxldCByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggP2FsaWFzIH5sYWJlbCB+ZGVmYXVsdCBlcnIgPVxuICBsZXQgbGFiZWwgPVxuICAgIG1hdGNoIGFsaWFzIHdpdGhcbiAgICB8IE5vbmUgLT4gbGFiZWxcbiAgICB8IFNvbWUgYWxpYXMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIFsgbGFiZWw7IFwiOiBhbGlhcyBcIjsgYWxpYXMgXVxuICBpblxuICBtYXRjaCBlcnIgd2l0aFxuICB8IFRhYmxlLk5vX21hdGNoIHBhdGggLT5cbiAgICBkZWZhdWx0IG9yIEh0bWwudGV4dCAobGFiZWwgXiBcIjogbm8gbWF0Y2g6IC9cIiBeIFN0cmluZy5jb25jYXQgXCIvXCIgKFNpZ25hbC5nZXQgcHJlZml4IEAgcGF0aCkpXG4gIHwgVGFibGUuSW5jb21wbGV0ZV9tYXRjaCBwYXRoIC0+XG4gICAgZGVmYXVsdFxuICAgIG9yIEh0bWwudGV4dCAobGFiZWwgXiBcIjogaW5jb21wbGV0ZSBtYXRjaDogL1wiIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoU2lnbmFsLmdldCBwcmVmaXggQCBwYXRoKSlcbiAgfCBleG4gLT5cbiAgICBKeC5sb2cgZXhuO1xuICAgIEh0bWwudGV4dCAobGFiZWwgXiBcIjogdW5leHBlY3RlZCBleGNlcHRpb25cIilcblxuKCogVE9ETzogbXVzdCBiZSBsYXp5IGluaXRpYWxpemVkIHNpbWlsYXIgdG8gVmlldy5zaG93LiAqKVxuKCogVE9ETzogaW1wcm92ZSBleG4gY29udGV4dCBsb2dnaW5nLiAqKVxubGV0IGRpc3BhdGNoX3RhYmxlID9sYWJlbCA/ZGVmYXVsdCAoeyBwcmVmaXg7IHJlc3QgfSA6IHQpIHRhYmxlIDogSHRtbC5odG1sID1cbiBmdW4gcGFyZW50IGluc2VydCAtPlxuICBsZXQgbGFiZWwgPVxuICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJyb3V0ZXJcIlxuICAgIHwgU29tZSB4IC0+IFwicm91dGVyLVwiIF4geFxuICBpblxuICBsZXQgbG9va3VwX3NpZyA9IFNpZ25hbC5tYXAgKFRhYmxlLmxvb2t1cCB0YWJsZSkgcmVzdCBpblxuICBsZXQgbG9va3VwX3JvdXRlX3NpZyA9XG4gICAgU2lnbmFsLnVuaXFcbiAgICAgIH5lcXVhbDooZnVuIHJlczEgcmVzMiAtPlxuICAgICAgICBtYXRjaCAocmVzMSwgcmVzMikgd2l0aFxuICAgICAgICB8IE9rIHsgcm91dGUgPSByMTsgXyB9LCBPayB7IHJvdXRlID0gcjI7IF8gfSAtPiByMSA9PSByMlxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBsb29rdXBfc2lnXG4gIGluXG4gICgqIERvIHdlIG5lZWQgdG8gY2xlYW4gdXAgZW1pdHMgaW4gdW5tb3VudD8gKilcbiAgbGV0IGVtaXRzID0gaW5pdF9lbWl0cyAoKSBpblxuICBsZXQgaHRtbCA9XG4gICAgVmlldy5zaG93IH5sYWJlbFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IEFsaWFzIChzcmNfcGF0aCwgZHN0X3N0cl9wYXRoKTsgXyB9IC0+IGJlZ2luXG4gICAgICAgICAgbWF0Y2ggVGFibGUubG9va3VwIHRhYmxlIGRzdF9zdHJfcGF0aCB3aXRoXG4gICAgICAgICAgfCBPayB7IHJvdXRlID0gUm91dGUgKHBhdGgsIHZpZXcpOyBtYXRjaGVkOyBhcmdzIH0gLT4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGFwcGx5IGVtaXRzIH5wcmVmaXggfm1hdGNoZWQgfmFyZ3MgcGF0aCB2aWV3IHdpdGhcbiAgICAgICAgICAgIHwgT2sgKGh0bWwsIF9xcGF0aCkgLT4gaHRtbFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gSHRtbC50ZXh0IChsYWJlbCBeIFwiOiBcIiBeIGVycilcbiAgICAgICAgICBlbmRcbiAgICAgICAgICB8IE9rIHsgcm91dGUgPSBBbGlhcyBfOyBfIH0gLT4gZmFpbHdpdGggXCJidWc6IGZvcndhcmQgdG8gZm9yd2FyZFwiXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgIGxldCBhbGlhcyA9IHN0cmluZ19vZl9wYXRoIHNyY19wYXRoIGluXG4gICAgICAgICAgICByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggfmFsaWFzIH5sYWJlbCB+ZGVmYXVsdCBlcnJcbiAgICAgICAgZW5kXG4gICAgICAgIHwgT2sgeyByb3V0ZSA9IFJvdXRlIChwYXRoLCB2aWV3KTsgbWF0Y2hlZDsgYXJncyB9IC0+IGJlZ2luXG4gICAgICAgICAgbWF0Y2ggYXBwbHkgZW1pdHMgfnByZWZpeCB+bWF0Y2hlZCB+YXJncyBwYXRoIHZpZXcgd2l0aFxuICAgICAgICAgIHwgT2sgKGh0bWwsIHFwYXRoKSAtPlxuICAgICAgICAgICAgKCpKeC5sb2cgKFwiQUZURVIgQVBQTFlcIiwgQXJyYXkub2ZfbGlzdCBxcGF0aCk7KilcbiAgICAgICAgICAgICgqbGV0IHVwX3Jlc3QgPSBTaWduYWwubWFrZSBbXSBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoZnVuIHNlZyAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggc2VnIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgRWl0aGVyLkxlZnQgXyAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBFaXRoZXIuUmlnaHQgdmFyX3NpZyAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBGSVhNRTogdGhpcyBxcGF0aCBpcyB0aGUgaW5pdGlhbCBwYXRoIGF0IHJlbmRlcmluZyB0aW1lLCBub3QgdGhlIGN1cnJlbnQgcmVzdCBwYXRoLiAqKVxuICAgICAgICAgICAgICAgICAgICBTaWduYWwuc3ViIChmdW4gXyAtPiBTaWduYWwuZW1pdCAocGlja19xcGF0aCBxcGF0aCkgdXBfcmVzdCkgdmFyX3NpZ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBxcGF0aDtcbiAgICAgICAgICAgICAgU2lnbmFsLnN1YlxuICAgICAgICAgICAgICAgIChmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgKCogSngubG9nIChcIlJPVVRFIFVQLCByZXN0XCIsIEFycmF5Lm9mX2xpc3QgcmVzdCwgQXJyYXkub2ZfbGlzdCAoU2lnbmFsLmdldCByb3V0ZXIucmVzdCkpOyAqKVxuICAgICAgICAgICAgICAgICAgbGV0IGhhc2ggPSBcIiMvXCIgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChTaWduYWwuZ2V0IHByZWZpeCBAIHJlc3QpIGluXG4gICAgICAgICAgICAgICAgICBTdGR3ZWIuRG9tLkxvY2F0aW9uLnNldF9oYXNoIFN0ZHdlYi5Eb20uV2luZG93LmxvY2F0aW9uIGhhc2hcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgdXBfcmVzdDsqKVxuICAgICAgICAgICAgaHRtbFxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IEh0bWwudGV4dCAobGFiZWwgXiBcIjogXCIgXiBlcnIpXG4gICAgICAgIGVuZFxuICAgICAgICB8IEVycm9yIGVyciAtPiByZW5kZXJfbG9va3VwX2Vycm9yIH5wcmVmaXggfmxhYmVsIH5kZWZhdWx0IGVycilcbiAgICAgIGxvb2t1cF9yb3V0ZV9zaWdcbiAgaW5cbiAgbGV0IHVuc3ViID1cbiAgICBTaWduYWwuc3ViJ1xuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgKHsgYXJncyA9IGFyZ3MwOyBtYXRjaGVkID0gbWF0Y2hlZDA7IHJvdXRlID0gUm91dGUgXyB9IDogbG9va3VwKSAtPlxuICAgICAgICAgIFNpZ25hbC5zY29wZSAoZnVuIG5vdGlmeSAtPlxuICAgICAgICAgICAgICBlbWl0cy5lbWl0X3ByZWZpeCB+bm90aWZ5IG1hdGNoZWQwO1xuICAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgYXJnc19lbWl0cyBhcmdzID1cbiAgICAgICAgICAgICAgICBtYXRjaCAoYXJnc19lbWl0cywgYXJncykgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10sIFtdIC0+IGVtaXRzLmVtaXRfcmVzdCB+bm90aWZ5IFtdXG4gICAgICAgICAgICAgICAgfCBbXSwgcmVzdCAtPiBlbWl0cy5lbWl0X3Jlc3Qgfm5vdGlmeSByZXN0XG4gICAgICAgICAgICAgICAgfCBfYXJnX2VtaXRzLCBbXSAtPiBpbnZhbGlkX2FyZyBcInJvdXRlcjogaW5zdWZmaWNpZW50IGFyZ3MgZm9yIGVtaXRcIlxuICAgICAgICAgICAgICAgIHwgYXJnX2VtaXQgOjogYXJnX2VtaXRzJywgYXJnIDo6IGFyZ3MnIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUT0RPOiB0aGVzZSBlbWl0cyBjYW4gcmFpc2UgdmFyIGRlY29kaW5nIGV4Y2VwdGlvbnMsIGhhbmRsZSB0aGlzIGhlcmUgYW5kIHVwZGF0ZSB2aWV3IHdpdGggZXJyb3IuICopXG4gICAgICAgICAgICAgICAgICBhcmdfZW1pdCB+bm90aWZ5IGFyZztcbiAgICAgICAgICAgICAgICAgIGxvb3AgYXJnX2VtaXRzJyBhcmdzJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wIGVtaXRzLmVtaXRfYXJncyBhcmdzMClcbiAgICAgICAgfCBPayAoeyByb3V0ZSA9IEFsaWFzIF87IF8gfSA6IGxvb2t1cCkgLT4gKClcbiAgICAgICAgfCBFcnJvciBfIC0+ICgpKVxuICAgICAgbG9va3VwX3NpZ1xuICBpblxuICBsZXQgaHRtbCcgPSBIdG1sLkVsZW0ub25fdW5tb3VudCB1bnN1YiBodG1sIGluXG4gIGh0bWwnIHBhcmVudCBpbnNlcnRcblxubGV0IGRpc3BhdGNoID9sYWJlbCA/ZGVmYXVsdCByb3V0ZXIgcm91dGVzID1cbiAgZGlzcGF0Y2hfdGFibGUgP2xhYmVsID9kZWZhdWx0IHJvdXRlciAoVGFibGUub2Zfcm91dGVfbGlzdCByb3V0ZXMpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiY2FtbF9jYWxsMyIsImEyIiwiZ2xvYmFsX2RhdGEiLCJTdGRsaWIiLCJTaWduYWwiLCJIdG1sIiwiSGVsaXhfVmlldyIsIlN0ZGxpYl9TdHJpbmciLCJKeCIsIlN0ZGxpYl9MaXN0IiwiU3RkbGliX09wdGlvbiIsIlN0ZGxpYl9SZXN1bHQiLCJTdGR3ZWIiLCJTdGRsaWJfTWFwIiwiU3RkbGliX0ludCIsIlN0cmluZ19tYXAiLCJvciIsIm9wdCIsImRlZmF1bHQkIiwieCIsInZhciQiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJsYWJlbCIsImVxdWFsIiwiaW50Iiwic3RyaW5nIiwicXVlcnkiLCJzdHIiLCJ4MSIsIngyIiwicm91dGUiLCJwYXRoIiwicmVuZGVyIiwiY3N0Iiwic3RyaW5nX29mX3BhdGgiLCJwYXRoMCIsImxvb3AiLCJjb25zdCQiLCJtYXRjaCIsInRhaWwiLCJsaXN0X29mX3BhdGgiLCJlbXB0eSIsInJlZ2lzdGVyIiwicm91dGUwIiwicm9vdCIsIm5vZGUiLCJleGlzdGluZ19ub2RlIiwibWF0Y2hlZF9ub2RlIiwiSW5jb21wbGV0ZV9tYXRjaCIsIk5vX21hdGNoIiwibG9va3VwIiwidGFibGUwIiwiaW5wdXQwIiwiYnQiLCJpbnB1dCIsIm1hdGNoZWQiLCJhcmdzIiwiaW5wdXRfaGQiLCJwYXJhbSIsIm9mX3JvdXRlX2xpc3QiLCJyb3V0ZXMiLCJhY2MiLCJtYWtlIiwicmVzdCIsInByZWZpeCIsInJvdXRlciIsImV2YWxfcGF0aCIsImsiLCJwYXRoMiIsImxvY2F0aW9uX3NldF9wYXRoIiwiaGFzaCIsImFsaWFzIiwic3JjIiwiZHN0Iiwic3RyX3BhdGgiLCJnb191cCIsIm4wIiwicHJlZml4X3JldiIsIm4iLCJnbyIsImFic29sdXRlIiwidXAiLCJwaWNrX3FwYXRoIiwic2VnbWVudHMiLCJ2YXJfc2lnIiwibGluayIsImFjdGl2ZSIsImluYWN0aXZlIiwiZXhhY3QiLCJvdXQiLCJyMiIsInMyIiwicDIiLCJyMSIsInMxIiwicDEiLCJsaW5rX3N1ZmZpeCIsImxpbmtfcHJlZml4IiwicGF0aF9zdHIiLCJocmVmX2F0dHIiLCJ1c2VyX2F0dHIiLCJlcSIsInAiLCJsIiwicDAiLCJsMCIsImluaXRfZW1pdHMiLCJhcHBseSIsImVtaXRzIiwiYWJzcHJlZml4MCIsImFyZ3MwIiwibGV0JCIsImFic3ByZWZpeF9zaWciLCJhYnNwcmVmaXhfZW1pdCIsIm5vdGlmeSIsImFic3ByZWZpeCIsImFyZ3NfZW1pdHMiLCJyZXZfcXVhbGlmaWVkX3BhdGgiLCJ2aWV3IiwidmFyX3NpZ19vcHQiLCJhcmdfc3RyIiwiYXJnIiwiYXJnX3NpZyIsImFyZ19lbWl0IiwibXNnIiwicXVhbGlmaWVkX3BhdGgiLCJyZXN0X3NpZyIsInJlc3RfZW1pdCIsImh0bWwiLCJxdWFsaWZpZWRfcmVzdCIsInJlbmRlcl9sb29rdXBfZXJyb3IiLCJlcnIiLCJkaXNwYXRjaF90YWJsZSIsInRhYmxlIiwicGFyZW50IiwiaW5zZXJ0IiwibG9va3VwX3NpZyIsImxvb2t1cF9yb3V0ZV9zaWciLCJyZXMxIiwicmVzMiIsImRzdF9zdHJfcGF0aCIsInNyY19wYXRoIiwidW5zdWIiLCJtYXRjaGVkMCIsImRpc3BhdGNoIl0sIm1hcHBpbmdzIjoiSUFBQUEsVUFBQTtBQUFBLElBQUFDLG1CQUFBO0FBQUEsWUFBQUMsV0FBQUMsR0FBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFGLEdBQUFDLElBQUFFO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBSixHQUFBQyxJQUFBRSxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsS0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxnQkFBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLFlBQUFDLEdBQUFDLEtBQUFDO0FBQUFBLElDTUksVUFFVTtBQUFBLFFBQUFDLElBRlY7QUFBQSxJQUNZO0FBQUEsR0FDSztBQUFBLFlBQUFDLEtBQUFDLFdBQUFDLFdBQUFMLEtBQUFNO0FBQUFBLFFBQUFDLFFBdUJiO0FBQUEsSUFBc0Q7QUFBQSxHQUFzQztBQUFBO0FBQUEsSUFBQUMsTUQvQnBHO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQSxnQkFBQUMsS0MwQ2lDLDBDQUF3QztBQUFB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QUExSCxPQUFBTCxVQUFBZ0QsUUFBQUw7QUFBQUEsSUFHbUIsT0FBNEIsd0NBQTVCLHNCQUE0QjtBQUFBO0FBQUEsR0RuYnBFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDgxNzEsImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L01vdXNlLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwibW9kdWxlIEV2ZW50ID0gU3Rkd2ViLkRvbS5FdmVudFxubW9kdWxlIFdpbmRvdyA9IFN0ZHdlYi5Eb20uV2luZG93XG5cbmxldCBwb3NpdGlvbl9vZl9tb3VzZV9ldmVudCBtX2V2ID0gRXZlbnQuKHBhZ2VfeCBtX2V2LCBwYWdlX3kgbV9ldilcblxubGV0IHBvc2l0aW9uICgpID1cbiAgbGV0IHMgPSBTaWduYWwubWFrZSAoMC4wLCAwLjApIGluXG4gIFdpbmRvdy5iaW5kIEV2ZW50Lm1vdXNlbW92ZSAoZnVuIG1fZXYgLT4gU2lnbmFsLmVtaXQgKHBvc2l0aW9uX29mX21vdXNlX2V2ZW50IG1fZXYpIHMpO1xuICBzXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlNpZ25hbCIsIlN0ZHdlYiIsInBvc2l0aW9uX29mX21vdXNlX2V2ZW50IiwibV9ldiIsInBvc2l0aW9uIiwicGFyYW0iLCJzIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxZQUFBQyx3QkFBQUM7QUFBQUEsUUFBQSxJQ0d1RDtBQUFBLElBQWIsZ0RBQVc7QUFBQSxHQUFjO0FBQUEsV0RIbkU7QUFBQSxZQUFBQyxTQUFBQztBQUFBQSxRQUFBQyxJQ01VO0FBQUEsSUFDUjtBQUFBO0FBQUE7QUFBQSxlQUFBSDtBQUFBQSxXQUFBLElBQXFEO0FBQUEsT0FBOEIsb0NBQUU7QUFBQTtBQUFBLElBQUM7QUFBQSxHQUNyRjtBQUFBLEdEUkgiLCJpZ25vcmVMaXN0IjpbMF19fSx7Im9mZnNldCI6eyJsaW5lIjo0ODIxNCwiY29sdW1uIjowfSwibWFwIjp7InZlcnNpb24iOjMsImZpbGUiOiJoZWxpeC5jbWEuanMiLCJzb3VyY2VzIjpbIi9idWlsdGluL2JsYWNrYm94Lm1sIiwiL1VzZXJzL3NhbW9odC9naXQvYmxhY2tzdW4vbW9uby9fb3BhbS9saWIvaGVsaXgvSHR0cC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIm1vZHVsZSBGZXRjaCA9IFN0ZHdlYi5GZXRjaFxubW9kdWxlIFByb21pc2UgPSBTdGR3ZWIuUHJvbWlzZVxuXG50eXBlIGVycm9yID1cbiAgfCBGZXRjaF9lcnJvciBvZiBKeC50XG4gIHwgVW5zdWNjZXNzZnVsIG9mIFN0ZHdlYi5GZXRjaC5SZXNwb25zZS50XG4gIHwgRGVjb2RpbmdfZXJyb3Igb2YgZXhuXG4gIHwgSGFuZGxpbmdfZXJyb3Igb2YgZXhuXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgPSBmdW5jdGlvblxuICB8IEZldGNoX2Vycm9yIF8gLT4gXCJGZXRjaCBlcnJvclwiXG4gIHwgVW5zdWNjZXNzZnVsIHJlc3AgLT5cbiAgICBcIlVuc3VjY2Vzc2Z1bCByZXNwb25zZTogXCIgXiBzdHJpbmdfb2ZfaW50IChTdGR3ZWIuRmV0Y2guUmVzcG9uc2Uuc3RhdHVzIHJlc3ApXG4gIHwgRGVjb2RpbmdfZXJyb3IgXyAtPiBcIkRlY29kaW5nIGZhaWxlZFwiXG4gIHwgSGFuZGxpbmdfZXJyb3IgXyAtPiBcIkNvdWxkIG5vdCBoYW5kbGUgZmV0Y2hlZCBwYXlsb2FkXCJcblxudHlwZSBub25yZWMgJ2EgcmVzdWx0ID0gKCdhLCBlcnJvcikgcmVzdWx0XG50eXBlIGJvZHkgPSBTdGR3ZWIuRmV0Y2guQm9keS50XG5cbm1vZHVsZSBFbmNvZGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHN0cmluZyBvcHRpb24gKiAoJ2EgLT4gRmV0Y2guQm9keS50KVxuXG4gIGxldCBtYWtlID8oY29udGVudF90eXBlKSBmID0gY29udGVudF90eXBlLCBmXG5cbiAgbGV0IHRvX3VuZGVmaW5lZF9ib2R5IF8gPSBGZXRjaC5Cb2R5LnVuc2FmZV9vZl9qcyBKeC51bmRlZmluZWRcbiAgbGV0IGVtcHR5ID0gKE5vbmUsIHRvX3VuZGVmaW5lZF9ib2R5KVxuICBsZXQgaWdub3JlID0gKE5vbmUsIHRvX3VuZGVmaW5lZF9ib2R5KVxuICBsZXQgdGV4dCA9IChOb25lLCBGZXRjaC5Cb2R5Lm9mX3N0cmluZylcbiAgbGV0IGZvcm1fZGF0YSA9IChOb25lLCBGZXRjaC5Cb2R5Lm9mX2Zvcm1fZGF0YSlcblxuICBsZXQgYXNzb2NfdG9fZm9ybV91cmxlbmNvZGVkX2JvZHkgYXNzb2MgPVxuICAgIGxldCBzdHJpbmcgPVxuICAgICAgU3RyaW5nLmNvbmNhdCBcIiZcIlxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biAoaywgdikgLT5cbiAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFwiPVwiXG4gICAgICAgICAgICAgICBbIFN0ZHdlYi5lbmNvZGVfdXJpX2NvbXBvbmVudCBrOyBTdGR3ZWIuZW5jb2RlX3VyaV9jb21wb25lbnQgdiBdXG4gICAgICAgICAgIClcbiAgICAgICAgICAgYXNzb2NcbiAgICAgICAgKVxuICAgIGluXG4gICAgRmV0Y2guQm9keS5vZl9zdHJpbmcgc3RyaW5nXG5cbiAgbGV0IGZvcm1fdXJsZW5jb2RlZCA9XG4gICAgKCBTb21lIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04XCIsXG4gICAgICBhc3NvY190b19mb3JtX3VybGVuY29kZWRfYm9keVxuICAgIClcblxuICBsZXQganNvbl90b19ib2R5IGpzb24gPVxuICAgIGxldCB0ZXh0ID0gU3Rkd2ViLkpzb24uc3RyaW5naWZ5IGpzb24gaW5cbiAgICBGZXRjaC5Cb2R5Lm9mX3N0cmluZyB0ZXh0XG5cbiAgbGV0IGpzb24gPSAoU29tZSBcImFwcGxpY2F0aW9uL2pzb25cIiwganNvbl90b19ib2R5KVxuXG4gIGxldCBtYXBfanNvbiBlbmNvZGVfanNvbiA9XG4gICAgKFNvbWUgXCJhcHBsaWNhdGlvbi9qc29uXCIsIGZ1biB4IC0+IGpzb25fdG9fYm9keSAoZW5jb2RlX2pzb24geCkpXG5lbmRcblxubW9kdWxlIERlY29kZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gRmV0Y2guUmVzcG9uc2UudCAtPiAnYSBQcm9taXNlLnRcblxuICBsZXQgaWdub3JlIF9yZXMgPSBQcm9taXNlLnJlc29sdmUgKClcbiAgbGV0IHRleHQgPSBGZXRjaC5SZXNwb25zZS50ZXh0XG4gIGxldCBqc29uID0gRmV0Y2guUmVzcG9uc2UuanNvblxuXG4gIGxldCBtYXAgZiB0IHJlc3BvbnNlID1cbiAgICB0IHJlc3BvbnNlXG4gICAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHggLT5cbiAgICAgICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgICAgfCBPayB4IC0+IFByb21pc2UucmVzb2x2ZSB4XG4gICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IFByb21pc2UucmVqZWN0IGVyclxuICAgICAgIClcblxuICBsZXQgbWFwX2pzb24gZiA9IG1hcCBmIGpzb25cbmVuZFxuXG4oKiBGSVhNRTogcHJldmVudCBzaWduYWwgaGFuZGxlciBlcnJvcnMgZnJvbSBiZWluZyBjYXVnaHQgKilcbmxldCByZXF1ZXN0ID9tZXRoID8oaGVhZGVycyA9IFtdKSA/bW9kZSA/Y3JlZGVudGlhbHNcbiAgICB+ZW5jb2RlOihjb250ZW50X3R5cGUsIHRvX2JvZHkpIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlID1cbiAgbGV0IGhlYWRlcnMgPVxuICAgIG1hdGNoIGNvbnRlbnRfdHlwZSB3aXRoXG4gICAgfCBTb21lIGNvbnRlbnRfdHlwZSAtPiAoXCJDb250ZW50LVR5cGVcIiwgY29udGVudF90eXBlKSA6OiBoZWFkZXJzXG4gICAgfCBOb25lIC0+IGhlYWRlcnNcbiAgaW5cbiAgbGV0IGJvZHkgPSB0b19ib2R5IHJlcXVlc3RfdmFsdWUgaW5cbiAgbGV0IHMgPSBTaWduYWwubWFrZSBOb25lIGluXG4gIEZldGNoLmZldGNoIH5ib2R5ID9tZXRoIH5oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB1cmxcbiAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICBpZiBGZXRjaC5SZXNwb25zZS5vayByZXNwb25zZSB0aGVuXG4gICAgICAgICAgICAgZGVjb2RlIHJlc3BvbnNlXG4gICAgICAgICAgICAgfD4gUHJvbWlzZS5hbmRfdGhlbiAoZnVuIHRleHQgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICB0cnkgU2lnbmFsLmVtaXQgKFNvbWUgKE9rIHRleHQpKSBzXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbC5lbWl0IChTb21lIChFcnJvciAoSGFuZGxpbmdfZXJyb3IgZXhuKSkpIHNcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlICgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgIHw+IFByb21pc2UuY2F0Y2ggKGZ1biBlcnIgLT5cbiAgICAgICAgICAgICAgICAgICAgU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChEZWNvZGluZ19lcnJvciBlcnIpKSkgc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxldCBlcnIgPSBFcnJvciAoVW5zdWNjZXNzZnVsIHJlc3BvbnNlKSBpblxuICAgICAgICAgICAgIFNpZ25hbC5lbWl0IChTb21lIGVycikgc1xuICAgICAgICAgaW5cbiAgICAgICAgIFByb21pc2UucmVzb2x2ZSAoKVxuICAgICApXG4gIHw+IFByb21pc2UuY2F0Y2ggKGZ1biBlcnIgLT4gU2lnbmFsLmVtaXQgKFNvbWUgKEVycm9yIChGZXRjaF9lcnJvciBlcnIpKSkgcyk7XG4gIHNcblxubGV0IGdldCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSB+dXJsICgpID1cbiAgcmVxdWVzdCB+bWV0aDpgR2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOkVuY29kZXIuaWdub3JlIH5kZWNvZGVcbiAgICB+dXJsICgpXG5cbmxldCBwdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsIHJlcXVlc3RfdmFsdWUgPVxuICByZXF1ZXN0IH5tZXRoOmBQdXQgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsXG4gICAgcmVxdWVzdF92YWx1ZVxuXG5sZXQgcG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YFBvc3QgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGUgfmRlY29kZSB+dXJsXG4gICAgcmVxdWVzdF92YWx1ZVxuXG5sZXQgZGVsZXRlID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlIH51cmwgcmVxdWVzdF92YWx1ZSA9XG4gIHJlcXVlc3Qgfm1ldGg6YERlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTpFbmNvZGVyLmlnbm9yZVxuICAgIH5kZWNvZGUgfnVybCByZXF1ZXN0X3ZhbHVlXG5cbm1vZHVsZSBKc29uID0gc3RydWN0XG4gIGxldCByZXF1ZXN0ID9tZXRoID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHJlcXVlc3QgP21ldGggP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5lbmNvZGU6KEVuY29kZXIubWFwX2pzb24gZW5jb2RlKVxuICAgICAgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5cbiAgbGV0IGdldCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZSA9XG4gICAgZ2V0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgcHV0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlIH5kZWNvZGUgPVxuICAgIHB1dCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZTooRW5jb2Rlci5tYXBfanNvbiBlbmNvZGUpXG4gICAgICB+ZGVjb2RlOihEZWNvZGVyLm1hcF9qc29uIGRlY29kZSlcblxuICBsZXQgcG9zdCA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmVuY29kZSB+ZGVjb2RlID1cbiAgICBwb3N0ID9oZWFkZXJzID9tb2RlID9jcmVkZW50aWFscyB+ZW5jb2RlOihFbmNvZGVyLm1hcF9qc29uIGVuY29kZSlcbiAgICAgIH5kZWNvZGU6KERlY29kZXIubWFwX2pzb24gZGVjb2RlKVxuXG4gIGxldCBkZWxldGUgP2hlYWRlcnMgP21vZGUgP2NyZWRlbnRpYWxzIH5kZWNvZGUgPVxuICAgIGRlbGV0ZSA/aGVhZGVycyA/bW9kZSA/Y3JlZGVudGlhbHMgfmRlY29kZTooRGVjb2Rlci5tYXBfanNvbiBkZWNvZGUpXG5lbmRcbiJdLCJuYW1lcyI6WyJydW50aW1lIiwiY2FtbF93cmFwX2V4Y2VwdGlvbiIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwzIiwiYTEiLCJhMiIsImNhbWxfY2FsbDYiLCJhMyIsImE0IiwiYTUiLCJnbG9iYWxfZGF0YSIsIlNpZ25hbCIsIlN0ZHdlYiIsIlN0ZGxpYl9TdHJpbmciLCJTdGRsaWJfTGlzdCIsIkp4IiwiU3RkbGliIiwic3RyaW5nX29mX2Vycm9yIiwicGFyYW0iLCJyZXNwIiwibWFrZSIsImNvbnRlbnRfdHlwZSIsInRvX3VuZGVmaW5lZF9ib2R5IiwidGV4dCIsImZvcm1fZGF0YSIsImFzc29jX3RvX2Zvcm1fdXJsZW5jb2RlZF9ib2R5IiwiYXNzb2MiLCJ2IiwiayIsInN0cmluZyIsImpzb25fdG9fYm9keSIsImpzb24iLCJjc3RfYXBwbGljYXRpb25fanNvbiIsIm1hcF9qc29uIiwiZW5jb2RlX2pzb24iLCJ4IiwiaWdub3JlIiwicmVzIiwibWFwIiwidCIsInJlc3BvbnNlIiwibWF0Y2giLCJlcnIiLCJyZXF1ZXN0IiwibWV0aCIsIm9wdCIsIm1vZGUiLCJjcmVkZW50aWFscyIsImRlY29kZSIsInVybCIsInJlcXVlc3RfdmFsdWUiLCJoZWFkZXJzIiwidG9fYm9keSIsImJvZHkiLCJzIiwiZXhuIiwiZ2V0IiwicHV0IiwiZW5jb2RlIiwicG9zdCIsImRlbGV0ZSQiXSwibWFwcGluZ3MiOiJJQUFBQSxVQUFBO0FBQUEsSUFBQUMsc0JBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUUsSUFBQUM7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBQUFDLFdBQUFMLEdBQUFDLElBQUFFLElBQUFDLElBQUFFLElBQUFDLElBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsY0FB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QUdRO0FBQUEsSUFBeUIsZ0JBQUFDLEtBQUFDO0FBQUFBLEtBcEJ0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsOEJBb0JzRTtBQUFBO0FBQUEsR0RoSnhFIiwiaWdub3JlTGlzdCI6WzBdfX0seyJvZmZzZXQiOnsibGluZSI6NDg0OTksImNvbHVtbiI6MH0sIm1hcCI6eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVsaXguY21hLmpzIiwic291cmNlcyI6WyIvYnVpbHRpbi9ibGFja2JveC5tbCIsIi9Vc2Vycy9zYW1vaHQvZ2l0L2JsYWNrc3VuL21vbm8vX29wYW0vbGliL2hlbGl4L0hpc3RvcnkubWwiXSwic291cmNlc0NvbnRlbnQiOlsiKCogZ2VuZXJhdGVkIGNvZGUgKikiLCJvcGVuIHN0cnVjdFxuICBtb2R1bGUgV2luZG93ID0gU3Rkd2ViLkRvbS5XaW5kb3dcbiAgbW9kdWxlIExvY2F0aW9uID0gU3Rkd2ViLkRvbS5Mb2NhdGlvblxuICBtb2R1bGUgRXZlbnQgPSBTdGR3ZWIuRG9tLkV2ZW50XG5lbmRcblxuKCogVE9ETzogbWFrZSB0aGVzZSBzaWduYWxzIGxhenkuICopXG5cbmxldCBsb2NhdGlvbiA9XG4gIGxldCBzID0gU2lnbmFsLm1ha2UgV2luZG93LmxvY2F0aW9uIGluXG4gIFdpbmRvdy5iaW5kIEV2ZW50LnBvcHN0YXRlIChmdW4gXyAtPiBTaWduYWwuZW1pdCBXaW5kb3cubG9jYXRpb24gcyk7XG4gIHNcblxubGV0IGhhc2ggPVxuICBsZXQgcyA9IFNpZ25hbC5tYWtlIChMb2NhdGlvbi5oYXNoIFdpbmRvdy5sb2NhdGlvbikgaW5cbiAgV2luZG93LmJpbmQgRXZlbnQuaGFzaGNoYW5nZSAoZnVuIF8gLT5cbiAgICAgIGxldCBoYXNoID0gTG9jYXRpb24uaGFzaCBXaW5kb3cubG9jYXRpb24gaW5cbiAgICAgIFNpZ25hbC5lbWl0IGhhc2ggc1xuICApO1xuICBzXG5cbmxldCBoYXNoX3RvX3BhdGggc3RyID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgJy8nIHN0ciB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIFwiXCIgXSAtPiBbXVxuICB8IFwiI1wiIDo6IHRsIC0+IHRsXG4gIHwgXyA6OiBfIC0+IGludmFsaWRfYXJnIHN0clxuXG5sZXQgaGFzaF9wYXRoID0gU2lnbmFsLm1hcCBoYXNoX3RvX3BhdGggaGFzaFxubGV0IGdvIGhyZWYgPSBMb2NhdGlvbi5zZXRfaHJlZiBXaW5kb3cubG9jYXRpb24gaHJlZlxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiY2FtbF9jYWxsMiIsImExIiwiZ2xvYmFsX2RhdGEiLCJTdGR3ZWIiLCJTdGRsaWJfU3RyaW5nIiwiU3RkbGliIiwiU2lnbmFsIiwibG9jYXRpb24iLCJwYXJhbSIsImhhc2giLCJoYXNoX3RvX3BhdGgiLCJzdHIiLCJtYXRjaCIsInRsIiwiaGFzaF9wYXRoIiwiZ28iLCJocmVmIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUFBQyxXQUFBRixHQUFBQyxJQUFBRTtBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGdCQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxXQ1NVO0FBQUEsR0FDUjtBQUFBO0FBQUE7QUFBQSxjQUFBQztBQUFBQSxNQUFxQywwREFBNkI7QUFBQTtBQUFBO0FBQUEsUUFJOUM7QUFBQSxJQUFBQyxPQUFaO0FBQUEsR0FDUjtBQUFBO0FBQUE7QUFBQSxjQUFBRDtBQUFBQSxVQUFBQyxTQUNlO0FBQUEsTUFDWCw0Q0FBa0I7QUFBQTtBQUFBLFlBQUFDLGFBQUFDO0FBQUFBLFFBQUFDLFFBS2hCO0FBQUEsSUFBNEIsWUFDMUI7QUFBQSxRQUFBQSxVQUQwQjtBQUFBO0FBQUEsNkJBQUFDLEtBQUEsVUFHbkI7QUFBQTtBQUFBLHdCQURIO0FBQUEsSUFFQSxnQ0FBZTtBQUFBO0FBQUEsT0FBQUMsWUFFYjtBQUFBLFlBQUFDLEdBQUFDO0FBQUFBLElBQ0YsMkRBQXNDO0FBQUE7QUFBQSxHQURSO0FBQUE7QUFBQTtBQUFBLEVENUI1QyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ4NTU5LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6ImhlbGl4LmNtYS5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9oZWxpeC9IZWxpeC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsInR5cGUgaHRtbCA9IEh0bWwuaHRtbFxudHlwZSBhdHRyID0gSHRtbC5hdHRyXG50eXBlICdhIHNpZ25hbCA9ICdhIFNpZ25hbC50XG5cbmxldCBzaWduYWwgPSBTaWduYWwubWFrZVxuXG5tb2R1bGUgSHRtbCA9IEh0bWxcbm1vZHVsZSBUaW1lID0gVGltZVxubW9kdWxlIE1vdXNlID0gTW91c2Vcbm1vZHVsZSBIaXN0b3J5ID0gSGlzdG9yeVxubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgUm91dGVyID0gUm91dGVyXG5pbmNsdWRlIFZpZXdcblxubGV0IGVuYWJsZV9kZWJ1ZyA9IFZpZXcuZW5hYmxlX2RlYnVnXG5sZXQgKCBsZXQkICkgcyBmID0gc2hvdyBmIHNcbmxldCAoIGFuZCQgKSA9IFNpZ25hbC5wYWlyXG5sZXQgKCBsZXRAICkgcyBmID0gYmluZCBmIHNcbmxldCAoIGFuZEAgKSA9IFNpZ25hbC5wYWlyXG4iXSwibmFtZXMiOlsicnVudGltZSIsImdsb2JhbF9kYXRhIiwiU2lnbmFsIiwiSGVsaXhfVmlldyIsIkhlbGl4X1JvdXRlciIsIkhlbGl4X0hpc3RvcnkiLCJIZWxpeF9IdHRwIiwiSGVsaXhfVGltZSIsIkhlbGl4X01vdXNlIiwic2lnbmFsIiwic2hvdyIsInNob3dfc29tZSIsInNob3dfb2siLCJjb25kaXRpb25hbCIsImVhY2giLCJiaW5kIiwiYmluZF9zb21lIiwiYmluZF9vayIsInRvZ2dsZSIsInZpc2libGUiLCJlbmFibGVfZGVidWciLCJsZXQkIiwicyIsImYiLCJhbmQiLCJIZWxpeCJdLCJtYXBwaW5ncyI6IklBQUFBLFVBQUE7QUFBQSxJQUFBQyxjQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLGFBQUE7QUFBQSxJQUFBQyxlQUFBO0FBQUEsSUFBQUMsZ0JBQUE7QUFBQSxJQUFBQyxhQUFBO0FBQUEsSUFBQUMsYUFBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsT0FBQTtBQUFBLElBQUFDLFlBQUE7QUFBQSxJQUFBQyxVQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLE9BQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsWUFBQTtBQUFBLElBQUFDLFVBQUE7QUFBQSxJQUFBQyxTQUFBO0FBQUEsSUFBQUMsVUFBQTtBQUFBLElBQUFDLGVBQUE7QUFBQSxZQUFBQyxLQUFBQyxHQUFBQyxHQ2VtQixvQkFBUTtBQUFBLE9BQUFDLE1EZjNCO0FBQUEsWUFBQUgsTUFBQUMsR0FBQUMsR0NpQm1CLGdEQUFRO0FBQUE7QUFBQSxJQUFBQyxRRGpCM0I7QUFBQTtBQUFBO0FBQUEsSUFBQUM7QUFBQUEsTUFBQSIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ4NjQ2LCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6Ii5tYWluLmVvYmpzL2pzb28vZHVuZV9fZXhlX19NYWluLmNtby5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvd29ya3NwYWNlX3Jvb3Qvb2NhbWwtZ2xvYmUvZGVtby9tYWluLm1sIl0sInNvdXJjZXNDb250ZW50IjpbIigqIGdlbmVyYXRlZCBjb2RlICopIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENvcHlyaWdodCAoYykgMjAyNSBUaG9tYXMgR2F6YWduYWlyZS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuKCoqIG9jYW1sLWdsb2JlIGRlbW8g4oCUIGludGVyYWN0aXZlIHNob3djYXNlIG9mIGFsbCByZW5kZXJpbmcgc3R5bGVzLiAqKVxuXG5vcGVuIEJyclxub3BlbiBIZWxpeFxub3BlbiBIdG1sXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuKCogIFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbmxldCBzaG93X2RvdHMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19ncmlkID0gU2lnbmFsLm1ha2UgZmFsc2VcbmxldCBzaG93X3N0YXJzID0gU2lnbmFsLm1ha2UgdHJ1ZVxubGV0IHNob3dfY292ZXJhZ2UgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgc2hvd19vcmJpdHMgPSBTaWduYWwubWFrZSB0cnVlXG5sZXQgZ3JpZF9zcGFjaW5nID0gU2lnbmFsLm1ha2UgMzAuXG5sZXQgbnVtX3NhdHMgPSBTaWduYWwubWFrZSA1LlxuXG4oKiogQ3JlYXRlIHN5bnRoZXRpYyBzYXRlbGxpdGVzIGF0IHZhcmlvdXMgaW5jbGluYXRpb25zLiAqKVxubGV0IHNhdGVsbGl0ZXNfb2YgbiA9XG4gIGxldCBjb2xvcnMgPSBHbG9iZS5Db2xvci5wYWxldHRlIG4gaW5cbiAgTGlzdC5tYXBpXG4gICAgKGZ1biBpIGNvbG9yIC0+XG4gICAgICBsZXQgZmkgPSBGbG9hdC5vZl9pbnQgaSBpblxuICAgICAgbGV0IGluY2wgPSAwLjMgKy4gKGZpICouIDAuMjUpIGluXG4gICAgICBsZXQgciA9IDY3NzguIGluXG4gICAgICAoKiBrbSwgSVNTLWxpa2UgYWx0aXR1ZGUgKilcbiAgICAgIGxldCB2ID0gNy42NjkgaW5cbiAgICAgICgqIGttL3MsIGNpcmN1bGFyIHZlbG9jaXR5ICopXG4gICAgICBsZXQgcG9zID0gS2VwbGVyLlZlYzMudiByIDAuIDAuIGluXG4gICAgICBsZXQgdmVsID0gS2VwbGVyLlZlYzMudiAwLiAodiAqLiBjb3MgaW5jbCkgKHYgKi4gc2luIGluY2wpIGluXG4gICAgICBHbG9iZS5TYXRlbGxpdGUudiB+cG9zIH52ZWwgfmNvbG9yICgpKVxuICAgIGNvbG9yc1xuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcbigqICBVSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG5sZXQgdG9nZ2xlIGxhYmVsIHNpZ25hbCA9XG4gIHNob3dcbiAgICAoZnVuIGFjdGl2ZSAtPlxuICAgICAgYnV0dG9uXG4gICAgICAgIFtcbiAgICAgICAgICBjbGFzc19uYW1lXG4gICAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICAgIFwicHgtMyBweS0xLjUgdGV4dC14cyByb3VuZGVkIGJnLWN5YW4tNTAwLzMwIGJvcmRlciBcXFxuICAgICAgICAgICAgICAgIGJvcmRlci1jeWFuLTUwMC82MCB0ZXh0LWN5YW4tMzAwIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcInB4LTMgcHktMS41IHRleHQteHMgcm91bmRlZCBiZy1ncmF5LTgwMC81MCBib3JkZXIgXFxcbiAgICAgICAgICAgICAgICBib3JkZXItZ3JheS03MDAgdGV4dC1ncmF5LTUwMCBjdXJzb3ItcG9pbnRlciBcXFxuICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtZ3JheS0zMDAgaG92ZXI6Ym9yZGVyLWdyYXktNTAwXCIpO1xuICAgICAgICAgIG9uX2NsaWNrIChmdW4gKCkgLT4gU2lnbmFsLnVwZGF0ZSBub3Qgc2lnbmFsKTtcbiAgICAgICAgXVxuICAgICAgICBbIHRleHQgbGFiZWwgXSlcbiAgICBzaWduYWxcblxubGV0IHNsaWRlciBsYWJlbCBzaWduYWwgfm1pbiB+bWF4IH5zdGVwID1cbiAgZGl2XG4gICAgWyBjbGFzc19uYW1lIFwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIiBdXG4gICAgW1xuICAgICAgc3BhbiBbIGNsYXNzX25hbWUgXCJ0ZXh0LWdyYXktNTAwIHRleHQtWzEwcHhdIHctMTZcIiBdIFsgdGV4dCBsYWJlbCBdO1xuICAgICAgaW5wdXRcbiAgICAgICAgW1xuICAgICAgICAgIGF0dHIgXCJ0eXBlXCIgXCJyYW5nZVwiO1xuICAgICAgICAgIGF0dHIgXCJtaW5cIiAoRm10LnN0ciBcIiUuMGZcIiBtaW4pO1xuICAgICAgICAgIGF0dHIgXCJtYXhcIiAoRm10LnN0ciBcIiUuMGZcIiBtYXgpO1xuICAgICAgICAgIGF0dHIgXCJzdGVwXCIgKEZtdC5zdHIgXCIlLjBmXCIgc3RlcCk7XG4gICAgICAgICAgYXR0ciBcInZhbHVlXCIgKEZtdC5zdHIgXCIlLjBmXCIgKFNpZ25hbC5nZXQgc2lnbmFsKSk7XG4gICAgICAgICAgY2xhc3NfbmFtZVxuICAgICAgICAgICAgXCJmbGV4LTEgaC0xIGFwcGVhcmFuY2Utbm9uZSBiZy1ncmF5LTcwMCByb3VuZGVkIGN1cnNvci1wb2ludGVyIFxcXG4gICAgICAgICAgICAgYWNjZW50LWN5YW4tNDAwXCI7XG4gICAgICAgICAgb25faW5wdXQgKGZ1biB2IC0+XG4gICAgICAgICAgICAgIG1hdGNoIEZsb2F0Lm9mX3N0cmluZ19vcHQgdiB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBmIC0+IFNpZ25hbC5lbWl0IGYgc2lnbmFsXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIF07XG4gICAgICBzaG93XG4gICAgICAgIChmdW4gdiAtPlxuICAgICAgICAgIHNwYW5cbiAgICAgICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtY3lhbi00MDAgdGV4dC1bMTBweF0gdy04IHRleHQtcmlnaHRcIiBdXG4gICAgICAgICAgICBbIHRleHQgKEZtdC5zdHIgXCIlLjBmXCIgdikgXSlcbiAgICAgICAgc2lnbmFsO1xuICAgIF1cblxubGV0IHVpICgpID1cbiAgZGl2XG4gICAgW1xuICAgICAgY2xhc3NfbmFtZVxuICAgICAgICBcInBvaW50ZXItZXZlbnRzLWF1dG8gZml4ZWQgdG9wLTUgbGVmdC01IGJnLWJsYWNrLzgwIGJvcmRlciBcXFxuICAgICAgICAgYm9yZGVyLWN5YW4tNTAwLzIwIHJvdW5kZWQtbGcgYmFja2Ryb3AtYmx1ci1tZCBwLTQgdy02NCBzcGFjZS15LTNcIjtcbiAgICBdXG4gICAgW1xuICAgICAgZGl2XG4gICAgICAgIFsgY2xhc3NfbmFtZSBcInRleHQtY3lhbi00MDAgdGV4dC1sZyBmb250LWJvbGQgdHJhY2tpbmctWzNweF1cIiBdXG4gICAgICAgIFsgdGV4dCBcIkdMT0JFXCIgXTtcbiAgICAgIGRpdlxuICAgICAgICBbIGNsYXNzX25hbWUgXCJ0ZXh0LWdyYXktNjAwIHRleHQtWzEwcHhdIHRyYWNraW5nLXdpZGVzdCBtYi0zXCIgXVxuICAgICAgICBbIHRleHQgXCJSRU5ERVJJTkcgREVNT1wiIF07XG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwidGV4dC1ncmF5LTUwMCB0ZXh0LVsxMHB4XSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIiBdXG4gICAgICAgIFsgdGV4dCBcIkxheWVyc1wiIF07XG4gICAgICBkaXZcbiAgICAgICAgWyBjbGFzc19uYW1lIFwiZmxleCBmbGV4LXdyYXAgZ2FwLTEuNSBtdC0xXCIgXVxuICAgICAgICBbXG4gICAgICAgICAgdG9nZ2xlIFwiRG90c1wiIHNob3dfZG90cztcbiAgICAgICAgICB0b2dnbGUgXCJHcmlkXCIgc2hvd19ncmlkO1xuICAgICAgICAgIHRvZ2dsZSBcIlN0YXJzXCIgc2hvd19zdGFycztcbiAgICAgICAgICB0b2dnbGUgXCJDb3ZlcmFnZVwiIHNob3dfY292ZXJhZ2U7XG4gICAgICAgICAgdG9nZ2xlIFwiT3JiaXRzXCIgc2hvd19vcmJpdHM7XG4gICAgICAgIF07XG4gICAgICBkaXZcbiAgICAgICAgW1xuICAgICAgICAgIGNsYXNzX25hbWVcbiAgICAgICAgICAgIFwidGV4dC1ncmF5LTUwMCB0ZXh0LVsxMHB4XSB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbXQtMyBwdC0zIFxcXG4gICAgICAgICAgICAgYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwXCI7XG4gICAgICAgIF1cbiAgICAgICAgWyB0ZXh0IFwiUGFyYW1ldGVyc1wiIF07XG4gICAgICBzbGlkZXIgXCJHcmlkXCIgZ3JpZF9zcGFjaW5nIH5taW46MTAuIH5tYXg6OTAuIH5zdGVwOjEwLjtcbiAgICAgIHNsaWRlciBcIlNhdHNcIiBudW1fc2F0cyB+bWluOjEuIH5tYXg6MjAuIH5zdGVwOjEuO1xuICAgIF1cblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG4oKiAgRW50cnkgcG9pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxubGV0ICgpID1cbiAgbGV0IGRvYyA9IERvY3VtZW50Lm9mX2p2IChKdi5nZXQgSnYuZ2xvYmFsIFwiZG9jdW1lbnRcIikgaW5cbiAgbGV0IGNhbnZhc19lbCA9XG4gICAgbWF0Y2ggRG9jdW1lbnQuZmluZF9lbF9ieV9pZCBkb2MgKEpzdHIub2Zfc3RyaW5nIFwiZ2wtY2FudmFzXCIpIHdpdGhcbiAgICB8IFNvbWUgZWwgLT4gZWxcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJDYW52YXMgbm90IGZvdW5kXCJcbiAgaW5cbiAgbGV0IHNjZW5lID0gR2xvYmVfd2ViZ2wuU2NlbmUudiBjYW52YXNfZWwgaW5cbiAgKG1hdGNoIFN0ZHdlYi5Eb20uRG9jdW1lbnQuZ2V0X2VsZW1lbnRfYnlfaWQgXCJ1aVwiIHdpdGhcbiAgfCBTb21lIGVsIC0+IEh0bWwubW91bnQgZWwgKHVpICgpKVxuICB8IE5vbmUgLT4gKCkpO1xuICBsZXQgcHJldl9zcGFjaW5nID0gcmVmIDMwLiBpblxuICBsZXQgcHJldl9uID0gcmVmIDAgaW5cbiAgbGV0IHJlYyByZW5kZXIgbm93ID1cbiAgICBsZXQgdGltZSA9IG5vdyAvLiAyMDAwLiBpblxuICAgIGxldCBzcCA9IFNpZ25hbC5nZXQgZ3JpZF9zcGFjaW5nIGluXG4gICAgaWYgc3AgPD4gIXByZXZfc3BhY2luZyB0aGVuIGJlZ2luXG4gICAgICBHbG9iZV93ZWJnbC5TY2VuZS5zZXRfZ3JpZF9zcGFjaW5nIHNjZW5lIHNwO1xuICAgICAgcHJldl9zcGFjaW5nIDo9IHNwXG4gICAgZW5kO1xuICAgIGxldCBuID0gRmxvYXQudG9faW50IChTaWduYWwuZ2V0IG51bV9zYXRzKSBpblxuICAgIGlmIG4gPD4gIXByZXZfbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgc2F0cyA9IHNhdGVsbGl0ZXNfb2YgbiBpblxuICAgICAgR2xvYmVfd2ViZ2wuU2NlbmUuc2V0X3NhdGVsbGl0ZXMgc2NlbmUgc2F0cztcbiAgICAgIHByZXZfbiA6PSBuXG4gICAgZW5kO1xuICAgICgqIEFkdmFuY2Ugc2ltdWxhdGlvbiB0aW1lICopXG4gICAgR2xvYmVfd2ViZ2wuU2NlbmUudXBkYXRlX3RpbWUgc2NlbmUgKHRpbWUgKi4gNjAuKTtcbiAgICBsZXQgaGFzX2NvdiA9IFNpZ25hbC5nZXQgc2hvd19jb3ZlcmFnZSAmJiBTaWduYWwuZ2V0IHNob3dfb3JiaXRzIGluXG4gICAgbGV0IGZyYW1lID0gR2xvYmVfd2ViZ2wuU2NlbmUuYmVnaW5fZnJhbWUgc2NlbmUgMC4wMTYgaW5cbiAgICBHbG9iZV93ZWJnbC5TY2VuZS5kcmF3IHNjZW5lIGZyYW1lXG4gICAgICB7XG4gICAgICAgIEdsb2JlX3dlYmdsLlNjZW5lLmRlZmF1bHRfbGF5ZXJzIHdpdGhcbiAgICAgICAgc2hvd19zdGFycyA9IFNpZ25hbC5nZXQgc2hvd19zdGFycztcbiAgICAgICAgc2hvd19lYXJ0aCA9IFNpZ25hbC5nZXQgc2hvd19kb3RzO1xuICAgICAgICBzaG93X2dyaWQgPSBTaWduYWwuZ2V0IHNob3dfZ3JpZDtcbiAgICAgICAgc2hvd19vcmJpdHMgPSBTaWduYWwuZ2V0IHNob3dfb3JiaXRzO1xuICAgICAgICBzaG93X2NvdmVyYWdlID0gU2lnbmFsLmdldCBzaG93X2NvdmVyYWdlO1xuICAgICAgICBlYXJ0aF9kaW0gPSAoaWYgaGFzX2NvdiB0aGVuIDAuMiBlbHNlIDEuMCk7XG4gICAgICB9O1xuICAgIGlnbm9yZSAoRy5yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSByZW5kZXIpXG4gIGluXG4gIGlnbm9yZSAoRy5yZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSByZW5kZXIpXG4iXSwibmFtZXMiOlsicnVudGltZSIsImNhbWxfY2FsbDEiLCJmIiwiYTAiLCJjYW1sX2NhbGwyIiwiYTEiLCJnbG9iYWxfZGF0YSIsIlNpZ25hbCIsIkdsb2JlX3dlYmdsX1NjZW5lIiwiQnJyIiwiSHRtbCIsIlN0ZGxpYl9GbG9hdCIsIkZtdCIsIkhlbGl4IiwiS2VwbGVyX1ZlYzMiLCJHbG9iZV9TYXRlbGxpdGUiLCJHbG9iZV9Db2xvciIsIlN0ZGxpYl9MaXN0IiwiSnYiLCJTdGRsaWIiLCJTdGR3ZWIiLCJzaG93X2RvdHMiLCJzaG93X2dyaWQiLCJzaG93X3N0YXJzIiwic2hvd19jb3ZlcmFnZSIsInNob3dfb3JiaXRzIiwiZ3JpZF9zcGFjaW5nIiwibnVtX3NhdHMiLCJ0b2dnbGUiLCJsYWJlbCIsInNpZ25hbCIsImFjdGl2ZSIsInBhcmFtIiwiY3N0XzBmIiwic2xpZGVyIiwibWluIiwibWF4Iiwic3RlcCIsInYiLCJtYXRjaCIsImRvYyIsImVsIiwiY2FudmFzX2VsIiwic2NlbmUiLCJjc3RfR3JpZCIsInByZXZfc3BhY2luZyIsInByZXZfbiIsInJlbmRlciIsIm5vdyIsInRpbWUiLCJzcCIsIm4iLCJjb2xvcnMiLCJzYXRzIiwiaSIsImNvbG9yIiwiZmkiLCJpbmNsIiwicG9zIiwidmVsIiwiaGFzX2NvdiIsImZyYW1lIiwiaW5pdCJdLCJtYXBwaW5ncyI6Ik9BQUFBLFVBQUE7QUFBQSxZQUFBQyxXQUFBQyxHQUFBQztBQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFBQUMsV0FBQUYsR0FBQUMsSUFBQUU7QUFBQUEsSUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxvQkFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxPQUFBO0FBQUEsSUFBQUMsZUFBQTtBQUFBLElBQUFDLE1BQUE7QUFBQSxJQUFBQyxRQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGtCQUFBO0FBQUEsSUFBQUMsY0FBQTtBQUFBLElBQUFDLGNBQUE7QUFBQSxJQUFBQyxLQUFBO0FBQUEsSUFBQUMsU0FBQTtBQUFBLElBQUFDLFNBQUE7QUFBQSxJQUFBQyxZQ2VnQjtBQUFBLElBQUFDLFlBQ0E7QUFBQSxJQUFBQyxhQUNDO0FBQUEsSUFBQUMsZ0JBQ0c7QUFBQSxJQUFBQyxjQUNGO0FBQUEsSUFBQUMsZUFDQztB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QUFBQSxRQUNiO0FBQUE7QUFBQSxtQkFBQUMsR0FBQUM7QUFBQUE7QUFBQUEsWUFBQUMsS0FFYTtBQUFBLFlBQUFDLE9BQ0U7QUFBQSxZQUFBQyxNQUtEO0FBQUEsWUFBQUM7QUFBQUEsY0FDQTtBQUFBLGtDQUF1Qix3QkFBZ0I7QUFBQSxXQUNqRCw4REFBcUM7QUFBQTtBQUFBO0FBQUEsS0FxSHJDO0FBQUEsS0FBMkM7QUFBQTtBQUFBLElBSTdDO0FBQUE7QUFBQSxTQUNjO0FBQUEsS0FBQUMsVUFBd0IsSUFBSTtBQUFBLEtBQUFDLFFBQzlCO0FBQUEsS0FBQUMsT0FBeUM7QUFBQSxTQUNyRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FPb0I7QUFBQSxTQURGO0FBQUEsU0FERjtBQUFBLFNBREM7QUFBQSxTQURBO0FBQUEsSUFIakI7QUFBQSxJQVVPO0FBQUEsSUFBa0M7QUFBQTtBQUFBLEdBRXBDO0FBQUEsR0FBa0M7QUFBQTtBQUFBLEVENUszQyIsImlnbm9yZUxpc3QiOlswXX19LHsib2Zmc2V0Ijp7ImxpbmUiOjQ4OTIwLCJjb2x1bW4iOjB9LCJtYXAiOnsidmVyc2lvbiI6MywiZmlsZSI6InN0ZF9leGl0LmNtby5qcyIsInNvdXJjZXMiOlsiL2J1aWx0aW4vYmxhY2tib3gubWwiLCIvVXNlcnMvc2Ftb2h0L2dpdC9ibGFja3N1bi9tb25vL19vcGFtL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJzb3VyY2VzQ29udGVudCI6WyIoKiBnZW5lcmF0ZWQgY29kZSAqKSIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl0sIm5hbWVzIjpbInJ1bnRpbWUiLCJjYW1sX2NhbGwxIiwiZiIsImEwIiwiU3RkbGliIl0sIm1hcHBpbmdzIjoiT0FBQUEsVUFBQTtBQUFBLFlBQUFDLFdBQUFDLEdBQUFDO0FBQUFBLElBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPQUFBQyxTQUFBO0FBQUEsR0NpQlE7QUFBQSxHQUFZO0FBQUE7QUFBQSxFRGpCcEIiLCJpZ25vcmVMaXN0IjpbMF19fV19
+92
lib/heatmap.ml
··· 1 + (*--------------------------------------------------------------------------- 2 + Copyright (c) 2025 Thomas Gazagnaire. All rights reserved. 3 + SPDX-License-Identifier: ISC 4 + ---------------------------------------------------------------------------*) 5 + 6 + (** Orbital density heatmap computation. 7 + 8 + Bins satellite positions into a lat/lon grid on the unit sphere and computes 9 + density per cell. Pure math, no WebGL. *) 10 + 11 + type cell = { 12 + lat : float; (** Center latitude (degrees). *) 13 + lon : float; (** Center longitude (degrees). *) 14 + count : int; (** Number of satellites in this cell. *) 15 + density : float; (** Normalized density [0, 1]. *) 16 + } 17 + 18 + type t = { cells : cell array; lat_bins : int; lon_bins : int; max_count : int } 19 + 20 + (** Convert a GL position (Y=up) to lat/lon in degrees. *) 21 + let gl_to_latlon (pos : Math.Vec3.t) = 22 + let r = Math.Vec3.length pos in 23 + if r < 1e-6 then (0., 0.) 24 + else 25 + let lat = asin (pos.y /. r) *. 180. /. Float.pi in 26 + let lon = atan2 pos.z pos.x *. 180. /. Float.pi in 27 + (lat, lon) 28 + 29 + (** Compute density heatmap from satellite GL positions. 30 + 31 + [lat_step] and [lon_step] are cell sizes in degrees. *) 32 + let compute ?(lat_step = 10.) ?(lon_step = 10.) positions = 33 + let lat_bins = Float.to_int (180. /. lat_step) in 34 + let lon_bins = Float.to_int (360. /. lon_step) in 35 + let grid = Array.make (lat_bins * lon_bins) 0 in 36 + (* Bin each position *) 37 + List.iter 38 + (fun pos -> 39 + let lat, lon = gl_to_latlon pos in 40 + let lat_idx = 41 + Float.to_int ((lat +. 90.) /. lat_step) |> min (lat_bins - 1) |> max 0 42 + in 43 + let lon_idx = 44 + Float.to_int ((lon +. 180.) /. lon_step) |> min (lon_bins - 1) |> max 0 45 + in 46 + let idx = (lat_idx * lon_bins) + lon_idx in 47 + grid.(idx) <- grid.(idx) + 1) 48 + positions; 49 + let max_count = Array.fold_left (fun acc c -> max acc c) 0 grid in 50 + let max_f = Float.of_int (max 1 max_count) in 51 + let cells = 52 + Array.init (lat_bins * lon_bins) (fun idx -> 53 + let lat_idx = idx / lon_bins in 54 + let lon_idx = idx mod lon_bins in 55 + let lat = 56 + -90. +. (Float.of_int lat_idx *. lat_step) +. (lat_step /. 2.) 57 + in 58 + let lon = 59 + -180. +. (Float.of_int lon_idx *. lon_step) +. (lon_step /. 2.) 60 + in 61 + let count = grid.(idx) in 62 + { lat; lon; count; density = Float.of_int count /. max_f }) 63 + in 64 + { cells; lat_bins; lon_bins; max_count } 65 + 66 + (** Get only non-empty cells. *) 67 + let active_cells t = Array.to_list t.cells |> List.filter (fun c -> c.count > 0) 68 + 69 + (** Map density [0, 1] to a heat color (blue → green → yellow → red). *) 70 + let density_color density = 71 + if density < 0.25 then 72 + let t = density /. 0.25 in 73 + (0., t, 1. -. (t *. 0.5)) 74 + else if density < 0.5 then 75 + let t = (density -. 0.25) /. 0.25 in 76 + (t *. 0.5, 1., 0.5 -. (t *. 0.5)) 77 + else if density < 0.75 then 78 + let t = (density -. 0.5) /. 0.25 in 79 + (0.5 +. (t *. 0.5), 1. -. (t *. 0.3), 0.) 80 + else 81 + let t = (density -. 0.75) /. 0.25 in 82 + (1., 0.7 -. (t *. 0.5), 0.) 83 + 84 + (** Convert cell center (lat, lon degrees) to GL position on unit sphere. *) 85 + let cell_to_gl (cell : cell) = 86 + let lat_rad = cell.lat *. Float.pi /. 180. in 87 + let lon_rad = cell.lon *. Float.pi /. 180. in 88 + let r = 1.004 in 89 + Math.Vec3.create 90 + (r *. cos lat_rad *. cos lon_rad) 91 + (r *. sin lat_rad) 92 + (r *. cos lat_rad *. sin lon_rad)
+28
lib/heatmap.mli
··· 1 + (** Orbital density heatmap computation. 2 + 3 + Bins satellite positions into a lat/lon grid and computes normalized density 4 + per cell. Pure math, no WebGL. *) 5 + 6 + type cell = { lat : float; lon : float; count : int; density : float } 7 + (** A grid cell with center position, satellite count, and normalized density 8 + [0, 1]. *) 9 + 10 + type t 11 + (** A computed heatmap grid. *) 12 + 13 + val compute : ?lat_step:float -> ?lon_step:float -> Math.Vec3.t list -> t 14 + (** [compute ?lat_step ?lon_step positions] bins GL positions into a lat/lon 15 + grid. Default cell size is 10°×10°. *) 16 + 17 + val active_cells : t -> cell list 18 + (** [active_cells t] returns only cells with count > 0. *) 19 + 20 + val density_color : float -> float * float * float 21 + (** [density_color d] maps density [0, 1] to a heat color (blue → green → yellow 22 + → red). *) 23 + 24 + val cell_to_gl : cell -> Math.Vec3.t 25 + (** [cell_to_gl cell] is the GL position of the cell center. *) 26 + 27 + val gl_to_latlon : Math.Vec3.t -> float * float 28 + (** [gl_to_latlon pos] converts GL position to (lat, lon) degrees. *)
+6
lib/webgl/camera.ml
··· 139 139 140 140 let pp ppf cam = 141 141 Fmt.pf ppf "theta=%.3f phi=%.3f dist=%.2f" cam.theta cam.phi cam.distance 142 + 143 + let position cam = 144 + Globe.Math.Vec3.create 145 + (cam.distance *. cos cam.phi *. sin cam.theta) 146 + (cam.distance *. sin cam.phi) 147 + (cam.distance *. cos cam.phi *. cos cam.theta)
+3
lib/webgl/camera.mli
··· 34 34 (** [snap_to cam pos] immediately sets the camera to face [pos] (no animation). 35 35 *) 36 36 37 + val position : t -> Globe.Math.Vec3.t 38 + (** [position cam] is the camera's current eye position in GL coordinates. *) 39 + 37 40 val is_animating : t -> bool 38 41 (** [is_animating cam] is [true] if the camera is mid-tween. *) 39 42
+145
lib/webgl/density.ml
··· 1 + (*--------------------------------------------------------------------------- 2 + Copyright (c) 2025 Thomas Gazagnaire. All rights reserved. 3 + SPDX-License-Identifier: ISC 4 + ---------------------------------------------------------------------------*) 5 + 6 + (** Orbital density heatmap renderer. 7 + 8 + Renders filled cells on the globe with additive blending. Color maps from 9 + blue (sparse) to red (dense). *) 10 + 11 + open Brr 12 + open Brr_canvas 13 + 14 + let vert = 15 + {|#version 300 es 16 + precision highp float; 17 + layout(location = 0) in vec3 a_position; 18 + layout(location = 1) in vec3 a_color; 19 + uniform mat4 u_projection; 20 + uniform mat4 u_view; 21 + out vec3 v_color; 22 + void main() { 23 + gl_Position = u_projection * u_view * vec4(a_position, 1.0); 24 + v_color = a_color; 25 + } 26 + |} 27 + 28 + let frag = 29 + {|#version 300 es 30 + precision highp float; 31 + in vec3 v_color; 32 + uniform float u_alpha; 33 + out vec4 fragColor; 34 + void main() { 35 + fragColor = vec4(v_color, u_alpha); 36 + } 37 + |} 38 + 39 + type t = { 40 + prog : Gl.program; 41 + vao : Gl.vertex_array_object; 42 + vbo : Gl.buffer; 43 + mutable num_vertices : int; 44 + u_proj : Gl.uniform_location; 45 + u_view : Gl.uniform_location; 46 + u_alpha : Gl.uniform_location; 47 + } 48 + 49 + let v gl = 50 + let prog = Shader.program gl ~vert ~frag in 51 + let vao = Gl.create_vertex_array gl in 52 + let vbo = Gl.create_buffer gl in 53 + Gl.bind_vertex_array gl (Some vao); 54 + Gl.bind_buffer gl Gl.array_buffer (Some vbo); 55 + (* position (3) + color (3) = 6 floats, stride 24 *) 56 + Gl.enable_vertex_attrib_array gl 0; 57 + Gl.vertex_attrib_pointer gl 0 3 Gl.float false 24 0; 58 + Gl.enable_vertex_attrib_array gl 1; 59 + Gl.vertex_attrib_pointer gl 1 3 Gl.float false 24 12; 60 + Gl.bind_vertex_array gl None; 61 + let u name = Gl.get_uniform_location gl prog (Jstr.of_string name) in 62 + { 63 + prog; 64 + vao; 65 + vbo; 66 + num_vertices = 0; 67 + u_proj = u "u_projection"; 68 + u_view = u "u_view"; 69 + u_alpha = u "u_alpha"; 70 + } 71 + 72 + (** Build a quad (2 triangles) for a lat/lon cell on the unit sphere. *) 73 + let cell_quad lat_step lon_step (cell : Globe.Heatmap.cell) color = 74 + let pi = Float.pi in 75 + let d2r d = d *. pi /. 180. in 76 + let r = 1.004 in 77 + let lat0 = d2r ((cell : Globe.Heatmap.cell).lat -. (lat_step /. 2.)) in 78 + let lat1 = d2r ((cell : Globe.Heatmap.cell).lat +. (lat_step /. 2.)) in 79 + let lon0 = d2r (cell.lon -. (lon_step /. 2.)) in 80 + let lon1 = d2r (cell.lon +. (lon_step /. 2.)) in 81 + let pt la lo = 82 + Globe.Math.Vec3.create 83 + (r *. cos la *. cos lo) 84 + (r *. sin la) 85 + (r *. cos la *. sin lo) 86 + in 87 + let p00 = pt lat0 lon0 and p10 = pt lat1 lon0 in 88 + let p01 = pt lat0 lon1 and p11 = pt lat1 lon1 in 89 + (* Two triangles: p00-p10-p01, p10-p11-p01 *) 90 + [ 91 + (p00, color); 92 + (p10, color); 93 + (p01, color); 94 + (p10, color); 95 + (p11, color); 96 + (p01, color); 97 + ] 98 + 99 + let load gl t (heatmap : Globe.Heatmap.t) ~lat_step ~lon_step = 100 + let cells = Globe.Heatmap.active_cells heatmap in 101 + if cells = [] then t.num_vertices <- 0 102 + else begin 103 + let all_verts = 104 + List.concat_map 105 + (fun cell -> 106 + let color = 107 + Globe.Heatmap.density_color (cell : Globe.Heatmap.cell).density 108 + in 109 + cell_quad lat_step lon_step cell color) 110 + cells 111 + in 112 + let n = List.length all_verts in 113 + let data = Array.make (n * 6) 0. in 114 + List.iteri 115 + (fun i ((v : Globe.Math.Vec3.t), (r, g, b)) -> 116 + let off = i * 6 in 117 + data.(off) <- v.x; 118 + data.(off + 1) <- v.y; 119 + data.(off + 2) <- v.z; 120 + data.(off + 3) <- r; 121 + data.(off + 4) <- g; 122 + data.(off + 5) <- b) 123 + all_verts; 124 + let buf = Tarray.of_float_array Tarray.Float32 data in 125 + Gl.bind_buffer gl Gl.array_buffer (Some t.vbo); 126 + Gl.buffer_data gl Gl.array_buffer buf Gl.dynamic_draw; 127 + t.num_vertices <- n 128 + end 129 + 130 + let draw gl t ~projection ~view ?(alpha = 0.35) () = 131 + if t.num_vertices > 0 then begin 132 + Gl.blend_func gl Gl.src_alpha Gl.one; 133 + Gl.disable gl Gl.depth_test; 134 + Gl.use_program gl t.prog; 135 + Gl.uniform_matrix4fv gl t.u_proj false 136 + (Tarray.of_float_array Tarray.Float32 projection); 137 + Gl.uniform_matrix4fv gl t.u_view false 138 + (Tarray.of_float_array Tarray.Float32 view); 139 + Gl.uniform1f gl t.u_alpha alpha; 140 + Gl.bind_vertex_array gl (Some t.vao); 141 + Gl.draw_arrays gl Gl.triangles 0 t.num_vertices; 142 + Gl.bind_vertex_array gl None; 143 + Gl.enable gl Gl.depth_test; 144 + Gl.blend_func gl Gl.src_alpha Gl.one_minus_src_alpha 145 + end
+30
lib/webgl/density.mli
··· 1 + (** Orbital density heatmap renderer. 2 + 3 + Renders filled lat/lon cells with additive blending. Blue (sparse) → green → 4 + yellow → red (dense). *) 5 + 6 + type t 7 + (** Opaque density renderer state. *) 8 + 9 + val v : Brr_canvas.Gl.t -> t 10 + (** [v gl] creates a density renderer. *) 11 + 12 + val load : 13 + Brr_canvas.Gl.t -> 14 + t -> 15 + Globe.Heatmap.t -> 16 + lat_step:float -> 17 + lon_step:float -> 18 + unit 19 + (** [load gl t heatmap ~lat_step ~lon_step] uploads heatmap cells. *) 20 + 21 + val draw : 22 + Brr_canvas.Gl.t -> 23 + t -> 24 + projection:float array -> 25 + view:float array -> 26 + ?alpha:float -> 27 + unit -> 28 + unit 29 + (** [draw gl t ~projection ~view ?alpha ()] renders the heatmap with additive 30 + blending. Default alpha is 0.35. *)
+3 -10
lib/webgl/scene.ml
··· 79 79 let orbit t = t.orbit 80 80 let coverage t = t.coverage 81 81 let satellites t = t.satellites 82 + let camera_position t = Camera.position t.camera 82 83 let set_grid_spacing t spacing = t.grid <- Some (Grid.v ~spacing t.gl) 83 84 84 85 (* ------------------------------------------------------------------ *) ··· 97 98 98 99 let sat_dt sat current_unix = current_unix -. Globe.Satellite.epoch_unix sat 99 100 100 - let camera_position (cam : Camera.t) = 101 - let d = cam.distance in 102 - let theta = cam.theta and phi = cam.phi in 103 - Globe.Math.Vec3.create 104 - (d *. sin theta *. cos phi) 105 - (d *. cos theta) 106 - (d *. sin theta *. sin phi) 107 - 108 101 let update_time t current_unix = 109 102 t.current_unix <- current_unix; 110 - let camera_pos = camera_position t.camera in 103 + let camera_pos = camera_position t in 111 104 (* Compute positions + LOD for all satellites *) 112 105 let sat_positions = 113 106 List.map ··· 165 158 Coverage.load t.gl t.coverage footprints 166 159 167 160 let satellite_dots t = 168 - let camera_pos = camera_position t.camera in 161 + let camera_pos = camera_position t in 169 162 List.filter_map 170 163 (fun sat -> 171 164 let dt = sat_dt sat t.current_unix in
+2
lib/webgl/scene.mli
··· 22 22 val coverage : t -> Coverage.t 23 23 (** [coverage t] is the coverage renderer (for manual footprint control). *) 24 24 25 + val camera_position : t -> Globe.Math.Vec3.t 26 + (** [camera_position t] is the current camera eye position. *) 25 27 val satellites : t -> Globe.Satellite.t list 26 28 (** [satellites t] is the current satellite list. *) 27 29
+1
test/test.ml
··· 9 9 Test_color.suite; 10 10 Test_satellite.suite; 11 11 Test_visibility.suite; 12 + Test_heatmap.suite; 12 13 ]
+101
test/test_heatmap.ml
··· 1 + (** Heatmap computation tests. *) 2 + 3 + open Globe 4 + 5 + let eps = 1e-3 6 + 7 + let check_float msg expected actual = 8 + Alcotest.(check (float eps)) msg expected actual 9 + 10 + let test_empty () = 11 + let h = Heatmap.compute [] in 12 + Alcotest.(check int) "no active" 0 (List.length (Heatmap.active_cells h)) 13 + 14 + let test_single_point () = 15 + let pt = Math.Vec3.create 1.06 0. 0. in 16 + let h = Heatmap.compute [ pt ] in 17 + let cells = Heatmap.active_cells h in 18 + Alcotest.(check int) "one cell" 1 (List.length cells); 19 + let c = List.hd cells in 20 + Alcotest.(check int) "count 1" 1 c.count; 21 + check_float "density 1.0" 1.0 c.density 22 + 23 + let test_cluster () = 24 + (* 5 points near equator at lon=0 *) 25 + let pts = List.init 5 (fun _ -> Math.Vec3.create 1.06 0. 0.) in 26 + let h = Heatmap.compute pts in 27 + let cells = Heatmap.active_cells h in 28 + Alcotest.(check int) "one cell" 1 (List.length cells); 29 + Alcotest.(check int) "count 5" 5 (List.hd cells).count 30 + 31 + let test_spread () = 32 + (* Points at different locations *) 33 + let pts = 34 + [ 35 + Math.Vec3.create 1.06 0. 0.; 36 + (* equator lon=0 *) 37 + Math.Vec3.create 0. 1.06 0.; 38 + (* north pole *) 39 + Math.Vec3.create (-1.06) 0. 0.; 40 + (* equator lon=180 *) 41 + ] 42 + in 43 + let h = Heatmap.compute pts in 44 + let cells = Heatmap.active_cells h in 45 + Alcotest.(check int) "3 cells" 3 (List.length cells) 46 + 47 + let test_density_normalized () = 48 + let pts = 49 + List.init 10 (fun _ -> Math.Vec3.create 1.06 0. 0.) 50 + @ [ Math.Vec3.create 0. 1.06 0. ] 51 + in 52 + let h = Heatmap.compute pts in 53 + let cells = Heatmap.active_cells h in 54 + let max_d = 55 + List.fold_left (fun acc c -> max acc c.Heatmap.density) 0. cells 56 + in 57 + check_float "max density 1.0" 1.0 max_d; 58 + let min_d = 59 + List.fold_left 60 + (fun acc c -> if c.Heatmap.density > 0. then min acc c.density else acc) 61 + 1. cells 62 + in 63 + Alcotest.(check bool) "min density < 1" true (min_d < 1.) 64 + 65 + let test_gl_to_latlon_equator () = 66 + let lat, lon = Heatmap.gl_to_latlon (Math.Vec3.create 1. 0. 0.) in 67 + check_float "lat" 0. lat; 68 + check_float "lon" 0. lon 69 + 70 + let test_gl_to_latlon_pole () = 71 + let lat, _lon = Heatmap.gl_to_latlon (Math.Vec3.create 0. 1. 0.) in 72 + check_float "lat" 90. lat 73 + 74 + let test_density_color_range () = 75 + for i = 0 to 10 do 76 + let d = Float.of_int i /. 10. in 77 + let r, g, b = Heatmap.density_color d in 78 + Alcotest.(check bool) (Fmt.str "r[%.1f]" d) true (r >= 0. && r <= 1.); 79 + Alcotest.(check bool) (Fmt.str "g[%.1f]" d) true (g >= 0. && g <= 1.); 80 + Alcotest.(check bool) (Fmt.str "b[%.1f]" d) true (b >= 0. && b <= 1.) 81 + done 82 + 83 + let test_cell_to_gl () = 84 + let cell = { Heatmap.lat = 0.; lon = 0.; count = 1; density = 0.5 } in 85 + let pos = Heatmap.cell_to_gl cell in 86 + Alcotest.(check bool) "x > 0" true (pos.x > 0.9); 87 + check_float "y" 0. pos.y 88 + 89 + let suite = 90 + ( "heatmap", 91 + [ 92 + Alcotest.test_case "empty" `Quick test_empty; 93 + Alcotest.test_case "single point" `Quick test_single_point; 94 + Alcotest.test_case "cluster" `Quick test_cluster; 95 + Alcotest.test_case "spread" `Quick test_spread; 96 + Alcotest.test_case "density normalized" `Quick test_density_normalized; 97 + Alcotest.test_case "gl to latlon equator" `Quick test_gl_to_latlon_equator; 98 + Alcotest.test_case "gl to latlon pole" `Quick test_gl_to_latlon_pole; 99 + Alcotest.test_case "density color range" `Quick test_density_color_range; 100 + Alcotest.test_case "cell to gl" `Quick test_cell_to_gl; 101 + ] )
+2
test/test_heatmap.mli
··· 1 + val suite : string * unit Alcotest.test_case list 2 + (** [suite] is the heatmap test suite. *)